8 #include <svd/modules/svdPerformance/SVDClusterEvaluationModule.h>
9 #include <tracking/dataobjects/RecoTrack.h>
16 SVDClusterEvaluationModule::SVDClusterEvaluationModule():
Module()
17 , m_interCoor(nullptr)
18 , m_interSigma(nullptr)
21 , m_clsMinResid(nullptr)
22 , m_clsResid2D(nullptr)
25 setDescription(
"This module check performances of SVD reconstruction of VXD TB data");
27 addParam(
"outputFileName", m_rootFileName,
"Name of output root file.", std::string(
"SVDClusterEvaluation_output.root"));
29 addParam(
"LayerUnderStudy", m_theLayer,
"Number of the layer under study. If 0, then all layers are plotted",
int(0));
30 addParam(
"InterceptSigmaMax", m_interSigmaMax,
31 "Max of the histogram that contains the intercept statistical error. Default is OK for Phase2.",
double(0.35));
32 addParam(
"uFiducialLength", m_uFiducial,
33 "length to be subtracted from the U-edge to consider intercepts inside the sensor. Positive values reduce the area; negative values increase the area",
35 addParam(
"vFiducialLength", m_vFiducial,
36 "length to be subtracted from the V-edge to consider intercepts inside the sensor. Positive values reduce the area; negative values increase the area",
38 addParam(
"efficiency_nSigma", m_nSigma,
" number of residual sigmas for the determination of the efficiency",
float(5));
39 addParam(
"efficiency_halfWidth", m_halfWidth,
" window half width for the determination of the efficiency",
float(0.05));
40 addParam(
"ClustersName", m_ClusterName,
"Name of DUTs Cluster Store Array.", std::string(
""));
41 addParam(
"InterceptsName", m_InterceptName,
"Name of Intercept Store Array.", std::string(
""));
42 addParam(
"TracksName", m_TrackName,
"Name of Track Store Array.", std::string(
""));
43 addParam(
"UbinWidth", m_UbinWidth,
"Histograms U-bin width (in um)",
double(10));
44 addParam(
"VbinWidth", m_VbinWidth,
"Histograms V-bin width (in um)",
double(10));
45 addParam(
"groupNstrips", m_groupNstrips,
"How many strips group together in the 2D residual VS position plot",
int(128));
48 SVDClusterEvaluationModule::~SVDClusterEvaluationModule()
80 m_tree =
new TTree(
"tree",
"RECREATE");
144 B2DEBUG(10,
"Empty histograms have beein created");
168 m_run = meta->getRun();
181 B2DEBUG(10,
"this intercept is related to a good track");
205 B2DEBUG(10,
"intercept is inside fiducial area");
211 double minresidU = 999;
212 bool minfoundU =
false;
213 double minresidV = 999;
214 bool minfoundV =
false;
234 if (clVxdID != theVxdID)
237 double interCoor = coorV;
245 double resid = interCoor - clPos;
251 if (fabs(resid) < fabs(minresidU)) {
257 if (fabs(resid) < fabs(minresidV)) {
320 const int Nsensors = 172;
323 float residU[Nsensors];
324 float residV[Nsensors];
325 float misU[Nsensors];
326 float misV[Nsensors];
329 float effU[Nsensors];
330 float effV[Nsensors];
331 float effUErr[Nsensors];
332 float effVErr[Nsensors];
333 TString sensorU[Nsensors];
334 TString sensorV[Nsensors];
336 for (
int i = 0; i < Nsensors; i++) {
353 TH1F* h_residU =
new TH1F(
"hResidU",
"U Residuals", 1, 0, 1);
354 h_residU->SetCanExtend(TH1::kAllAxes);
355 h_residU->SetStats(0);
356 h_residU->GetXaxis()->SetTitle(
"sensor");
357 h_residU->GetYaxis()->SetTitle(
"U residuals (#mum)");
358 TH1F* h_residV =
new TH1F(
"hResidV",
"V Residuals", 1, 0, 1);
359 h_residV->SetCanExtend(TH1::kAllAxes);
360 h_residV->SetStats(0);
361 h_residV->GetXaxis()->SetTitle(
"sensor");
362 h_residV->GetYaxis()->SetTitle(
"V residuals (#mum)");
364 TH1F* h_statU =
new TH1F(
"hStatU",
"U Intercept Statistical Error", 1, 0, 1);
365 h_statU->SetCanExtend(TH1::kAllAxes);
366 h_statU->SetStats(0);
367 h_statU->GetXaxis()->SetTitle(
"sensor");
368 h_statU->GetYaxis()->SetTitle(
"U extrap. error (#mum)");
369 TH1F* h_statV =
new TH1F(
"hStatV",
"V Intercept Statistical Error", 1, 0, 1);
370 h_statV->SetCanExtend(TH1::kAllAxes);
371 h_statV->SetStats(0);
372 h_statV->GetXaxis()->SetTitle(
"sensor");
373 h_statV->GetYaxis()->SetTitle(
"V extrap. error (#mum)");
375 TH1F* h_misU =
new TH1F(
"hMisU",
"U Residual Misalignment", 1, 0, 1);
376 h_misU->SetCanExtend(TH1::kAllAxes);
378 h_misU->GetXaxis()->SetTitle(
"sensor");
379 h_misU->GetYaxis()->SetTitle(
"U misalignment (#mum)");
380 TH1F* h_misV =
new TH1F(
"hMisV",
"V Residual Misalignment", 1, 0, 1);
381 h_misV->SetCanExtend(TH1::kAllAxes);
383 h_misV->GetXaxis()->SetTitle(
"sensor");
384 h_misV->GetYaxis()->SetTitle(
"V misalignment (#mum)");
387 TH1F* h_effU =
new TH1F(
"hEffU", Form(
"U-Side Summary, %.1f#sigma or #pm%.1f mm",
m_nSigma,
m_halfWidth * 10), 1, 0, 1);
388 h_effU->SetCanExtend(TH1::kAllAxes);
390 h_effU->GetXaxis()->SetTitle(
"sensor");
391 h_effU->GetYaxis()->SetTitle(
"U efficiency");
392 TH1F* h_effV =
new TH1F(
"hEffV", Form(
"V-Side Summary, %.1f#sigma or #pm%.1f mm",
m_nSigma,
m_halfWidth * 10), 1, 0, 1);
393 h_effV->SetCanExtend(TH1::kAllAxes);
395 h_effV->GetXaxis()->SetTitle(
"sensor");
396 h_effV->GetYaxis()->SetTitle(
"V efficiency");
398 TDirectory* oldDir = gDirectory;
403 int currentLayer = layer.getLayerNumber();
409 TString interName = Form(
"interceptsL%d", layer.getLayerNumber());
410 TString clsName = Form(
"clustersL%d", layer.getLayerNumber());
411 TString residName = Form(
"residualsL%d", layer.getLayerNumber());
412 TDirectory* dir_inter = oldDir->mkdir(interName.Data());
413 TDirectory* dir_cls = oldDir->mkdir(clsName.Data());
414 TDirectory* dir_resid = oldDir->mkdir(residName.Data());
437 sensorU[s] = Form(
"%d.%d.%dU", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
438 B2DEBUG(10,
"U-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber());
440 if (res->GetEntries() > 0) {
442 res->GetQuantiles(1, &median, &q);
447 float halfWindow =
m_nSigma * residU[s];
451 int binMin = res->FindBin(misU[s] - halfWindow);
452 int binMax = res->FindBin(misU[s] + halfWindow);
453 B2DEBUG(10,
"from " << misU[s] - halfWindow <<
" -> binMin = " << binMin);
454 B2DEBUG(10,
"to " << misU[s] + halfWindow <<
" -> binMax = " << binMax);
457 for (
int bin = binMin; bin < binMax + 1; bin++)
458 num = num + res->GetBinContent(bin);
461 for (
int bin = 1; bin < binMin; bin++)
462 bkg = bkg + res->GetBinContent(bin);
463 for (
int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
464 bkg = bkg + res->GetBinContent(bin);
466 num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
471 h_effU->Fill(sensorU[s], effU[s]);
473 B2WARNING(
"something is wrong! efficiency greater than 1: " << num <<
"/" <<
ms_nIntercepts);
476 B2DEBUG(10,
"num = " << num);
478 B2RESULT(
"U-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber() <<
" = " <<
479 effU[s] <<
" ± " << effUErr[s]);
503 sensorV[s] = Form(
"%d.%d.%dV", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
504 B2DEBUG(10,
"V-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber());
506 if (res->GetEntries() > 0) {
508 res->GetQuantiles(1, &median, &q);
514 float halfWindow =
m_nSigma * residV[s];
518 int binMin = res->FindBin(misV[s] - halfWindow);
519 int binMax = res->FindBin(misV[s] + halfWindow);
520 B2DEBUG(10,
"from " << misV[s] - halfWindow <<
" -> binMin = " << binMin);
521 B2DEBUG(10,
"to " << misV[s] + halfWindow <<
" -> binMax = " << binMax);
525 for (
int bin = binMin; bin < binMax + 1; bin++)
526 num = num + res->GetBinContent(bin);
529 for (
int bin = 1; bin < binMin; bin++)
530 bkg = bkg + res->GetBinContent(bin);
531 for (
int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
532 bkg = bkg + res->GetBinContent(bin);
534 num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
539 h_effV->Fill(sensorV[s], effV[s]);
541 B2WARNING(
"something is wrong! efficiency greater than 1: " << num <<
"/" <<
ms_nIntercepts);
544 B2DEBUG(10,
"num = " << num);
546 B2RESULT(
"V-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber() <<
" = " <<
547 effV[s] <<
" ± " << effVErr[s]);
572 B2DEBUG(50,
"writing out resid histograms for " << sensor.getLayerNumber() <<
"." << sensor.getLadderNumber() <<
"." <<
573 sensor.getSensorNumber() <<
"." << view);
590 for (
int bin = 0; bin < h_residU->GetNbinsX(); bin++)
591 h_residU->SetBinError(bin, 0.);
593 for (
int bin = 0; bin < h_residV->GetNbinsX(); bin++)
594 h_residV->SetBinError(bin, 0.);
596 for (
int bin = 0; bin < h_statU->GetNbinsX(); bin++)
597 h_statU->SetBinError(bin, 0.);
599 for (
int bin = 0; bin < h_statV->GetNbinsX(); bin++)
600 h_statV->SetBinError(bin, 0.);
602 for (
int bin = 0; bin < h_misU->GetNbinsX(); bin++)
603 h_misU->SetBinError(bin, 0.);
605 for (
int bin = 0; bin < h_misV->GetNbinsX(); bin++)
606 h_misV->SetBinError(bin, 0.);
608 for (
int bin = 0; bin < h_effU->GetNbinsX(); bin++)
609 h_effU->SetBinError(bin, 0.);
611 for (
int bin = 0; bin < h_effV->GetNbinsX(); bin++)
612 h_effV->SetBinError(bin, 0.);
625 if (theRC.
size() == 0)
630 if (theTrack.
size() == 0)
641 TH2F h_coorUV_LargeSensor(
"interCoor_Large_L@layerL@ladderS@sensor",
642 "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
645 h_coorUV_LargeSensor.GetXaxis()->SetTitle(
"Intercept U coordinate (cm)");
646 h_coorUV_LargeSensor.GetYaxis()->SetTitle(
"Intercept V coordinate (cm)");
648 TH2F h_coorUV_SmallSensor(
"interCoor_Small_L@layerL@ladderS@sensor",
649 "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
652 h_coorUV_SmallSensor.GetXaxis()->SetTitle(
"Intercept U coordinate (cm)");
653 h_coorUV_SmallSensor.GetYaxis()->SetTitle(
"Intercept V coordinate (cm)");
663 TH1F h_sigmaU(
"interSigmaU_L@layerL@ladderS@sensor@view",
664 "U Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
666 h_sigmaU.GetXaxis()->SetTitle(
"Intercept U Error (cm)");
668 TH1F h_sigmaV(
"interSigmaV_L@layerL@ladderS@sensor@view",
669 "V Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
671 h_sigmaV.GetXaxis()->SetTitle(
"Intercept V Error (cm)");
682 TH1F h_clcoorU_LargeSensor(
"clsCoorU_LS_L@layerL@ladderS@sensor@view",
683 "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
685 h_clcoorU_LargeSensor.GetXaxis()->SetTitle(
"Cluster U coordinate (cm)");
687 TH1F h_clcoorV_LargeSensor(
"clsCoorV_LS_L@layerL@ladderS@sensor@view",
688 "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
690 h_clcoorV_LargeSensor.GetXaxis()->SetTitle(
"Cluster V coordinate (cm)");
692 TH1F h_clcoorU_SmallSensor(
"clsCoorU_SS_L@layerL@ladderS@sensor@view",
693 "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
695 h_clcoorU_SmallSensor.GetXaxis()->SetTitle(
"Cluster U coordinate (cm)");
697 TH1F h_clcoorV_SmallSensor(
"clsCoorV_SS_L@layerL@ladderS@sensor@view",
698 "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
700 h_clcoorV_SmallSensor.GetXaxis()->SetTitle(
"Cluster V coordinate (cm)");
715 TH1F h_clresidU_LargeSensor(
"clsResidU_LS_L@layerL@ladderS@sensor@view",
716 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
718 NbinsU, -range, range);
719 h_clresidU_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
721 TH1F h_clresidV_LargeSensor(
"clsResidV_LS_L@layerL@ladderS@sensor@view",
722 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
724 NbinsV, -range, range);
725 h_clresidV_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
727 TH1F h_clresidU_SmallSensor(
"clsResidU_SS_L@layerL@ladderS@sensor@view",
728 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
730 NbinsU, -range, range);
731 h_clresidU_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
733 TH1F h_clresidV_SmallSensor(
"clsResidV_SS_L@layerL@ladderS@sensor@view",
734 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
736 NbinsU, -range, range);
737 h_clresidV_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
742 h_clresidV_LargeSensor);
748 TH2F h2_clresidU_LargeSensor(
"clsResid2DU_LS_L@layerL@ladderS@sensor@view",
749 "U Cluster Residuals VS U Cluster Position(layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
751 h2_clresidU_LargeSensor.GetYaxis()->SetTitle(
"residual (cm)");
752 h2_clresidU_LargeSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
754 TH2F h2_clresidV_LargeSensor(
"clsResid2DV_LS_L@layerL@ladderS@sensor@view",
755 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
757 h2_clresidV_LargeSensor.GetYaxis()->SetTitle(
"residual (cm)");
758 h2_clresidV_LargeSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
760 TH2F h2_clresidU_SmallSensor(
"clsResid2DU_SS_L@layerL@ladderS@sensor@view",
761 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
763 h2_clresidU_SmallSensor.GetYaxis()->SetTitle(
"residual (cm)");
764 h2_clresidU_SmallSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
766 TH2F h2_clresidV_SmallSensor(
"clsResid2DV_SS_L@layerL@ladderS@sensor@view",
767 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
769 h2_clresidV_SmallSensor.GetYaxis()->SetTitle(
"residual (cm)");
770 h2_clresidV_SmallSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
773 h2_clresidV_LargeSensor);
777 TH1F h_clminresidU_LargeSensor(
"clsMinResidU_LS_L@layerL@ladderS@sensor@view",
778 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
780 NbinsU, -range, range);
781 h_clminresidU_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
783 TH1F h_clminresidV_LargeSensor(
"clsMinResidV_LS_L@layerL@ladderS@sensor@view",
784 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
786 NbinsV, -range, range);
787 h_clminresidV_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
789 TH1F h_clminresidU_SmallSensor(
"clsMinResidU_SS_L@layerL@ladderS@sensor@view",
790 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
792 NbinsU, -range, range);
793 h_clminresidU_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
795 TH1F h_clminresidV_SmallSensor(
"clsMinResidV_SS_L@layerL@ladderS@sensor@view",
796 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
798 NbinsU, -range, range);
799 h_clminresidV_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
804 h_clminresidV_LargeSensor);
813 TH1F* h1_res = (TH1F*)h1->Clone(
"h1_res");
814 double probs[2] = {0.16, 1 - 0.16};
815 double quant[2] = {0, 0};
816 int nbinsHisto = h1_res->GetNbinsX();
817 h1_res->SetBinContent(1, h1_res->GetBinContent(0) + h1_res->GetBinContent(1));
818 h1_res->SetBinContent(nbinsHisto, h1_res->GetBinContent(nbinsHisto) + h1_res->GetBinContent(nbinsHisto + 1));
819 h1_res->SetBinContent(0, 0);
820 h1_res->SetBinContent(nbinsHisto + 1, 0);
821 h1_res->GetQuantiles(2, quant, probs);
823 return (-quant[0] + quant[1]) / 2;
Class for type safe access to objects that are referred to in relations.
size_t size() const
Get number of relations.
int m_theLayer
layer under study
std::string m_rootFileName
root file name
TBranch * b_clVtime
cluster V time
int ms_nIntercepts
number of intercepts
float m_residV
V residual.
TBranch * b_interErrV
intercept V position error
TBranch * b_run
run number
int ms_experiment
experiment number
TBranch * bs_misV
misalignment V
TBranch * b_interVprime
intercept V prime
TTree * m_tree
pointer at tree containing the parameters
TBranch * b_clUtime
cluster U time
TBranch * bs_statV
intercept stat error V
int m_groupNstrips
number of strip in the group in 2D resid vs position
TBranch * b_layer
layer number
TBranch * b_clVsnr
cluster V snr
int m_ladder
ladder number
VXD::GeoCache & m_geoCache
the geo cache instance
int m_clVsize
cluster V size
float m_abs_LargeS_U
half width including safety margin, large sensor U
float m_interV
intercept V position
virtual void initialize() override
Initialize the Module.
SVDHistograms< TH1F > * m_clsResid
cluster resid plots
TBranch * b_interUprime
intercept U prime
float m_clVpos
cluster V position
double getOneSigma(TH1F *h)
returns one sigma using quantiles
float m_clUcharge
cluster U charge
double m_VbinWidth
histogram v-bin width in microns
void create_SVDHistograms_interCoor()
create intercept coordinates plots
TBranch * bs_effV
efficiency V
StoreArray< SVDCluster > m_svdClusters
clusters
float m_clVsnr
cluster V snr
TBranch * bs_run
run number
TBranch * bs_residV
residual V
virtual void event() override
This method is the core of the module.
TBranch * b_clVcharge
cluster V charge
bool isRelatedToTrack(SVDIntercept *inter)
is the intercept related to a track
int m_clUsize
cluster U size
TBranch * b_interV
intercept V position
float m_interUprime
intercept U prime
void create_SVDHistograms_interSigma()
create intercept error plots
float m_halfWidth
window half width for efficiency computation
void create_SVDHistograms_clsResid()
create slucter resid plots
TBranch * b_residU
U residual.
int ms_ladder
ladder number
TBranch * bs_layer
layer number
virtual void endRun() override
This method is called if the current run ends.
TBranch * b_interErrUprime
intercept U prime error
TBranch * b_interU
intercept U position
TBranch * b_interErrU
intercept U position error
float ms_misV
misalignment V
int ms_sensor
sensor number
float m_safety_margin
safety margin
int m_sensor
sensor number
float m_width_LargeS_V
width large sensor V
virtual void terminate() override
This method is called at the end of the event processing.
float m_interVprime
intercept V prime
TBranch * b_experiment
experiment number
float m_abs_SmallS_V
half width including safety margin, small sensor V
SVDHistograms< TH1F > * m_interSigma
intercept stat error plots
float m_clUsnr
cluster U snr
float m_interU
intercept U position
StoreObjPtr< EventMetaData > m_eventMetaData
event meta data
float ms_effErrV
efficiency error V
TBranch * b_sensor
sensor number
float ms_residU
residual U
TBranch * bs_sensor
sensor number
float m_nSigma
number of sigmas for efficiency computation
TBranch * bs_statU
intercept stat error U
SVDHistograms< TH2F > * m_clsResid2D
2D resid plots
std::string m_TrackName
Track StoreArray name.
TBranch * b_interErrVprime
intercept V prime error
float ms_effU
efficiency U
TBranch * bs_experiment
experiment number
SVDHistograms< TH1F > * m_clsMinResid
cluster minimum resid plots
TBranch * b_clUsize
cluster U size
float m_width_LargeS_U
width large sensor U
double m_vFiducial
fiducial length v
virtual void beginRun() override
Called when entering a new run.
TBranch * b_clVpos
cluster V position
StoreArray< Track > m_tracks
tracks
float m_residU
U residual.
double m_interSigmaMax
max of the histo of the intercept stat error
float ms_misU
misalignment U
TBranch * bs_effErrU
efficiency error U
float m_interErrUprime
intercept U prime error
SVDHistograms< TH1F > * m_clsCoor
cluster coordinates plots
int m_experiment
experiment number
float ms_statU
intercept stat error U
TBranch * b_residV
V residual.
double m_uFiducial
fiducial length u
TBranch * b_clVsize
cluster V size
TBranch * b_clUsnr
cluster U snr
TTree * m_treeSummary
pointer at tree containing the summary parameters
SVDHistograms< TH2F > * m_interCoor
intercept coordinates plots
float m_clUpos
cluster U position
float m_interErrVprime
intercept V prime error
float ms_residV
residual V
float m_clVcharge
cluster V charge
TBranch * b_clUpos
cluster U position
float ms_effErrU
efficiency error U
std::string m_ClusterName
SVDCluster StoreArray name.
int m_nBins_SmallS_U
number of bins for small sensor U
float m_interErrU
intercept U position error
float m_abs_LargeS_V
half width including safety margin, large sensor V
double m_UbinWidth
histogram u-bin width in microns
StoreArray< SVDIntercept > m_svdIntercepts
intercepts
TBranch * b_ladder
ladder number
int m_nBins_LargeS_U
number of bins for large sensor U
float m_interErrV
intercept V position error
TBranch * bs_misU
misalignment U
TBranch * b_clUcharge
cluster U charge
TBranch * bs_effU
efficiency U
float m_clVtime
cluster V time
TFile * m_rootFilePtr
pointer at root file used for storing histograms
float m_width_SmallS_V
width small sensor V
float m_clUtime
cluster U time
double m_cmTomicron
factor cm -> micron
int m_nBins_LargeS_V
number of bins for large sensor V
float ms_statV
intercept stat error V
int m_nBins_SmallS_V
number of bins for small sensor V
float m_width_SmallS_U
width small sensor U
float m_abs_SmallS_U
half width including safety margin, small sensor U
std::string m_InterceptName
SVDIntercept StoreArray name.
TBranch * bs_ladder
ladder number
float ms_effV
efficiency V
TBranch * bs_effErrV
efficiency error V
TBranch * bs_nIntercepts
number of intercepts
void create_SVDHistograms_clsCoor()
create cluster coordinates plots
TBranch * bs_residU
residual U
template class for SVd histograms
void fill(const VxdID &vxdID, int view, Types ... args)
fill the histogram for
H * getHistogram(const VxdID &vxdID, int view)
get a reference to the histogram for
SVDIntercept stores the U,V coordinates and uncertainties of the intersection of a track with an SVD ...
bool isRequired(const std::string &name="")
Ensure this array/object has been registered previously.
int getEntries() const
Get the number of objects in the array.
Type-safe access to single objects in the data store.
Class that bundles various TrackFitResults.
const std::set< Belle2::VxdID > getLayers(SensorInfoBase::SensorType sensortype=SensorInfoBase::VXD)
Return a set of all known Layers.
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a referecne to the SensorInfo of a given SensorID.
const std::set< Belle2::VxdID > & getSensors(Belle2::VxdID ladder) const
Return a set of all sensor IDs belonging to a given ladder.
const std::set< Belle2::VxdID > & getLadders(Belle2::VxdID layer) const
Return a set of all ladder IDs belonging to a given layer.
Base class to provide Sensor Information for PXD and SVD.
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.
Class to uniquely identify a any structure of the PXD and SVD.
baseType getSensorNumber() const
Get the sensor id.
unsigned short baseType
The base integer type for VxdID.
baseType getLadderNumber() const
Get the ladder id.
baseType getLayerNumber() const
Get the layer id.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.