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