ATLAS Offline Software
Loading...
Searching...
No Matches
Analysis_Tier0.cxx
Go to the documentation of this file.
1
9
10
11#include <cmath>
12
15
17
19 double /*pTCut*/,
20 double /*etaCut*/,
21 double /*d0Cut*/,
22 double /*z0Cut*/)
24 // m_pTCut(pTCut), /// left in commented for development purposes
25 // m_etaCut(etaCut),
26 // m_d0Cut(d0Cut),
27 // m_z0Cut(z0Cut),
28 m_h_total_efficiency{nullptr},
29 m_h_pTeff{nullptr},
30 m_h_etaeff{nullptr},
31 m_h_phieff{nullptr},
32 m_h_d0eff{nullptr},
33 m_h_z0eff{nullptr},
34 m_h_nVtxeff{nullptr},
35 m_h_lbeff{nullptr},
36 m_h_pTres{nullptr},
37 m_h_ipTres{nullptr},
38 m_h_etares{nullptr},
39 m_h_phires{nullptr},
40 m_h_d0res{nullptr},
41 m_h_z0res{nullptr},
42 m_h_trkvtx_x_lb{nullptr},
43 m_h_trkvtx_y_lb{nullptr},
44 m_h_trkvtx_z_lb{nullptr},
45 m_h_npixvseta{nullptr},
46 m_h_npixvsphi{nullptr},
47 m_h_npixvsd0{nullptr},
48 m_h_npixvspT{nullptr},
49 m_h_nsctvseta{nullptr},
50 m_h_nsctvsphi{nullptr},
51 m_h_nsctvsd0{nullptr},
52 m_h_nsctvspT{nullptr},
53 m_h_ntrtvseta{nullptr},
54 m_h_ntrtvsphi{nullptr},
55 m_h_nsihits_lb{nullptr},
56 m_h_npixvseta_rec{nullptr},
57 m_h_npixvsphi_rec{nullptr},
58 m_h_npixvsd0_rec{nullptr},
59 m_h_npixvspT_rec{nullptr},
60 m_h_nsctvseta_rec{nullptr},
61 m_h_nsctvsphi_rec{nullptr},
62 m_h_nsctvsd0_rec{nullptr},
63 m_h_nsctvspT_rec{nullptr},
64 m_h_ntrtvseta_rec{nullptr},
65 m_h_ntrtvsphi_rec{nullptr},
66 m_h_nsihits_lb_rec{nullptr},
67 m_h_d0vsphi{nullptr},
68 m_h_d0vsphi_rec{nullptr},
69 m_h_chain{nullptr},
70 m_h_ntrk{nullptr},
71 m_h_trkpT{nullptr},
72 m_h_trketa{nullptr},
73 m_h_trkphi{nullptr},
74 m_h_trkd0{nullptr},
75 m_h_trkz0{nullptr},
76 m_h_trkdd0{nullptr},
77 m_h_trkdz0{nullptr},
78 m_h_trkd0sig{nullptr},
79 m_h_npix{nullptr},
80 m_h_nsct{nullptr},
81 m_h_nsihits{nullptr},
82 m_h_ntrt{nullptr},
83 m_h_ntrk_rec{nullptr},
84 m_h_layer{nullptr},
85 m_h_trkpT_rec{nullptr},
86 m_h_trketa_rec{nullptr},
87 m_h_trkphi_rec{nullptr},
88 m_h_trkd0_rec{nullptr},
89 m_h_trkz0_rec{nullptr},
90 m_h_trkdd0_rec{nullptr},
91 m_h_trkdz0_rec{nullptr},
92 m_h_trkd0sig_rec{nullptr},
93 m_h_npix_rec{nullptr},
94 m_h_nsct_rec{nullptr},
95 m_h_nsihits_rec{nullptr},
96 m_h_ntrt_rec{nullptr},
97 m_h_layer_rec{nullptr},
98 m_h_trkpT_residual{nullptr},
99 m_h_trkipT_residual{nullptr},
100 m_h_trketa_residual{nullptr},
101 m_h_trkphi_residual{nullptr},
102 m_h_trkd0_residual{nullptr},
103 m_h_trkz0_residual{nullptr},
104 m_h_trkdd0_residual{nullptr},
105 m_h_trkdz0_residual{nullptr},
106 m_nVtx(0),
107 m_debug(false),
108 m_eventid(0),
109 m_vtxanal(nullptr),
110 m_monTool(nullptr)
111{}
112
114
115 ChainString cname = name();
116
117 // std::cout << "Analysis_Tier0::initialise() name " << name() << std::endl;
118
119#if 0
120 std::cout << "\nAnalysis_Tier0:: chain specification: " << cname << "\t" << cname.raw() << std::endl;
121 std::cout << "\tchain: " << cname.head() << std::endl;
122 std::cout << "\tkey: " << cname.tail() << std::endl;
123 std::cout << "\troi: " << cname.roi() << std::endl;
124 std::cout << "\tvtx: " << cname.vtx() << std::endl;
125 std::cout << "\tte: " << cname.element() << std::endl;
126#endif
127
128 m_debug = false;
129
130 m_h_chain = new TH1F( "Chain", cname.c_str(), 5, 0, 5 );
131 m_h_chain->GetXaxis()->SetBinLabel(1, "Nrois" );
132 m_h_chain->GetXaxis()->SetBinLabel(2, "Nevents" );
133 m_h_chain->GetXaxis()->SetBinLabel(3, "N ref tracks" );
134 m_h_chain->GetXaxis()->SetBinLabel(4, "N matched tracks" );
135 m_h_chain->GetXaxis()->SetBinLabel(5, "N total test tracks" );
136
137
139
141
143
144#if 0
145
146 double vnbins[81] = {
147 -0.5,
148 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5,
149 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5,
150 20.5, 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5,
151 31.5, 32.5, 33.5, 34.5, 36.5, 37.5, 39.5,
152 40.5, 42.5, 43.5, 45.5, 47.5, 49.5,
153 50.5, 52.5, 54.5, 57.5, 59.5,
154 61.5, 63.5, 66.5, 69.5,
155 71.5, 74.5, 77.5,
156 80.5, 83.5, 86.5,
157 90.5, 93.5, 97.5,
158 100.5, 104.5, 108.5,
159 113.5, 117.5,
160 122.5, 126.5,
161 131.5, 136.5,
162 142.5, 147.5,
163 153.5, 159.5,
164 165.5,
165 171.5, 178.5,
166 185.5,
167 192.5,
168 200.5 };
169#endif
170
171 double vnbins[101] = {
172 -0.5,
173 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 17.5, 18.5, 19.5, 21.5,
174 23.5, 24.5, 26.5, 28.5, 30.5, 32.5, 35.5, 37.5, 40.5, 43.5, 46.5, 50.5, 53.5, 57.5, 61.5, 66.5, 71.5, 76.5, 81.5, 87.5,
175 93.5, 100.5, 107.5, 114.5, 123.5, 131.5, 141.5, 150.5, 161.5, 172.5, 185.5, 198.5, 211.5, 226.5, 242.5, 259.5, 277.5, 297.5, 317.5, 340.5,
176 363.5, 389.5, 416.5, 445.5, 476.5, 509.5,
177 544.5, 582.5, 623.5, 666.5, 713.5, 762.5, 815.5, 872.5, 933.5, 998.5, 1067.5,
178 1141.5, 1221.5, 1305.5, 1396.5, 1493.5, 1597.5,
179 1708.5, 1827.5, 1953.5, 2089.5,
180 2234.5, 2389.5, 2555.5,
181 2733.5, 2923.5, 3125.5,
182 3342.5, 3574.5,
183 3823.5, 4088.5,
184 4372.5, 4675.5,
185 5000.5
186 };
187
188
191 // m_h_ntrk = new TH1F( "reftrk_N", "Reference tracks", 100, vnbins );
192 m_h_ntrk = new TH1F( "reftrk_N", "Reference tracks", 77, vnbins );
193
195
197
198 // double pt_bins[25] = { 0, 1, 2, 3, 4, 8, 10, 12, 14, 16, 18, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80, 90, 100 };
199
200 std::vector<double> ptbins;
201
202 for ( int i=0 ; i<=25 ; i++ ) {
203
204 double y = std::log10(1) + i*( std::log10(100)-std::log10(1) )/25;
205
206 double x = std::pow(10, y);
207 ptbins.push_back(x);
208
209 }
210
211 // m_h_trkpT = new TH1F("reftrk_pT" , "Reference track pT", 50, 0., 100.);
212 m_h_trkpT = new TH1F("reftrk_pT" , "Reference track pT", 25, &ptbins[0] );
213 m_h_trkphi = new TH1F("reftrk_phi", "Reference track Phi", 25, -M_PI, M_PI);
214 m_h_trketa = new TH1F("reftrk_eta", "Reference track Eta", 25, -2.5, 2.5) ;
215 if (name().find("LRT")!=std::string::npos || name().find("lrt")!=std::string::npos) {
216 m_h_trkd0 = new TH1F("reftrk_d0" , "Reference track d0", 201, -100.0, 100.0 );
217 } else {
218 m_h_trkd0 = new TH1F("reftrk_d0" , "Reference track d0", 101, -5.0, 5.0 );
219 }
220 m_h_trkz0 = new TH1F("reftrk_z0" , "Reference track z0", 50, -225., 225.);
221
223 m_h_trkdd0 = new TH1F("reftrk_dd0" , "Reference track sigma(d0)", 50, 0, 0.5);
224 m_h_trkdz0 = new TH1F("reftrk_dz0" , "Reference track sigma(z0)", 50, 0, 2.5);
225
226 m_h_trkd0sig = new TH1F("reftrk_d0sig" , "Reference track d0 significance", 101, -5., 5.);
227
233
234
237
239
241
244 // m_h_ntrk_rec = new TH1F( "testtrk_N", "Test tracks", 100, vnbins );
245 m_h_ntrk_rec = new TH1F( "testtrk_N", "Test tracks", 77, vnbins );
246
248
249 // m_h_trkpT_rec = new TH1F("testtrk_pT" , "Test track pT", 25, 0., 100.);
250 m_h_trkpT_rec = new TH1F("testtrk_pT" , "Test track pT", 25, &ptbins[0] );
251 m_h_trkphi_rec = new TH1F("testtrk_phi", "Test track Phi", 25, -M_PI, M_PI);
252 m_h_trketa_rec = new TH1F("testtrk_eta", "Test track Eta", 25, -2.5, 2.5) ;
253 if (name().find("LRT")!=std::string::npos || name().find("lrt")!=std::string::npos) {
254 m_h_trkd0_rec = new TH1F("testtrk_d0" , "Test track d0", 201, -100.0, 100.0 );
255 } else {
256 m_h_trkd0_rec = new TH1F("testtrk_d0" , "Test track d0", 101, -5.0, 5.0 );
257 }
258 m_h_trkz0_rec = new TH1F("testtrk_z0" , "Test track z0", 50, -225., 225.);
259
260 m_h_trkdd0_rec = new TH1F("testtrk_dd0" , "Test track sigma(d0)", 50, 0, 0.5);
261 m_h_trkdz0_rec = new TH1F("testtrk_dz0" , "Test track sigma(z0)", 50, 0, 2.5);
262
263 m_h_trkd0sig_rec = new TH1F("testtrk_d0sig" , "Test track d0 significance", 101, -5.0, 5.0);
264
265
271
274
276
278
279 double d0bins_LRT[124] = { -100.5,
280 -97.5, -93.5, -90.5,
281 -86.5, -83.5, -80.5,
282 -77.5, -74.5, -71.5,
283 -69.5, -66.5, -63.5, -61.5,
284 -59.5, -57.5, -54.5, -52.5, -50.5,
285 -49.5, -47.5, -45.5, -43.5, -42.5, -40.5,
286 -39.5, -37.5, -36.5, -34.5, -33.5, -32.5, -31.5,
287 -29.5, -28.5, -27.5, -26.5, -25.5, -24.5, -23.5, -22.5, -21.5, -20.5,
288 -19.5, -18.5, -17.5, -16.5, -15.5, -14.5, -13.5, -12.5, -11.5, -10.5,
289 -9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
290 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5,
291 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5,
292 20.5, 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5,
293 31.5, 32.5, 33.5, 34.5, 36.5, 37.5, 39.5,
294 40.5, 42.5, 43.5, 45.5, 47.5, 49.5,
295 50.5, 52.5, 54.5, 57.5, 59.5,
296 61.5, 63.5, 66.5, 69.5,
297 71.5, 74.5, 77.5,
298 80.5, 83.5, 86.5,
299 90.5, 93.5, 97.5,
300 100.5 };
301
302 double d0bins[40] = { -5.0, -4.0, -3.0, -2.5,
303 -2.0, -1.8, -1.6, -1.4, -1.2,
304 -1.05, -0.95, -0.85, -0.75, -0.65, -0.55, -0.45, -0.35, -0.25, -0.15, -0.05,
305 0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 1.05,
306 1.2, 1.4, 1.6, 1.8, 2.0,
307 2.5, 3.0, 4.0, 5.0 };
308
309
310
311 m_h_total_efficiency = new TProfile ("Eff_overall", "total efficiency", 1, 0., 1.);
312
313 // m_h_pTeff = new TProfile( "Eff_pT", "pT efficiency", 25, 0., 100. );
314 m_h_pTeff = new TProfile( "Eff_pT", "pT efficiency", 25, &ptbins[0] );
315 m_h_etaeff = new TProfile( "Eff_Eta", "eta efficiency", 25, -2.5, 2.5 );
316 m_h_phieff = new TProfile( "Eff_Phi", "phi efficiency", 25, -M_PI, M_PI );
317 if (name().find("LRT")!=std::string::npos || name().find("lrt")!=std::string::npos) {
318 m_h_d0eff = new TProfile( "Eff_d0", "d0 efficiency", 123, d0bins_LRT );
319 } else {
320 m_h_d0eff = new TProfile( "Eff_d0", "d0 efficiency", 39, d0bins );
321 }
322 m_h_z0eff = new TProfile( "Eff_z0", "z0 efficiency", 50, -225., 225. );
323 m_h_nVtxeff = new TProfile( "Eff_nVtx", "nVtx efficiency", 101, -0.5, 100.5 );
324
325
326 m_h_lbeff = new TProfile( "Eff_lb", "efficinecy vs lumiblock", 301, -0.5, 3009.5 );
327
329
330 m_h_trkvtx_x_lb = new TProfile( "trkvtx_x_vs_lb", "track vertex x vs lumiblock", 301, -0.5, 3009.5 );
331 m_h_trkvtx_y_lb = new TProfile( "trkvtx_y_vs_lb", "track vertex y vs lumiblock", 301, -0.5, 3009.5 );
332 m_h_trkvtx_z_lb = new TProfile( "trkvtx_z_vs_lb", "track vertex z vs lumiblock", 301, -0.5, 3009.5 );
333
337
339 m_h_npixvseta = new TProfile("npix_vs_eta", "offline npix vs eta;offline #eta;# mean number of offline pixel hits", 30, -2.5, 2.5);
340 m_h_npixvseta_rec = new TProfile("npix_vs_eta_rec", "trigger npix vs eta;offline #eta;# mean number of trigger pixel hits", 30, -2.5, 2.5);
341
342 m_h_nsctvseta = new TProfile("nsct_vs_eta", "offline nsct vs eta;offline #eta;# mean number of offline sct hits", 30, -2.5, 2.5);
343 m_h_nsctvseta_rec = new TProfile("nsct_vs_eta_rec", "trigger nsct vs eta;offline #eta;# mean number of trigger sct hits", 30, -2.5, 2.5);
344
345 m_h_ntrtvseta = new TProfile("ntrt_vs_eta", "offline ntrt vs eta;offline #eta;# mean number of offline trt hits", 30, -2.5, 2.5 );
346 m_h_ntrtvseta_rec = new TProfile("ntrt_vs_eta_rec", "trigger ntrt vs eta;offline #eta;# mean number of trigger trt hits", 30, -2.5, 2.5 );
347
348 m_h_npixvsphi = new TProfile("npix_vs_phi", "offline npix vs phi;offline #phi;# mean number of offline pixel hits", 30, -M_PI, M_PI);
349 m_h_npixvsphi_rec = new TProfile("npix_vs_phi_rec", "trigger npix vs phi;offline #phi;# mean number of trigger pixel hits", 30, -M_PI, M_PI);
350
351 m_h_nsctvsphi = new TProfile("nsct_vs_phi", "offline nsct vs phi;offline #phi;# mean number of offline sct hits", 30, -M_PI, M_PI);
352 m_h_nsctvsphi_rec = new TProfile("nsct_vs_phi_rec", "trigger nsct vs phi;offline #phi;# mean number of trigger sct hits", 30, -M_PI, M_PI);
353
354 m_h_ntrtvsphi = new TProfile("ntrt_vs_phi", "offline ntrt vs phi;offline #phi;# mean number of offline trt hits", 30, -M_PI, M_PI );
355 m_h_ntrtvsphi_rec = new TProfile("ntrt_vs_phi_rec", "trigger ntrt vs phi;offline #phi;# mean number of trigger trt hits", 30, -M_PI, M_PI );
356
357 if (name().find("LRT")!=std::string::npos || name().find("lrt")!=std::string::npos) {
358 m_h_npixvsd0 = new TProfile("npix_vs_d0", "offline npix vs d0;offline #d0;# mean number of offline pixel hits", 123, d0bins_LRT );
359 m_h_npixvsd0_rec = new TProfile("npix_vs_d0_rec", "trigger npix vs d0;offline #d0;# mean number of trigger pixel hits", 123, d0bins_LRT );
360
361 m_h_nsctvsd0 = new TProfile("nsct_vs_d0", "offline nsct vs d0;offline #d0;# mean number of offline sct hits", 123, d0bins_LRT );
362 m_h_nsctvsd0_rec = new TProfile("nsct_vs_d0_rec", "trigger nsct vs d0;offline #d0;# mean number of trigger sct hits", 123, d0bins_LRT );
363 } else {
364 m_h_npixvsd0 = new TProfile("npix_vs_d0", "offline npix vs d0;offline #d0;# mean number of offline pixel hits", 39, d0bins );
365 m_h_npixvsd0_rec = new TProfile("npix_vs_d0_rec", "trigger npix vs d0;offline #d0;# mean number of trigger pixel hits", 39, d0bins );
366
367 m_h_nsctvsd0 = new TProfile("nsct_vs_d0", "offline nsct vs d0;offline #d0;# mean number of offline sct hits", 39, d0bins );
368 m_h_nsctvsd0_rec = new TProfile("nsct_vs_d0_rec", "trigger nsct vs d0;offline #d0;# mean number of trigger sct hits", 39, d0bins );
369 }
370
371 m_h_npixvspT = new TProfile("npix_vs_pT", "offline npix vs pT;offline #p_{T};# mean number of offline pixel hits", 25, &ptbins[0] );
372 m_h_npixvspT_rec = new TProfile("npix_vs_pT_rec", "trigger npix vs pT;offline #p_{T};# mean number of trigger pixel hits", 25, &ptbins[0] );
373
374 m_h_nsctvspT = new TProfile("nsct_vs_pT", "offline nsct vs pT;offline #p_{T} [GeV];# mean number of offline pixel hits", 25, &ptbins[0] );
375 m_h_nsctvspT_rec = new TProfile("nsct_vs_pT_rec", "trigger nsct vs pT;offline #p_{T} [GeV];# mean number of trigger pixel hits", 25, &ptbins[0] );
376
377
378 m_h_nsihits_lb = new TProfile( "nsihits_lb", "offline n sihits vs lumiblock", 301, -0.5, 3009.5 );
379 m_h_nsihits_lb_rec = new TProfile( "nsihits_lb_rec", "trigger n sihits vs lumiblock", 301, -0.5, 3009.5 );
380
383
384 m_h_layer_rec = new TH1F("layer_rec" , "hit layers", 32, -0.5, 31.5 );
385 m_h_layer = new TH1F("layer", "hit layers", 32, -0.5, 31.5 );
386
389
390
391
399
402
405
408
411
414
417
420
423
426
429
431
433
434 // m_h_pTres = new TProfile("Res_pT", "pT residual;pT [Gev];pT_{trig}-pT_{ref} [GeV]", 25, 0., 100.);
435 // m_h_pTres = new TProfile("Res_pT", "pT residual;pT [Gev];pT_{trig}-pT_{ref} [GeV]", 25, &ptbins[0] );
436 // m_h_ipTres = new TProfile("Res_ipT", "ipT residual;pT^{-1} [Gev^{-1}];1/pT_{trig}-1/pT_{ref} [GeV^{-1}]", 55, -5, 5 );
437 // m_h_etares = new TProfile("Res_eta", "Eta residual;#eta;#eta_{trig}-#eta_{ref}", 25, -2.5, 2.5);
438 // m_h_phires = new TProfile("Res_phi", "Phi residual;#phi;#phi_{trig}-#phi_{ref}", 25, -M_PI, M_PI);
439 // m_h_d0res = new TProfile("Res_d0", "d0 residual;d0 [mm];d0_{trig}-d0_{ref} [mm]", 50, -10., 10.);
440 // m_h_z0res = new TProfile("Res_z0", "z0 residual;z0 [mm];z0_{trig}-z0_{ref} [mm]", 50, -225., 225.);
441
442 m_h_pTres = new TProfile("Res_pT", "pT residual;#eta_{ref};#Delta pT [Gev]", 25, -2.5, 2.5 );
443 m_h_ipTres = new TProfile("Res_ipT", "ipT residual;#eta_{ref};#Delta pT^{-1} [Gev^{-1}]", 25, -2.5, 2.5);
444 m_h_etares = new TProfile("Res_eta", "Eta residual;#eta_{ref};#Delta #eta", 25, -2.5, 2.5);
445 m_h_phires = new TProfile("Res_phi", "Phi residual;#eta_{ref};#Delta #phi", 25, -2.5, 2.5);
446 m_h_d0res = new TProfile("Res_d0", "d0 residual;#eta_{ref};#Delta d0 [mm]", 25, -2.5, 2.5);
447 m_h_z0res = new TProfile("Res_z0", "z0 residual;#eta_{ref};#Delta z0 [mm]", 25, -2.5, 2.5);
448
455
457
458 m_h_trkpT_residual = new TH1F("residual_pT" , "track pT residual", 201, -100.0, 100.0 );
459 m_h_trkipT_residual = new TH1F("residual_ipT", "track ipT residual", 55, -5.5, 5.5 );
460 m_h_trkphi_residual = new TH1F("residual_phi", "track Phi residual", 50, -0.02, 0.02 );
461 m_h_trketa_residual = new TH1F("residual_eta", "track Eta residual", 50, -0.02, 0.02 );
462 m_h_trkd0_residual = new TH1F("residual_d0" , "track d0 residual ", 251, -2.5, 2.5 );
463 m_h_trkz0_residual = new TH1F("residual_z0" , "track z0 residual", 401, -20.0, 20.0 );
464
465 m_h_trkdd0_residual = new TH1F("residual_dd0" , "track sigma d0 residual ", 251, -0.5, 0.5 );
466 m_h_trkdz0_residual = new TH1F("residual_dz0" , "track sigma z0 residual", 401, -1.0, 1.0 );
467
474
477
478 m_h_npix = new TH1F("npix", "npix", 26, -0.5, 25.5 );
479 m_h_npix_rec = new TH1F("npix_rec", "npix_rec", 26, -0.5, 25.5 );
480
481 m_h_nsct = new TH1F("nsct", "nsct", 31, -0.5, 30.5 );
482 m_h_nsct_rec = new TH1F("nsct_rec", "nsct_rec", 31, -0.5, 30.5 );
483
484 m_h_nsihits = new TH1F("nsiHits", "nsiHits", 41, -0.5, 40.5 );
485 m_h_nsihits_rec = new TH1F("nsiHits_rec", "nsiHits_rec", 41, -0.5, 40.5 );
486
487 m_h_ntrt = new TH1F("ntrt", "ntrt", 91, -0.5, 91.5 );
488 m_h_ntrt_rec = new TH1F("ntrt_rec", "ntrt_rec", 91, -0.5, 91.5 );
489
494
499
501
502 m_h_d0vsphi = new TProfile( "d0_vs_phi_prof", "d0 vs phi_prof", 25, -M_PI, M_PI );
503 m_h_d0vsphi_rec = new TProfile( "d0_vs_phi_rec_prof", "d0 vs phi_rec_prof", 25, -M_PI, M_PI );
504
507
512
513 // h2d_d0vsphi = 0; // new TH2D( "d0_vs_phi", "d0 vs phi", 25, -M_PI, M_PI, 50, -2.6, 2.6 );
514 // h2d_d0vsphi_rec = 0; // new TH2D( "d0_vs_phi_rec", "d0 vs phi rec", 25, -M_PI, M_PI, 50, -2.6, 2.6 );
515
516 // addHistogram( h2d_d0vsphi );
517 // addHistogram( h2d_d0vsphi_rec );
518
519 m_vtxanal = 0;
520
521#if 1
522
523 // std::cout << "Analysis_Tier0 vertex info: " << name() << std::endl;
524
526 if ( name().find("vtx")!=std::string::npos || name().find("Vtx")!=std::string::npos ||
527 name().find("vx")!=std::string::npos || name().find("Vx")!=std::string::npos ) {
528
529 // std::cout << "Analysis_Tier0 vertex info: " << name() << std::endl;
530
531 m_vtxanal = new VtxAnalysis("VTX");
532
534 store().insert( m_vtxanal, "VTX" );
535
537 m_vtxanal->initialise();
538
539 // std::cout << "vtxanal obj size() " << m_vtxanal->objects().size() << std::endl;
540 // std::cout << "vtxanal prof size() " << m_vtxanal->profs().size() << std::endl;
541
543 for ( unsigned i=0 ; i<m_vtxanal->objects().size() ; i++ ) addHistogram( m_vtxanal->objects()[i] );
544 for ( unsigned i=0 ; i<m_vtxanal->profs().size() ; i++ ) addHistogram( m_vtxanal->profs()[i] );
545 }
546#endif
547
548}
549
551
552
553void Analysis_Tier0::execute(const std::vector<TIDA::Track*>& referenceTracks,
554 const std::vector<TIDA::Track*>& testTracks,
555 TrackAssociator* associator ) {
556
558 std::vector<TIDA::Track*>::const_iterator reference = referenceTracks.begin();
559 std::vector<TIDA::Track*>::const_iterator referenceEnd = referenceTracks.end();
560
563 m_h_chain->Fill( 0.5 );
564
565 if ( m_eventid != event()->event_number() ) {
569 m_h_chain->Fill( 1.5 );
570 }
571
572 m_h_ntrk->Fill( referenceTracks.size() );
573 m_h_ntrk_rec->Fill( testTracks.size() );
574
576 m_h_chain->Fill(4.5, testTracks.size() );
577
578
579 for( ; reference!=referenceEnd ; ++reference ) {
580
581 // Get reference parameters
582 double referenceEta = (*reference)->eta();
583 double referencePhi = phi((*reference)->phi());
584 double referenceZ0 = (*reference)->z0();
585 double referenceD0 = (*reference)->a0();
586 double referencePT = (*reference)->pT();
587
588 double referenceDZ0 = (*reference)->dz0();
589 double referenceDD0 = (*reference)->da0();
590
591 // Find matched tracks
592 const TIDA::Track* test = associator->matched(*reference);
593
594 double eff_weight = 0;
595 if (test) eff_weight = 1;
596
597 m_h_total_efficiency->Fill(0.5, eff_weight );
598
599 m_h_pTeff->Fill( std::fabs(referencePT)*0.001, eff_weight );
600 m_h_z0eff->Fill( referenceZ0, eff_weight );
601 m_h_d0eff->Fill( referenceD0, eff_weight );
602 m_h_etaeff->Fill( referenceEta, eff_weight );
603 m_h_phieff->Fill( referencePhi, eff_weight );
604 m_h_nVtxeff->Fill( m_nVtx, eff_weight );
605
606 m_h_lbeff->Fill( event()->lumi_block(), eff_weight );
607
608 m_h_trkpT->Fill( std::fabs(referencePT)*0.001 );
609 m_h_trketa->Fill( referenceEta );
610 m_h_trkphi->Fill( referencePhi );
611 m_h_trkd0->Fill( referenceD0 );
612 m_h_trkz0->Fill( referenceZ0 );
613
614 m_h_trkdd0->Fill( referenceDD0 );
615 m_h_trkdz0->Fill( referenceDZ0 );
616
617 if ( referenceDD0!=0 ) m_h_trkd0sig->Fill( referenceD0/referenceDD0 );
618
619 m_h_npixvseta->Fill( referenceEta, int(((*reference)->pixelHits()+0.5)*0.5) );
620 m_h_nsctvseta->Fill( referenceEta, (*reference)->sctHits() );
621 m_h_ntrtvseta->Fill( referenceEta, (*reference)->strawHits() );
622
623
624 m_h_npixvsphi->Fill( referencePhi, int(((*reference)->pixelHits()+0.5)*0.5) );
625 m_h_nsctvsphi->Fill( referencePhi, (*reference)->sctHits() );
626 m_h_ntrtvsphi->Fill( referencePhi, (*reference)->strawHits() );
627
628 m_h_npixvsd0->Fill( referenceD0, int(((*reference)->pixelHits()+0.5)*0.5) );
629 m_h_nsctvsd0->Fill( referenceD0, (*reference)->sctHits() );
630
631 m_h_npixvspT->Fill( std::fabs(referencePT)*0.001, int(((*reference)->pixelHits()+0.5)*0.5) );
632 m_h_nsctvspT->Fill( std::fabs(referencePT)*0.001, (*reference)->sctHits() );
633
634
635 m_h_npix->Fill( int(((*reference)->pixelHits()+0.5)*0.5) );
636 m_h_nsct->Fill( (*reference)->sctHits() );
637 m_h_nsihits->Fill( (*reference)->siHits() );
638 m_h_ntrt->Fill( (*reference)->strawHits() );
639
640
641 m_h_nsihits_lb->Fill( event()->lumi_block(), (*reference)->siHits() );
642
643 m_h_d0vsphi->Fill(referencePhi, referenceD0 );
644
646 m_h_chain->Fill(2.5);
647
648
649 for ( size_t ilayer=0 ; ilayer<32 ; ilayer++ ) {
650 if ( (*reference)->hitPattern()&(1U<<ilayer) ) m_h_layer->Fill( ilayer );
651 }
652
653 if (test) {
654
655 m_h_chain->Fill(3.5);
656
659
661 // m_h_pTres->Fill( referencePT*0.001, (test->pT() - referencePT)*0.001 );
662 // m_h_ipTres->Fill( 1000/referencePT, (1000/test->pT() - 1000/referencePT) );
663 // m_h_etares->Fill( referenceEta, test->eta() - referenceEta );
664 // m_h_phires->Fill( referencePhi, phi(test->phi() - referencePhi) );
665 // m_h_d0res->Fill( referenceD0, test->a0() - referenceD0 );
666 // m_h_z0res->Fill( referenceZ0, test->z0() - referenceZ0 );
667
669 m_h_pTres->Fill( referenceEta, (test->pT() - referencePT)*0.001 );
670 m_h_ipTres->Fill( referenceEta, (1000/test->pT() - 1000/referencePT) );
671 m_h_etares->Fill( referenceEta, test->eta() - referenceEta );
672 m_h_phires->Fill( referenceEta, phi(test->phi() - referencePhi) );
673 m_h_d0res->Fill( referenceEta, test->a0() - referenceD0 );
674 m_h_z0res->Fill( referenceEta, test->z0() - referenceZ0 );
675
676 m_h_trkvtx_x_lb->Fill( event()->lumi_block(), beamTestx() );
677 m_h_trkvtx_y_lb->Fill( event()->lumi_block(), beamTesty() );
678 m_h_trkvtx_z_lb->Fill( event()->lumi_block(), beamTestz() );
679
680 for ( size_t ilayer=0 ; ilayer<32 ; ilayer++ ) {
681 if ( test->hitPattern()&(1U<<ilayer) ) m_h_layer_rec->Fill( ilayer );
682 }
683
684 // std::cout << "SUTT beam x " << beamTestx() << " " << "\tx " << beamTesty() << " " << "\ty " << beamTestz() << std::endl;
685
686#if 0
688 m_h_trkpT_rec->Fill( referencePT*0.001 );
689 m_h_trketa_rec->Fill( referenceEta );
690 m_h_trkphi_rec->Fill( referencePhi );
691 m_h_trkd0_rec->Fill( referenceD0 );
692 m_h_trkz0_rec->Fill( referenceZ0 );
693
694#endif
695
697 m_h_trkpT_rec->Fill( std::fabs(test->pT())*0.001 );
698 m_h_trketa_rec->Fill( test->eta() );
699 m_h_trkphi_rec->Fill( test->phi() );
700 m_h_trkd0_rec->Fill( test->a0() );
701 m_h_trkz0_rec->Fill( test->z0() );
702
703 m_h_trkdd0_rec->Fill( test->da0() );
704 m_h_trkdz0_rec->Fill( test->dz0() );
705
706 if ( test->da0()!=0 ) m_h_trkd0sig_rec->Fill( test->a0()/test->da0() );
707
708
710 m_h_trkpT_residual->Fill( (test->pT() - referencePT)*0.001 );
711 m_h_trkipT_residual->Fill( (1000/test->pT() - 1000/referencePT) );
712 m_h_trketa_residual->Fill( test->eta() - referenceEta );
713 m_h_trkphi_residual->Fill( phi(test->phi() - referencePhi) );
714
715 m_h_trkd0_residual->Fill( test->a0() - referenceD0 );
716 m_h_trkz0_residual->Fill( test->z0() - referenceZ0 );
717
718 m_h_trkdd0_residual->Fill( test->da0() - referenceDD0 );
719 m_h_trkdz0_residual->Fill( test->dz0() - referenceDZ0 );
720
721 m_h_npixvseta_rec->Fill( referenceEta, int((test->pixelHits()+0.5)*0.5) );
722 m_h_nsctvseta_rec->Fill( referenceEta, test->sctHits() );
723
724 m_h_npixvsphi_rec->Fill( referencePhi, int((test->pixelHits()+0.5)*0.5) );
725 m_h_nsctvsphi_rec->Fill( referencePhi, test->sctHits() );
726
727 m_h_npixvsd0_rec->Fill( referenceD0, int((test->pixelHits()+0.5)*0.5) );
728 m_h_nsctvsd0_rec->Fill( referenceD0, test->sctHits() );
729
730 m_h_npixvspT_rec->Fill( std::fabs(referencePT)*0.001, int((test->pixelHits()+0.5)*0.5) );
731 m_h_nsctvspT_rec->Fill( std::fabs(referencePT)*0.001, test->sctHits() );
732
733 m_h_npix_rec->Fill( int((test->pixelHits()+0.5)*0.5) );
734 m_h_nsct_rec->Fill( test->sctHits() );
735 m_h_nsihits_rec->Fill( test->siHits() );
736
737 m_h_nsihits_lb_rec->Fill( event()->lumi_block(), test->siHits() );
738
739
740 m_h_ntrt_rec->Fill( test->strawHits() );
741
742 m_h_ntrtvseta_rec->Fill( referenceEta, test->strawHits() );
743 m_h_ntrtvsphi_rec->Fill( referencePhi, test->strawHits() );
744
745 m_h_d0vsphi_rec->Fill( test->phi(), test->a0() );
746
747 }
748
749 }
750}
751
752
753
754
755void Analysis_Tier0::execute_vtx(const std::vector<TIDA::Vertex*>& vtx0,
756 const std::vector<TIDA::Vertex*>& vtx1,
757 const TIDA::Event* tevt ) {
758 if ( m_vtxanal ) m_vtxanal->execute( vtx0, vtx1, tevt );
759}
760
761
763 if ( m_vtxanal ) m_vtxanal->finalise();
764}
765
766
767
768double Analysis_Tier0::phi(double p) {
769 if(p < -M_PI) p += 2*M_PI;
770 if(p > M_PI) p -= 2*M_PI;
771 return p;
772}
773
774
775
776
777
#define M_PI
Scalar phi() const
phi method
TIDARoiDescriptor * agroi
TIDA::Associator< TIDA::Track > TrackAssociator
#define y
#define x
Analysis_Tier0(const std::string &name, double pTCut, double etaCut, double d0Cut, double z0Cut)
TProfile * m_h_nsctvseta_rec
TProfile * m_h_npixvsphi
TH1F * m_h_trkpT_residual
TProfile * m_h_npixvspT_rec
ToolHandle< GenericMonitoringTool > * m_monTool
TProfile * m_h_pTres
TProfile * m_h_ntrtvseta
TProfile * m_h_ntrtvseta_rec
TProfile * m_h_trkvtx_y_lb
TProfile * m_h_etaeff
TH1F * m_h_trkipT_residual
TProfile * m_h_d0eff
TProfile * m_h_nsctvsphi
TProfile * m_h_npixvseta_rec
TProfile * m_h_phires
VtxAnalysis * m_vtxanal
TH1F * m_h_trketa_residual
TProfile * m_h_nsctvseta
TProfile * m_h_trkvtx_z_lb
TProfile * m_h_npixvsd0
TProfile * m_h_d0vsphi_rec
TProfile * m_h_npixvspT
virtual void execute_vtx(const std::vector< TIDA::Vertex * > &vtx0, const std::vector< TIDA::Vertex * > &vtx1, const TIDA::Event *tevt=0)
unsigned long long m_eventid
void addHistogram(TH1 *h)
virtual void execute(const std::vector< TIDA::Track * > &referenceTracks, const std::vector< TIDA::Track * > &testTracks, TrackAssociator *associator)
TProfile * m_h_npixvsphi_rec
TH1F * m_h_trkdz0_residual
TProfile * m_h_trkvtx_x_lb
TProfile * m_h_nsctvspT_rec
TProfile * m_h_nsihits_lb_rec
TProfile * m_h_ntrtvsphi
TH1F * m_h_trkdd0_residual
virtual void finalise()
TProfile * m_h_lbeff
TProfile * m_h_nVtxeff
TH1F * m_h_trkz0_residual
TProfile * m_h_nsctvsd0
TProfile * m_h_ntrtvsphi_rec
double phi(double p)
TProfile * m_h_nsihits_lb
TProfile * m_h_nsctvsphi_rec
TProfile * m_h_d0res
TH1F * m_h_trkphi_residual
TProfile * m_h_etares
TProfile * m_h_d0vsphi
TProfile * m_h_pTeff
TProfile * m_h_nsctvsd0_rec
TProfile * m_h_z0res
TProfile * m_h_z0eff
TProfile * m_h_phieff
TProfile * m_h_ipTres
TProfile * m_h_nsctvspT
TH1F * m_h_trkd0_residual
TProfile * m_h_total_efficiency
TProfile * m_h_npixvsd0_rec
virtual void initialise()
standard operation interface
TProfile * m_h_npixvseta
Describes the Region of Ineterest geometry It has basically 8 parameters.
virtual const S * matched(T *t)
void event_number(unsigned long long e)
Definition TIDAEvent.h:43
void insert(T *t, const std::string &key)
TIDA::FeatureStore & store()
const TIDA::Event * event() const
const std::string & name() const
return identifier
double beamTestz() const
TrackAnalysis(const std::string &name)
the beam test parts are not really usable in a multithreaded environment
double beamTesty() const
double beamTestx() const
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:138