Belle II Software  release-05-02-19
SVDPerformanceModule.cc
1 #include <svd/modules/svdPerformance/SVDPerformanceModule.h>
2 #include <framework/datastore/StoreObjPtr.h>
3 #include <framework/datastore/RelationVector.h>
4 #include <time.h>
5 #include <mdst/dataobjects/MCParticle.h>
6 #include <mdst/dataobjects/HitPatternVXD.h>
7 #include <svd/dataobjects/SVDTrueHit.h>
8 
9 #include <boost/foreach.hpp>
10 
11 using namespace std;
12 using namespace Belle2;
13 
14 REG_MODULE(SVDPerformance)
15 
16 SVDPerformanceModule::SVDPerformanceModule() : Module()
17  , m_nTracks(0), m_Pvalue(), m_mom(0), m_nSVDhits(0)
18 {
19 
20  setDescription("This module check performances of SVD reconstruction of VXD TB data");
21 
22  addParam("outputFileName", m_rootFileName, "Name of output root file.", std::string("SVDPerformance_output.root"));
23  addParam("SVDEventInfo", m_svdEventInfoName, "Defines the name of the EventInfo", string(""));
24 
25  addParam("is2017TBanalysis", m_is2017TBanalysis, "True if analyzing 2017 TB data.", bool(false));
26  addParam("isSimulation", m_isSimulation, "True if analyzing simulated data.", bool(false));
27 
28  addParam("debugLowTime", m_debugLowTime, "Cluster Time below this number will produce a printout.", float(0.));
29 
30  addParam("ShaperDigitsName", m_ShaperDigitName, "Name of ShaperDigit Store Array.", std::string(""));
31  addParam("RecoDigitsName", m_RecoDigitName, "Name of RecoDigit Store Array.", std::string(""));
32  addParam("ClustersName", m_ClusterName, "Name of Cluster Store Array.", std::string(""));
33  addParam("TrackListName", m_TrackName, "Name of Track Store Array.", std::string(""));
34  addParam("TrackFitResultListName", m_TrackFitResultName, "Name of TracksFitResult Store Array.", std::string(""));
35 }
36 
37 SVDPerformanceModule::~SVDPerformanceModule()
38 {
39 
40 }
41 
43 {
44 
45  m_svdShapers.isRequired(m_ShaperDigitName);
46  m_svdRecos.isOptional(m_RecoDigitName);
47  m_svdClusters.isRequired(m_ClusterName);
48  // m_Tracks.isRequired(m_TrackName);
49  // m_recoTracks.isRequired();
50  // m_tfr.isRequired(m_TrackFitResultName);
51 
52  if (!m_storeSVDEvtInfo.isOptional(m_svdEventInfoName)) m_svdEventInfoName = "SVDEventInfoSim";
54 
55  B2INFO(" ShaperDigits: " << m_ShaperDigitName);
56  B2INFO(" RecoDigits: " << m_RecoDigitName);
57  B2INFO(" Clusters: " << m_ClusterName);
58  B2INFO(" Tracks: " << m_TrackName);
59  B2INFO(" TrackFitResults: " << m_TrackFitResultName);
60 
61 
62  //create list of histograms to be saved in the rootfile
63  m_histoList_track = new TList;
64  m_histoList_corr = new TList;
65 
66  for (int i = 0; i < m_nLayers; i++) {
67  m_histoList_cluster[i] = new TList;
68  m_histoList_clTRK[i] = new TList;
69  m_histoList_reco[i] = new TList;
70  m_histoList_shaper[i] = new TList;
71  }
72 
73  m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
74 
75  for (int s = 0; s < m_nLayers; s++)
77  sensorsOnLayer[s] = 2;
78  else
79  sensorsOnLayer[s] = s + 2;
80 
81  //create histograms
82  for (int i = 0; i < m_nLayers; i ++) //loop on Layers
83  for (int j = 0; j < (int)sensorsOnLayer[i]; j ++) { //loop on Sensors
84 
85  TString nameLayer = "";
86  nameLayer += i + 3;
87 
88  TString nameSensor = "";
89  if (m_is2017TBanalysis) {
90  if (i == 0)
91  nameSensor += j + 1;
92  else if (i == 1 || i == 2)
93  nameSensor += j + 2;
94  else if (i == 3)
95  nameSensor += j + 3;
96  } else
97  nameSensor += j + 1;
98 
99  for (int k = 0; k < m_nSides; k ++) { //loop on Sides
100 
101 
102  TString nameSide = "";
103  if (k == 1)
104  nameSide = "U";
105  else if (k == 0)
106  nameSide = "V";
107 
108  //SHAPER DIGITS
109  TString NameOfHisto = "shaper_N_L" + nameLayer + "S" + nameSensor + "" + nameSide;
110  TString TitleOfHisto = "number of ShaperDigits (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
111  h_nShaper[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 100, 0, 100, "n ShaperDigits", m_histoList_shaper[i]);
112 
113 
114  //RECO DIGITS
115  NameOfHisto = "reco_N_L" + nameLayer + "S" + nameSensor + "" + nameSide;
116  TitleOfHisto = "number of RecoDigits (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
117  h_nReco[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 100, 0, 100, "n RecoDigits", m_histoList_reco[i]);
118 
119  NameOfHisto = "reco_charge_L" + nameLayer + "S" + nameSensor + "" + nameSide;
120  TitleOfHisto = "charge of RecoDigits (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
121  h_recoCharge[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 100, 0, 100000, "charge (e-)", m_histoList_reco[i]);
122 
123  NameOfHisto = "reco_energy_L" + nameLayer + "S" + nameSensor + "" + nameSide;
124  TitleOfHisto = "energy collected by RecoDigits (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
125  h_recoEnergy[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 100, 0, 360, "energy (keV)", m_histoList_reco[i]);
126 
127  NameOfHisto = "reco_noise_L" + nameLayer + "S" + nameSensor + "" + nameSide;
128  TitleOfHisto = "strip noise (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
129  h_stripNoise[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, 300, 1800, "strip noise", m_histoList_reco[i]);
130 
131  NameOfHisto = "reco_time_L" + nameLayer + "S" + nameSensor + "" + nameSide;
132  TitleOfHisto = "strip time (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
133  h_recoTime[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "strip time", m_histoList_reco[i]);
134 
135 
136  //CLUSTERS RELATED TO TRACKS
137  NameOfHisto = "clTRK_N_L" + nameLayer + "S" + nameSensor + "" + nameSide;
138  TitleOfHisto = "number of clusters related to Tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
139  h_nCltrk[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 50, 0, 50, "n clusters", m_histoList_clTRK[i]);
140 
141  NameOfHisto = "clTRK_size_L" + nameLayer + "S" + nameSensor + "" + nameSide;
142  TitleOfHisto = "cluster size (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
143  h_cltrkSize[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 15, 0, 15, "cluster size", m_histoList_clTRK[i]);
144 
145  NameOfHisto = "clTRK_charge_L" + nameLayer + "S" + nameSensor + "" + nameSide;
146  TitleOfHisto = "cluster Charge (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
147  h_cltrkCharge[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge(e-)", m_histoList_clTRK[i]);
148 
149  NameOfHisto = "clTRK_energy_L" + nameLayer + "S" + nameSensor + "" + nameSide;
150  TitleOfHisto = "cluster Energy (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
151  h_cltrkEnergy[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", m_histoList_clTRK[i]);
152 
153  NameOfHisto = "clTRK_SN_L" + nameLayer + "S" + nameSensor + "" + nameSide;
154  TitleOfHisto = "cluster S/N (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
155  h_cltrkSN[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", m_histoList_clTRK[i]);
156 
157  NameOfHisto = "clTRK_chrgVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
158  TitleOfHisto = "cluster charge VS size (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
159  h_cltrkChargeVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge (e-)", 15, 0, 15, "cl size",
160  m_histoList_clTRK[i]);
161 
162  NameOfHisto = "clTRK_SNVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
163  TitleOfHisto = "cluster SN ratio VS size (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
164  h_cltrkSNVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", 15, 0, 15, "cl size",
165  m_histoList_clTRK[i]);
166 
167  NameOfHisto = "clTRK_TimeVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
168  TitleOfHisto = "cluster time VS size (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
169  h_cltrkTimeVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", 15, 0, 15, "cl size",
170  m_histoList_clTRK[i]);
171 
172  NameOfHisto = "clTRK_time_L" + nameLayer + "S" + nameSensor + "" + nameSide;
173  TitleOfHisto = "cluster time (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
174  h_cltrkTime[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", m_histoList_clTRK[i]);
175 
176  NameOfHisto = "clTRK_timeTB1_L" + nameLayer + "S" + nameSensor + "" + nameSide;
177  TitleOfHisto = "cluster time - TB = 1 (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
178  h_cltrkTime_TB1[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", m_histoList_clTRK[i]);
179 
180  NameOfHisto = "clTRK_timeTB2_L" + nameLayer + "S" + nameSensor + "" + nameSide;
181  TitleOfHisto = "cluster time - TB = 2 (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
182  h_cltrkTime_TB2[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", m_histoList_clTRK[i]);
183 
184  NameOfHisto = "clTRK_timeTB3_L" + nameLayer + "S" + nameSensor + "" + nameSide;
185  TitleOfHisto = "cluster time - TB = 3 (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
186  h_cltrkTime_TB3[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", m_histoList_clTRK[i]);
187 
188  NameOfHisto = "clTRK_timeTB4_L" + nameLayer + "S" + nameSensor + "" + nameSide;
189  TitleOfHisto = "cluster time - TB = 4 (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
190  h_cltrkTime_TB4[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", m_histoList_clTRK[i]);
191 
192  if (m_isSimulation) {
193  NameOfHisto = "clTRK_timeVStrueTime_L" + nameLayer + "S" + nameSensor + "" + nameSide;
194  TitleOfHisto = "cluster time VS true hit time (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
195  h_cltrkTimeVSTrueTime[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time", 60, -30, 30,
196  "true time", m_histoList_clTRK[i]);
197  }
198 
199  //1 STRIP CLUSTERS RELATED TO TRACKS
200  NameOfHisto = "1clTRK_charge_L" + nameLayer + "S" + nameSensor + "" + nameSide;
201  TitleOfHisto = "1-strip cluster Charge (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
202  h_1cltrkCharge[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge(e-)", m_histoList_clTRK[i]);
203 
204 
205  NameOfHisto = "1clTRK_SN_L" + nameLayer + "S" + nameSensor + "" + nameSide;
206  TitleOfHisto = "1-strip cluster S/N (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
207  h_1cltrkSN[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", m_histoList_clTRK[i]);
208 
209  //2-STRIP CLUSTERS RELATED TO TRACKS
210  NameOfHisto = "2clTRK_charge_L" + nameLayer + "S" + nameSensor + "" + nameSide;
211  TitleOfHisto = "2-strip cluster Charge (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
212  h_2cltrkCharge[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge(e-)", m_histoList_clTRK[i]);
213 
214 
215  NameOfHisto = "2clTRK_SN_L" + nameLayer + "S" + nameSensor + "" + nameSide;
216  TitleOfHisto = "2-strip cluster S/N (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
217  h_2cltrkSN[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", m_histoList_clTRK[i]);
218 
219  //CLUSTERS NOT RELATED TO TRACKS
220  NameOfHisto = "clNOtrk_N_L" + nameLayer + "S" + nameSensor + "" + nameSide;
221  TitleOfHisto = "number of clusters NOT related to Tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
222  h_nCl[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 50, 0, 50, "n clusters", m_histoList_cluster[i]);
223 
224  NameOfHisto = "clNOtrk_size_L" + nameLayer + "S" + nameSensor + "" + nameSide;
225  TitleOfHisto = "cluster size, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
226  h_clSize[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 15, 0, 15, "cluster size", m_histoList_cluster[i]);
227 
228  NameOfHisto = "clNOtrk_charge_L" + nameLayer + "S" + nameSensor + "" + nameSide;
229  TitleOfHisto = "cluster Charge, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
230  h_clCharge[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge (e-)", m_histoList_cluster[i]);
231 
232  NameOfHisto = "clNOtrk_energy_L" + nameLayer + "S" + nameSensor + "" + nameSide;
233  TitleOfHisto = "cluster Energy, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
234  h_clEnergy[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", m_histoList_cluster[i]);
235 
236  NameOfHisto = "clNOtrk_maxbin_L" + nameLayer + "S" + nameSensor + "" + nameSide;
237  TitleOfHisto = "cluster Seed maxbin, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
238  h_clSeedMaxbin[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 6, 0, 6, "max bin", m_histoList_cluster[i]);
239 
240  NameOfHisto = "clNOtrk_energyVSmaxbin_L" + nameLayer + "S" + nameSensor + "" + nameSide;
241  TitleOfHisto = "cluster Energy vs seed max bin U, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide +
242  " side)";
243  h_clEnergyVSMaxbin[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 6, 0, 6, "seed max bin",
245 
246 
247  NameOfHisto = "clNOtrk_energyVSsizeMB12_L" + nameLayer + "S" + nameSensor + "" + nameSide;
248  TitleOfHisto = "cluster Energy vs Size, maxbin = 1,2 U, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
249  nameSide +
250  " side)";
251  h_clEnergyVSSize_mb12[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 15, 0, 15, "cl size",
253 
254  NameOfHisto = "clNOtrk_energyVSsizeMB345_L" + nameLayer + "S" + nameSensor + "" + nameSide;
255  TitleOfHisto = "cluster Energy vs Size, maxbin = 3,4,5 U, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
256  nameSide +
257  " side)";
258  h_clEnergyVSSize_mb345[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 15, 0, 15, "cl size",
260 
261  NameOfHisto = "clNOtrk_energyVSsizeMB6_L" + nameLayer + "S" + nameSensor + "" + nameSide;
262  TitleOfHisto = "cluster Energy vs Size, maxbin = 6 U, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
263  nameSide +
264  " side)";
265  h_clEnergyVSSize_mb6[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 15, 0, 15, "cl size",
267 
268  if (k == 1) {
269  NameOfHisto = "clNOtrk_energyVScoorU_L" + nameLayer + "S" + nameSensor + "" + nameSide;
270  TitleOfHisto = "cluster Energy vs coor U, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide
271  +
272  " side)";
273  h_clEnergyVSCoorU[i][j][1] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 200, -3, 3, "coor U (cm)",
275 
276  NameOfHisto = "clNOtrk_coorU1VScoorU2_L" + nameLayer + "S" + nameSensor + "" + nameSide;
277  TitleOfHisto = "cluster coor1 U vs coor2 U, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
278  nameSide +
279  " side)";
280  h_clCoor1VSCoor2[i][j][1] = createHistogram1D(NameOfHisto, TitleOfHisto, 400, 0, 4, "delta U (cm)",
282 
283  NameOfHisto = "clNOtrk_cellIDU1VScellIDU2_L" + nameLayer + "S" + nameSensor + "" + nameSide;
284  TitleOfHisto = "cluster cellID1 U vs cellID2 U, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
285  nameSide +
286  " side)";
287  h_clCellID1VSCellID2[i][j][1] = createHistogram1D(NameOfHisto, TitleOfHisto, 768, 0, 768, "delta U (# of cells)",
289 
290  NameOfHisto = "clNOtrk_energy12VSdeltaU_L" + nameLayer + "S" + nameSensor + "" + nameSide;
291  TitleOfHisto = "cluster energy1+2 U vs delta U, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
292  nameSide +
293  " side)";
294  h_clEnergy12VSdelta[i][j][1] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 768, 0, 768,
295  "delta U (# of cells)",
297 
298  } else {
299  NameOfHisto = "clNOtrk_energyVScoorV_L" + nameLayer + "S" + nameSensor + "" + nameSide;
300  TitleOfHisto = "cluster Energy vs coor V, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide
301  +
302  " side)";
303  h_clEnergyVSCoorV[i][j][0] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 200, -6.5, 6.5,
304  "coor V (cm)", m_histoList_cluster[i]);
305 
306  NameOfHisto = "clNOtrk_coorV1VScoorV2_L" + nameLayer + "S" + nameSensor + "" + nameSide;
307  TitleOfHisto = "cluster coor1 V vs coor2 V, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
308  nameSide +
309  " side)";
310  h_clCoor1VSCoor2[i][j][0] = createHistogram1D(NameOfHisto, TitleOfHisto, 400, 0, 6, "delta V (cm)",
312  NameOfHisto = "clNOtrk_cellIDV1VScellIDV2_L" + nameLayer + "S" + nameSensor + "" + nameSide;
313  TitleOfHisto = "cluster cellID1 V vs cellID2 V, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
314  nameSide +
315  " side)";
316  h_clCellID1VSCellID2[i][j][0] = createHistogram1D(NameOfHisto, TitleOfHisto, 768, 0, 768, "delta V (# of cells)",
318 
319  NameOfHisto = "clNOtrk_energy12VSdeltaV_L" + nameLayer + "S" + nameSensor + "" + nameSide;
320  TitleOfHisto = "cluster energy1+2 V vs delta V, TB=3,4,5 NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," +
321  nameSide +
322  " side)";
323  h_clEnergy12VSdelta[i][j][0] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy (keV)", 768, 0, 768,
324  "delta V (# of cells)",
326 
327  }
328 
329  NameOfHisto = "clNOtrk_SN_L" + nameLayer + "S" + nameSensor + "" + nameSide;
330  TitleOfHisto = "cluster S/N, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
331  h_clSN[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", m_histoList_cluster[i]);
332 
333  NameOfHisto = "clNOtrk_chrgVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
334  TitleOfHisto = "cluster charge VS size, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
335  h_clChargeVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 500, 0, 100000, "charge (e-)", 15, 0, 15, "cl size",
337  NameOfHisto = "clNOtrk_SNVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
338  TitleOfHisto = "cluster S/N ratio VS size, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide +
339  " side)";
340  h_clSNVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 150, 0, 150, "S/N", 15, 0, 15, "cl size",
342 
343  NameOfHisto = "clNOtrk_TimeVSsize_L" + nameLayer + "S" + nameSensor + "" + nameSide;
344  TitleOfHisto = "cluster time VS size, NOT related to tracks (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
345  h_clTimeVSSize[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time (ns)", 15, 0, 15, "cl size",
347 
348  NameOfHisto = "clNOtrk_time_L" + nameLayer + "S" + nameSensor + "" + nameSide;
349  TitleOfHisto = "cluster time (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
350  h_clTime[i][j][k] = createHistogram1D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time", m_histoList_cluster[i]);
351 
352 
353  if (m_isSimulation) {
354  NameOfHisto = "clNOtrk_timeVStrueTime_L" + nameLayer + "S" + nameSensor + "" + nameSide;
355  TitleOfHisto = "cluster time VS true hit time (L" + nameLayer + ", sensor" + nameSensor + "," + nameSide + " side)";
356  h_clTimeVSTrueTime[i][j][k] = createHistogram2D(NameOfHisto, TitleOfHisto, 200, -100, 100, "cluster time", 60, -30, 30, "true time",
358  }
359 
360  }
361  TString NameOfHisto = "clNOtrk_nUVSnV_L" + nameLayer + "S" + nameSensor;
362  TString TitleOfHisto = "Number of U clusters VS number of V cluster, TB=3,4,5 (L" + nameLayer + ", sensor" + nameSensor + ")";
363  h_clNuVSNv[i][j] = createHistogram2D(NameOfHisto, TitleOfHisto, 50, 0, 50, "# V cluster", 50, 0, 50, "# U clusters",
365 
366  NameOfHisto = "clNOtrk_coorUVScoorV_L" + nameLayer + "S" + nameSensor;
367  TitleOfHisto = "cluster coor U VS cluster coor V, TB=3,4,5 (L" + nameLayer + ", sensor" + nameSensor + ")";
368  h_clCoorUVSCoorV[i][j] = createHistogram2D(NameOfHisto, TitleOfHisto, 200, -6.5, 6.5, "coor V", 200, -3, 3, "coor U",
370 
371  NameOfHisto = "clNOtrk_energyUVSenergyV_L" + nameLayer + "S" + nameSensor;
372  TitleOfHisto = "cluster energy U VS cluster energy V, TB=3,4,5 (L" + nameLayer + ", sensor" + nameSensor + ")";
373  h_clEnergyUVSEnergyV[i][j] = createHistogram2D(NameOfHisto, TitleOfHisto, 360, 0, 360, "energy V(keV)", 360, 0, 360,
374  "energy U (keV)",
376  //QUI
377  }
378 
379  //correlations
380  h_cltrk_UU = createHistogram1D("clTRK_dt_UU", "track-related U-U clusters time difference", 200, -100, 100, "time difference (ns)",
382  h_cltrk_VV = createHistogram1D("clTRK_dt_VV", "track-related V-V clusters time difference", 200, -100, 100, "time difference (ns)",
384  h_cltrk_UV = createHistogram1D("clTRK_dt_UV", "track-related U-V clusters time difference", 200, -100, 100, "time difference (ns)",
386 
387  h_cltrkTime_L4uL5u = createHistogram2D("clTRK_time_L4uL5u", "track-related cluster times on L4 and L5 U sides", 200, -100, 100,
388  "L4u cluster time", 200, -100, 100, "L5u cluster time",
390 
391  h_cltrkTime_L4vL5v = createHistogram2D("clTRK_time_L4vL5v", "track-related cluster times on L4 and L5 V sides", 200, -100, 100,
392  "L4v cluster time", 200, -100, 100, "L5v cluster time",
394 
395  h_cltrkTime_L5uL5v = createHistogram2D("clTRK_time_L5uL5v", "track-related cluster times on L5 U vs V sides", 200, -100, 100,
396  "L5u cluster time", 200, -100, 100, "L5v cluster time",
398 
399 
400 
401  // //correlations
402  // h_cl_UU = createHistogram1D("clNOTRK_dt_UU", "track-related U-U clusters time difference", 200, -100, 100, "time difference (ns)",
403  // m_histoList_corr);
404  // h_cl_VV = createHistogram1D("clNOTRK_dt_VV", "track-related V-V clusters time difference", 200, -100, 100, "time difference (ns)",
405  // m_histoList_corr);
406  // h_cl_UV = createHistogram1D("clNOTRK_dt_UV", "track-related U-V clusters time difference", 200, -100, 100, "time difference (ns)",
407  // m_histoList_corr);
408 
409  //tracks
410  m_nTracks = createHistogram1D("h1nTracks", "number of Tracks per event", 50, 0, 50, "n Tracks", m_histoList_track);
411  m_Pvalue = createHistogram1D("h1pValue", "Tracks p value", 100, 0, 1, "p value", m_histoList_track);
412  m_mom = createHistogram1D("h1momentum", " Tracks Momentum", 200, 0, 10, "p (GeV/c)", m_histoList_track);
413  m_nSVDhits = createHistogram1D("h1nSVDhits", "# SVD hits per track", 20, 0, 20, "# SVD hits", m_histoList_track);
414 
415  m_ntracks = 0;
416 }
417 
419 {
420  m_nEvents = 0;
421 }
422 
424 {
425 
426  SVDModeByte modeByte = m_storeSVDEvtInfo->getModeByte();
427 
428  m_nEvents++;
429  float c_eTOkeV = 3.6 / 1000; //keV = e * c_eTOkeV
430 
431  // StoreObjPtr<EventMetaData> eventMetaDataPtr;
432 
433  //ShaperDigits
434  int nShaperDigi[m_nLayers][m_nSensors][m_nSides];
435 
436  //RecoDigits
437  int nRecoDigi[m_nLayers][m_nSensors][m_nSides];
438 
439  // SVD clusters
440  int nCl[m_nLayers][m_nSensors][m_nSides];
441  int nCl345[m_nLayers][m_nSensors][m_nSides];
442  int nCltrk[m_nLayers][m_nSensors][m_nSides];
443 
444  for (int i = 0; i < m_nLayers; i ++) //loop on Layers
445  for (int j = 0; j < m_nSensors; j ++) //loop on Sensors
446  for (int k = 0; k < m_nSides; k ++) { //loop on Sides
447  nShaperDigi[i][j][k] = 0;
448  nRecoDigi[i][j][k] = 0;
449  nCl[i][j][k] = 0;
450  nCl345[i][j][k] = 0;
451  nCltrk[i][j][k] = 0;
452  }
453 
454  //tracks
455  if (m_Tracks) {
456  m_nTracks->Fill(m_Tracks.getEntries());
457  m_ntracks += m_Tracks.getEntries();
458  }
459 
460  BOOST_FOREACH(Track & track, m_Tracks) {
461 
462  const TrackFitResult* tfr = NULL;
463  if (m_is2017TBanalysis)
464  tfr = track.getTrackFitResult(Const::electron);
465  else
466  tfr = track.getTrackFitResult(Const::pion);
467  if (tfr) {
468  m_Pvalue->Fill(tfr->getPValue());
469  m_mom->Fill(tfr->getMomentum().Mag());
470  m_nSVDhits->Fill((tfr->getHitPatternVXD()).getNSVDHits());
471 
472  if (m_is2017TBanalysis) {
473  if ((tfr->getPValue() < 0.001) || (tfr->getMomentum().Mag() < 1))
474  continue;
475  }
476  }
477  RelationVector<RecoTrack> theRC = DataStore::getRelationsWithObj<RecoTrack>(&track);
478  RelationVector<SVDCluster> svdClustersTrack = DataStore::getRelationsWithObj<SVDCluster>(theRC[0]);
479 
480 
481  for (int cl = 0 ; cl < (int)svdClustersTrack.size(); cl++) {
482 
483  float clCharge = svdClustersTrack[cl]->getCharge();
484  float clEnergy = svdClustersTrack[cl]->getCharge() * c_eTOkeV;
485  int clSize = svdClustersTrack[cl]->getSize();
486  float clSN = svdClustersTrack[cl]->getSNR();
487  float clTime = svdClustersTrack[cl]->getClsTime();
488  VxdID::baseType theVxdID = (VxdID::baseType)svdClustersTrack[cl]->getSensorID();
489  int layer = VxdID(theVxdID).getLayerNumber() - 3;
490  int sensor = getSensor(layer, VxdID(theVxdID).getSensorNumber(), m_is2017TBanalysis);
491  int side = svdClustersTrack[cl]->isUCluster();
492 
493  nCltrk[layer][sensor][side]++;
494  h_cltrkCharge[layer][sensor][side]->Fill(clCharge);
495  h_cltrkEnergy[layer][sensor][side]->Fill(clEnergy);
496  h_cltrkSize[layer][sensor][side]->Fill(clSize);
497  h_cltrkSN[layer][sensor][side]->Fill(clSN);
498  h_cltrkTime[layer][sensor][side]->Fill(clTime);
499 
500  SVDModeByte::baseType tb = modeByte.getTriggerBin();
501  if ((int) tb == 0) h_cltrkTime_TB1[layer][sensor][side]->Fill(clTime);
502  if ((int) tb == 1) h_cltrkTime_TB2[layer][sensor][side]->Fill(clTime);
503  if ((int) tb == 2) h_cltrkTime_TB3[layer][sensor][side]->Fill(clTime);
504  if ((int) tb == 3) h_cltrkTime_TB4[layer][sensor][side]->Fill(clTime);
505 
506  h_cltrkChargeVSSize[layer][sensor][side]->Fill(clCharge, clSize);
507  h_cltrkSNVSSize[layer][sensor][side]->Fill(clSN, clSize);
508  h_cltrkTimeVSSize[layer][sensor][side]->Fill(clTime, clSize);
509 
510  if (layer == 2) //layer5
511  for (int cll = 0 ; cll < cl; cll++) {
512  VxdID::baseType theVxdID2 = (VxdID::baseType)svdClustersTrack[cll]->getSensorID();
513  int side2 = svdClustersTrack[cll]->isUCluster();
514 
515  if ((VxdID(theVxdID2).getLayerNumber() == 5) && (side2 != side)) { //L5uL5v
516  if (side)
517  h_cltrkTime_L5uL5v->Fill(svdClustersTrack[cl]->getClsTime(), svdClustersTrack[cll]->getClsTime());
518  else
519  h_cltrkTime_L5uL5v->Fill(svdClustersTrack[cll]->getClsTime(), svdClustersTrack[cl]->getClsTime());
520  }
521 
522  if (VxdID(theVxdID2).getLayerNumber() == 4) { //L4
523 
524  if (side2 && side2 == side) //L4uL5u
525  h_cltrkTime_L4uL5u->Fill(svdClustersTrack[cl]->getClsTime(), svdClustersTrack[cll]->getClsTime());
526 
527  if (!side2 && side2 == side) //L4vL5v
528  h_cltrkTime_L4vL5v->Fill(svdClustersTrack[cl]->getClsTime(), svdClustersTrack[cll]->getClsTime());
529 
530  }
531  }
532 
533  //fill time difference
534  for (int cl2 = 0 ; cl2 < cl ; cl2++) {
535 
536  int layerDist = abs(VxdID(theVxdID).getLayerNumber() - svdClustersTrack[cl2]->getSensorID().getLayerNumber());
537 
538  int side2 = svdClustersTrack[cl2]->isUCluster();
539 
540  if (layerDist == 0) {
541  if ((side == 0) && (side2 == 1))
542  h_cltrk_UV -> Fill(svdClustersTrack[cl2]->getClsTime() - svdClustersTrack[cl]->getClsTime());
543 
544  if ((side == 1) && (side2 == 0))
545  h_cltrk_UV -> Fill(svdClustersTrack[cl]->getClsTime() - svdClustersTrack[cl2]->getClsTime());
546  } else if (layerDist == 1) {
547  if ((side == 1) && (side2 == 1))
548  h_cltrk_UU -> Fill(svdClustersTrack[cl]->getClsTime() - svdClustersTrack[cl2]->getClsTime());
549 
550  if ((side == 0) && (side2 == 0))
551  h_cltrk_VV -> Fill(svdClustersTrack[cl]->getClsTime() - svdClustersTrack[cl2]->getClsTime());
552  }
553 
554 
555 
556  }
557 
558  if (svdClustersTrack[cl]->getClsTime() < m_debugLowTime) {
559 
560  B2DEBUG(10, "CLUSTER WITH A TIME BELOW " << m_debugLowTime << "ns");
561  B2DEBUG(10, "size = " << svdClustersTrack[cl]->getSize() << ", SNR = " << svdClustersTrack[cl]->getSNR() << " charge = " <<
562  svdClustersTrack[cl]->getCharge() << ", SeedCharge = " << svdClustersTrack[cl]->getSeedCharge() << ", time = " <<
563  svdClustersTrack[cl]->getClsTime());
564  }
565 
566 
567  if (m_isSimulation) {
568  RelationVector<SVDTrueHit> svdTrueHitsTrack = DataStore::getRelationsWithObj<SVDTrueHit>(svdClustersTrack[cl]);
569 
570  for (int i = 0; i < (int)svdTrueHitsTrack.size(); i++) {
571  // if(svdTrueHitsTrack.size()>0){
572  h_cltrkTimeVSTrueTime[layer][sensor][side]->Fill(svdClustersTrack[cl]->getClsTime(), svdTrueHitsTrack[i]->getGlobalTime());
573  if (svdClustersTrack[cl]->getClsTime() < m_debugLowTime)
574  B2DEBUG(10, "True Hit Time = " << svdTrueHitsTrack[i]->getGlobalTime() << ", EnergyDep = " << svdTrueHitsTrack[i]->getEnergyDep() <<
575  ", size = " << svdTrueHitsTrack.size());
576  }
577 
578 
579  RelationVector<MCParticle> mcParticleTrack = DataStore::getRelationsWithObj<MCParticle>(svdClustersTrack[cl]);
580 
581  if (svdClustersTrack[cl]->getClsTime() < m_debugLowTime)
582  if ((int)mcParticleTrack.size() > 0)
583  B2DEBUG(10, "MCParticle PDG = " << mcParticleTrack[0]->getPDG() << ", energy = " << mcParticleTrack[0]->getEnergy() << ", size = "
584  << mcParticleTrack.size());
585 
586 
587  }
588 
589  if (clSize == 1) {
590  h_1cltrkCharge[layer][sensor][side]->Fill(clCharge);
591  h_1cltrkSN[layer][sensor][side]->Fill(svdClustersTrack[cl]->getSNR());
592  }
593 
594  if (clSize == 2) {
595  h_2cltrkCharge[layer][sensor][side]->Fill(clCharge);
596  h_2cltrkSN[layer][sensor][side]->Fill(svdClustersTrack[cl]->getSNR());
597  }
598  }
599 
600  }
601 
602  if (m_Tracks)
603  B2DEBUG(1, "%%%%%%%% NEW EVENT, number of Tracks = " << m_Tracks.getEntries());
604 
605  //shaper digits
606  for (int digi = 0 ; digi < m_svdShapers.getEntries(); digi++) {
607 
608 
609  VxdID::baseType theVxdID = (VxdID::baseType)m_svdShapers[digi]->getSensorID();
610  int layer = VxdID(theVxdID).getLayerNumber() - 3;
611  int sensor = getSensor(layer, VxdID(theVxdID).getSensorNumber(), m_is2017TBanalysis);
612  int side = m_svdShapers[digi]->isUStrip();
613  nShaperDigi[layer][sensor][side]++;
614 
615 
616  if (!m_svdShapers[digi]->isUStrip()) {
617  if (((layer == 0) && (m_svdShapers[digi]->getCellID() > 767)) ||
618  ((layer != 0) && (m_svdShapers[digi]->getCellID() > 511)))
619  B2WARNING(" SVDShaperDigits: unexpected cellID for Layer " << layer << " Ladder " << VxdID(theVxdID).getLadderNumber() <<
620  " Sensor " << VxdID(theVxdID).getSensorNumber() << " V side, strip = " << m_svdShapers[digi]->getCellID());
621  } else {
622  if (m_svdShapers[digi]->getCellID() > 767)
623  B2WARNING(" SVDShaperDigits: unexpected cellID for Layer " << layer << " Ladder " << VxdID(theVxdID).getLadderNumber() <<
624  " Sensor " << VxdID(theVxdID).getSensorNumber() << " U side, strip = " << m_svdShapers[digi]->getCellID());
625  }
626 
627  }
628 
629  //reco digits
630  if (m_svdRecos.isValid()) {
631  for (int digi = 0 ; digi < m_svdRecos.getEntries(); digi++) {
632 
633  VxdID::baseType theVxdID = (VxdID::baseType)m_svdRecos[digi]->getSensorID();
634  int layer = VxdID(theVxdID).getLayerNumber() - 3;
635  int sensor = getSensor(layer, VxdID(theVxdID).getSensorNumber(), m_is2017TBanalysis);
636  int side = m_svdRecos[digi]->isUStrip();
637  int cellID = m_svdRecos[digi]->getCellID();
638 
639  float thisNoise = m_NoiseCal.getNoiseInElectrons(theVxdID, side, cellID);
640 
641  h_stripNoise[layer][sensor][side]->Fill(thisNoise);
642  h_recoCharge[layer][sensor][side]->Fill(m_svdRecos[digi]->getCharge());
643  h_recoEnergy[layer][sensor][side]->Fill(m_svdRecos[digi]->getCharge()*c_eTOkeV);
644  h_recoTime[layer][sensor][side]->Fill(m_svdRecos[digi]->getTime());
645  nRecoDigi[layer][sensor][side]++;
646  }
647  }
648 
649  //clusters NOT related to tracks
650  for (int cl = 0 ; cl < m_svdClusters.getEntries(); cl++) {
651 
652  float clCharge = m_svdClusters[cl]->getCharge();
653  float clEnergy = m_svdClusters[cl]->getCharge() * c_eTOkeV;
654  float clCoor = m_svdClusters[cl]->getPosition();
655  int clSize = m_svdClusters[cl]->getSize();
656  float clTime = m_svdClusters[cl]->getClsTime();
657  float clSN = m_svdClusters[cl]->getSNR();
658  float seed_maxbin = -1;
659 
660  RelationVector<RecoTrack> theRC = DataStore::getRelationsWithObj<RecoTrack>(m_svdClusters[cl]);
661 
662  if ((int)theRC.size() > 0)
663  continue;
664 
665  //look for the max bin of the seed
666  RelationVector<SVDRecoDigit> theRecoDigits = DataStore::getRelationsWithObj<SVDRecoDigit>(m_svdClusters[cl]);
667  int index_seed = 0;
668  float charge = 0;
669  for (int r = 0; r < (int)theRecoDigits.size(); r++)
670  if (theRecoDigits.weight(r) > charge) {
671  index_seed = r;
672  charge = theRecoDigits[r]->getCharge();
673  }
674 
675  if (index_seed > -1) {
676  RelationVector<SVDShaperDigit> theSeedShaperDigits = DataStore::getRelationsWithObj<SVDShaperDigit>(theRecoDigits[index_seed]);
677 
679  samples = theSeedShaperDigits[0]->getSamples();
680  float amplitude = 0;
681  const int nAPVSamples = 6;
682  for (int k = 0; k < nAPVSamples; k ++) {
683  if (samples[k] > amplitude) {
684  amplitude = samples[k];
685  seed_maxbin = k;
686  }
687  }
688  }
689 
690  VxdID::baseType theVxdID = (VxdID::baseType)m_svdClusters[cl]->getSensorID();
691  int side = m_svdClusters[cl]->isUCluster();
692  int layer = VxdID(theVxdID).getLayerNumber() - 3;
693  int sensor = getSensor(layer, VxdID(theVxdID).getSensorNumber(), m_is2017TBanalysis);
694 
695  for (int cl2 = 0 ; cl2 < cl; cl2++) {
696  if (clSize > 1)
697  break;
698 
699  VxdID::baseType theVxdID2 = (VxdID::baseType)m_svdClusters[cl2]->getSensorID();
700  int side2 = m_svdClusters[cl2]->isUCluster();
701  int layer2 = VxdID(theVxdID2).getLayerNumber() - 3;
702  int sensor2 = getSensor(layer, VxdID(theVxdID2).getSensorNumber(), m_is2017TBanalysis);
703 
704  float clCoor1 = m_svdClusters[cl]->getPosition();
705  float clCoor2 = m_svdClusters[cl2]->getPosition();
706  float clEnergy1 = m_svdClusters[cl]->getCharge() * c_eTOkeV;
707  float clEnergy2 = m_svdClusters[cl2]->getCharge() * c_eTOkeV;
708  if ((layer != layer2) || (sensor != sensor2))
709  continue;
710 
711  if (seed_maxbin < 2 || seed_maxbin > 4)
712  continue;
713 
714  int cellID1 = -1;
715  for (int r = 0; r < (int)theRecoDigits.size(); r++)
716  if (cellID1 < theRecoDigits[r]->getCellID())
717  cellID1 = theRecoDigits[r]->getCellID();
718 
719  RelationVector<SVDRecoDigit> theRecoDigits2 = DataStore::getRelationsWithObj<SVDRecoDigit>(m_svdClusters[cl2]);
720  int dist = 768;
721  for (int r = 0; r < (int)theRecoDigits2.size(); r++)
722  if (cellID1 - theRecoDigits2[r]->getCellID() < dist)
723  dist = cellID1 - theRecoDigits2[r]->getCellID();
724 
725  if (side == 1 && side2 == 1) {
726  h_clCoor1VSCoor2[layer][sensor][1]->Fill(clCoor1 - clCoor2); //
727  h_clCellID1VSCellID2[layer][sensor][1]->Fill(dist);
728  h_clEnergy12VSdelta[layer][sensor][1]->Fill(clEnergy1 + clEnergy2, dist); //
729  }
730  if (side == 0 && side2 == 0) {
731  h_clCoor1VSCoor2[layer][sensor][0]->Fill(clCoor1 - clCoor2); //
732  h_clCellID1VSCellID2[layer][sensor][0]->Fill(dist);
733  h_clEnergy12VSdelta[layer][sensor][0]->Fill(clEnergy1 + clEnergy2, dist); //
734  }
735 
736  if (side == 1 && side2 == 0) {
737  h_clCoorUVSCoorV[layer][sensor]->Fill(clCoor2, clCoor1); //V, U
738  h_clEnergyUVSEnergyV[layer][sensor]->Fill(clEnergy2, clEnergy1); //V, U
739  }
740  if (side == 0 && side2 == 1) {
741  h_clCoorUVSCoorV[layer][sensor]->Fill(clCoor1, clCoor2);
742  h_clEnergyUVSEnergyV[layer][sensor]->Fill(clEnergy1, clEnergy2);
743  }
744  }
745 
746  nCl[layer][sensor][side]++;
747 
748 
749  h_clCharge[layer][sensor][side]->Fill(clCharge);
750  h_clEnergy[layer][sensor][side]->Fill(clEnergy);
751  h_clSeedMaxbin[layer][sensor][side]->Fill(seed_maxbin);
752  h_clEnergyVSMaxbin[layer][sensor][side]->Fill(clEnergy, seed_maxbin);
753  if (seed_maxbin < 2)
754  h_clEnergyVSSize_mb12[layer][sensor][side]->Fill(clEnergy, clSize);
755  else if (seed_maxbin == 5)
756  h_clEnergyVSSize_mb6[layer][sensor][side]->Fill(clEnergy, clSize);
757  else {
758  h_clEnergyVSSize_mb345[layer][sensor][side]->Fill(clEnergy, clSize);
759  nCl345[layer][sensor][side]++;
760  if (m_svdClusters[cl]->isUCluster())
761  h_clEnergyVSCoorU[layer][sensor][side]->Fill(clEnergy, clCoor);
762  else
763  h_clEnergyVSCoorV[layer][sensor][side]->Fill(clEnergy, clCoor);
764  }
765  h_clSize[layer][sensor][side]->Fill(clSize);
766  h_clSN[layer][sensor][side]->Fill(clSN);
767  h_clTime[layer][sensor][side]->Fill(clTime);
768 
769  h_clChargeVSSize[layer][sensor][side]->Fill(clCharge, clSize);
770  h_clSNVSSize[layer][sensor][side]->Fill(clSN, clSize);
771  h_clTimeVSSize[layer][sensor][side]->Fill(clTime, clSize);
772 
773  if (m_isSimulation) {
774  RelationVector<SVDTrueHit> svdTrueHits = DataStore::getRelationsWithObj<SVDTrueHit>(m_svdClusters[cl]);
775  if (svdTrueHits.size() > 0)
776  h_clTimeVSTrueTime[layer][sensor][side]->Fill(m_svdClusters[cl]->getClsTime(), svdTrueHits[0]->getGlobalTime());
777  }
778 
779  }
780 
781  for (int i = 0; i < m_nLayers; i ++) //loop on Layers
782  for (int j = 0; j < (int)sensorsOnLayer[i]; j ++) //loop on Sensors
783  for (int k = 0; k < m_nSides; k ++) { //loop on Sides
784  h_nShaper[i][j][k]->Fill(nShaperDigi[i][j][k]);
785  h_nReco[i][j][k]->Fill(nRecoDigi[i][j][k]);
786  h_nCl[i][j][k]->Fill(nCl[i][j][k]);
787  h_clNuVSNv[i][j]->Fill(nCl345[i][j][0], nCl345[i][j][1]);
788  h_nCltrk[i][j][k]->Fill(nCltrk[i][j][k]);
789  }
790 }
791 
792 
794 {
795 
796 }
797 
798 
800 {
801 
802  /*
803  B2RESULT(" number tracks = " << m_ntracks);
804  B2RESULT(" average number of cluster per layer:");
805  B2RESULT(" Layer 3, u = " << h_nCl_L3u->GetMean() << ", v = " << h_nCl_L3v->GetMean());
806  B2RESULT(" Layer 4, u = " << h_nCl_L4u->GetMean() << ", v = " << h_nCl_L4v->GetMean());
807  B2RESULT(" Layer 5, u = " << h_nCl_L5u->GetMean() << ", v = " << h_nCl_L5v->GetMean());
808  B2RESULT(" Layer 6, u = " << h_nCl_L6u->GetMean() << ", v = " << h_nCl_L6v->GetMean());
809  B2RESULT(" average cluster size per layer:");
810  B2RESULT(" Layer 3, u = " << h_clSize_L3u->GetMean() << ", v = " << h_clSize_L3v->GetMean());
811  B2RESULT(" Layer 4, u = " << h_clSize_L4u->GetMean() << ", v = " << h_clSize_L4v->GetMean());
812  */
813  if (m_rootFilePtr != NULL) {
814  m_rootFilePtr->cd();
815 
816  TDirectory* oldDir = gDirectory;
817  TObject* obj;
818 
819  TDirectory* dir_track = oldDir->mkdir("tracks");
820  dir_track->cd();
821  TIter nextH_track(m_histoList_track);
822  while ((obj = nextH_track())) {
823  if (obj->InheritsFrom("TH1F"))((TH1F*)obj)->Scale(1. / m_nEvents);
824  obj->Write();
825  }
826 
827 
828  TDirectory* dir_shaper = oldDir->mkdir("shaper");
829  dir_shaper->cd();
830  for (int i = 0; i < m_nLayers; i++) {
831  TString layerName = "shaperL";
832  layerName += i + 3;
833  TDirectory* dir_layer = dir_shaper->mkdir(layerName.Data());
834  dir_layer->cd();
835  TIter nextH_shaper(m_histoList_shaper[i]);
836  while ((obj = nextH_shaper())) {
837  if (obj->InheritsFrom("TH1F"))((TH1F*)obj)->Scale(1. / m_nEvents);
838  obj->Write();
839  }
840  }
841 
842 
843  TDirectory* dir_reco = oldDir->mkdir("reco");
844  dir_reco->cd();
845  for (int i = 0; i < m_nLayers; i++) {
846  TString layerName = "recoL";
847  layerName += i + 3;
848  TDirectory* dir_layer = dir_reco->mkdir(layerName.Data());
849  dir_layer->cd();
850  TIter nextH_reco(m_histoList_reco[i]);
851  while ((obj = nextH_reco())) {
852  if (obj->InheritsFrom("TH1F"))((TH1F*)obj)->Scale(1. / m_nEvents);
853  obj->Write();
854  }
855  }
856 
857  TDirectory* dir_cluster = oldDir->mkdir("clusters");
858  dir_cluster->cd();
859  for (int i = 0; i < m_nLayers; i++) {
860  TString layerName = "clusterL";
861  layerName += i + 3;
862  TDirectory* dir_layer = dir_cluster->mkdir(layerName.Data());
863  dir_layer->cd();
864  TIter nextH_cluster(m_histoList_cluster[i]);
865  while ((obj = nextH_cluster())) {
866  if (obj->InheritsFrom("TH1F"))((TH1F*)obj)->Scale(1. / m_nEvents);
867  obj->Write();
868  }
869  }
870 
871  TDirectory* dir_clTRK = oldDir->mkdir("clustersTrk");
872  dir_clTRK->cd();
873  for (int i = 0; i < m_nLayers; i++) {
874  TString layerName = "clstrkL";
875  layerName += i + 3;
876  TDirectory* dir_layer = dir_clTRK->mkdir(layerName.Data());
877  dir_layer->cd();
878  TIter nextH_clTRK(m_histoList_clTRK[i]);
879  while ((obj = nextH_clTRK())) {
880  if (obj->InheritsFrom("TH1F"))((TH1F*)obj)->Scale(1. / m_nEvents);
881  obj->Write();
882  }
883  }
884 
885  oldDir->cd();
886  TIter nextH_corr(m_histoList_corr);
887  while ((obj = nextH_corr())) {
888  if (obj->InheritsFrom("TH1F"))
889  ((TH1F*)obj)->Scale(1. / m_nEvents);
890  obj->Write();
891  }
892 
893  m_rootFilePtr->Close();
894 
895 
896  }
897 
898 
899 
900 }
901 
902 
903 TH1F* SVDPerformanceModule::createHistogram1D(const char* name, const char* title,
904  Int_t nbins, Double_t min, Double_t max,
905  const char* xtitle, TList* histoList)
906 {
907 
908  TH1F* h = new TH1F(name, title, nbins, min, max);
909 
910  h->GetXaxis()->SetTitle(xtitle);
911 
912  if (histoList)
913  histoList->Add(h);
914 
915  return h;
916 }
917 
918 
919 TH2F* SVDPerformanceModule::createHistogram2D(const char* name, const char* title,
920  Int_t nbinsX, Double_t minX, Double_t maxX,
921  const char* titleX,
922  Int_t nbinsY, Double_t minY, Double_t maxY,
923  const char* titleY, TList* histoList)
924 {
925 
926  TH2F* h = new TH2F(name, title, nbinsX, minX, maxX, nbinsY, minY, maxY);
927 
928  h->GetXaxis()->SetTitle(titleX);
929  h->GetYaxis()->SetTitle(titleY);
930 
931  if (histoList)
932  histoList->Add(h);
933 
934  return h;
935 }
936 
937 
Belle2::SVDPerformanceModule::h_cltrk_UV
TH1F * h_cltrk_UV
U time vs V time.
Definition: SVDPerformanceModule.h:187
Belle2::RelationVector::size
size_t size() const
Get number of relations.
Definition: RelationVector.h:98
Belle2::SVDPerformanceModule::h_clSize
TH1F * h_clSize[m_nLayers][m_nSensors][m_nSides]
size
Definition: SVDPerformanceModule.h:137
Belle2::SVDPerformanceModule::h_clEnergyVSCoorV
TH2F * h_clEnergyVSCoorV[m_nLayers][m_nSensors][m_nSides]
energy VS position V
Definition: SVDPerformanceModule.h:143
Belle2::SVDPerformanceModule::h_clSNVSSize
TH2F * h_clSNVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:156
Belle2::SVDPerformanceModule::getSensor
int getSensor(int layer, int sensor, bool isTB)
get sensor number
Definition: SVDPerformanceModule.h:194
Belle2::SVDPerformanceModule::m_storeSVDEvtInfo
StoreObjPtr< SVDEventInfo > m_storeSVDEvtInfo
Storage for SVDEventInfo object.
Definition: SVDPerformanceModule.h:99
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::SVDPerformanceModule::h_clCharge
TH1F * h_clCharge[m_nLayers][m_nSensors][m_nSides]
charge
Definition: SVDPerformanceModule.h:138
Belle2::SVDPerformanceModule::h_cltrkTime
TH1F * h_cltrkTime[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:166
Belle2::SVDPerformanceModule::h_clTimeVSTrueTime
TH2F * h_clTimeVSTrueTime[m_nLayers][m_nSensors][m_nSides]
time VS true time
Definition: SVDPerformanceModule.h:158
Belle2::SVDOccupancyAnalysisModule::m_ShaperDigitName
std::string m_ShaperDigitName
ShaperDigit StoreArray name.
Definition: SVDOccupancyAnalysisModule.h:68
Belle2::SVDPerformanceModule::m_svdClusters
StoreArray< SVDCluster > m_svdClusters
SVDCluster store array.
Definition: SVDPerformanceModule.h:93
Belle2::SVDModeByte::getTriggerBin
baseType getTriggerBin() const
Get the triggerBin id.
Definition: SVDModeByte.h:150
Belle2::SVDPerformanceModule::h_recoCharge
TH1F * h_recoCharge[m_nLayers][m_nSensors][m_nSides]
charge
Definition: SVDPerformanceModule.h:130
Belle2::SVDPerformanceModule::m_TrackName
std::string m_TrackName
Track StoreArray name.
Definition: SVDPerformanceModule.h:71
Belle2::Module::setDescription
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:216
Belle2::SVDPerformanceModule::m_histoList_track
TList * m_histoList_track
histo list tracks
Definition: SVDPerformanceModule.h:112
Belle2::SVDPerformanceModule::h_cltrkTime_TB3
TH1F * h_cltrkTime_TB3[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:169
Belle2::SVDPerformanceModule::h_1cltrkCharge
TH1F * h_1cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
Definition: SVDPerformanceModule.h:177
Belle2::SVDPerformanceModule::beginRun
virtual void beginRun() override
Called when entering a new run.
Definition: SVDPerformanceModule.cc:418
Belle2::SVDPerformanceModule::h_cltrkTime_TB4
TH1F * h_cltrkTime_TB4[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:170
Belle2::SVDPerformanceModule::m_histoList_shaper
TList * m_histoList_shaper[m_nLayers]
histo list shaper digits
Definition: SVDPerformanceModule.h:116
Belle2::SVDPerformanceModule::m_NoiseCal
SVDNoiseCalibrations m_NoiseCal
SVDNoise calibration db object.
Definition: SVDPerformanceModule.h:88
Belle2::TrackFitResult::getMomentum
TVector3 getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
Definition: TrackFitResult.h:116
Belle2::Const::electron
static const ChargedStable electron
electron particle
Definition: Const.h:533
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::SVDPerformanceModule::m_isSimulation
bool m_isSimulation
true if we analyze Simulated data
Definition: SVDPerformanceModule.h:73
Belle2::SVDPerformanceModule::h_clEnergyVSMaxbin
TH2F * h_clEnergyVSMaxbin[m_nLayers][m_nSensors][m_nSides]
energy VS maxbin seed
Definition: SVDPerformanceModule.h:141
Belle2::SVDPerformanceModule::m_ShaperDigitName
std::string m_ShaperDigitName
ShaperDigits Store Array name.
Definition: SVDPerformanceModule.h:67
Belle2::SVDPerformanceModule::h_clCellID1VSCellID2
TH1F * h_clCellID1VSCellID2[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
Definition: SVDPerformanceModule.h:148
Belle2::SVDPerformanceModule::h_cltrkTime_L4vL5v
TH2F * h_cltrkTime_L4vL5v
L4V time VS L5V time.
Definition: SVDPerformanceModule.h:190
Belle2::SVDPerformanceModule::m_histoList_reco
TList * m_histoList_reco[m_nLayers]
histo list reco digits
Definition: SVDPerformanceModule.h:117
Belle2::TrackFitResult::getPValue
double getPValue() const
Getter for Chi2 Probability of the track fit.
Definition: TrackFitResult.h:163
Belle2::SVDPerformanceModule::h_cltrkSize
TH1F * h_cltrkSize[m_nLayers][m_nSensors][m_nSides]
size
Definition: SVDPerformanceModule.h:162
Belle2::SVDPerformanceModule::m_histoList_clTRK
TList * m_histoList_clTRK[m_nLayers]
histo list clusters related to tracks
Definition: SVDPerformanceModule.h:114
Belle2::SVDPerformanceModule::h_cltrkTime_TB1
TH1F * h_cltrkTime_TB1[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:167
Belle2::SVDPerformanceModule::terminate
virtual void terminate() override
This method is called at the end of the event processing.
Definition: SVDPerformanceModule.cc:799
Belle2::SVDPerformanceModule::m_nEvents
int m_nEvents
number of events
Definition: SVDPerformanceModule.h:86
Belle2::SVDPerformanceModule::h_clTimeVSSize
TH2F * h_clTimeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:157
Belle2::SVDPerformanceModule::h_clChargeVSSize
TH2F * h_clChargeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:152
Belle2::SVDPerformanceModule::h_cltrkEnergy
TH1F * h_cltrkEnergy[m_nLayers][m_nSensors][m_nSides]
energy
Definition: SVDPerformanceModule.h:164
Belle2::SVDPerformanceModule::h_cltrkChargeVSSize
TH2F * h_cltrkChargeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:171
Belle2::SVDPerformanceModule::m_ClusterName
std::string m_ClusterName
SVDCluster StoreArray name.
Definition: SVDPerformanceModule.h:69
Belle2::SVDPerformanceModule::m_nLayers
static const int m_nLayers
max number of layers
Definition: SVDPerformanceModule.h:106
Belle2::SVDModeByte
Class to store SVD mode information.
Definition: SVDModeByte.h:79
Belle2::SVDPerformanceModule::h_clCoor1VSCoor2
TH1F * h_clCoor1VSCoor2[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
Definition: SVDPerformanceModule.h:146
Belle2::SVDPerformanceModule::m_svdShapers
StoreArray< SVDShaperDigit > m_svdShapers
SVDShaperDigit store array.
Definition: SVDPerformanceModule.h:91
Belle2::SVDPerformanceModule::h_clSN
TH1F * h_clSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
Definition: SVDPerformanceModule.h:150
Belle2::SVDPerformanceModule::h_clCoorUVSCoorV
TH2F * h_clCoorUVSCoorV[m_nLayers][m_nSensors]
energy VS position
Definition: SVDPerformanceModule.h:145
Belle2::TrackFitResult
Values of the result of a track fit with a given particle hypothesis.
Definition: TrackFitResult.h:59
Belle2::SVDPerformanceModule::m_histoList_cluster
TList * m_histoList_cluster[m_nLayers]
histo list clusters
Definition: SVDPerformanceModule.h:115
Belle2::SVDPerformanceModule::m_nTracks
TH1F * m_nTracks
number of tracks
Definition: SVDPerformanceModule.h:120
Belle2::SVDPerformanceModule::h_clNuVSNv
TH2F * h_clNuVSNv[m_nLayers][m_nSensors]
N U culsters VS N V clusters.
Definition: SVDPerformanceModule.h:144
Belle2::SVDPerformanceModule::m_nSides
static const int m_nSides
max number of sides
Definition: SVDPerformanceModule.h:108
Belle2::SVDPerformanceModule::h_clEnergyVSSize_mb12
TH2F * h_clEnergyVSSize_mb12[m_nLayers][m_nSensors][m_nSides]
energy VS size, maxbin == 1,2
Definition: SVDPerformanceModule.h:153
Belle2::SVDPerformanceModule::m_svdEventInfoName
std::string m_svdEventInfoName
Name of the SVDEventInfo object.
Definition: SVDPerformanceModule.h:102
Belle2::SVDPerformanceModule::m_nSVDhits
TH1F * m_nSVDhits
track momentum
Definition: SVDPerformanceModule.h:123
Belle2::SVDPerformanceModule::m_ntracks
int m_ntracks
numner of tracks
Definition: SVDPerformanceModule.h:104
Belle2::SVDPerformanceModule::h_nShaper
TH1F * h_nShaper[m_nLayers][m_nSensors][m_nSides]
number per event
Definition: SVDPerformanceModule.h:126
Belle2::SVDPerformanceModule::h_cltrkTimeVSSize
TH2F * h_cltrkTimeVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:173
Belle2::SVDPerformanceModule::h_cltrkSNVSSize
TH2F * h_cltrkSNVSSize[m_nLayers][m_nSensors][m_nSides]
charge VS size
Definition: SVDPerformanceModule.h:172
Belle2::SVDPerformanceModule::m_svdRecos
StoreArray< SVDRecoDigit > m_svdRecos
SVDRecoDigits store array.
Definition: SVDPerformanceModule.h:92
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::SVDPerformanceModule::m_mom
TH1F * m_mom
track momentum
Definition: SVDPerformanceModule.h:122
Belle2::SVDPerformanceModule::h_2cltrkSN
TH1F * h_2cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
Definition: SVDPerformanceModule.h:182
Belle2::SVDShaperDigit::APVFloatSamples
std::array< APVFloatSampleType, c_nAPVSamples > APVFloatSamples
array of APVFloatSampleType objects
Definition: SVDShaperDigit.h:63
Belle2::SVDPerformanceModule::h_cltrkTimeVSTrueTime
TH2F * h_cltrkTimeVSTrueTime[m_nLayers][m_nSensors][m_nSides]
time VS true time
Definition: SVDPerformanceModule.h:174
Belle2::SVDPerformanceModule::h_cltrkCharge
TH1F * h_cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
Definition: SVDPerformanceModule.h:163
Belle2::SVDPerformanceModule::m_rootFilePtr
TFile * m_rootFilePtr
pointer at root file used for storing histograms
Definition: SVDPerformanceModule.h:82
Belle2::SVDPerformanceModule::m_is2017TBanalysis
bool m_is2017TBanalysis
true if we analyze 2017 TB data
Definition: SVDPerformanceModule.h:72
Belle2::SVDPerformanceModule::h_2cltrkCharge
TH1F * h_2cltrkCharge[m_nLayers][m_nSensors][m_nSides]
charge
Definition: SVDPerformanceModule.h:181
Belle2::Const::pion
static const ChargedStable pion
charged pion particle
Definition: Const.h:535
Belle2::SVDPerformanceModule::h_nCltrk
TH1F * h_nCltrk[m_nLayers][m_nSensors][m_nSides]
number per event
Definition: SVDPerformanceModule.h:161
Belle2::VxdID::baseType
unsigned short baseType
The base integer type for VxdID.
Definition: VxdID.h:46
Belle2::SVDPerformanceModule::h_cltrkSN
TH1F * h_cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
Definition: SVDPerformanceModule.h:165
Belle2::SVDPerformanceModule::h_recoTime
TH1F * h_recoTime[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:133
Belle2::SVDPerformanceModule::m_histoList_corr
TList * m_histoList_corr
histo list correlations
Definition: SVDPerformanceModule.h:113
Belle2::SVDOccupancyAnalysisModule::m_rootFileName
std::string m_rootFileName
root file name
Definition: SVDOccupancyAnalysisModule.h:67
Belle2::RelationVector
Class for type safe access to objects that are referred to in relations.
Definition: DataStore.h:38
Belle2::SVDPerformanceModule::createHistogram2D
TH2F * createHistogram2D(const char *name, const char *title, Int_t nbinsX, Double_t minX, Double_t maxX, const char *titleX, Int_t nbinsY, Double_t minY, Double_t maxY, const char *titleY, TList *histoList=NULL)
Function returning TH2F.
Definition: SVDPerformanceModule.cc:919
Belle2::SVDPerformanceModule::h_clEnergyVSSize_mb6
TH2F * h_clEnergyVSSize_mb6[m_nLayers][m_nSensors][m_nSides]
energy VS size, max bin == 6
Definition: SVDPerformanceModule.h:155
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::SVDModeByte::baseType
uint8_t baseType
The base integer type for SVDModeByte.
Definition: SVDModeByte.h:82
Belle2::SVDPerformanceModule::h_clEnergy
TH1F * h_clEnergy[m_nLayers][m_nSensors][m_nSides]
energy
Definition: SVDPerformanceModule.h:139
Belle2::SVDPerformanceModule::createHistogram1D
TH1F * createHistogram1D(const char *name, const char *title, Int_t nbins, Double_t min, Double_t max, const char *xtitle, TList *histoList=NULL)
Function returning a TH1F.
Definition: SVDPerformanceModule.cc:903
Belle2::SVDPerformanceModule::endRun
virtual void endRun() override
This method is called if the current run ends.
Definition: SVDPerformanceModule.cc:793
Belle2::SVDPerformanceModule::m_Tracks
StoreArray< Track > m_Tracks
Tracks store array.
Definition: SVDPerformanceModule.h:95
Belle2::SVDPerformanceModule::h_nReco
TH1F * h_nReco[m_nLayers][m_nSensors][m_nSides]
number per event
Definition: SVDPerformanceModule.h:129
Belle2::SVDPerformanceModule::m_Pvalue
TH1F * m_Pvalue
track p value
Definition: SVDPerformanceModule.h:121
Belle2::SVDPerformanceModule::initialize
virtual void initialize() override
Initialize the Module.
Definition: SVDPerformanceModule.cc:42
Belle2::SVDPerformanceModule::m_nSensors
static const int m_nSensors
max number of sensors
Definition: SVDPerformanceModule.h:107
Belle2::SVDPerformanceModule::h_nCl
TH1F * h_nCl[m_nLayers][m_nSensors][m_nSides]
number per event
Definition: SVDPerformanceModule.h:136
Belle2::SVDPerformanceModule::event
virtual void event() override
This method is the core of the module.
Definition: SVDPerformanceModule.cc:423
Belle2::SVDPerformanceModule::h_clEnergyVSSize_mb345
TH2F * h_clEnergyVSSize_mb345[m_nLayers][m_nSensors][m_nSides]
energy VS size, maxbin == 3,4,5
Definition: SVDPerformanceModule.h:154
Belle2::SVDPerformanceModule::h_cltrk_UU
TH1F * h_cltrk_UU
U time vs U time.
Definition: SVDPerformanceModule.h:185
Belle2::SVDPerformanceModule::h_stripNoise
TH1F * h_stripNoise[m_nLayers][m_nSensors][m_nSides]
strip noise
Definition: SVDPerformanceModule.h:132
Belle2::TrackFitResult::getHitPatternVXD
HitPatternVXD getHitPatternVXD() const
Getter for the hit pattern in the VXD;.
Definition: TrackFitResult.cc:125
Belle2::SVDPerformanceModule::h_cltrkTime_TB2
TH1F * h_cltrkTime_TB2[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:168
Belle2::SVDPerformanceModule::h_cltrkTime_L5uL5v
TH2F * h_cltrkTime_L5uL5v
L5U time VS L5V time.
Definition: SVDPerformanceModule.h:191
Belle2::SVDPerformanceModule::h_1cltrkSN
TH1F * h_1cltrkSN[m_nLayers][m_nSensors][m_nSides]
signal over noise
Definition: SVDPerformanceModule.h:178
Belle2::Module::addParam
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:562
Belle2::SVDPerformanceModule::h_cltrkTime_L4uL5u
TH2F * h_cltrkTime_L4uL5u
L4U time VS L5U time.
Definition: SVDPerformanceModule.h:189
Belle2::SVDPerformanceModule::sensorsOnLayer
unsigned int sensorsOnLayer[4]
sensors on layer i
Definition: SVDPerformanceModule.h:110
Belle2::RelationVector::weight
float weight(int index) const
Get weight with index.
Definition: RelationVector.h:120
Belle2::SVDPerformanceModule::m_debugLowTime
float m_debugLowTime
cluster Time below this number will produce a printout
Definition: SVDPerformanceModule.h:75
Belle2::SVDPerformanceModule::h_recoEnergy
TH1F * h_recoEnergy[m_nLayers][m_nSensors][m_nSides]
energy
Definition: SVDPerformanceModule.h:131
Belle2::Track
Class that bundles various TrackFitResults.
Definition: Track.h:35
Belle2::SVDPerformanceModule::h_cltrk_VV
TH1F * h_cltrk_VV
V time vs V time.
Definition: SVDPerformanceModule.h:186
Belle2::VxdID::getLayerNumber
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:106
Belle2::SVDPerformanceModule::h_clTime
TH1F * h_clTime[m_nLayers][m_nSensors][m_nSides]
time
Definition: SVDPerformanceModule.h:151
Belle2::SVDPerformanceModule::m_rootFileName
std::string m_rootFileName
root file name
Definition: SVDPerformanceModule.h:79
Belle2::SVDPerformanceModule::h_clEnergy12VSdelta
TH2F * h_clEnergy12VSdelta[m_nLayers][m_nSensors][m_nSides]
coor1 VS coor2
Definition: SVDPerformanceModule.h:147
Belle2::StoreArray::getEntries
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:226
Belle2::SVDNoiseCalibrations::getNoiseInElectrons
float getNoiseInElectrons(const VxdID &sensorID, const bool &isU, const unsigned short &strip) const
This method provides the correct noise conversion into electrons, taking into account that the noise ...
Definition: SVDNoiseCalibrations.h:97
Belle2::SVDPerformanceModule::m_RecoDigitName
std::string m_RecoDigitName
SVDRecoDigits Store Array name.
Definition: SVDPerformanceModule.h:68
Belle2::SVDPerformanceModule::h_clEnergyVSCoorU
TH2F * h_clEnergyVSCoorU[m_nLayers][m_nSensors][m_nSides]
energy VS position U
Definition: SVDPerformanceModule.h:142
Belle2::SVDPerformanceModule::h_clEnergyUVSEnergyV
TH2F * h_clEnergyUVSEnergyV[m_nLayers][m_nSensors]
energy VS position
Definition: SVDPerformanceModule.h:149
Belle2::SVDPerformanceModule::h_clSeedMaxbin
TH1F * h_clSeedMaxbin[m_nLayers][m_nSensors][m_nSides]
maxbin seed
Definition: SVDPerformanceModule.h:140
Belle2::SVDPerformanceModule::m_TrackFitResultName
std::string m_TrackFitResultName
TrackFitResult StoreArray name.
Definition: SVDPerformanceModule.h:70