Belle II Software  release-05-01-25
SVDClusterEvaluationModule.cc
1 #include <svd/modules/svdPerformance/SVDClusterEvaluationModule.h>
2 #include <tracking/dataobjects/RecoTrack.h>
3 
4 using namespace std;
5 using namespace Belle2;
6 
7 REG_MODULE(SVDClusterEvaluation)
8 
9 SVDClusterEvaluationModule::SVDClusterEvaluationModule(): Module()
10  , m_interCoor(NULL)
11  , m_interSigma(NULL)
12  , m_clsCoor(NULL)
13  , m_clsResid(NULL)
14  , m_clsMinResid(NULL)
15  , m_clsResid2D(NULL)
16 {
17 
18  setDescription("This module check performances of SVD reconstruction of VXD TB data");
19 
20  addParam("outputFileName", m_rootFileName, "Name of output root file.", std::string("SVDClusterEvaluation_output.root"));
21 
22  addParam("LayerUnderStudy", m_theLayer, "Number of the layer under study. If 0, then all layers are plotted", int(0));
23  addParam("InterceptSigmaMax", m_interSigmaMax,
24  "Max of the histogram that contains the intercept statistical error. Default is OK for Phase2.", double(0.35));
25  addParam("uFiducialLength", m_uFiducial,
26  "length to be subtracted from the U-edge to consider intercepts inside the sensor. Positive values reduce the area; negative values increase the area",
27  double(0));
28  addParam("vFiducialLength", m_vFiducial,
29  "length to be subtracted from the V-edge to consider intercepts inside the sensor. Positive values reduce the area; negative values increase the area",
30  double(0));
31  addParam("efficiency_nSigma", m_nSigma, " number of residual sigmas for the determination of the efficiency", float(5));
32  addParam("efficiency_halfWidth", m_halfWidth, " window half width for the determination of the efficiency", float(0.05));
33  addParam("ClustersName", m_ClusterName, "Name of DUTs Cluster Store Array.", std::string(""));
34  addParam("InterceptsName", m_InterceptName, "Name of Intercept Store Array.", std::string(""));
35  addParam("TracksName", m_TrackName, "Name of Track Store Array.", std::string(""));
36  addParam("UbinWidth", m_UbinWidth, "Histograms U-bin width (in um)", double(10));
37  addParam("VbinWidth", m_VbinWidth, "Histograms V-bin width (in um)", double(10));
38  addParam("groupNstrips", m_groupNstrips, "How many strips group together in the 2D residual VS position plot", int(128));
39 }
40 
41 SVDClusterEvaluationModule::~SVDClusterEvaluationModule()
42 {
43 
44 }
45 
47 {
48 
49  m_eventMetaData.isRequired();
50  m_svdClusters.isRequired(m_ClusterName);
51  m_svdIntercepts.isRequired(m_InterceptName);
52  m_tracks.isRequired(m_TrackName);
53 
54  m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
55 
58 
63 
68 
69  // create new root file
70  m_rootFilePtr = new TFile(m_rootFileName.c_str(), "RECREATE");
71 
72  //tree initialization
73  m_tree = new TTree("tree", "RECREATE");
74  b_experiment = m_tree->Branch("exp", &m_experiment, "exp/i");
75  b_run = m_tree->Branch("run", &m_run, "run/i");
76  b_layer = m_tree->Branch("layer", &m_layer, "layer/i");
77  b_ladder = m_tree->Branch("ladder", &m_ladder, "ladder/i");
78  b_sensor = m_tree->Branch("sensor", &m_sensor, "sensor/i");
79  b_interU = m_tree->Branch("interU", &m_interU, "interU/F");
80  b_interV = m_tree->Branch("interV", &m_interV, "interV/F");
81  b_interErrU = m_tree->Branch("interErrU", &m_interErrU, "interErrU/F");
82  b_interErrV = m_tree->Branch("interErrV", &m_interErrV, "interErrV/F");
83  b_interUprime = m_tree->Branch("interUprime", &m_interUprime, "interUprime/F");
84  b_interVprime = m_tree->Branch("interVprime", &m_interVprime, "interVprime/F");
85  b_interErrUprime = m_tree->Branch("interErrUprime", &m_interErrUprime, "interErrUprime/F");
86  b_interErrVprime = m_tree->Branch("interErrVprime", &m_interErrVprime, "interErrVprime/F");
87  b_residU = m_tree->Branch("residU", &m_residU, "residU/F");
88  b_residV = m_tree->Branch("residV", &m_residV, "residV/F");
89  b_clUpos = m_tree->Branch("clUpos", &m_clUpos, "clUpos/F");
90  b_clVpos = m_tree->Branch("clVpos", &m_clVpos, "clVpos/F");
91  b_clUcharge = m_tree->Branch("clUcharge", &m_clUcharge, "clUcharge/F");
92  b_clVcharge = m_tree->Branch("clVcharge", &m_clVcharge, "clVcharge/F");
93  b_clUsnr = m_tree->Branch("clUsnr", &m_clUsnr, "clUsnr/F");
94  b_clVsnr = m_tree->Branch("clVsnr", &m_clVsnr, "clVsnr/F");
95  b_clUsize = m_tree->Branch("clUsize", &m_clUsize, "clUsize/i");
96  b_clVsize = m_tree->Branch("clVsize", &m_clVsize, "clVsize/i");
97  b_clUtime = m_tree->Branch("clUtime", &m_clUtime, "clUtime/F");
98  b_clVtime = m_tree->Branch("clVtime", &m_clVtime, "clVtime/F");
99 
100  //tree initialization
101  m_treeSummary = new TTree("summary", "RECREATE");
102  bs_experiment = m_treeSummary->Branch("exp", &m_experiment, "exp/i");
103  bs_run = m_treeSummary->Branch("run", &ms_run, "run/i");
104  bs_layer = m_treeSummary->Branch("layer", &ms_layer, "layer/i");
105  bs_ladder = m_treeSummary->Branch("ladder", &ms_ladder, "ladder/i");
106  bs_sensor = m_treeSummary->Branch("sensor", &ms_sensor, "sensor/i");
107  bs_effU = m_treeSummary->Branch("effU", &ms_effU, "effU/F");
108  bs_effV = m_treeSummary->Branch("effV", &ms_effV, "effU/F");
109  bs_effErrU = m_treeSummary->Branch("effErrU", &ms_effErrU, "effErrU/F");
110  bs_effErrV = m_treeSummary->Branch("effErrV", &ms_effErrV, "effErrU/F");
111  bs_nIntercepts = m_treeSummary->Branch("nIntercepts", &ms_nIntercepts, "nIntercepts/i");
112  bs_residU = m_treeSummary->Branch("residU", &ms_residU, "residU/F");
113  bs_residV = m_treeSummary->Branch("residV", &ms_residV, "residU/F");
114  bs_misU = m_treeSummary->Branch("misU", &ms_misU, "misU/F");
115  bs_misV = m_treeSummary->Branch("misV", &ms_misV, "misU/F");
116  bs_statU = m_treeSummary->Branch("statU", &ms_statU, "statU/F");
117  bs_statV = m_treeSummary->Branch("statV", &ms_statV, "statU/F");
118 
119 }
120 
121 
123 {
124 
125  if (m_interCoor == NULL) {
126 
127  //INTERCEPTS
129 
131 
132  //CLUSTERS
134 
136 
137  B2DEBUG(10, "Empty histograms have beein created");
138  B2DEBUG(10, "Large sensors, U side: width = " << m_width_LargeS_U << " cm, bin width = " << m_UbinWidth << " cm -> Nbins = " <<
140  B2DEBUG(10, "Large sensors, V side: width = " << m_width_LargeS_V << " cm, bin width = " << m_UbinWidth << " cm -> Nbins = " <<
142 
143  B2DEBUG(10, "Small sensors, U side: width = " << m_width_SmallS_U << " cm, bin width = " << m_UbinWidth << " cm -> Nbins = " <<
145  B2DEBUG(10, "Small sensors, V side: width = " << m_width_SmallS_V << " cm, bin width = " << m_UbinWidth << " cm -> Nbins = " <<
147  }
148 
149 
150 
151 
152 
153 
154 }
155 
157 {
158 
159  //tree variables - event
161  m_run = meta->getRun();
162  m_experiment = meta->getExperiment();
163 
164  // int nEvent = m_eventMetaData->getEvent();
165  // B2DEBUG(10, "nEvent = " << nEvent << ": n intercepts = " << m_svdIntercepts.getEntries() << "n clusters DUT = " << m_svdClusters.getEntries());
166  bool isU = true;
167 
168  //intercepts
169  for (int inter = 0 ; inter < m_svdIntercepts.getEntries(); inter++) {
170 
171  if (!isRelatedToTrack(m_svdIntercepts[inter]))
172  continue;
173 
174  B2DEBUG(10, "this intercept is related to a good track");
175 
176  VxdID::baseType theVxdID = (VxdID::baseType)m_svdIntercepts[inter]->getSensorID();
177  double coorU = m_svdIntercepts[inter]->getCoorU();
178  double coorV = m_svdIntercepts[inter]->getCoorV();
179  double sigmaU = m_svdIntercepts[inter]->getSigmaU();
180  double sigmaV = m_svdIntercepts[inter]->getSigmaV();
181 
182  //tree variables - sensor
183  m_layer = VxdID(theVxdID).getLayerNumber();
184  m_ladder = VxdID(theVxdID).getLadderNumber();
185  m_sensor = VxdID(theVxdID).getSensorNumber();
186  //tree variables - intercept
187  m_interU = coorU;
188  m_interV = coorV;
189  m_interErrU = sigmaU;
190  m_interErrV = sigmaV;
191  m_interUprime = m_svdIntercepts[inter]->getUprime();
192  m_interVprime = m_svdIntercepts[inter]->getVprime();
193  m_interErrUprime = m_svdIntercepts[inter]->getSigmaUprime();
194  m_interErrVprime = m_svdIntercepts[inter]->getSigmaVprime();
195 
196  const VXD::SensorInfoBase& theSensorInfo = m_geoCache.getSensorInfo(theVxdID);
197  if (theSensorInfo.inside(coorU, coorV, -m_uFiducial, -m_vFiducial)) {
198  B2DEBUG(10, "intercept is inside fiducial area");
199 
200  m_interCoor->fill(theVxdID, isU, coorU, coorV);
201  m_interSigma->fill(theVxdID, isU, sigmaU);
202  m_interSigma->fill(theVxdID, !isU, sigmaV);
203 
204  double minresidU = 999;
205  bool minfoundU = false;
206  double minresidV = 999;
207  bool minfoundV = false;
208  int idU = -99;
209  int idV = -99;
210  m_residU = -99;
211  m_clUpos = -99;
212  m_clUcharge = -99;
213  m_clUsnr = -99;
214  m_clUsize = -99;
215  m_clUtime = -99;
216  m_residV = -99;
217  m_clVpos = -99;
218  m_clVcharge = -99;
219  m_clVsnr = -99;
220  m_clVsize = -99;
221  m_clVtime = -99;
222 
223  //loop on clusters
224  for (int cls = 0 ; cls < m_svdClusters.getEntries(); cls++) {
225 
226  VxdID::baseType clVxdID = (VxdID::baseType)m_svdClusters[cls]->getSensorID();
227  if (clVxdID != theVxdID)
228  continue;
229 
230  double interCoor = coorV;
231  double clPos = m_svdClusters[cls]->getPosition();
232  // double interSigma = sigmaV;
233  if (m_svdClusters[cls]->isUCluster()) {
234  interCoor = coorU;
235  //interSigma = sigmaU;
236  clPos = m_svdClusters[cls]->getPosition(coorV);
237  }
238  double resid = interCoor - clPos;
239  m_clsResid->fill(theVxdID, m_svdClusters[cls]->isUCluster(), resid);
240  m_clsResid2D->fill(theVxdID, m_svdClusters[cls]->isUCluster(), clPos, resid);
241 
242  //looking for the minimal residual
243  if (m_svdClusters[cls]->isUCluster()) {
244  if (fabs(resid) < fabs(minresidU)) {
245  minfoundU = true;
246  minresidU = resid;
247  idU = cls;
248  }
249  } else {
250  if (fabs(resid) < fabs(minresidV)) {
251  minfoundV = true;
252  minresidV = resid;
253  idV = cls;
254  }
255  }
256  }
257  if (minfoundU) {
258  m_clsMinResid->fill(theVxdID, true, minresidU);
259  m_residU = minresidU;
260  m_clUpos = m_svdClusters[idU]->getPosition(coorV);
261  m_clUcharge = m_svdClusters[idU]->getCharge();
262  m_clUsnr = m_svdClusters[idU]->getSNR();
263  m_clUsize = (int)m_svdClusters[idU]->getSize();
264  m_clUtime = m_svdClusters[idU]->getClsTime();
265  }
266  if (minfoundV) {
267  m_clsMinResid->fill(theVxdID, false, minresidV);
268  m_residV = minresidV;
269  m_clVpos = m_svdClusters[idV]->getPosition();
270  m_clVcharge = m_svdClusters[idV]->getCharge();
271  m_clVsnr = m_svdClusters[idV]->getSNR();
272  m_clVsize = (int)m_svdClusters[idV]->getSize();
273  m_clVtime = m_svdClusters[idV]->getClsTime();
274  }
275 
276  //fill only if inside fiducial area
277  m_tree->Fill();
278 
279  }
280 
281 
282  }
283 
284  //clusters
285  for (int cls = 0 ; cls < m_svdClusters.getEntries(); cls++) {
286 
287  VxdID::baseType theVxdID = (VxdID::baseType)m_svdClusters[cls]->getSensorID();
288  m_clsCoor->fill(theVxdID, m_svdClusters[cls]->isUCluster(), m_svdClusters[cls]->getPosition());
289 
290  }
291 
292 
293 }
294 
295 
297 {
298 }
299 
300 
302 {
303 
305  ms_run = meta->getRun();
306  ms_experiment = meta->getExperiment();
307 
308  if (m_rootFilePtr != NULL) {
309  m_rootFilePtr->cd();
310 
311  m_tree->Write();
312 
313  const int Nsensors = 172;//L6
314  // float sensors[Nsensors]; //sensor identificator
315  // float sensorsErr[Nsensors]; //sensor identificator
316  float residU[Nsensors]; //U residuals
317  float residV[Nsensors]; //V residuals
318  float misU[Nsensors]; //U misalignment
319  float misV[Nsensors]; //V misalignment
320  // float resolU[Nsensors]; //U residuals
321  // float resolV[Nsensors]; //V residuals
322  float effU[Nsensors];
323  float effV[Nsensors];
324  float effUErr[Nsensors];
325  float effVErr[Nsensors];
326  TString sensorU[Nsensors];
327  TString sensorV[Nsensors];
328 
329  for (int i = 0; i < Nsensors; i++) {
330  // sensors[i] = i;
331  // sensorsErr[i] = 0;
332  residU[i] = 0;
333  residV[i] = 0;
334  misU[i] = 0;
335  misV[i] = 0;
336  // resolU[i] = 0;
337  // resolV[i] = 0;
338  effU[i] = -1;
339  effV[i] = -1;
340  effUErr[i] = 0;
341  effVErr[i] = 0;
342  sensorU[i] = "";
343  sensorV[i] = "";
344  }
345 
346  TH1F* h_residU = new TH1F("hResidU", "U Residuals", 1, 0, 1);
347  h_residU->SetCanExtend(TH1::kAllAxes);
348  h_residU->SetStats(0);
349  h_residU->GetXaxis()->SetTitle("sensor");
350  h_residU->GetYaxis()->SetTitle("U residuals (#mum)");
351  TH1F* h_residV = new TH1F("hResidV", "V Residuals", 1, 0, 1);
352  h_residV->SetCanExtend(TH1::kAllAxes);
353  h_residV->SetStats(0);
354  h_residV->GetXaxis()->SetTitle("sensor");
355  h_residV->GetYaxis()->SetTitle("V residuals (#mum)");
356 
357  TH1F* h_statU = new TH1F("hStatU", "U Intercept Statistical Error", 1, 0, 1);
358  h_statU->SetCanExtend(TH1::kAllAxes);
359  h_statU->SetStats(0);
360  h_statU->GetXaxis()->SetTitle("sensor");
361  h_statU->GetYaxis()->SetTitle("U extrap. error (#mum)");
362  TH1F* h_statV = new TH1F("hStatV", "V Intercept Statistical Error", 1, 0, 1);
363  h_statV->SetCanExtend(TH1::kAllAxes);
364  h_statV->SetStats(0);
365  h_statV->GetXaxis()->SetTitle("sensor");
366  h_statV->GetYaxis()->SetTitle("V extrap. error (#mum)");
367 
368  TH1F* h_misU = new TH1F("hMisU", "U Residual Misalignment", 1, 0, 1);
369  h_misU->SetCanExtend(TH1::kAllAxes);
370  h_misU->SetStats(0);
371  h_misU->GetXaxis()->SetTitle("sensor");
372  h_misU->GetYaxis()->SetTitle("U misalignment (#mum)");
373  TH1F* h_misV = new TH1F("hMisV", "V Residual Misalignment", 1, 0, 1);
374  h_misV->SetCanExtend(TH1::kAllAxes);
375  h_misV->SetStats(0);
376  h_misV->GetXaxis()->SetTitle("sensor");
377  h_misV->GetYaxis()->SetTitle("V misalignment (#mum)");
378 
379 
380  TH1F* h_effU = new TH1F("hEffU", Form("U-Side Summary, %.1f#sigma or #pm%.1f mm", m_nSigma, m_halfWidth * 10), 1, 0, 1);
381  h_effU->SetCanExtend(TH1::kAllAxes);
382  h_effU->SetStats(0);
383  h_effU->GetXaxis()->SetTitle("sensor");
384  h_effU->GetYaxis()->SetTitle("U efficiency");
385  TH1F* h_effV = new TH1F("hEffV", Form("V-Side Summary, %.1f#sigma or #pm%.1f mm", m_nSigma, m_halfWidth * 10), 1, 0, 1);
386  h_effV->SetCanExtend(TH1::kAllAxes);
387  h_effV->SetStats(0);
388  h_effV->GetXaxis()->SetTitle("sensor");
389  h_effV->GetYaxis()->SetTitle("V efficiency");
390 
391  TDirectory* oldDir = gDirectory;
392 
393  int s = 0; //sensor counter;
394 
395  for (auto layer : m_geoCache.getLayers(VXD::SensorInfoBase::SVD)) {
396  int currentLayer = layer.getLayerNumber();
397  ms_layer = currentLayer;
398 
399  if (m_theLayer != 0 && currentLayer != m_theLayer)
400  continue;
401 
402  TString interName = Form("interceptsL%d", layer.getLayerNumber());
403  TString clsName = Form("clustersL%d", layer.getLayerNumber());
404  TString residName = Form("residualsL%d", layer.getLayerNumber());
405  TDirectory* dir_inter = oldDir->mkdir(interName.Data());
406  TDirectory* dir_cls = oldDir->mkdir(clsName.Data());
407  TDirectory* dir_resid = oldDir->mkdir(residName.Data());
408  for (auto ladder : m_geoCache.getLadders(layer))
409  for (Belle2::VxdID sensor : m_geoCache.getSensors(ladder)) {
410  ms_ladder = (VxdID)sensor.getLadderNumber();
411  ms_sensor = (VxdID)sensor.getSensorNumber();
412 
413  dir_inter->cd();
414  (m_interCoor->getHistogram(sensor, 1))->Write();
415  for (int view = SVDHistograms<TH1F>::VIndex ; view < SVDHistograms<TH1F>::UIndex + 1; view++) {
416  dir_cls->cd();
417  (m_clsCoor->getHistogram(sensor, view))->Write();
418 
419  dir_inter->cd();
420  float stat = (m_interSigma->getHistogram(sensor, view))->GetMean();
421  ms_nIntercepts = (m_interSigma->getHistogram(sensor, view))->GetEntries();
422  (m_interSigma->getHistogram(sensor, view))->Write();
423 
424  dir_resid->cd();
425  TH1F* res = m_clsMinResid->getHistogram(sensor, view);
426  Double_t median, q;
427  q = 0.5; // 0.5 for "median"
428  {
429  if (view == SVDHistograms<TH1F>::UIndex) {
430  sensorU[s] = Form("%d.%d.%dU", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
431  B2DEBUG(10, "U-side efficiency for " << currentLayer << "." << ladder.getLadderNumber() << "." << sensor.getSensorNumber());
432 
433  if (res->GetEntries() > 0) {
434 
435  res->GetQuantiles(1, &median, &q);
436 
437  residU[s] = getOneSigma(res);
438  misU[s] = median;
439 
440  float halfWindow = m_nSigma * residU[s];
441  if (m_nSigma == 0)
442  halfWindow = m_halfWidth;
443 
444  int binMin = res->FindBin(misU[s] - halfWindow);
445  int binMax = res->FindBin(misU[s] + halfWindow);
446  B2DEBUG(10, "from " << misU[s] - halfWindow << " -> binMin = " << binMin);
447  B2DEBUG(10, "to " << misU[s] + halfWindow << " -> binMax = " << binMax);
448 
449  int num = 0;
450  for (int bin = binMin; bin < binMax + 1; bin++)
451  num = num + res->GetBinContent(bin);
452 
453  float bkg = 0;
454  for (int bin = 1; bin < binMin; bin++)
455  bkg = bkg + res->GetBinContent(bin);
456  for (int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
457  bkg = bkg + res->GetBinContent(bin);
458  //remove background clusters estimated from sidebands
459  num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
460 
461  if (ms_nIntercepts > 0) {
462  effU[s] = 1.*num / ms_nIntercepts;
463  //filling efficiency histogram
464  h_effU->Fill(sensorU[s], effU[s]);
465  if (effU[s] > 1)
466  B2WARNING("something is wrong! efficiency greater than 1: " << num << "/" << ms_nIntercepts);
467  effUErr[s] = sqrt(effU[s] * (1 - effU[s]) / ms_nIntercepts);
468  }
469  B2DEBUG(10, "num = " << num);
470  B2DEBUG(10, "den = " << ms_nIntercepts);
471  B2RESULT("U-side efficiency for " << currentLayer << "." << ladder.getLadderNumber() << "." << sensor.getSensorNumber() << " = " <<
472  effU[s] << " ± " << effUErr[s]);
473 
474  //filling summary Histograms for the U side
475  h_statU->Fill(sensorU[s], stat * m_cmTomicron);
476  h_residU->Fill(sensorU[s], residU[s]*m_cmTomicron);
477  h_misU->Fill(sensorU[s], misU[s]*m_cmTomicron);
478 
479  //finally set branch values
480  ms_residU = residU[s];
481  ms_misU = misU[s];
482  ms_effU = effU[s];
483  ms_effErrU = effUErr[s];
484  ms_statU = stat;
485  } else {
486  //set to some values if residual histogram is empty
487  ms_residU = -99;
488  ms_misU = -99;
489  ms_effU = -99;
490  ms_effErrU = -99;
491  ms_statU = -99;
492  }
493 
494 
495  } else { // V-side
496  sensorV[s] = Form("%d.%d.%dV", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
497  B2DEBUG(10, "V-side efficiency for " << currentLayer << "." << ladder.getLadderNumber() << "." << sensor.getSensorNumber());
498 
499  if (res->GetEntries() > 0) {
500 
501  res->GetQuantiles(1, &median, &q);
502 
503  residV[s] = getOneSigma(res);
504  misV[s] = median;
505  ms_misV = misV[s];
506 
507  float halfWindow = m_nSigma * residV[s];
508  if (m_nSigma == 0)
509  halfWindow = m_halfWidth;
510 
511  int binMin = res->FindBin(misV[s] - halfWindow);
512  int binMax = res->FindBin(misV[s] + halfWindow);
513  B2DEBUG(10, "from " << misV[s] - halfWindow << " -> binMin = " << binMin);
514  B2DEBUG(10, "to " << misV[s] + halfWindow << " -> binMax = " << binMax);
515 
516  //determine signal clusters
517  int num = 0;
518  for (int bin = binMin; bin < binMax + 1; bin++)
519  num = num + res->GetBinContent(bin);
520 
521  float bkg = 0;
522  for (int bin = 1; bin < binMin; bin++)
523  bkg = bkg + res->GetBinContent(bin);
524  for (int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
525  bkg = bkg + res->GetBinContent(bin);
526  //remove background clusters estimated from sidebands
527  num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
528 
529  if (ms_nIntercepts > 0) {
530  effV[s] = 1.*num / ms_nIntercepts;
531  //filling efficiency histogram
532  h_effV->Fill(sensorV[s], effV[s]);
533  if (effV[s] > 1)
534  B2WARNING("something is wrong! efficiency greater than 1: " << num << "/" << ms_nIntercepts);
535  effVErr[s] = sqrt(effV[s] * (1 - effV[s]) / ms_nIntercepts);
536  }
537  B2DEBUG(10, "num = " << num);
538  B2DEBUG(10, "den = " << ms_nIntercepts);
539  B2RESULT("V-side efficiency for " << currentLayer << "." << ladder.getLadderNumber() << "." << sensor.getSensorNumber() << " = " <<
540  effV[s] << " ± " << effVErr[s]);
541 
542  //filling summary Histograms for the V side
543  h_statV->Fill(sensorV[s], stat * m_cmTomicron);
544  h_residV->Fill(sensorV[s], residV[s]*m_cmTomicron);
545  h_misV->Fill(sensorV[s], misV[s]*m_cmTomicron);
546 
547  //finally set branch values
548  ms_residV = residV[s];
549  ms_misV = misV[s];
550  ms_effV = effV[s];
551  ms_effErrV = effVErr[s];
552  ms_statV = stat;
553  } else {
554  //set to some values if residual histogram is empty
555  ms_residV = -99;
556  ms_misV = -99;
557  ms_effV = -99;
558  ms_effErrV = -99;
559  ms_statV = -99;
560  }
561 
562  }
563 
564  }
565  B2DEBUG(50, "writing out resid histograms for " << sensor.getLayerNumber() << "." << sensor.getLadderNumber() << "." <<
566  sensor.getSensorNumber() << "." << view);
567  (m_clsResid->getHistogram(sensor, view))->Write();
568  (res)->Write();
569  (m_clsResid2D->getHistogram(sensor, view))->Write();
570 
571 
572  }
573  m_treeSummary->Fill();
574  s++;
575  }
576  }
577 
578 
579 
580  oldDir->cd();
581  m_treeSummary->Write();
582 
583  for (int bin = 0; bin < h_residU->GetNbinsX(); bin++)
584  h_residU->SetBinError(bin, 0.);
585  h_residU->Write();
586  for (int bin = 0; bin < h_residV->GetNbinsX(); bin++)
587  h_residV->SetBinError(bin, 0.);
588  h_residV->Write();
589  for (int bin = 0; bin < h_statU->GetNbinsX(); bin++)
590  h_statU->SetBinError(bin, 0.);
591  h_statU->Write();
592  for (int bin = 0; bin < h_statV->GetNbinsX(); bin++)
593  h_statV->SetBinError(bin, 0.);
594  h_statV->Write();
595  for (int bin = 0; bin < h_misU->GetNbinsX(); bin++)
596  h_misU->SetBinError(bin, 0.);
597  h_misU->Write();
598  for (int bin = 0; bin < h_misV->GetNbinsX(); bin++)
599  h_misV->SetBinError(bin, 0.);
600  h_misV->Write();
601  for (int bin = 0; bin < h_effU->GetNbinsX(); bin++)
602  h_effU->SetBinError(bin, 0.);
603  h_effU->Write();
604  for (int bin = 0; bin < h_effV->GetNbinsX(); bin++)
605  h_effV->SetBinError(bin, 0.);
606  h_effV->Write();
607  }
608 
609  m_rootFilePtr->Close();
610 }
611 
612 
613 
615 {
616 
617  RelationVector<RecoTrack> theRC = DataStore::getRelationsWithObj<RecoTrack>(inter);
618  if (theRC.size() == 0)
619  return false;
620 
621  RelationVector<Track> theTrack = theRC[0]->getRelationsWith<Track>(m_TrackName);
622 
623  if (theTrack.size() == 0)
624  return false;
625 
626  return true;
627 
628 }
629 
630 
632 {
633 
634  TH2F h_coorUV_LargeSensor("interCoor_Large_L@layerL@ladderS@sensor",
635  "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
638  h_coorUV_LargeSensor.GetXaxis()->SetTitle("Intercept U coordinate (cm)");
639  h_coorUV_LargeSensor.GetYaxis()->SetTitle("Intercept V coordinate (cm)");
640 
641  TH2F h_coorUV_SmallSensor("interCoor_Small_L@layerL@ladderS@sensor",
642  "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
645  h_coorUV_SmallSensor.GetXaxis()->SetTitle("Intercept U coordinate (cm)");
646  h_coorUV_SmallSensor.GetYaxis()->SetTitle("Intercept V coordinate (cm)");
647 
648 
649  m_interCoor = new SVDHistograms<TH2F>(h_coorUV_SmallSensor, h_coorUV_SmallSensor, h_coorUV_LargeSensor, h_coorUV_LargeSensor);
650 }
651 
652 
654 {
655 
656  TH1F h_sigmaU("interSigmaU_L@layerL@ladderS@sensor@view",
657  "U Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
658  100, 0, m_interSigmaMax);
659  h_sigmaU.GetXaxis()->SetTitle("Intercept U Error (cm)");
660 
661  TH1F h_sigmaV("interSigmaV_L@layerL@ladderS@sensor@view",
662  "V Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
663  100, 0, m_interSigmaMax);
664  h_sigmaV.GetXaxis()->SetTitle("Intercept V Error (cm)");
665 
666 
667  m_interSigma = new SVDHistograms<TH1F>(h_sigmaU, h_sigmaV, h_sigmaU, h_sigmaV);
668 }
669 
670 
672 {
673 
674 
675  TH1F h_clcoorU_LargeSensor("clsCoorU_LS_L@layerL@ladderS@sensor@view",
676  "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
678  h_clcoorU_LargeSensor.GetXaxis()->SetTitle("Cluster U coordinate (cm)");
679 
680  TH1F h_clcoorV_LargeSensor("clsCoorV_LS_L@layerL@ladderS@sensor@view",
681  "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
683  h_clcoorV_LargeSensor.GetXaxis()->SetTitle("Cluster V coordinate (cm)");
684 
685  TH1F h_clcoorU_SmallSensor("clsCoorU_SS_L@layerL@ladderS@sensor@view",
686  "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
688  h_clcoorU_SmallSensor.GetXaxis()->SetTitle("Cluster U coordinate (cm)");
689 
690  TH1F h_clcoorV_SmallSensor("clsCoorV_SS_L@layerL@ladderS@sensor@view",
691  "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
693  h_clcoorV_SmallSensor.GetXaxis()->SetTitle("Cluster V coordinate (cm)");
694 
695 
696  m_clsCoor = new SVDHistograms<TH1F>(h_clcoorU_SmallSensor, h_clcoorV_SmallSensor, h_clcoorU_LargeSensor, h_clcoorV_LargeSensor);
697 
698 }
699 
701 {
702 
703  float range = 0.5;
704  int NbinsU = 200;//range*0.0001*2/m_UbinWidth;
705  int NbinsV = 200;//range*0.0001*2/m_VbinWidth;
706 
707  //CLUSTER RESIDUALS
708  TH1F h_clresidU_LargeSensor("clsResidU_LS_L@layerL@ladderS@sensor@view",
709  "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
710  // m_nBins_LargeS_U, -m_abs_LargeS_U, m_abs_LargeS_U);
711  NbinsU, -range, range);
712  h_clresidU_LargeSensor.GetXaxis()->SetTitle("residual (cm)");
713 
714  TH1F h_clresidV_LargeSensor("clsResidV_LS_L@layerL@ladderS@sensor@view",
715  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
716  // m_nBins_LargeS_V, -m_abs_LargeS_V, m_abs_LargeS_V);
717  NbinsV, -range, range);
718  h_clresidV_LargeSensor.GetXaxis()->SetTitle("residual (cm)");
719 
720  TH1F h_clresidU_SmallSensor("clsResidU_SS_L@layerL@ladderS@sensor@view",
721  "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
722  // m_nBins_SmallS_U, -m_abs_SmallS_U, m_abs_SmallS_U);
723  NbinsU, -range, range);
724  h_clresidU_SmallSensor.GetXaxis()->SetTitle("residual (cm)");
725 
726  TH1F h_clresidV_SmallSensor("clsResidV_SS_L@layerL@ladderS@sensor@view",
727  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
728  // m_nBins_SmallS_V, -m_abs_SmallS_V, m_abs_SmallS_V);
729  NbinsU, -range, range);
730  h_clresidV_SmallSensor.GetXaxis()->SetTitle("residual (cm)");
731 
732 
733 
734  m_clsResid = new SVDHistograms<TH1F>(h_clresidU_SmallSensor, h_clresidV_SmallSensor, h_clresidU_LargeSensor,
735  h_clresidV_LargeSensor);
736 
737  //CLUSTER RESIDUALS VS CL POSITION
738  const int Nzones_768 = 768 / m_groupNstrips;
739  const int Nzones_512 = 512 / m_groupNstrips;
740 
741  TH2F h2_clresidU_LargeSensor("clsResid2DU_LS_L@layerL@ladderS@sensor@view",
742  "U Cluster Residuals VS U Cluster Position(layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
743  Nzones_768, -m_width_LargeS_U / 2, m_width_LargeS_U / 2, NbinsU, -range, range);
744  h2_clresidU_LargeSensor.GetYaxis()->SetTitle("residual (cm)");
745  h2_clresidU_LargeSensor.GetXaxis()->SetTitle("cluster position (cm)");
746 
747  TH2F h2_clresidV_LargeSensor("clsResid2DV_LS_L@layerL@ladderS@sensor@view",
748  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
749  Nzones_512, -m_width_LargeS_V / 2, m_width_LargeS_V / 2, NbinsV, -range, range);
750  h2_clresidV_LargeSensor.GetYaxis()->SetTitle("residual (cm)");
751  h2_clresidV_LargeSensor.GetXaxis()->SetTitle("cluster position (cm)");
752 
753  TH2F h2_clresidU_SmallSensor("clsResid2DU_SS_L@layerL@ladderS@sensor@view",
754  "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
755  Nzones_768, -m_width_SmallS_U / 2, m_width_SmallS_U / 2, NbinsU, -range, range);
756  h2_clresidU_SmallSensor.GetYaxis()->SetTitle("residual (cm)");
757  h2_clresidU_SmallSensor.GetXaxis()->SetTitle("cluster position (cm)");
758 
759  TH2F h2_clresidV_SmallSensor("clsResid2DV_SS_L@layerL@ladderS@sensor@view",
760  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
761  Nzones_512, -m_width_SmallS_V / 2, m_width_SmallS_V / 2, NbinsU, -range, range);
762  h2_clresidV_SmallSensor.GetYaxis()->SetTitle("residual (cm)");
763  h2_clresidV_SmallSensor.GetXaxis()->SetTitle("cluster position (cm)");
764 
765  m_clsResid2D = new SVDHistograms<TH2F>(h2_clresidU_SmallSensor, h2_clresidV_SmallSensor, h2_clresidU_LargeSensor,
766  h2_clresidV_LargeSensor);
767 
768  //CLUSTER MINIMUM RESIDUAL
769  //CLUSTER RESIDUALS
770  TH1F h_clminresidU_LargeSensor("clsMinResidU_LS_L@layerL@ladderS@sensor@view",
771  "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
772  // m_nBins_LargeS_U, -m_abs_LargeS_U, m_abs_LargeS_U);
773  NbinsU, -range, range);
774  h_clminresidU_LargeSensor.GetXaxis()->SetTitle("residual (cm)");
775 
776  TH1F h_clminresidV_LargeSensor("clsMinResidV_LS_L@layerL@ladderS@sensor@view",
777  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
778  // m_nBins_LargeS_V, -m_abs_LargeS_V, m_abs_LargeS_V);
779  NbinsV, -range, range);
780  h_clminresidV_LargeSensor.GetXaxis()->SetTitle("residual (cm)");
781 
782  TH1F h_clminresidU_SmallSensor("clsMinResidU_SS_L@layerL@ladderS@sensor@view",
783  "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
784  // m_nBins_SmallS_U, -m_abs_SmallS_U, m_abs_SmallS_U);
785  NbinsU, -range, range);
786  h_clminresidU_SmallSensor.GetXaxis()->SetTitle("residual (cm)");
787 
788  TH1F h_clminresidV_SmallSensor("clsMinResidV_SS_L@layerL@ladderS@sensor@view",
789  "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
790  // m_nBins_SmallS_V, -m_abs_SmallS_V, m_abs_SmallS_V);
791  NbinsU, -range, range);
792  h_clminresidV_SmallSensor.GetXaxis()->SetTitle("residual (cm)");
793 
794 
795 
796  m_clsMinResid = new SVDHistograms<TH1F>(h_clminresidU_SmallSensor, h_clminresidV_SmallSensor, h_clminresidU_LargeSensor,
797  h_clminresidV_LargeSensor);
798 
799 
800 }
801 
802 
804 {
805 
806  TH1F* h1_res = (TH1F*)h1->Clone("h1_res");
807  double probs[2] = {0.16, 1 - 0.16};
808  double quant[2] = {0, 0};
809  int nbinsHisto = h1_res->GetNbinsX();
810  h1_res->SetBinContent(1, h1_res->GetBinContent(0) + h1_res->GetBinContent(1));
811  h1_res->SetBinContent(nbinsHisto, h1_res->GetBinContent(nbinsHisto) + h1_res->GetBinContent(nbinsHisto + 1));
812  h1_res->SetBinContent(0, 0);
813  h1_res->SetBinContent(nbinsHisto + 1, 0);
814  h1_res->GetQuantiles(2, quant, probs);
815 
816  return (-quant[0] + quant[1]) / 2;
817 }
Belle2::SVDClusterEvaluationModule::ms_effU
float ms_effU
efficiency U
Definition: SVDClusterEvaluationModule.h:154
Belle2::RelationVector::size
size_t size() const
Get number of relations.
Definition: RelationVector.h:98
Belle2::SVDClusterEvaluationModule::m_treeSummary
TTree * m_treeSummary
pointer at tree containing the summary parameters
Definition: SVDClusterEvaluationModule.h:71
Belle2::SVDClusterEvaluationModule::m_geoCache
VXD::GeoCache & m_geoCache
the geo cache instance
Definition: SVDClusterEvaluationModule.h:177
Belle2::SVDClusterEvaluationModule::bs_layer
TBranch * bs_layer
layer number
Definition: SVDClusterEvaluationModule.h:134
Belle2::SVDClusterEvaluationModule::m_ladder
int m_ladder
ladder number
Definition: SVDClusterEvaluationModule.h:106
Belle2::SVDIntercept
SVDIntercept stores the U,V coordinates and uncertainties of the intersection of a track with an SVD ...
Definition: SVDIntercept.h:32
Belle2::SVDClusterEvaluationModule::isRelatedToTrack
bool isRelatedToTrack(SVDIntercept *inter)
is the intercept related to a track
Definition: SVDClusterEvaluationModule.cc:614
Belle2::SVDClusterEvaluationModule::m_clsCoor
SVDHistograms< TH1F > * m_clsCoor
cluster coordinates plots
Definition: SVDClusterEvaluationModule.h:186
Belle2::SVDClusterEvaluationModule::bs_residU
TBranch * bs_residU
residual U
Definition: SVDClusterEvaluationModule.h:141
Belle2::SVDClusterEvaluationModule::bs_misV
TBranch * bs_misV
misalignment V
Definition: SVDClusterEvaluationModule.h:144
Belle2::SVDClusterEvaluationModule::ms_effV
float ms_effV
efficiency V
Definition: SVDClusterEvaluationModule.h:155
Belle2::SVDClusterEvaluationModule::m_sensor
int m_sensor
sensor number
Definition: SVDClusterEvaluationModule.h:108
Belle2::SVDClusterEvaluationModule::m_width_LargeS_U
float m_width_LargeS_U
width large sensor U
Definition: SVDClusterEvaluationModule.h:191
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::SVDClusterEvaluationModule::ms_layer
int ms_layer
layer number
Definition: SVDClusterEvaluationModule.h:152
Belle2::SVDClusterEvaluationModule::b_clVcharge
TBranch * b_clVcharge
cluster V charge
Definition: SVDClusterEvaluationModule.h:95
Belle2::SVDClusterEvaluationModule::m_clUtime
float m_clUtime
cluster U time
Definition: SVDClusterEvaluationModule.h:127
Belle2::SVDClusterEvaluationModule::b_clVsize
TBranch * b_clVsize
cluster V size
Definition: SVDClusterEvaluationModule.h:99
Belle2::SVDClusterEvaluationModule::m_layer
int m_layer
layer number
Definition: SVDClusterEvaluationModule.h:107
Belle2::SVDHistograms
template class for SVd histograms
Definition: SVDHistograms.h:36
Belle2::SVDClusterEvaluationModule::m_clUcharge
float m_clUcharge
cluster U charge
Definition: SVDClusterEvaluationModule.h:121
Belle2::Module::setDescription
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:216
Belle2::SVDClusterEvaluationModule::m_run
int m_run
run number
Definition: SVDClusterEvaluationModule.h:105
Belle2::SVDClusterEvaluationModule::ms_run
int ms_run
run number
Definition: SVDClusterEvaluationModule.h:150
Belle2::SVDClusterEvaluationModule::m_clsMinResid
SVDHistograms< TH1F > * m_clsMinResid
cluster minimum resid plots
Definition: SVDClusterEvaluationModule.h:188
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::SVDClusterEvaluationModule::m_residU
float m_residU
U residual.
Definition: SVDClusterEvaluationModule.h:117
Belle2::SVDClusterEvaluationModule::bs_effErrV
TBranch * bs_effErrV
efficiency error V
Definition: SVDClusterEvaluationModule.h:139
Belle2::SVDClusterEvaluationModule::m_svdIntercepts
StoreArray< SVDIntercept > m_svdIntercepts
intercepts
Definition: SVDClusterEvaluationModule.h:182
Belle2::SVDClusterEvaluationModule::b_clVsnr
TBranch * b_clVsnr
cluster V snr
Definition: SVDClusterEvaluationModule.h:97
Belle2::SVDClusterEvaluationModule::m_width_SmallS_U
float m_width_SmallS_U
width small sensor U
Definition: SVDClusterEvaluationModule.h:193
Belle2::SVDClusterEvaluationModule::bs_nIntercepts
TBranch * bs_nIntercepts
number of intercepts
Definition: SVDClusterEvaluationModule.h:140
Belle2::SVDClusterEvaluationModule::m_nBins_LargeS_U
int m_nBins_LargeS_U
number of bins for large sensor U
Definition: SVDClusterEvaluationModule.h:198
Belle2::VxdID::getLadderNumber
baseType getLadderNumber() const
Get the ladder id.
Definition: VxdID.h:108
Belle2::SVDClusterEvaluationModule::bs_ladder
TBranch * bs_ladder
ladder number
Definition: SVDClusterEvaluationModule.h:133
Belle2::SVDClusterEvaluationModule::ms_ladder
int ms_ladder
ladder number
Definition: SVDClusterEvaluationModule.h:151
Belle2::SVDClusterEvaluationModule::m_nSigma
float m_nSigma
number of sigmas for efficiency computation
Definition: SVDClusterEvaluationModule.h:173
Belle2::SVDClusterEvaluationModule::m_rootFileName
std::string m_rootFileName
root file name
Definition: SVDClusterEvaluationModule.h:63
Belle2::SVDClusterEvaluationModule::m_interErrU
float m_interErrU
intercept U position error
Definition: SVDClusterEvaluationModule.h:111
Belle2::VXD::SensorInfoBase
Base class to provide Sensor Information for PXD and SVD.
Definition: SensorInfoBase.h:40
Belle2::SVDClusterEvaluationModule::ms_sensor
int ms_sensor
sensor number
Definition: SVDClusterEvaluationModule.h:153
Belle2::SVDClusterEvaluationModule::create_SVDHistograms_clsCoor
void create_SVDHistograms_clsCoor()
create cluster coordinates plots
Definition: SVDClusterEvaluationModule.cc:671
Belle2::SVDClusterEvaluationModule::m_tree
TTree * m_tree
pointer at tree containing the parameters
Definition: SVDClusterEvaluationModule.h:70
Belle2::VXD::GeoCache::getLayers
const std::set< Belle2::VxdID > getLayers(SensorInfoBase::SensorType sensortype=SensorInfoBase::VXD)
Return a set of all known Layers.
Definition: GeoCache.cc:177
Belle2::SVDClusterEvaluationModule::bs_experiment
TBranch * bs_experiment
experiment number
Definition: SVDClusterEvaluationModule.h:131
Belle2::SVDClusterEvaluationModule::b_clUtime
TBranch * b_clUtime
cluster U time
Definition: SVDClusterEvaluationModule.h:100
Belle2::SVDClusterEvaluationModule::m_nBins_SmallS_V
int m_nBins_SmallS_V
number of bins for small sensor V
Definition: SVDClusterEvaluationModule.h:201
Belle2::SVDClusterEvaluationModule::b_clUsnr
TBranch * b_clUsnr
cluster U snr
Definition: SVDClusterEvaluationModule.h:96
Belle2::SVDClusterEvaluationModule::terminate
virtual void terminate() override
This method is called at the end of the event processing.
Definition: SVDClusterEvaluationModule.cc:296
Belle2::SVDClusterEvaluationModule::m_tracks
StoreArray< Track > m_tracks
tracks
Definition: SVDClusterEvaluationModule.h:181
Belle2::SVDClusterEvaluationModule::m_clUpos
float m_clUpos
cluster U position
Definition: SVDClusterEvaluationModule.h:119
Belle2::SVDClusterEvaluationModule::endRun
virtual void endRun() override
This method is called if the current run ends.
Definition: SVDClusterEvaluationModule.cc:301
Belle2::SVDClusterEvaluationModule::ms_statU
float ms_statU
intercept stat error U
Definition: SVDClusterEvaluationModule.h:163
Belle2::SVDClusterEvaluationModule::b_interUprime
TBranch * b_interUprime
intercept U prime
Definition: SVDClusterEvaluationModule.h:86
Belle2::SVDClusterEvaluationModule::create_SVDHistograms_interCoor
void create_SVDHistograms_interCoor()
create intercept coordinates plots
Definition: SVDClusterEvaluationModule.cc:631
Belle2::VXD::GeoCache::getSensors
const std::set< Belle2::VxdID > & getSensors(Belle2::VxdID ladder) const
Return a set of all sensor IDs belonging to a given ladder.
Definition: GeoCache.cc:205
Belle2::SVDClusterEvaluationModule::m_abs_SmallS_V
float m_abs_SmallS_V
half width including safety margin, small sensor V
Definition: SVDClusterEvaluationModule.h:206
Belle2::SVDClusterEvaluationModule::bs_residV
TBranch * bs_residV
residual V
Definition: SVDClusterEvaluationModule.h:142
Belle2::SVDClusterEvaluationModule::b_interU
TBranch * b_interU
intercept U position
Definition: SVDClusterEvaluationModule.h:82
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::SVDClusterEvaluationModule::b_interVprime
TBranch * b_interVprime
intercept V prime
Definition: SVDClusterEvaluationModule.h:87
Belle2::SVDClusterEvaluationModule::m_clsResid
SVDHistograms< TH1F > * m_clsResid
cluster resid plots
Definition: SVDClusterEvaluationModule.h:187
Belle2::SVDClusterEvaluationModule::m_residV
float m_residV
V residual.
Definition: SVDClusterEvaluationModule.h:118
Belle2::SVDClusterEvaluationModule::m_uFiducial
double m_uFiducial
fiducial length u
Definition: SVDClusterEvaluationModule.h:171
Belle2::SVDClusterEvaluationModule::bs_effErrU
TBranch * bs_effErrU
efficiency error U
Definition: SVDClusterEvaluationModule.h:138
Belle2::SVDClusterEvaluationModule::m_clVtime
float m_clVtime
cluster V time
Definition: SVDClusterEvaluationModule.h:128
Belle2::SVDClusterEvaluationModule::m_ClusterName
std::string m_ClusterName
SVDCluster StoreArray name.
Definition: SVDClusterEvaluationModule.h:64
Belle2::SVDClusterEvaluationModule::m_interSigma
SVDHistograms< TH1F > * m_interSigma
intercept stat error plots
Definition: SVDClusterEvaluationModule.h:185
Belle2::SVDClusterEvaluationModule::m_safety_margin
float m_safety_margin
safety margin
Definition: SVDClusterEvaluationModule.h:196
Belle2::SVDClusterEvaluationModule::b_residV
TBranch * b_residV
V residual.
Definition: SVDClusterEvaluationModule.h:91
Belle2::VxdID::baseType
unsigned short baseType
The base integer type for VxdID.
Definition: VxdID.h:46
Belle2::SVDClusterEvaluationModule::m_groupNstrips
int m_groupNstrips
number of strip in the group in 2D resid vs position
Definition: SVDClusterEvaluationModule.h:175
Belle2::SVDClusterEvaluationModule::ms_effErrV
float ms_effErrV
efficiency error V
Definition: SVDClusterEvaluationModule.h:157
Belle2::RelationVector
Class for type safe access to objects that are referred to in relations.
Definition: DataStore.h:38
Belle2::SVDClusterEvaluationModule::ms_misU
float ms_misU
misalignment U
Definition: SVDClusterEvaluationModule.h:161
Belle2::SVDClusterEvaluationModule::m_UbinWidth
double m_UbinWidth
histogram u-bin width in microns
Definition: SVDClusterEvaluationModule.h:73
Belle2::SVDB4CommissioningPlotsModule::m_TrackName
std::string m_TrackName
Track StoreArray name.
Definition: SVDB4CommissioningPlotsModule.h:66
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::SVDClusterEvaluationModule::m_svdClusters
StoreArray< SVDCluster > m_svdClusters
clusters
Definition: SVDClusterEvaluationModule.h:180
Belle2::SVDClusterEvaluationModule::b_layer
TBranch * b_layer
layer number
Definition: SVDClusterEvaluationModule.h:80
Belle2::SVDClusterEvaluationModule::b_interErrVprime
TBranch * b_interErrVprime
intercept V prime error
Definition: SVDClusterEvaluationModule.h:89
Belle2::SVDClusterEvaluationModule::m_clsResid2D
SVDHistograms< TH2F > * m_clsResid2D
2D resid plots
Definition: SVDClusterEvaluationModule.h:189
Belle2::StoreObjPtr
Type-safe access to single objects in the data store.
Definition: ParticleList.h:33
Belle2::SVDClusterEvaluationModule::m_clVpos
float m_clVpos
cluster V position
Definition: SVDClusterEvaluationModule.h:120
Belle2::SVDClusterEvaluationModule::m_experiment
int m_experiment
experiment number
Definition: SVDClusterEvaluationModule.h:104
Belle2::SVDClusterEvaluationModule::m_rootFilePtr
TFile * m_rootFilePtr
pointer at root file used for storing histograms
Definition: SVDClusterEvaluationModule.h:69
Belle2::SVDClusterEvaluationModule::m_clVcharge
float m_clVcharge
cluster V charge
Definition: SVDClusterEvaluationModule.h:122
Belle2::SVDClusterEvaluationModule::m_abs_SmallS_U
float m_abs_SmallS_U
half width including safety margin, small sensor U
Definition: SVDClusterEvaluationModule.h:205
Belle2::SVDB4CommissioningPlotsModule::m_rootFileName
std::string m_rootFileName
root file name
Definition: SVDB4CommissioningPlotsModule.h:69
Belle2::SVDClusterEvaluationModule::m_VbinWidth
double m_VbinWidth
histogram v-bin width in microns
Definition: SVDClusterEvaluationModule.h:74
Belle2::SVDClusterEvaluationModule::m_clVsnr
float m_clVsnr
cluster V snr
Definition: SVDClusterEvaluationModule.h:124
Belle2::SVDClusterEvaluationModule::getOneSigma
double getOneSigma(TH1F *h)
returns one sigma using quantiles
Definition: SVDClusterEvaluationModule.cc:803
Belle2::SVDClusterEvaluationModule::create_SVDHistograms_clsResid
void create_SVDHistograms_clsResid()
create slucter resid plots
Definition: SVDClusterEvaluationModule.cc:700
Belle2::SVDClusterEvaluationModule::b_ladder
TBranch * b_ladder
ladder number
Definition: SVDClusterEvaluationModule.h:79
Belle2::SVDClusterEvaluationModule::m_width_LargeS_V
float m_width_LargeS_V
width large sensor V
Definition: SVDClusterEvaluationModule.h:192
Belle2::SVDClusterEvaluationModule::b_experiment
TBranch * b_experiment
experiment number
Definition: SVDClusterEvaluationModule.h:77
Belle2::SVDClusterEvaluationModule::m_interErrVprime
float m_interErrVprime
intercept V prime error
Definition: SVDClusterEvaluationModule.h:116
Belle2::SVDClusterEvaluationModule::bs_run
TBranch * bs_run
run number
Definition: SVDClusterEvaluationModule.h:132
Belle2::SVDClusterEvaluationModule::ms_effErrU
float ms_effErrU
efficiency error U
Definition: SVDClusterEvaluationModule.h:156
Belle2::SVDClusterEvaluationModule::m_width_SmallS_V
float m_width_SmallS_V
width small sensor V
Definition: SVDClusterEvaluationModule.h:194
Belle2::SVDClusterEvaluationModule::bs_effU
TBranch * bs_effU
efficiency U
Definition: SVDClusterEvaluationModule.h:136
Belle2::SVDClusterEvaluationModule::b_clVpos
TBranch * b_clVpos
cluster V position
Definition: SVDClusterEvaluationModule.h:93
Belle2::VXD::SensorInfoBase::SVD
@ SVD
SVD Sensor.
Definition: SensorInfoBase.h:45
Belle2::SVDClusterEvaluationModule::m_interUprime
float m_interUprime
intercept U prime
Definition: SVDClusterEvaluationModule.h:113
Belle2::VxdID::getSensorNumber
baseType getSensorNumber() const
Get the sensor id.
Definition: VxdID.h:110
Belle2::SVDClusterEvaluationModule::m_clUsnr
float m_clUsnr
cluster U snr
Definition: SVDClusterEvaluationModule.h:123
Belle2::SVDClusterEvaluationModule::m_abs_LargeS_V
float m_abs_LargeS_V
half width including safety margin, large sensor V
Definition: SVDClusterEvaluationModule.h:204
Belle2::SVDClusterEvaluationModule::b_sensor
TBranch * b_sensor
sensor number
Definition: SVDClusterEvaluationModule.h:81
Belle2::SVDHistograms::fill
void fill(const VxdID &vxdID, int view, Types ... args)
fill the histogram for
Definition: SVDHistograms.h:89
Belle2::SVDClusterEvaluationModule::m_nBins_LargeS_V
int m_nBins_LargeS_V
number of bins for large sensor V
Definition: SVDClusterEvaluationModule.h:199
Belle2::SVDClusterEvaluationModule::m_clUsize
int m_clUsize
cluster U size
Definition: SVDClusterEvaluationModule.h:125
Belle2::SVDClusterEvaluationModule::m_interV
float m_interV
intercept V position
Definition: SVDClusterEvaluationModule.h:110
Belle2::SVDClusterEvaluationModule::create_SVDHistograms_interSigma
void create_SVDHistograms_interSigma()
create intercept error plots
Definition: SVDClusterEvaluationModule.cc:653
Belle2::SVDClusterEvaluationModule::b_interErrUprime
TBranch * b_interErrUprime
intercept U prime error
Definition: SVDClusterEvaluationModule.h:88
Belle2::SVDClusterEvaluationModule::b_interV
TBranch * b_interV
intercept V position
Definition: SVDClusterEvaluationModule.h:83
Belle2::SVDClusterEvaluationModule::m_interSigmaMax
double m_interSigmaMax
max of the histo of the intercept stat error
Definition: SVDClusterEvaluationModule.h:170
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::SVDClusterEvaluationModule::b_interErrV
TBranch * b_interErrV
intercept V position error
Definition: SVDClusterEvaluationModule.h:85
Belle2::SVDClusterEvaluationModule::m_interCoor
SVDHistograms< TH2F > * m_interCoor
intercept coordinates plots
Definition: SVDClusterEvaluationModule.h:184
Belle2::SVDClusterEvaluationModule::ms_experiment
int ms_experiment
experiment number
Definition: SVDClusterEvaluationModule.h:149
Belle2::SVDClusterEvaluationModule::event
virtual void event() override
This method is the core of the module.
Definition: SVDClusterEvaluationModule.cc:156
Belle2::SVDClusterEvaluationModule::b_clUpos
TBranch * b_clUpos
cluster U position
Definition: SVDClusterEvaluationModule.h:92
Belle2::SVDClusterEvaluationModule::m_halfWidth
float m_halfWidth
window half width for efficiency computation
Definition: SVDClusterEvaluationModule.h:174
Belle2::SVDClusterEvaluationModule::b_residU
TBranch * b_residU
U residual.
Definition: SVDClusterEvaluationModule.h:90
Belle2::SVDClusterEvaluationModule::bs_sensor
TBranch * bs_sensor
sensor number
Definition: SVDClusterEvaluationModule.h:135
Belle2::SVDClusterEvaluationModule::bs_statU
TBranch * bs_statU
intercept stat error U
Definition: SVDClusterEvaluationModule.h:145
Belle2::SVDHistograms::getHistogram
H * getHistogram(const VxdID &vxdID, int view)
get a reference to the histogram for
Definition: SVDHistograms.h:68
Belle2::SVDClusterEvaluationModule::m_cmTomicron
double m_cmTomicron
factor cm -> micron
Definition: SVDClusterEvaluationModule.h:168
Belle2::SVDClusterEvaluationModule::m_InterceptName
std::string m_InterceptName
SVDIntercept StoreArray name.
Definition: SVDClusterEvaluationModule.h:65
Belle2::SVDClusterEvaluationModule::m_clVsize
int m_clVsize
cluster V size
Definition: SVDClusterEvaluationModule.h:126
Belle2::SVDClusterEvaluationModule::m_vFiducial
double m_vFiducial
fiducial length v
Definition: SVDClusterEvaluationModule.h:172
Belle2::SVDClusterEvaluationModule::ms_residU
float ms_residU
residual U
Definition: SVDClusterEvaluationModule.h:159
Belle2::VXD::GeoCache::getSensorInfo
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a referecne to the SensorInfo of a given SensorID.
Definition: GeoCache.cc:68
Belle2::SVDClusterEvaluationModule::beginRun
virtual void beginRun() override
Called when entering a new run.
Definition: SVDClusterEvaluationModule.cc:122
Belle2::SVDClusterEvaluationModule::ms_residV
float ms_residV
residual V
Definition: SVDClusterEvaluationModule.h:160
Belle2::SVDClusterEvaluationModule::bs_misU
TBranch * bs_misU
misalignment U
Definition: SVDClusterEvaluationModule.h:143
Belle2::Track
Class that bundles various TrackFitResults.
Definition: Track.h:35
Belle2::SVDClusterEvaluationModule::b_interErrU
TBranch * b_interErrU
intercept U position error
Definition: SVDClusterEvaluationModule.h:84
Belle2::SVDClusterEvaluationModule::bs_effV
TBranch * bs_effV
efficiency V
Definition: SVDClusterEvaluationModule.h:137
Belle2::SVDClusterEvaluationModule::bs_statV
TBranch * bs_statV
intercept stat error V
Definition: SVDClusterEvaluationModule.h:146
Belle2::SVDClusterEvaluationModule::b_clVtime
TBranch * b_clVtime
cluster V time
Definition: SVDClusterEvaluationModule.h:101
Belle2::VxdID::getLayerNumber
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:106
Belle2::SVDClusterEvaluationModule::b_clUsize
TBranch * b_clUsize
cluster U size
Definition: SVDClusterEvaluationModule.h:98
Belle2::SVDClusterEvaluationModule::ms_nIntercepts
int ms_nIntercepts
number of intercepts
Definition: SVDClusterEvaluationModule.h:158
Belle2::SVDClusterEvaluationModule::ms_statV
float ms_statV
intercept stat error V
Definition: SVDClusterEvaluationModule.h:164
Belle2::SVDClusterEvaluationModule::m_nBins_SmallS_U
int m_nBins_SmallS_U
number of bins for small sensor U
Definition: SVDClusterEvaluationModule.h:200
Belle2::SVDClusterEvaluationModule::m_interU
float m_interU
intercept U position
Definition: SVDClusterEvaluationModule.h:109
Belle2::SVDClusterEvaluationModule::m_interErrV
float m_interErrV
intercept V position error
Definition: SVDClusterEvaluationModule.h:112
Belle2::VXD::GeoCache::getLadders
const std::set< Belle2::VxdID > & getLadders(Belle2::VxdID layer) const
Return a set of all ladder IDs belonging to a given layer.
Definition: GeoCache.cc:194
Belle2::SVDClusterEvaluationModule::m_interVprime
float m_interVprime
intercept V prime
Definition: SVDClusterEvaluationModule.h:114
Belle2::SVDClusterEvaluationModule::initialize
virtual void initialize() override
Initialize the Module.
Definition: SVDClusterEvaluationModule.cc:46
Belle2::StoreArray::getEntries
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:226
Belle2::SVDClusterEvaluationModule::m_theLayer
int m_theLayer
layer under study
Definition: SVDClusterEvaluationModule.h:169
Belle2::VXD::SensorInfoBase::inside
bool inside(double u, double v, double uTolerance=DBL_EPSILON, double vTolerance=DBL_EPSILON) const
Check wether a given point is inside the active area.
Definition: SensorInfoBase.h:238
Belle2::SVDClusterEvaluationModule::ms_misV
float ms_misV
misalignment V
Definition: SVDClusterEvaluationModule.h:162
Belle2::SVDClusterEvaluationModule::b_clUcharge
TBranch * b_clUcharge
cluster U charge
Definition: SVDClusterEvaluationModule.h:94
Belle2::SVDClusterEvaluationModule::m_eventMetaData
StoreObjPtr< EventMetaData > m_eventMetaData
event meta data
Definition: SVDClusterEvaluationModule.h:179
Belle2::SVDClusterEvaluationModule::m_interErrUprime
float m_interErrUprime
intercept U prime error
Definition: SVDClusterEvaluationModule.h:115
Belle2::SVDB4CommissioningPlotsModule::m_ClusterName
std::string m_ClusterName
SVDCluster StoreArray name.
Definition: SVDB4CommissioningPlotsModule.h:64
Belle2::SVDClusterEvaluationModule::b_run
TBranch * b_run
run number
Definition: SVDClusterEvaluationModule.h:78
Belle2::SVDClusterEvaluationModule::m_abs_LargeS_U
float m_abs_LargeS_U
half width including safety margin, large sensor U
Definition: SVDClusterEvaluationModule.h:203
Belle2::SVDClusterEvaluationModule::m_TrackName
std::string m_TrackName
Track StoreArray name.
Definition: SVDClusterEvaluationModule.h:66