00001 00002 // Analysis Module for CandFitTrackCam 00003 // 00004 // marshall@hep.phy.cam.ac.uk 00006 #ifndef FITTRACKCAMANALYSISMODULE_H 00007 #define FITTRACKCAMANALYSISMODULE_H 00008 #ifndef JOBCMODULE_H 00009 #include "JobControl/JobCModule.h" 00010 #endif 00011 #include "TString.h" 00012 #include "TFile.h" 00013 #include "TTree.h" 00014 #include "TMarker.h" 00015 #include "DataUtil/Truthifier.h" 00016 #include <vector> 00017 using std::vector; 00018 00019 class CandRecord; 00020 class TFile; 00021 class TTree; 00022 class TCanvas; 00023 class TPad; 00024 class TH2F; 00025 00026 00027 class FitTrackCamAnalysisModule : public JobCModule 00028 { 00029 public: 00030 FitTrackCamAnalysisModule(); 00031 ~FitTrackCamAnalysisModule(); 00032 00033 public: 00034 // Handle job status changes 00035 void BeginJob(); 00036 void EndJob(); 00037 00038 void ConfigureAxes(VldContext *vldc); 00039 void SliceSection(); 00040 void ShowerSection(); 00041 void TrackSection(); 00042 void FittedTrackSection(); 00043 00044 void TruthSection(SimSnarlRecord* simrec); 00045 void TruthSliceSection(Truthifier* mytruth); 00046 void EfficiencySection(Truthifier* mytruth); 00047 00048 void Draw(); 00049 void Pause(); 00050 void CleanUp(); 00051 00052 // Analysis and Reconstruction methods 00053 JobCResult Ana(const MomNavigator* mom); 00054 00055 // Module configuration 00056 const Registry& DefaultConfig() const; 00057 void Config(const Registry& r); 00058 00059 private: 00060 CandRecord* candrec; 00061 00062 // Module member data 00063 TString fListInSlc; 00064 TString fListInShw; 00065 TString fListInTrk; 00066 TString fListInFitTrk; 00067 TString fFileName; 00068 00069 TCanvas* fTrackCanvas; 00070 TPad* fUZPad; 00071 TPad* fVZPad; 00072 TH2F* fUZAxis; 00073 TH2F* fVZAxis; 00074 00075 TPad* fUZMCPad; 00076 TPad* fVZMCPad; 00077 TH2F* fUZMCAxis; 00078 TH2F* fVZMCAxis; 00079 00080 vector<vector <TMarker> > fUZSliceMarker; 00081 vector<vector <TMarker> > fVZSliceMarker; 00082 00083 vector<vector <TMarker> > fUZShowerMarker; 00084 vector<vector <TMarker> > fVZShowerMarker; 00085 00086 vector<vector <TMarker> > fUZTrackMarker; 00087 vector<vector <TMarker> > fVZTrackMarker; 00088 00089 vector<vector <TMarker> > fUZFitTrackMarker; 00090 vector<vector <TMarker> > fVZFitTrackMarker; 00091 00092 vector<vector <TMarker> > fUZSliceMarkerTruth; 00093 vector<vector <TMarker> > fVZSliceMarkerTruth; 00094 00095 vector<vector <TMarker> > fUZTrackMarkerTruth; 00096 vector<vector <TMarker> > fVZTrackMarkerTruth; 00097 00098 float fMaxZ; 00099 float fMinZ; 00100 float fMaxUorV; 00101 float fMinUorV; 00102 00103 int fFitEndPlane; 00104 int fFitVtxPlane; 00105 int fTrueMaxPlane; 00106 int fTrueMinPlane; 00107 00108 int isMC; 00109 00110 TFile* FTCFile; 00111 TTree* FTCTree; 00112 00113 bool CareAboutXTalk; 00114 bool debug; 00115 00116 // Header info 00117 int Run; 00118 int Snarl; 00119 int NumFittedTracks; 00120 int Pass; 00121 00122 // Momentum-related quantities 00123 double RecoQP; 00124 double TrueQP; 00125 double QPVtxError; 00126 double RecoMomCurve; 00127 double RecoMomRange; 00128 double TrueMom; 00129 double RecoTime; 00130 00131 // For checking tracking efficency 00132 int FitTrackStrips; 00133 int TrueMuonStrips; 00134 int FitAndTruthAgree; 00135 int FitTrackLength; 00136 int TrueTrackLength; 00137 int TotalStripsInSnarl; 00138 int FDFullyContained; 00139 int NTrackStrip; 00140 int NTrackDigit; 00141 00142 // Track fit quality 00143 double Chi2; 00144 int NDOF; 00145 int NIterate; 00146 int NSwimFail; 00147 00148 // Timing info 00149 double TimeSlope; 00150 double TimeOffset; 00151 double VtxT; 00152 double EndT; 00153 double TimeFitChi2; 00154 double NTimeFitDigit; 00155 double TimeForwardFitRMS; 00156 int TimeForwardFitNDOF; 00157 double TimeBackwardFitRMS; 00158 int TimeBackwardFitNDOF; 00159 00160 // Vtx properties 00161 double VtxU; 00162 double VtxV; 00163 double VtxZ; 00164 int VtxPlane; 00165 00166 double VtxDirCosU; 00167 double VtxDirCosV; 00168 double VtxDirCosZ; 00169 00170 double VtxUError; 00171 double VtxVError; 00172 double VtxdUError; 00173 double VtxdVError; 00174 00175 // End properties 00176 double EndU; 00177 double EndV; 00178 double EndZ; 00179 int EndPlane; 00180 double EndQP; 00181 00182 double EndDirCosU; 00183 double EndDirCosV; 00184 double EndDirCosZ; 00185 00186 double EndUError; 00187 double EndVError; 00188 double EnddUError; 00189 double EnddVError; 00190 double EndQPError; 00191 00192 // Range and dS 00193 double Range; 00194 double dS; 00195 00196 // Traces 00197 double VtxTrace; 00198 double VtxTraceZ; 00199 double EndTrace; 00200 double EndTraceZ; 00201 00202 }; 00203 #endif // FITTRACKANALYSISMODULE_H 00204
1.3.9.1