22 #ifdef DO_TPCCATRACKER_EFF_PERFORMANCE
30 #ifndef HLTCA_STANDALONE
38 #include "Riostream.h"
46 PndCATrackPerformanceBase::PndCATrackPerformanceBase()
48 const int NHisto_tmp = NTracksPulls + NHitsPulls + NHits2DPulls
49 + NAllHisto + NAllProfiles + NAll2DHisto
50 + NGhostsHisto + NGhostsProfiles + NGhosts2DHisto
51 + NRecoTracksHisto + NRecoTracksProfiles + NRecoTracks2DHisto;
54 fHistosInfo =
new THistoInfo[NHisto];
55 fHistos =
new TH1*[NHisto];
57 const double MaxMomentum = 5.;
58 const double MaxPt = 5.;
59 const double MaxPhi = 180.;
60 const int MaxNHits = 50.;
61 const double MaxChi2 = 10.;
62 const double PullWidth = 7.;
63 const THistoInfo tmp[NHisto_tmp]=
65 THistoInfo(
"resY",
"track y residual [cm]", 30, -.05, .05, 0,0,0,
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
66 THistoInfo(
"resZ",
"track z residual [cm]", 30, -2.5, 2.5, 0,0,0,
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
67 THistoInfo(
"resSinPhi",
"track sin#phi residual ", 30, -0.01, 0.01, 0,0,0,
"Residual (sin#phi^{reco} - sin#phi^{mc}) [rad]",
"Entries" ),
68 THistoInfo(
"resDzDs",
"track dz/ds residual ", 30, -0.25, 0.25, 0,0,0,
"Residual (dz/ds^{reco} - dz/ds^{mc})",
"Entries" ),
69 THistoInfo(
"resPt",
"track p_{t} resolution", 30, -0.3, 0.3, 0,0,0,
"Resolution (p_{t}^{reco} - p_{t}^{mc})/p_{t}^{mc} [%]",
"Entries" ),
71 THistoInfo(
"pullY",
"track y pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull y" ),
72 THistoInfo(
"pullZ",
"track z pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull z" ),
73 THistoInfo(
"pullSinPhi",
"track sin#phi pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull sin#phi" ),
74 THistoInfo(
"pullDzDs",
"track dz/ds pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull dz/ds" ),
75 THistoInfo(
"pullQPt",
"track q/p_{t} pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull q/p_{t}" ),
77 THistoInfo(
"resXHit",
"hits X resolution [cm]", 100, 3, 3, 0,0,0,
"Residual (x^{reco} - x^{mc}) [cm]",
"Entries" ),
78 THistoInfo(
"resYHit",
"hits Y resolution [cm]", 100, -0.6, 0.6, 0,0,0,
"Residual (y^{reco} - y^{mc}) [cm]",
"Entries" ),
79 THistoInfo(
"resZHit",
"hits Z resolution [cm]", 100, -100., 100., 0,0,0,
"Residual (z^{reco} - z^{mc}) [cm]",
"Entries" ),
81 THistoInfo(
"pullYHit",
"hits Y pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull y" ),
82 THistoInfo(
"pullZHit",
"hits Z pull", 30, -PullWidth, PullWidth, 0,0,0,
"Pull z" ),
84 THistoInfo(
"xMCPoint",
"MCPoint X position [cm]", 500, 0, 250, 0,0,0,
"x^{mc} [cm]",
"Entries" ),
85 THistoInfo(
"rMCPoint",
"MCPoint R position [cm]", 500, 0, 250, 0,0,0,
"r^{mc} [cm]",
"Entries" ),
87 THistoInfo(
"resXHitVsZ",
"hits X resolution [cm] vs Z", 50, -220, 220, 100, -1.25, 1.25,
"z [cm]",
"Residual (x^{reco} - x^{mc}) [cm]" ),
88 THistoInfo(
"resYHitVsZ",
"hits Y resolution [cm] vs Z", 50, -220, 220, 100, -0.25, 0.25,
"z [cm]",
"Residual (y^{reco} - y^{mc}) [cm]" ),
89 THistoInfo(
"resZHitVsZ",
"hits Z resolution [cm] vs Z", 50, -220, 220, 100, -1.00, 1.00,
"z [cm]",
"Residual (z^{reco} - z^{mc}) [cm]" ),
90 THistoInfo(
"resXHitVsX",
"hits X resolution [cm] vs X", 50, 50, 200, 100, -1.25, 1.25,
"x [cm]",
"Residual (x^{reco} - x^{mc}) [cm]" ),
91 THistoInfo(
"resYHitVsX",
"hits Y resolution [cm] vs X", 50, 50, 200, 100, -0.25, 0.25,
"x [cm]",
"Residual (y^{reco} - y^{mc}) [cm]" ),
92 THistoInfo(
"resZHitVsX",
"hits Z resolution [cm] vs X", 50, 50, 200, 100, -1., 1.,
"x [cm]",
"Residual (z^{reco} - z^{mc}) [cm]" ),
93 THistoInfo(
"resXHitVsIS",
"hits X resolution [cm] vs IS", 52, 0, 25, 100, -1.25, 1.25,
"i Slice",
"Residual (x^{reco} - x^{mc}) [cm]" ),
94 THistoInfo(
"resYHitVsIS",
"hits Y resolution [cm] vs IS", 52, 0, 25, 100, -0.25, 0.25,
"i Slice",
"Residual (y^{reco} - y^{mc}) [cm]" ),
95 THistoInfo(
"resZHitVsIS",
"hits Z resolution [cm] vs IS", 52, 0, 25, 100, -1., 1.,
"i Slice",
"Residual (z^{reco} - z^{mc}) [cm]" ),
98 THistoInfo(
"purity",
"Purity of tracks", 101, 0.005, 1.005,
99 0,0,0,
"Purity",
"Entries" ),
100 THistoInfo(
"mcTrackNRecoHits",
"NRecoHits on MCTrack", MaxNHits+1, 0, MaxNHits,
101 0,0,0,
"Purity",
"Entries" ),
102 THistoInfo(
"mcTracksVsP",
"MCTracks p^{mc} distribution, MCTrack has >= 1 hit", 50, 0., MaxMomentum,
103 0,0,0,
"p^{mc} [GeV/c]",
"Entries" ),
104 THistoInfo(
"recoAbleMCTracksVsP",
"Reconstructable MCTracks p^{mc} distribution", 50, 0., MaxMomentum,
105 0,0,0,
"p^{mc} [GeV/c]",
"Entries" ),
106 THistoInfo(
"nHitsOverNMCPointsVsRow",
"nHits / NMCPoints Vs Row", MaxNHits+1, 0, MaxNHits,
107 0,0,0,
"Row",
"NHits / NMCPoints" ),
108 THistoInfo(
"nHitsOverNMCPointsVsMCMom",
"nHits / NMCPoints Vs MCMomentum", 50, 0, MaxMomentum,
109 0,0,0,
"MCMomentum",
"NHits / NMCPoints" ),
110 THistoInfo(
"nHitsOverNMCPointsVsMCDzDs",
"nHits / NMCPoints Vs MCTrack DzDs", 50, -10, 10,
111 0,0,0,
"MCMomentum",
"NHits / NMCPoints" ),
112 THistoInfo(
"nHitsOverNMCPointsVsNMCTracks",
"nHits / NMCPoints Vs NMCTracks", 20, 0, 5000,
113 0,0,0,
"NMCTracks",
"NHits / NMCPoints" ),
114 THistoInfo(
"nMCPointsVsMCMom",
"NMCPoints Vs MCMomentum", 50, 0, MaxMomentum,
115 MaxNHits*3+1,0,MaxNHits*3,
"MCMomentum",
"NMCPoints" ),
118 THistoInfo(
"ghostsLength",
"N_{hits} distribution, ghost tracks", MaxNHits+1, 0., MaxNHits,
119 0,0,0,
"Number of hits",
"Entries" ),
120 THistoInfo(
"ghostsRMom",
"p^{reco} distribution, ghost tracks", 50, 0., MaxMomentum,
121 0,0,0,
"p^{reco} [GeV/c]",
"Entries" ),
122 THistoInfo(
"ghostsMCMom",
"p^{MC} distribution, ghost tracks", 50, 0., MaxMomentum,
123 0,0,0,
"p^{MC} [GeV/c]",
"Entries" ),
124 THistoInfo(
"ghostsRPt",
"p_{t}^{reco} distribution, ghost tracks", 50, 0., MaxPt,
125 0,0,0,
"p_{t}^{reco} [GeV/c]",
"Entries" ),
126 THistoInfo(
"ghostsMCPt",
"p_{t}^{MC} distribution, ghost tracks", 50, 0., MaxPt,
127 0,0,0,
"p_{t}^{MC} [GeV/c]",
"Entries" ),
128 THistoInfo(
"ghostsChi2",
"#chi^{2} distribution, ghost tracks", 50, 0., MaxChi2*10,
129 0,0,0,
"#chi^{2}",
"Entries" ),
130 THistoInfo(
"ghostsProb",
"prob distribution, ghost tracks", 100, 0., 1,
131 0,0,0,
"prob",
"Entries" ),
132 THistoInfo(
"ghostsLengthAndRMom",
"N Ghosts vs N Hits and Momentum", MaxNHits+1, 0., MaxNHits, 50, 0., MaxMomentum,
133 "Number of hits",
"p^{reco} [GeV/c]" ),
134 THistoInfo(
"ghostsLengthAndMCMom",
"N Ghosts vs N Hits and Momentum", MaxNHits+1, 0., MaxNHits, 50, 0., MaxMomentum,
135 "Number of hits",
"p^{MC} [GeV/c]" ),
136 THistoInfo(
"ghostsLengthAndChi2",
"N Ghosts vs N Hits and Chi2", MaxNHits+1, 0., MaxNHits, 50, 0., MaxChi2*10,
137 "Number of hits",
"p^{reco} [GeV/c]" ),
139 THistoInfo(
"recosLength",
"N_{hits} distribution, reco tracks", MaxNHits+1, 0., MaxNHits,
140 0,0,0,
"Number of hits",
"Entries" ),
141 THistoInfo(
"recosRMom",
"p^{reco} distribution, reco tracks", 50, 0., MaxMomentum,
142 0,0,0,
"p^{reco} [GeV/c]",
"Entries" ),
143 THistoInfo(
"recosMCMom",
"p^{MC} distribution, reco tracks", 50, 0., MaxMomentum,
144 0,0,0,
"p^{MC} [GeV/c]",
"Entries" ),
145 THistoInfo(
"recosRPt",
"p_{t}^{reco} distribution, reco tracks", 50, 0., MaxPt,
146 0,0,0,
"p_{t}^{reco} [GeV/c]",
"Entries" ),
147 THistoInfo(
"recosMCPt",
"p_{t}^{MC} distribution, reco tracks", 50, 0., MaxPt,
148 0,0,0,
"p_{t}^{MC} [GeV/c]",
"Entries" ),
149 THistoInfo(
"recosChi2",
"#chi^{2} distribution, reco tracks", 50, 0., MaxChi2,
150 0,0,0,
"#chi^{2}",
"Entries" ),
151 THistoInfo(
"recosProb",
"prob distribution, reco tracks", 100, 0., 1,
152 0,0,0,
"prob",
"Entries" ),
153 THistoInfo(
"recosRefProb",
"prob distribution, reference reco tracks", 100, 0., 1,
154 0,0,0,
"prob",
"Entries" ),
155 THistoInfo(
"nHitsRecoTOverNHitsMCT",
"nHitsRecoTOverNHitsMCT", 50, 0., 2,
156 0,0,0,
"NHits^{reco} / NHits^{mc}",
"Entries" ),
157 THistoInfo(
"recosEffVsMCNHits",
"Reconstruction Efficiency vs N Hits", MaxNHits+1, 0., MaxNHits,
158 0,0,0,
"Number of hits",
"Efficiency [%]" ),
159 THistoInfo(
"recosEffVsMCMom",
"Reconstruction Efficiency vs Momentum, All tracks", 50, 0., MaxMomentum,
160 0,0,100,
"p^{MC} [GeV/c]",
"Efficiency [%]"),
161 THistoInfo(
"recosEffVsMCMomPrim",
"Reconstruction Efficiency vs Momentum, Primary Tracks", 50, 0., MaxMomentum,
162 0,0,100,
"p^{MC} [GeV/c]",
"Efficiency [%]"),
163 THistoInfo(
"recosEffVsMCMomRefPrim",
"Reconstruction Efficiency vs Momentum, Reference Primary Tracks", 50, 0., MaxMomentum,
164 0,0,100,
"p^{MC} [GeV/c]",
"Efficiency [%]"),
165 THistoInfo(
"recosEffVsMCMomSec",
"Reconstruction Efficiency vs Momentum, Secondary Tracks", 50, 0., MaxMomentum,
166 0,0,100,
"p^{MC} [GeV/c]",
"Efficiency [%]"),
167 THistoInfo(
"recosEffVsMCPtAll",
"Reconstruction Efficiency vs Pt, All Tracks", 50, 0., MaxPt,
168 0,0,100,
"p_{t}^{MC} [GeV/c]",
"Efficiency [%]"),
169 THistoInfo(
"recosEffVsMCPtPrim",
"Reconstruction Efficiency vs Pt, Primary", 50, 0., MaxPt,
170 0,0,100,
"p_{t}^{MC} [GeV/c]",
"Efficiency [%]"),
171 THistoInfo(
"recosEffVsMCPtRefPrim",
"Reconstruction Efficiency vs Pt, Ref Primary", 50, 0., MaxPt,
172 0,0,100,
"p_{t}^{MC} [GeV/c]",
"Efficiency [%]"),
173 THistoInfo(
"recosEffVsMCPtSec",
"Reconstruction Efficiency vs Pt, Secondary", 50, 0., MaxPt,
174 0,0,100,
"p_{t}^{MC} [GeV/c]",
"Efficiency [%]"),
175 THistoInfo(
"recosEffVsMCPhiAll",
"Reconstruction Efficiency vs Phi, All Tracks", 120, -MaxPhi, MaxPhi,
176 0,0,100,
"#phi",
"Efficiency [%]"),
177 THistoInfo(
"recosEffVsMCPhiPrim",
"Reconstruction Efficiency vs Phi, Primary Tracks", 120, -MaxPhi, MaxPhi,
178 0,0,100,
"#phi",
"Efficiency [%]"),
179 THistoInfo(
"recosEffVsMCPhiRefPrim",
"Reconstruction Efficiency vs Phi, Ref Primary Tracks", 120, -MaxPhi, MaxPhi,
180 0,0,100,
"#phi",
"Efficiency [%]"),
181 THistoInfo(
"recosEffVsMCPhiSec",
"Reconstruction Efficiency vs Phi, Secondary Tracks", 120, -MaxPhi, MaxPhi,
182 0,0,100,
"#phi",
"Efficiency [%]"),
183 THistoInfo(
"recosEffVsNMCTracks",
"Reconstruction Efficiency vs NMCTracks, All tracks", 20, 0., 5000,
184 0,0,100,
"NMCTracks",
"Efficiency [%]"),
185 THistoInfo(
"recosLengthAndRMom",
"N Reco Tracks vs N Hits and Momentum", MaxNHits+1, 0., MaxNHits, 50, 0., MaxMomentum,
186 "Number of hits",
"p^{reco} [GeV/c]" ),
187 THistoInfo(
"recosLengthAndMCMom",
"N Reco Tracks vs N Hits and Momentum", MaxNHits+1, 0., MaxNHits, 50, 0., MaxMomentum,
188 "Number of hits",
"p^{MC} [GeV/c]" ),
189 THistoInfo(
"recosLengthAndChi2",
"N Reco Tracks vs N Hits and Chi2", MaxNHits+1, 0., MaxNHits, 50, 0., MaxChi2,
190 "Number of hits",
"p^{reco} [GeV/c]" )
192 for (
int iHisto = 0; iHisto < NHisto; iHisto++){
193 fHistosInfo[iHisto] = tmp[iHisto];
196 for(
int i=0;
i < NHisto;
i++ ){
202 void PndCATrackPerformanceBase::CreateHistos(
string histoDir, TFile*
outFile)
204 TDirectory *curdir = gDirectory;
205 if ( (histoDir !=
"") && outFile) {
207 fHistoDir = outFile->mkdir(
TString(histoDir) );
209 gDirectory->mkdir(
"TrackFit" );
210 gDirectory->cd(
"TrackFit" );
213 for(
int i = 0;
i < NTracksPulls + NHitsPulls;
i++, ih++ ){
214 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
215 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
216 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
219 for(
int i = 0;
i < NHits2DPulls;
i++, ih++ ){
220 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
221 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
222 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
225 gDirectory->cd(
".." );
226 gDirectory->mkdir(
"AllTracks" );
227 gDirectory->cd(
"AllTracks" );
229 for(
int i = 0;
i < NAllHisto;
i++, ih++ ){
230 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
231 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
232 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
234 for(
int i = 0;
i < NAllProfiles;
i++, ih++ ){
235 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up);
236 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
237 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
238 fHistos[ih]->SetMarkerColor(2);
239 fHistos[ih]->SetLineColor(2);
241 for(
int i = 0;
i < NAll2DHisto;
i++, ih++ ){
242 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
243 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
244 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
248 gDirectory->cd(
".." );
249 gDirectory->mkdir(
"Ghosts" );
250 gDirectory->cd(
"Ghosts" );
252 for(
int i = 0;
i < NGhostsHisto;
i++, ih++ ){
253 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
254 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
255 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
257 for(
int i = 0;
i < NGhostsProfiles;
i++, ih++ ){
258 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up);
259 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
260 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
261 fHistos[ih]->SetMarkerColor(2);
262 fHistos[ih]->SetLineColor(2);
264 for(
int i = 0;
i < NGhosts2DHisto;
i++, ih++ ){
265 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
266 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
267 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
271 gDirectory->cd(
".." );
272 gDirectory->mkdir(
"RecoTracks" );
273 gDirectory->cd(
"RecoTracks" );
275 for(
int i = 0;
i < NRecoTracksHisto;
i++, ih++ ){
276 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
277 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
278 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
281 for(
int i = 0;
i < NRecoTracksProfiles;
i++, ih++ ){
282 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].
low, fHistosInfo[ih].up );
283 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
284 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
285 fHistos[ih]->SetMarkerColor(2);
286 fHistos[ih]->SetLineColor(2);
288 for(
int i = 0;
i < NRecoTracks2DHisto;
i++, ih++ ){
289 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
290 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
291 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
295 gDirectory->cd(
".." );
299 static int iaddName = 0;
302 for(
int i = 0;
i < NTracksPulls + NHitsPulls;
i++, ih++, addName =
TString(iaddName++) ){
303 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
304 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
305 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
307 for(
int i = 0;
i < NHits2DPulls;
i++, ih++, addName =
TString(iaddName++) ){
308 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
309 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
310 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
313 for(
int i = 0;
i < NAllHisto;
i++, ih++, addName =
TString(iaddName++) ){
314 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
315 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
316 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
318 for(
int i = 0;
i < NAllProfiles;
i++, ih++, addName =
TString(iaddName++) ){
319 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
320 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
321 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
323 for(
int i = 0;
i < NAll2DHisto;
i++, ih++, addName =
TString(iaddName++) ){
324 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
325 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
326 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
329 for(
int i = 0;
i < NGhostsHisto;
i++, ih++, addName =
TString(iaddName++) ){
330 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
331 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
332 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
334 for(
int i = 0;
i < NGhostsProfiles;
i++, ih++, addName =
TString(iaddName++) ){
335 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
336 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
337 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
339 for(
int i = 0;
i < NGhosts2DHisto;
i++, ih++, addName =
TString(iaddName++) ){
340 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
341 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
342 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
345 for(
int i = 0;
i < NRecoTracksHisto;
i++, ih++, addName =
TString(iaddName++) ){
346 fHistos[ih] =
new TH1D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
347 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
348 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
350 for(
int i = 0;
i < NRecoTracksProfiles;
i++, ih++, addName =
TString(iaddName++) ){
351 fHistos[ih] =
new TProfile(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right);
352 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
353 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
355 for(
int i = 0;
i < NRecoTracks2DHisto;
i++, ih++, addName =
TString(iaddName++) ){
356 fHistos[ih] =
new TH2D(fHistosInfo[ih].
name+addName, fHistosInfo[ih].title, fHistosInfo[ih].nx, fHistosInfo[ih].left, fHistosInfo[ih].right, fHistosInfo[ih].ny, fHistosInfo[ih].
low, fHistosInfo[ih].up);
357 fHistos[ih]->GetXaxis()->SetTitle(fHistosInfo[ih].XAxisName.Data());
358 fHistos[ih]->GetYaxis()->SetTitle(fHistosInfo[ih].YAxisName.Data());
361 for(
int i = 0;
i < NHisto;
i++ ){
362 fHistos[
i]->SetDirectory(0);
369 void PndCATrackPerformanceBase::FillHistos()
371 for (
int iMCTr = 0; iMCTr < nMCTracks; iMCTr++ ) {
375 const int Multiplicity = (*fMCTracks).size();
377 if( mcTr.
NHits() > 0 )
378 GetHisto(
"mcTracksVsP")->Fill( mcTr.
P() );
385 GetHisto(
"recoAbleMCTracksVsP")->Fill( mcTr.
P() );
390 GetHisto(
"recosEffVsMCPhiAll")->Fill( PhiMC, mcD.
IsReconstructed()*100 );
391 GetHisto(
"recosEffVsNMCTracks")->Fill( Multiplicity, mcD.
IsReconstructed()*100 );
395 GetHisto(
"recosEffVsMCMomPrim") ->Fill( mcTr.
P(), mcD.
IsReconstructed()*100 );
397 GetHisto(
"recosEffVsMCPhiPrim") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
398 if(mcTr.
Set() == 2) {
400 GetHisto(
"recosEffVsMCMomRefPrim") ->Fill( mcTr.
P(), mcD.
IsReconstructed()*100 );
401 GetHisto(
"recosEffVsMCPtRefPrim") ->Fill( mcTr.
Pt(), mcD.
IsReconstructed()*100 );
402 GetHisto(
"recosEffVsMCPhiRefPrim") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
407 GetHisto(
"recosEffVsMCMomSec") ->Fill( mcTr.
P(), mcD.
IsReconstructed()*100 );
409 GetHisto(
"recosEffVsMCPhiSec") ->Fill( PhiMC, mcD.
IsReconstructed()*100 );
414 #endif //DO_TPCCATRACKER_EFF_PERFORMANCE
static T ATan2(const T &y, const T &x)