8#include <svd/modules/svdPerformance/SVDClusterEvaluationModule.h>
9#include <tracking/dataobjects/RecoTrack.h>
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));
31 "Max of the histogram that contains the intercept statistical error. Default is OK for Phase2.",
double(0.35));
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",
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));
45 addParam(
"groupNstrips",
m_groupNstrips,
"How many strips group together in the 2D residual VS position plot",
int(128));
75 m_tree =
new TTree(
"tree",
"RECREATE");
139 B2DEBUG(10,
"Empty histograms have beein created");
163 m_run = meta->getRun();
176 B2DEBUG(10,
"this intercept is related to a good track");
200 B2DEBUG(10,
"intercept is inside fiducial area");
206 double minresidU = 999;
207 bool minfoundU =
false;
208 double minresidV = 999;
209 bool minfoundV =
false;
229 if (clVxdID != theVxdID)
232 double interCoor = coorV;
240 double resid = interCoor - clPos;
246 if (fabs(resid) < fabs(minresidU)) {
252 if (fabs(resid) < fabs(minresidV)) {
310 const int Nsensors = 172;
313 float residU[Nsensors];
314 float residV[Nsensors];
315 float misU[Nsensors];
316 float misV[Nsensors];
319 float effU[Nsensors];
320 float effV[Nsensors];
321 float effUErr[Nsensors];
322 float effVErr[Nsensors];
323 TString sensorU[Nsensors];
324 TString sensorV[Nsensors];
326 for (
int i = 0; i < Nsensors; i++) {
343 TH1F* h_residU =
new TH1F(
"hResidU",
"U Residuals", 1, 0, 1);
344 h_residU->SetCanExtend(TH1::kAllAxes);
345 h_residU->SetStats(0);
346 h_residU->GetXaxis()->SetTitle(
"sensor");
347 h_residU->GetYaxis()->SetTitle(
"U residuals (#mum)");
348 TH1F* h_residV =
new TH1F(
"hResidV",
"V Residuals", 1, 0, 1);
349 h_residV->SetCanExtend(TH1::kAllAxes);
350 h_residV->SetStats(0);
351 h_residV->GetXaxis()->SetTitle(
"sensor");
352 h_residV->GetYaxis()->SetTitle(
"V residuals (#mum)");
354 TH1F* h_statU =
new TH1F(
"hStatU",
"U Intercept Statistical Error", 1, 0, 1);
355 h_statU->SetCanExtend(TH1::kAllAxes);
356 h_statU->SetStats(0);
357 h_statU->GetXaxis()->SetTitle(
"sensor");
358 h_statU->GetYaxis()->SetTitle(
"U extrap. error (#mum)");
359 TH1F* h_statV =
new TH1F(
"hStatV",
"V Intercept Statistical Error", 1, 0, 1);
360 h_statV->SetCanExtend(TH1::kAllAxes);
361 h_statV->SetStats(0);
362 h_statV->GetXaxis()->SetTitle(
"sensor");
363 h_statV->GetYaxis()->SetTitle(
"V extrap. error (#mum)");
365 TH1F* h_misU =
new TH1F(
"hMisU",
"U Residual Misalignment", 1, 0, 1);
366 h_misU->SetCanExtend(TH1::kAllAxes);
368 h_misU->GetXaxis()->SetTitle(
"sensor");
369 h_misU->GetYaxis()->SetTitle(
"U misalignment (#mum)");
370 TH1F* h_misV =
new TH1F(
"hMisV",
"V Residual Misalignment", 1, 0, 1);
371 h_misV->SetCanExtend(TH1::kAllAxes);
373 h_misV->GetXaxis()->SetTitle(
"sensor");
374 h_misV->GetYaxis()->SetTitle(
"V misalignment (#mum)");
377 TH1F* h_effU =
new TH1F(
"hEffU", Form(
"U-Side Summary, %.1f#sigma or #pm%.1f mm",
m_nSigma,
m_halfWidth * 10), 1, 0, 1);
378 h_effU->SetCanExtend(TH1::kAllAxes);
380 h_effU->GetXaxis()->SetTitle(
"sensor");
381 h_effU->GetYaxis()->SetTitle(
"U efficiency");
382 TH1F* h_effV =
new TH1F(
"hEffV", Form(
"V-Side Summary, %.1f#sigma or #pm%.1f mm",
m_nSigma,
m_halfWidth * 10), 1, 0, 1);
383 h_effV->SetCanExtend(TH1::kAllAxes);
385 h_effV->GetXaxis()->SetTitle(
"sensor");
386 h_effV->GetYaxis()->SetTitle(
"V efficiency");
388 TDirectory* oldDir = gDirectory;
393 int currentLayer = layer.getLayerNumber();
399 TString interName = Form(
"interceptsL%d", layer.getLayerNumber());
400 TString clsName = Form(
"clustersL%d", layer.getLayerNumber());
401 TString residName = Form(
"residualsL%d", layer.getLayerNumber());
402 TDirectory* dir_inter = oldDir->mkdir(interName.Data());
403 TDirectory* dir_cls = oldDir->mkdir(clsName.Data());
404 TDirectory* dir_resid = oldDir->mkdir(residName.Data());
427 sensorU[s] = Form(
"%d.%d.%dU", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
428 B2DEBUG(10,
"U-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber());
430 if (res->GetEntries() > 0) {
432 res->GetQuantiles(1, &median, &q);
437 float halfWindow =
m_nSigma * residU[s];
441 int binMin = res->FindBin(misU[s] - halfWindow);
442 int binMax = res->FindBin(misU[s] + halfWindow);
443 B2DEBUG(10,
"from " << misU[s] - halfWindow <<
" -> binMin = " << binMin);
444 B2DEBUG(10,
"to " << misU[s] + halfWindow <<
" -> binMax = " << binMax);
447 for (
int bin = binMin; bin < binMax + 1; bin++)
448 num = num + res->GetBinContent(bin);
451 for (
int bin = 1; bin < binMin; bin++)
452 bkg = bkg + res->GetBinContent(bin);
453 for (
int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
454 bkg = bkg + res->GetBinContent(bin);
456 num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
461 h_effU->Fill(sensorU[s], effU[s]);
463 B2WARNING(
"something is wrong! efficiency greater than 1: " << num <<
"/" <<
ms_nIntercepts);
466 B2DEBUG(10,
"num = " << num);
468 B2RESULT(
"U-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber() <<
" = " <<
469 effU[s] <<
" ± " << effUErr[s]);
493 sensorV[s] = Form(
"%d.%d.%dV", currentLayer, ladder.getLadderNumber(), sensor.getSensorNumber());
494 B2DEBUG(10,
"V-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber());
496 if (res->GetEntries() > 0) {
498 res->GetQuantiles(1, &median, &q);
504 float halfWindow =
m_nSigma * residV[s];
508 int binMin = res->FindBin(misV[s] - halfWindow);
509 int binMax = res->FindBin(misV[s] + halfWindow);
510 B2DEBUG(10,
"from " << misV[s] - halfWindow <<
" -> binMin = " << binMin);
511 B2DEBUG(10,
"to " << misV[s] + halfWindow <<
" -> binMax = " << binMax);
515 for (
int bin = binMin; bin < binMax + 1; bin++)
516 num = num + res->GetBinContent(bin);
519 for (
int bin = 1; bin < binMin; bin++)
520 bkg = bkg + res->GetBinContent(bin);
521 for (
int bin = binMax; bin < res->GetNbinsX() + 1; bin++)
522 bkg = bkg + res->GetBinContent(bin);
524 num = num - bkg * (binMax - binMin + 1.) / (binMin + res->GetNbinsX() - binMax - 1);
529 h_effV->Fill(sensorV[s], effV[s]);
531 B2WARNING(
"something is wrong! efficiency greater than 1: " << num <<
"/" <<
ms_nIntercepts);
534 B2DEBUG(10,
"num = " << num);
536 B2RESULT(
"V-side efficiency for " << currentLayer <<
"." << ladder.getLadderNumber() <<
"." << sensor.getSensorNumber() <<
" = " <<
537 effV[s] <<
" ± " << effVErr[s]);
562 B2DEBUG(50,
"writing out resid histograms for " << sensor.getLayerNumber() <<
"." << sensor.getLadderNumber() <<
"." <<
563 sensor.getSensorNumber() <<
"." << view);
580 for (
int bin = 0; bin < h_residU->GetNbinsX(); bin++)
581 h_residU->SetBinError(bin, 0.);
583 for (
int bin = 0; bin < h_residV->GetNbinsX(); bin++)
584 h_residV->SetBinError(bin, 0.);
586 for (
int bin = 0; bin < h_statU->GetNbinsX(); bin++)
587 h_statU->SetBinError(bin, 0.);
589 for (
int bin = 0; bin < h_statV->GetNbinsX(); bin++)
590 h_statV->SetBinError(bin, 0.);
592 for (
int bin = 0; bin < h_misU->GetNbinsX(); bin++)
593 h_misU->SetBinError(bin, 0.);
595 for (
int bin = 0; bin < h_misV->GetNbinsX(); bin++)
596 h_misV->SetBinError(bin, 0.);
598 for (
int bin = 0; bin < h_effU->GetNbinsX(); bin++)
599 h_effU->SetBinError(bin, 0.);
601 for (
int bin = 0; bin < h_effV->GetNbinsX(); bin++)
602 h_effV->SetBinError(bin, 0.);
615 if (theRC.
size() == 0)
620 if (theTrack.
size() == 0)
631 TH2F h_coorUV_LargeSensor(
"interCoor_Large_L@layerL@ladderS@sensor",
632 "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
635 h_coorUV_LargeSensor.GetXaxis()->SetTitle(
"Intercept U coordinate (cm)");
636 h_coorUV_LargeSensor.GetYaxis()->SetTitle(
"Intercept V coordinate (cm)");
638 TH2F h_coorUV_SmallSensor(
"interCoor_Small_L@layerL@ladderS@sensor",
639 "Intercept 2D Coordinate (layer @layer, ladder @ladder, sensor @sensor)",
642 h_coorUV_SmallSensor.GetXaxis()->SetTitle(
"Intercept U coordinate (cm)");
643 h_coorUV_SmallSensor.GetYaxis()->SetTitle(
"Intercept V coordinate (cm)");
653 TH1F h_sigmaU(
"interSigmaU_L@layerL@ladderS@sensor@view",
654 "U Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
656 h_sigmaU.GetXaxis()->SetTitle(
"Intercept U Error (cm)");
658 TH1F h_sigmaV(
"interSigmaV_L@layerL@ladderS@sensor@view",
659 "V Intercept Sigma (layer @layer, ladder @ladder, sensor @sensor)",
661 h_sigmaV.GetXaxis()->SetTitle(
"Intercept V Error (cm)");
672 TH1F h_clcoorU_LargeSensor(
"clsCoorU_LS_L@layerL@ladderS@sensor@view",
673 "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
675 h_clcoorU_LargeSensor.GetXaxis()->SetTitle(
"Cluster U coordinate (cm)");
677 TH1F h_clcoorV_LargeSensor(
"clsCoorV_LS_L@layerL@ladderS@sensor@view",
678 "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
680 h_clcoorV_LargeSensor.GetXaxis()->SetTitle(
"Cluster V coordinate (cm)");
682 TH1F h_clcoorU_SmallSensor(
"clsCoorU_SS_L@layerL@ladderS@sensor@view",
683 "Cluster U Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
685 h_clcoorU_SmallSensor.GetXaxis()->SetTitle(
"Cluster U coordinate (cm)");
687 TH1F h_clcoorV_SmallSensor(
"clsCoorV_SS_L@layerL@ladderS@sensor@view",
688 "Cluster V Coordinate (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
690 h_clcoorV_SmallSensor.GetXaxis()->SetTitle(
"Cluster V coordinate (cm)");
705 TH1F h_clresidU_LargeSensor(
"clsResidU_LS_L@layerL@ladderS@sensor@view",
706 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
708 NbinsU, -range, range);
709 h_clresidU_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
711 TH1F h_clresidV_LargeSensor(
"clsResidV_LS_L@layerL@ladderS@sensor@view",
712 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
714 NbinsV, -range, range);
715 h_clresidV_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
717 TH1F h_clresidU_SmallSensor(
"clsResidU_SS_L@layerL@ladderS@sensor@view",
718 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
720 NbinsU, -range, range);
721 h_clresidU_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
723 TH1F h_clresidV_SmallSensor(
"clsResidV_SS_L@layerL@ladderS@sensor@view",
724 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
726 NbinsU, -range, range);
727 h_clresidV_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
732 h_clresidV_LargeSensor);
738 TH2F h2_clresidU_LargeSensor(
"clsResid2DU_LS_L@layerL@ladderS@sensor@view",
739 "U Cluster Residuals VS U Cluster Position(layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
741 h2_clresidU_LargeSensor.GetYaxis()->SetTitle(
"residual (cm)");
742 h2_clresidU_LargeSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
744 TH2F h2_clresidV_LargeSensor(
"clsResid2DV_LS_L@layerL@ladderS@sensor@view",
745 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
747 h2_clresidV_LargeSensor.GetYaxis()->SetTitle(
"residual (cm)");
748 h2_clresidV_LargeSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
750 TH2F h2_clresidU_SmallSensor(
"clsResid2DU_SS_L@layerL@ladderS@sensor@view",
751 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
753 h2_clresidU_SmallSensor.GetYaxis()->SetTitle(
"residual (cm)");
754 h2_clresidU_SmallSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
756 TH2F h2_clresidV_SmallSensor(
"clsResid2DV_SS_L@layerL@ladderS@sensor@view",
757 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
759 h2_clresidV_SmallSensor.GetYaxis()->SetTitle(
"residual (cm)");
760 h2_clresidV_SmallSensor.GetXaxis()->SetTitle(
"cluster position (cm)");
763 h2_clresidV_LargeSensor);
767 TH1F h_clminresidU_LargeSensor(
"clsMinResidU_LS_L@layerL@ladderS@sensor@view",
768 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
770 NbinsU, -range, range);
771 h_clminresidU_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
773 TH1F h_clminresidV_LargeSensor(
"clsMinResidV_LS_L@layerL@ladderS@sensor@view",
774 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
776 NbinsV, -range, range);
777 h_clminresidV_LargeSensor.GetXaxis()->SetTitle(
"residual (cm)");
779 TH1F h_clminresidU_SmallSensor(
"clsMinResidU_SS_L@layerL@ladderS@sensor@view",
780 "U Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
782 NbinsU, -range, range);
783 h_clminresidU_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
785 TH1F h_clminresidV_SmallSensor(
"clsMinResidV_SS_L@layerL@ladderS@sensor@view",
786 "V Cluster Residuals (layer @layer, ladder @ladder, sensor @sensor, side@view/@side)",
788 NbinsU, -range, range);
789 h_clminresidV_SmallSensor.GetXaxis()->SetTitle(
"residual (cm)");
794 h_clminresidV_LargeSensor);
803 TH1F* h1_res = (TH1F*)h1->Clone(
"h1_res");
804 double probs[2] = {0.16, 1 - 0.16};
805 double quant[2] = {0, 0};
806 int nbinsHisto = h1_res->GetNbinsX();
807 h1_res->SetBinContent(1, h1_res->GetBinContent(0) + h1_res->GetBinContent(1));
808 h1_res->SetBinContent(nbinsHisto, h1_res->GetBinContent(nbinsHisto) + h1_res->GetBinContent(nbinsHisto + 1));
809 h1_res->SetBinContent(0, 0);
810 h1_res->SetBinContent(nbinsHisto + 1, 0);
811 h1_res->GetQuantiles(2, quant, probs);
813 return (-quant[0] + quant[1]) / 2;
void setDescription(const std::string &description)
Sets the description of the module.
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
SVDClusterEvaluationModule()
constructor
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
check StoreArrays & create rootfile
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
fill histograms
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
write histogrmas
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
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
create histograms
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.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.