Belle II Software development
SVDROIFinderAnalysisDataModule.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#include <tracking/modules/roiFinding/svd/SVDROIFinderAnalysisDataModule.h>
10#include <framework/datastore/StoreArray.h>
11#include <framework/logging/Logger.h>
12
13#include <mdst/dataobjects/Track.h>
14#include <tracking/dataobjects/RecoTrack.h>
15#include <tracking/dataobjects/ROIid.h>
16#include <tracking/dataobjects/SVDIntercept.h>
17#include <svd/dataobjects/SVDShaperDigit.h>
18
19#include <cmath>
20#include <iostream>
21
22using namespace Belle2;
23
24//-----------------------------------------------------------------
25// Register the Module
26//-----------------------------------------------------------------
27REG_MODULE(SVDROIFinderAnalysisData);
28
29//-----------------------------------------------------------------
30// Implementation
31//-----------------------------------------------------------------
32
34 , m_recoTrackListName()
35 , m_SVDInterceptListName()
36 , m_ROIListName()
37 , m_rootFilePtr(nullptr)
38 , m_rootFileName("")
39 , m_writeToRoot(false)
40 , m_rootEvent(0)
41 //all tracks
42 , m_h1Track(nullptr)
43 , m_h1Track_pt(nullptr)
44 , m_h1Track_phi(nullptr)
45 , m_h1Track_lambda(nullptr)
46 , m_h1Track_cosTheta(nullptr)
47 , m_h1Track_pVal(nullptr)
48 //tracks with an attached ROI
49 , m_h1ROItrack(nullptr)
50 , m_h1ROItrack_pt(nullptr)
51 , m_h1ROItrack_phi(nullptr)
52 , m_h1ROItrack_lambda(nullptr)
53 , m_h1ROItrack_cosTheta(nullptr)
54 , m_h1ROItrack_pVal(nullptr)
55 //tracks with an attached Good ROI
56 , m_h1GoodROItrack(nullptr)
57 , m_h1GoodROItrack_pt(nullptr)
58 , m_h1GoodROItrack_phi(nullptr)
59 , m_h1GoodROItrack_lambda(nullptr)
60 , m_h1GoodROItrack_cosTheta(nullptr)
61 , m_h1GoodROItrack_pVal(nullptr)
62 //tracks with an attached Good ROI containing at least one SVDShaperDigit
63 , m_h1FullROItrack(nullptr)
64 , m_h1FullROItrack_pt(nullptr)
65 , m_h1FullROItrack_phi(nullptr)
66 , m_h1FullROItrack_lambda(nullptr)
67 , m_h1FullROItrack_cosTheta(nullptr)
68 , m_h1FullROItrack_pVal(nullptr)
69 //digits inside ROI
70 , m_h1PullU(nullptr)
71 , m_h1PullV(nullptr)
72 , m_h2sigmaUphi(nullptr)
73 , m_h2sigmaVphi(nullptr)
74 , m_h1ResidU(nullptr)
75 , m_h1ResidV(nullptr)
76 , m_h1SigmaU(nullptr)
77 , m_h1SigmaV(nullptr)
78 , m_h1GlobalTime(nullptr)
79 //ROI stuff
80 , m_h2ROIuMinMax(nullptr)
81 , m_h2ROIvMinMax(nullptr)
82 , m_h2ROIcenters(nullptr)
83 , m_h2GoodROIcenters(nullptr)
84 , m_h2FullROIcenters(nullptr)
85 , m_h1totROIs(nullptr)
86 , m_h1goodROIs(nullptr)
87 , m_h1okROIs(nullptr)
88 , m_h1effROIs(nullptr)
89 // , m_h1totUstrips(nullptr)
90 // , m_h1totVstrips(nullptr)
91 //variables
92 , n_rois(0)
93 , m_nGoodROIs(0)
94 , m_nOkROIs(0)
95 , n_intercepts(0)
96 , n_tracks(0)
97{
98 //Set module properties
99 setDescription("This module performs the analysis of the SVDROIFinder module output ON DATA");
100
101 addParam("writeToRoot", m_writeToRoot,
102 "set true if you want to save the information in a root file named by parameter 'rootFileName'", bool(true));
103
104 addParam("rootFileName", m_rootFileName,
105 "fileName used for . Will be ignored if parameter 'writeToRoot' is false (standard)",
106 std::string("svdDataRedAnalysisData"));
107
108 addParam("recoTrackListName", m_recoTrackListName,
109 "name of the input collection of RecoTracks", std::string(""));
110
111 addParam("shapers", m_shapersName,
112 "name of the input collection of SVDShaperDigits", std::string(""));
113
114 addParam("SVDInterceptListName", m_SVDInterceptListName,
115 "name of the list of interceptions", std::string(""));
116
117 addParam("ROIListName", m_ROIListName,
118 "name of the list of ROIs", std::string(""));
119
120 addParam("edgeU", m_edgeU, "fiducial region: edge U [mm]", float(10));
121 addParam("edgeV", m_edgeV, "fiducial region: edge V [mm]", float(10));
122 addParam("minPVal", m_minPVal, "fiducial region: minimum track P-Value", float(0.001));
123
124}
125
127{
128}
129
130
132{
133
134 m_shapers.isRequired(m_shapersName);
136 m_tracks.isRequired();
137 m_ROIs.isRequired(m_ROIListName);
139
140 n_rois = 0;
141 m_nGoodROIs = 0; //data
142 m_nOkROIs = 0; //data
143 n_intercepts = 0;
144 n_tracks = 0;
145
146 if (m_writeToRoot == true) {
147 m_rootFileName += ".root";
148 m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
149 } else
150 m_rootFilePtr = nullptr;
151
152
153 m_h1GlobalTime = new TH1F("hGlobalTime", "global time for SVDShaperDigits contained in ROI", 200, -100, 100);
154 m_h1PullU = new TH1F("hPullU", "U pulls for SVDShaperDigits contained in ROI", 100, -6, 6);
155 m_h1PullV = new TH1F("hPullV", "V pulls for SVDShaperDigits contained in ROI", 100, -6, 6);
156 m_h2sigmaUphi = new TH2F("hsigmaUvsPhi", "sigmaU vs phi digits in ROI", 100, -180, 180, 100, 0, 0.35);
157 m_h2sigmaVphi = new TH2F("hsigmaVvsPhi", "sigmaU vs phi digits in ROI", 100, -180, 180, 100, 0, 0.4);
158 m_h1ResidU = new TH1F("hResidU", "U resid for SVDShaperDigits contained in ROI", 100, -0.5, 0.5);
159 m_h1ResidV = new TH1F("hResidV", "V resid for SVDShaperDigits contained in ROI", 100, -0.5, 0.5);
160 m_h1SigmaU = new TH1F("hSigmaU", "sigmaU for SVDShaperDigits contained in ROI", 100, 0, 0.35);
161 m_h1SigmaV = new TH1F("hSigmaV", "sigmaV for SVDShaperDigits contained in ROI", 100, 0, 0.35);
162
163 /*
164 m_h1GlobalTime_out = new TH1F("hGlobalTime_out", "global time for SVDShaperDigits not contained in ROI", 200, -100, 100);
165 m_h2sigmaUphi_out = new TH2F("hsigmaUvsPhi_out", "sigmaU vs phi digits not contained in ROI", 100, -180, 180, 100, 0, 0.35);
166 m_h2sigmaVphi_out = new TH2F("hsigmaVvsPhi_out", "sigmaU vs phi digits not contained in ROI", 100, -180, 180, 100, 0, 0.4);
167 m_h1ResidU_out = new TH1F("hResidU_out", "U resid for SVDShaperDigits not contained in ROI", 100, -2.5, 2.5);
168 m_h1ResidV_out = new TH1F("hResidV_out", "V resid for SVDShaperDigits not contained in ROI", 100, -2.5, 2.5);
169 m_h1SigmaU_out = new TH1F("hSigmaU_out", "sigmaU for SVDShaperDigits not contained in ROI", 100, 0, 0.35);
170 m_h1SigmaV_out = new TH1F("hSigmaV_out", "sigmaV for SVDShaperDigits not contained in ROI", 100, 0, 0.35);
171 */
172
173 m_h1totROIs = new TH1F("h1TotNROIs", "number of all ROIs", 110, 0, 110);
174 m_h1goodROIs = new TH1F("h1GoodNROIs", "number of ROIs from Good Track", 110, 0, 110);
175 m_h1okROIs = new TH1F("h1OkNROIs", "number of Good ROIs containing a SVDShaperDigit", 110, 0, 110);
176 m_h1effROIs = new TH1F("h1EffSVD", "fraction of Good ROIs containing a SVDShaperDigit", 100, 0, 1.1);
177
178 // m_h1totUstrips = new TH1F("h1TotUstrips", "number of U strips in ROIs", 100, 0, 250000);
179 // m_h1totVstrips = new TH1F("h1TotVstrips", "number of V strips in ROIs", 100, 0, 250000);
180
181
182 m_h2ROIuMinMax = new TH2F("h2ROIuMinMax", "u Min vs Max (all ROIs)", 960, -100, 860, 960, -100, 860);
183 m_h2ROIvMinMax = new TH2F("h2ROIvMinMax", "v Min vs Max (all ROIs)", 960, -100, 860, 960, -100, 860);
184 m_h2ROIcenters = new TH2F("h2ROIcenters", "ROI Centers", 768, 0, 768, 512, 0, 512);
185 m_h2GoodROIcenters = new TH2F("h2GoodROIcenters", "Good ROI Centers", 768, 0, 768, 512, 0, 512);
186 m_h2FullROIcenters = new TH2F("h2FullROIcenters", "Full ROI Centers", 768, 0, 768, 512, 0, 512);
187
188 //analysis
189 /* Double_t lowBin[6 + 1];
190 for (int i = 0; i < 6; i++)
191 lowBin[i] = pt[i] - ptErr[i];
192 lowBin[6] = pt[5] + ptErr[5];
193 */
194
195 m_h1ROItrack = new TH1F("hROITrack", "track with an attached Good ROI", 2, 0, 2);
196 m_h1ROItrack_pt = new TH1F("hROITrack_pT", "Track with an attached Good ROI, Transverse Momentum", 100, 0, 8);
197 m_h1ROItrack_phi = new TH1F("h1ROITrack_phi", "Track with an attached Good ROI, Momentum Phi", 200, -TMath::Pi() - 0.01,
198 TMath::Pi() + 0.01);
199 m_h1ROItrack_lambda = new TH1F("h1ROITrack_lambda", "Track with an attached Good ROI, Lambda", 100, -TMath::Pi() - 0.01,
200 TMath::Pi() + 0.01);
201 m_h1ROItrack_cosTheta = new TH1F("h1ROITrack_cosTheta", "Track with an attached Good ROI, Momentum CosTheta", 100, -1 - 0.01, 1.01);
202 m_h1ROItrack_pVal = new TH1F("h1ROITrack_pVal", "Track with an attached Good ROI, P-Value", 1000, 0, 1 + 0.01);
203
204 m_h1FullROItrack = new TH1F("hFullROITrack", "track with an attached Full ROI", 20, 0, 20);
205 m_h1FullROItrack_pt = new TH1F("hFullROITrack_pT", "Track with an attached Full ROI, Transverse Momentum", 100, 0, 8);
206 m_h1FullROItrack_phi = new TH1F("h1FullROITrack_phi", "Track with an attached Full ROI, Momentum Phi", 200, -TMath::Pi() - 0.01,
207 TMath::Pi() + 0.01);
208 m_h1FullROItrack_lambda = new TH1F("h1FullROITrack_lambda", "Track with an attached Full ROI, Lambda", 100, -TMath::Pi() - 0.01,
209 TMath::Pi() + 0.01);
210 m_h1FullROItrack_cosTheta = new TH1F("h1FullROITrack_cosTheta", "Track with an attached Full ROI, Momentum CosTheta", 100,
211 -1 - 0.01, 1.01);
212 m_h1FullROItrack_pVal = new TH1F("h1FullROITrack_pVal", "Track with an attached Full ROI, P-Value", 1000, 0, 1 + 0.01);
213
214 m_h1GoodROItrack = new TH1F("hGoodROITrack", "track with an attached Good ROI", 20, 0, 20);
215 m_h1GoodROItrack_pt = new TH1F("hGoodROITrack_pT", "Track with an attached Good ROI, Transverse Momentum", 100, 0, 8);
216 m_h1GoodROItrack_phi = new TH1F("h1GoodROITrack_phi", "Track with an attached Good ROI, Momentum Phi", 200, -TMath::Pi() - 0.01,
217 TMath::Pi() + 0.01);
218 m_h1GoodROItrack_lambda = new TH1F("h1GoodROITrack_lambda", "Track with an attached Good ROI, Lambda", 100, -TMath::Pi() - 0.01,
219 TMath::Pi() + 0.01);
220 m_h1GoodROItrack_cosTheta = new TH1F("h1GoodROITrack_cosTheta", "Track with an attached Good ROI, Momentum CosTheta", 100,
221 -1 - 0.01, 1.01);
222 m_h1GoodROItrack_pVal = new TH1F("h1GoodROITrack_pVal", "Track with an attached Good ROI, P-Value", 1000, 0, 1 + 0.01);
223
224 m_h1Track = new TH1F("hTrack", "Number of Tracks per Event", 20, 0, 20);
225 m_h1Track_pt = new TH1F("hTrack_pT", "Track Transverse Momentum", 100, 0, 8);
226 m_h1Track_lambda = new TH1F("h1Track_lambda", "Track Momentum Lambda", 100, -TMath::Pi() + 0.01, TMath::Pi() + 0.01);
227 m_h1Track_phi = new TH1F("h1Track_phi", "Track momentum Phi", 200, -TMath::Pi() - 0.01, TMath::Pi() + 0.01);
228 m_h1Track_cosTheta = new TH1F("h1Track_cosTheta", "Track Momentum CosTheta", 100, -1 - 0.01, 1 + 0.01);
229 m_h1Track_pVal = new TH1F("h1Track_pVal", "Track P-Value", 1000, 0, 1 + 0.01);
230
231 m_rootEvent = 0;
232}
233
235{
236
237 B2DEBUG(21, " ++++++++++++++ SVDROIFinderAnalysisDataModule");
238
239 int nGoodROIs = 0;
240 int nOkROIs = 0;
241
242
243 //Tracks generals
244 for (int i = 0; i < (int)m_tracks.getEntries(); i++) { //loop on all Tracks
245
246 const TrackFitResult* tfr = m_tracks[i]->getTrackFitResultWithClosestMass(Const::pion);
247
248 ROOT::Math::XYZVector mom = tfr->getMomentum();
249 m_h1Track_pt->Fill(mom.Rho());
250 m_h1Track_phi->Fill(mom.Phi());
251 m_h1Track_cosTheta->Fill(cos(mom.Theta()));
252 m_h1Track_lambda->Fill(TMath::Pi() / 2 - mom.Theta());
253 m_h1Track_pVal->Fill(tfr->getPValue());
254
255 }
256 m_h1Track->Fill(m_tracks.getEntries());
257
258 //ROIs general
259 for (int i = 0; i < (int)m_ROIs.getEntries(); i++) { //loop on ROIlist
260
261 float centerROIU = (m_ROIs[i]->getMaxUid() + m_ROIs[i]->getMinUid()) / 2;
262 float centerROIV = (m_ROIs[i]->getMaxVid() + m_ROIs[i]->getMinVid()) / 2;
263
264 m_h2ROIuMinMax->Fill(m_ROIs[i]->getMinUid(), m_ROIs[i]->getMaxUid());
265 m_h2ROIvMinMax->Fill(m_ROIs[i]->getMinVid(), m_ROIs[i]->getMaxVid());
266 m_h2ROIcenters->Fill(centerROIU, centerROIV);
267
268 RelationVector<SVDIntercept> theIntercept = DataStore::getRelationsWithObj<SVDIntercept>(m_ROIs[i]);
269 RelationVector<RecoTrack> theRC = DataStore::getRelationsWithObj<RecoTrack>(theIntercept[0]);
270
271 if (!theRC[0]->wasFitSuccessful()) {
272 m_h1ROItrack->Fill(0);
273 continue;
274 }
275
276 RelationVector<Track> theTrack = DataStore::getRelationsWithObj<Track>(theRC[0]);
277
278 const TrackFitResult* tfr = theTrack[0]->getTrackFitResultWithClosestMass(Const::pion);
279
280 if (tfr->getPValue() < m_minPVal) {
281 m_h1ROItrack->Fill(0);
282 continue;
283 }
284
285 ROOT::Math::XYZVector mom = tfr->getMomentum();
286 m_h1ROItrack->Fill(1);
287 m_h1ROItrack_pt->Fill(mom.Rho());
288 m_h1ROItrack_phi->Fill(mom.Phi());
289 m_h1ROItrack_cosTheta->Fill(cos(mom.Theta()));
290 m_h1ROItrack_lambda->Fill(TMath::Pi() / 2 - mom.Theta());
291 m_h1ROItrack_pVal->Fill(tfr->getPValue());
292
293
294 VxdID sensorID = m_ROIs[i]->getSensorID();
295
296 float nStripsU = 768;
297 float nStripsV = 512;
298 float centerSensorU = nStripsU / 2;
299 float centerSensorV = nStripsV / 2;
300 float pitchU = 0.075; //mm
301 float pitchV = 0.240; //mm
302
303 if (sensorID.getLayerNumber() == 3) {
304 nStripsV = 768;
305 pitchU = 0.050;
306 pitchV = 0.160;
307 }
308
309 float edgeStripsU = m_edgeU / pitchU;
310 float edgeStripsV = m_edgeV / pitchV;
311 B2DEBUG(21, "good U in range " << edgeStripsU << ", " << nStripsU - edgeStripsU);
312 B2DEBUG(21, "good V in range " << edgeStripsV << ", " << nStripsV - edgeStripsV);
313
314 B2DEBUG(21, "U check: " << std::abs(centerROIU - centerSensorU) << " < (good) " << centerSensorU - edgeStripsU);
315 B2DEBUG(21, "V check: " << std::abs(centerROIV - centerSensorV) << " < (good) " << centerSensorV - edgeStripsV);
316
317 if ((std::abs(centerROIU - centerSensorU) > centerSensorU - edgeStripsU)
318 || (std::abs(centerROIV - centerSensorV) > centerSensorV - edgeStripsV))
319 continue;
320
321 nGoodROIs++;
322 m_h2GoodROIcenters->Fill(centerROIU, centerROIV);
323
324 B2RESULT("");
325 B2RESULT("GOOD ROI " << sensorID.getLayerNumber() << "." << sensorID.getLadderNumber() << "." << sensorID.getSensorNumber() <<
326 ": U side " << m_ROIs[i]->getMinUid() << "->" << m_ROIs[i]->getMaxUid() << ", V side " << m_ROIs[i]->getMinVid() << "->" <<
327 m_ROIs[i]->getMaxVid());
328
329 m_h1GoodROItrack_pt->Fill(mom.Rho());
330 m_h1GoodROItrack_phi->Fill(mom.Phi());
331 m_h1GoodROItrack_cosTheta->Fill(cos(mom.Theta()));
332 m_h1GoodROItrack_lambda->Fill(TMath::Pi() / 2 - mom.Theta());
333 m_h1GoodROItrack_pVal->Fill(tfr->getPValue());
334
335 for (int s = 0; s < m_shapers.getEntries(); s++) {
336 if (m_ROIs[i]->Contains(*(m_shapers[s]))) {
337 nOkROIs++;
338
339 m_h2FullROIcenters->Fill(centerROIU, centerROIV);
340 m_h1FullROItrack->Fill(1);
341 m_h1FullROItrack_pt->Fill(mom.Rho());
342 m_h1FullROItrack_phi->Fill(mom.Phi());
343 m_h1FullROItrack_cosTheta->Fill(cos(mom.Theta()));
344 m_h1FullROItrack_lambda->Fill(TMath::Pi() / 2 - mom.Theta());
345 m_h1FullROItrack_pVal->Fill(tfr->getPValue());
346
347 B2RESULT(" --> is Full");
348 break;
349 }
350
351 }
352 }
353
354 m_nGoodROIs += nGoodROIs;
355 m_h1goodROIs->Fill(nGoodROIs);
356 m_nOkROIs += nOkROIs;
357 m_h1okROIs->Fill(nOkROIs);
358
359 m_h1totROIs->Fill(m_ROIs.getEntries());
360 if (nGoodROIs > 0)
361 m_h1effROIs->Fill((float) nOkROIs / nGoodROIs);
362 n_rois += m_ROIs.getEntries();
363
364 //RecoTrack general
365 n_tracks += m_tracks.getEntries();
366
367 //SVDIntercepts general
368 n_intercepts += m_SVDIntercepts.getEntries();
369
370 m_rootEvent++;
371
372 if (nGoodROIs > 0)
373 B2RESULT(" o Good ROIs = " << nGoodROIs << ", of which Full = " << nOkROIs
374 << " --> efficiency = " << (float)nOkROIs / nGoodROIs);
375
376 if (nGoodROIs > m_ROIs.getEntries()) B2RESULT(" HOUSTON WE HAVE A PROBLEM!");
377
378}
379
380
382{
383
384 B2RESULT(" ROI AnalysisData Summary ");
385 B2RESULT("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
386 B2RESULT("");
387 B2RESULT(" number of events = " << m_rootEvent);
388 B2RESULT(" number of tracks = " << n_tracks);
389 B2RESULT(" number of Intercepts = " << n_intercepts);
390 B2RESULT(" number of ROIs = " << n_rois);
391 B2RESULT(" number of Good ROIs = " << m_nGoodROIs);
392 if (m_nGoodROIs > 0) {
393 B2RESULT(" number of Good ROIs with SVDShaperDigit= " << m_nOkROIs);
394 B2RESULT(" SVD INefficiency = " << 1 - (float)m_nOkROIs / m_nGoodROIs);
395 B2RESULT(" average SVD INefficiency = " << 1 - m_h1effROIs->GetMean());
396 B2RESULT(" number of EMPTY ROIs = " << m_nGoodROIs - m_nOkROIs);
397 }
398
399
400
401 if (m_rootFilePtr != nullptr) {
402 m_rootFilePtr->cd(); //important! without this the famework root I/O (SimpleOutput etc) could mix with the root I/O of this module
403
404 TDirectory* oldDir = gDirectory;
405 // TDirectory* m_digiDir = oldDir->mkdir("digits");
406 TDirectory* m_alltracks = oldDir->mkdir("ALLtracks");
407 TDirectory* m_roitracks = oldDir->mkdir("ROItracks");
408 TDirectory* m_goodroitracks = oldDir->mkdir("GoodROItracks");
409 TDirectory* m_fullroitracks = oldDir->mkdir("FullROItracks");
410 // TDirectory* m_in = oldDir->mkdir("digi_in");
411 // TDirectory* m_out = oldDir->mkdir("digi_out");
412 TDirectory* m_ROIDir = oldDir->mkdir("roi");
413 /*
414 m_digiDir->cd();
415 m_h1digiIn->Write();
416 m_h1digiOut->Write();
417 */
418
419 m_alltracks->cd();
420 m_h1Track->Write();
421 m_h1Track_pt->Write();
422 m_h1Track_phi->Write();
423 m_h1Track_lambda->Write();
424 m_h1Track_cosTheta->Write();
425 m_h1Track_pVal->Write();
426
427 m_roitracks->cd();
428 m_h1ROItrack->Write();
429 m_h1ROItrack_pt->Write();
430 m_h1ROItrack_phi->Write();
431 m_h1ROItrack_lambda->Write();
432 m_h1ROItrack_cosTheta->Write();
433
434 m_goodroitracks->cd();
435 m_h1GoodROItrack->Write();
436 m_h1GoodROItrack_pt->Write();
437 m_h1GoodROItrack_phi->Write();
440
441 m_fullroitracks->cd();
442 m_h1FullROItrack->Write();
443 m_h1FullROItrack_pt->Write();
444 m_h1FullROItrack_phi->Write();
447
448 m_ROIDir->cd();
449 m_h1effROIs->Write();
450 m_h1totROIs->Write();
451 m_h1goodROIs->Write();
452 m_h1okROIs->Write();
453 m_h2ROIuMinMax->Write();
454 m_h2ROIvMinMax->Write();
455 m_h2ROIcenters->Write();
456 m_h2GoodROIcenters->Write();
457 m_h2FullROIcenters->Write();
458
459 m_rootFilePtr->Close();
460
461 }
462
463}
464
static const ChargedStable pion
charged pion particle
Definition: Const.h:661
Base class for Modules.
Definition: Module.h:72
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
Class for type safe access to objects that are referred to in relations.
TH2F * m_h2FullROIcenters
ROI centers with all SVDShaperDigits inside ROI.
TH1F * m_h1FullROItrack_cosTheta
track with attached ROI - costheta
TH1F * m_h1FullROItrack_phi
track with attached ROI- phi
TH1F * m_h1ResidV
distribution of V resid for SVDShaperDigits contained in a ROI
unsigned int n_intercepts
number of SVDIntercepts
TH1F * m_h1FullROItrack_pt
track with attached ROI - pT
bool m_writeToRoot
if true, a rootFile named by m_rootFileName will be filled with info
TH1F * m_h1FullROItrack_lambda
track with attached ROI - lambda
TH1F * m_h1PullV
distribution of V pulls for PDXDigits contained in a ROI
StoreArray< SVDIntercept > m_SVDIntercepts
svd intercept store array
TH1F * m_h1GoodROItrack_pVal
track with attached ROI - pVal
void initialize() override
Initializes the Module.
TH2F * m_h2GoodROIcenters
ROI centers containing a SVDShaperDigit.
TH1F * m_h1PullU
distribution of U pulls for PDXDigits contained in a ROI
TH1F * m_h1okROIs
distribution of number of ROIs containing a SVDShaperDigit
TH1F * m_h1Track_cosTheta
denominator track cosTheta
StoreArray< SVDShaperDigit > m_shapers
shaper digits store array
TH1F * m_h1GoodROItrack_cosTheta
track with attached ROI - costheta
std::string m_SVDInterceptListName
Intercept list name.
TH1F * m_h1effROIs
distribution of number of ROIs containing a SVDShaperDigit, DATA
TH1F * m_h1totROIs
distribution of number of all ROIs
TH1F * m_h1goodROIs
distribution of number of ROIs containing a SVDShaperDigit, DATA
unsigned int m_nGoodROIs
number of ROIs containing a SVDShaperDigit, DATA
TH1F * m_h1GlobalTime
distribution of global time for PDXDigits contained in a ROI
TH1F * m_h1ROItrack_lambda
track with attached ROI - lambda
TH1F * m_h1SigmaV
distribution of sigmaV for SVDShaperDigits contained in a ROI
TH1F * m_h1SigmaU
distribution of sigmaU for SVDShaperDigits contained in a ROI
TH1F * m_h1ROItrack_pVal
track with attached ROI - pVal
unsigned int m_nOkROIs
number of ROIs containing a SVDShaperDigit
TH1F * m_h1GoodROItrack_pt
track with attached ROI - pT
TH1F * m_h1ResidU
distribution of U resid for SVDShaperDigits contained in a ROI
StoreArray< Track > m_tracks
reco track store array
TH1F * m_h1ROItrack_phi
track with attached ROI- phi
TH1F * m_h1ROItrack_cosTheta
track with attached ROI - costheta
TH2F * m_h2sigmaUphi
distribution of sigmaU VS phi for PDXDigits contained in a ROI
StoreArray< RecoTrack > m_recoTracks
reco track store array
float m_minPVal
fiducial region, minimum P value of the tracks
TH1F * m_h1GoodROItrack_phi
track with attached ROI- phi
TH2F * m_h2sigmaVphi
distribution of sigmaV VS phi for PDXDigits contained in a ROI
TFile * m_rootFilePtr
pointer at root file used for storing infos for debugging and validating purposes
TH1F * m_h1FullROItrack_pVal
track with attached ROI - pVal
TH1F * m_h1GoodROItrack_lambda
track with attached ROI - lambda
TH1F * m_h1ROItrack_pt
track with attached ROI - pT
StoreArray< ROIid > m_ROIs
rois store array
Values of the result of a track fit with a given particle hypothesis.
double getPValue() const
Getter for Chi2 Probability of the track fit.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33
baseType getSensorNumber() const
Get the sensor id.
Definition: VxdID.h:100
baseType getLadderNumber() const
Get the ladder id.
Definition: VxdID.h:98
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:96
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:559
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:649
Abstract base class for different kinds of events.