9#include <tracking/dqmUtils/DQMHistoModuleBase.h>
10#include <tracking/dqmUtils/HistogramFactory.h>
12#include <framework/datastore/StoreArray.h>
13#include <vxd/geometry/GeoTools.h>
14#include <vxd/geometry/SensorInfoBase.h>
16#include <TDirectory.h>
19using namespace Belle2::HistogramFactory;
47 B2WARNING(
"Missing recoTracks array, " +
getName() +
" is skipped.");
53 B2WARNING(
"Missing Tracks array, " +
getName() +
" is skipped.");
74 B2DEBUG(22,
"Missing recoTracks array in beginRun() for " +
getName());
78 if (!tracks.isOptional()) {
79 B2DEBUG(22,
"Missing recoTracks array in beginRun() for " +
getName());
91 B2ERROR(
"Histograms not defined in " + this->
getName() +
" module, event processing is skipped!");
99 TH1F* histogram =
new TH1F(name.c_str(), title.c_str(), nbinsx, xlow, xup);
100 histogram->GetXaxis()->SetTitle(xTitle.c_str());
101 histogram->GetYaxis()->SetTitle(yTitle.c_str());
109 double yup, std::string xTitle, std::string yTitle, std::string zTitle)
111 TH2F* histogram =
new TH2F(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
112 histogram->GetXaxis()->SetTitle(xTitle.c_str());
113 histogram->GetYaxis()->SetTitle(yTitle.c_str());
114 histogram->GetZaxis()->SetTitle(zTitle.c_str());
133 double xup, std::string xTitle, std::string yTitle)
138 TH1F** output =
new TH1F*[gTools->getNumberOfLayers()];
141 int layerNumber = layer.getLayerNumber();
142 int layerIndex = gTools->getLayerIndex(layerNumber);
143 std::string name = str(nameTemplate % layerNumber);
144 std::string title = str(titleTemplate % layerNumber);
145 output[layerIndex] =
Create(name, title, nbinsx, xlow, xup, xTitle, yTitle);
152 double xup,
int nbinsy,
double ylow,
double yup, std::string xTitle, std::string yTitle, std::string zTitle)
157 TH2F** output =
new TH2F*[gTools->getNumberOfLayers()];
160 int layerNumber = layer.getLayerNumber();
161 int layerIndex = gTools->getLayerIndex(layerNumber);
162 std::string name = str(nameTemplate % layerNumber);
163 std::string title = str(titleTemplate % layerNumber);
164 output[layerIndex] =
Create(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup, xTitle, yTitle, zTitle);
171 double xup, std::string xTitle, std::string yTitle)
177 TH1F** output =
new TH1F*[nVXDSensors];
179 for (
int sensorIndex = 0; sensorIndex < nVXDSensors; sensorIndex++) {
180 VxdID sensorID = gTools->getSensorIDFromIndex(sensorIndex);
183 output[sensorIndex] =
Create(name, title, nbinsx, xlow, xup, xTitle, yTitle);
190 double xup,
int nbinsy,
double ylow,
double yup, std::string xTitle, std::string yTitle, std::string zTitle)
196 TH2F** output =
new TH2F*[nVXDSensors];
198 for (
int sensorIndex = 0; sensorIndex < nVXDSensors; sensorIndex++) {
199 VxdID sensorID = gTools->getSensorIDFromIndex(sensorIndex);
202 output[sensorIndex] =
Create(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup, xTitle, yTitle, zTitle);
210 m_MomPhi =
Create(
"MomPhi",
"Track Azimuthal Angle", 180, -180, 180,
"Mom Phi",
"counts");
211 m_MomTheta =
Create(
"MomTheta",
"Track Polar Angle", 90, 0, 180,
"Mom Theta",
"counts");
212 m_MomCosTheta =
Create(
"MomCosTheta",
"Cosine of the Track Polar Angle", 100, -1, 1,
"Mom CosTheta",
"counts");
217 m_PValue =
Create(
"PValue",
"Track Fit P value", 100, 0, 1,
"p-value",
"counts");
218 m_Chi2 =
Create(
"Chi2",
"Track Fit Chi2", 200, 0, 150,
"Chi2",
"counts");
219 m_NDF =
Create(
"NDF",
"Track Fit NDF", 200, 0, 200,
"NDF",
"counts");
220 m_Chi2NDF =
Create(
"Chi2NDF",
"Track Fit Chi2/NDF", 200, 0, 10,
"Chi2/NDF",
"counts");
225 double residualRange = 400;
227 auto residualU =
Axis(200, -residualRange, residualRange,
"residual U [#mum]");
228 auto residualV =
Axis(residualU).
title(
"residual V [#mum]");
231 factory.xAxisDefault(residualU).yAxisDefault(residualV).zTitleDefault(
"counts");
234 m_UBResidualsPXD = factory.CreateTH2F(
"UBResidualsPXD",
"PXD Unbiased Residuals");
235 m_UBResidualsSVD = factory.CreateTH2F(
"UBResidualsSVD",
"SVD Unbiased Residuals");
237 factory.xAxisDefault(residualU).yTitleDefault(
"counts");
240 m_UBResidualsPXDU = factory.CreateTH1F(
"UBResidualsPXDU",
"PXD Unbiased residuals in U");
241 m_UBResidualsSVDU = factory.CreateTH1F(
"UBResidualsSVDU",
"SVD Unbiased residuals in U");
243 factory.xAxisDefault(residualV);
246 m_UBResidualsPXDV = factory.CreateTH1F(
"UBResidualsPXDV",
"PXD Unbiased residuals in V");
247 m_UBResidualsSVDV = factory.CreateTH1F(
"UBResidualsSVDV",
"SVD Unbiased residuals in V");
254 double fZ0Range = 10.0;
256 double fD0Range = 2.0;
258 double fPhiRange = 180.0;
259 int iLambdaRange = 400;
260 double fLambdaRange = 4.0;
261 int iOmegaRange = 400;
262 double fOmegaRange = 0.1;
264 auto phi =
Axis(iPhiRange, -fPhiRange, fPhiRange,
"#phi [deg]");
265 auto D0 =
Axis(iD0Range, -fD0Range, fD0Range,
"d0 [cm]");
266 auto D0_2d =
Axis(50, -0.5, 0.5,
"d0 [cm]");
267 auto Z0 =
Axis(iZ0Range, -fZ0Range, fZ0Range,
"z0 [cm]");
268 auto Z0_2d =
Axis(100, -2, 2,
"z0 [cm]");
269 auto tanLambda =
Axis(iLambdaRange, -fLambdaRange, fLambdaRange,
"Tan Lambda");
270 auto omega =
Axis(iOmegaRange, -fOmegaRange, fOmegaRange,
"Omega");
274 factory.yTitleDefault(
"Arb. Units");
276 m_Z0 = factory.xAxis(Z0).CreateTH1F(
"HelixZ0",
"z0, the z coordinate of the perigee");
277 m_D0 = factory.xAxis(D0).CreateTH1F(
"HelixD0",
"d0, the signed distance of the perigee in the r-phi plane");
278 m_Phi = factory.xAxis(phi).CreateTH1F(
"HelixPhi",
279 "Phi0, momentum azymuthal angle at the perigee");
280 m_Omega = factory.xAxis(omega).CreateTH1F(
"HelixOmega",
281 "Omega, the curvature of the track, sign defined by the charge of the particle");
282 m_TanLambda = factory.xAxis(tanLambda).CreateTH1F(
"HelixTanLambda",
"TanLambda, the slope of the track in the r-z plane");
285 factory.zTitleDefault(
"Arb. Units");
287 m_PhiD0 = factory.xAxis(phi).yAxis(D0_2d).CreateTH2F(
"Helix2dPhiD0",
288 "d0 vs Phi0, the signed distance of the perigee in the r-phi plane vs. momentum azymuthal angle at the perigee");
289 m_D0Z0 = factory.xAxis(Z0_2d).yAxis(D0_2d).CreateTH2F(
"Helix2dD0Z0",
290 "d0 vs z0, the signed distance of the perigee in r-phi vs. z0 of the perigee");
297 double fMomRange = 6.0;
299 auto momentum =
Axis(2 * iMomRange, -fMomRange, fMomRange,
"Momentum [GeV/c]");
300 auto pt_momentum =
Axis(iMomRange, 0, fMomRange,
"Momentum [GeV/c]");
303 m_MomX = factory.CreateTH1F(
"TrackMomentumX",
"Track Momentum X");
304 m_MomY = factory.CreateTH1F(
"TrackMomentumY",
"Track Momentum Y");
305 m_MomZ = factory.CreateTH1F(
"TrackMomentumZ",
"Track Momentum Z");
306 m_MomPt = factory.xAxis(pt_momentum).yTitle(
"counts").CreateTH1F(
"TrackMomentumPt",
"Track Momentum pT");
307 m_Mom = factory.xlow(.0).CreateTH1F(
"TrackMomentumMag",
"Track Momentum Magnitude");
313 int iHitsInCDC = 200;
320 m_HitsPXD = factory.nbinsx(iHitsInPXD).xup(iHitsInPXD).CreateTH1F(
"NoOfHitsInTrack_PXD",
"Number of PXD Hits per Track");
322 m_HitsSVD = factory.nbinsx(iHitsInSVD).xup(iHitsInSVD).CreateTH1F(
"NoOfHitsInTrack_SVD",
"Number of SVD Hits per Track");
323 m_HitsCDC = factory.nbinsx(iHitsInCDC).xup(iHitsInCDC).CreateTH1F(
"NoOfHitsInTrack_CDC",
"Number of CDC Hits per Track");
324 m_Hits = factory.nbinsx(iHits).xup(iHits).CreateTH1F(
"NoOfHitsInTrack",
"Number of Hits per Track");
331 auto tracks =
Axis(iTracks, 0, iTracks,
"# tracks");
334 m_TracksVXD = factory.CreateTH1F(
"NoOfTracksInVXDOnly",
"Number of VXD-Only Tracks per Event");
335 m_TracksCDC = factory.CreateTH1F(
"NoOfTracksInCDCOnly",
"Number of CDC-Only Tracks per Event");
336 m_TracksVXDCDC = factory.CreateTH1F(
"NoOfTracksInVXDCDC",
"Number of VXD+CDC Tracks per Event");
337 m_Tracks = factory.CreateTH1F(
"NoOfTracks",
"Number of Tracks per Event");
343 double residualRange = 400;
344 auto residual =
Axis(200, -residualRange, residualRange,
"residual [#mum]");
348 m_UBResidualsPXDX_Yin = factory.CreateTH1F(
"UBResidualsPXDX_Yin",
"PXD-Yin Unbiased Residuals in X");
351 m_UBResidualsSVDX_Pat = factory.CreateTH1F(
"UBResidualsSVDX_Pat",
"SVD-Pat Unbiased Residuals in X");
352 m_UBResidualsSVDX_Mat = factory.CreateTH1F(
"UBResidualsSVDX_Mat",
"SVD-Mat Unbiased Residuals in X");
355 m_UBResidualsPXDY_Yin = factory.CreateTH1F(
"UBResidualsPXDY_Yin",
"PXD-Yin Unbiased Residuals in Y");
358 m_UBResidualsSVDY_Pat = factory.CreateTH1F(
"UBResidualsSVDY_Pat",
"SVD-Pat Unbiased Residuals in Y");
359 m_UBResidualsSVDY_Mat = factory.CreateTH1F(
"UBResidualsSVDY_Mat",
"SVD-Mat Unbiased Residuals in Y");
362 m_UBResidualsPXDZ_Yin = factory.CreateTH1F(
"UBResidualsPXDZ_Yin",
"PXD-Yin Unbiased Residuals in Z");
365 m_UBResidualsSVDZ_Pat = factory.CreateTH1F(
"UBResidualsSVDZ_Pat",
"SVD-Pat Unbiased Residuals in Z");
366 m_UBResidualsSVDZ_Mat = factory.CreateTH1F(
"UBResidualsSVDZ_Mat",
"SVD-Mat Unbiased Residuals in Z");
385 nbins / 2, .0, range,
"Phi angle [deg]",
"Theta angle [deg]",
"counts");
388 int layerNumber = layer.getLayerNumber();
389 if (layerNumber == gTools->getLastLayer())
392 int layerIndex = gTools->getLayerIndex(layerNumber);
395 std::string name = str(format(
"CorrelationsPhiLayers_%1%_%2%") % layerNumber % (layerNumber + 1));
396 std::string title = str(format(
"Correlations in Phi for Layers %1% %2%") % layerNumber % (layerNumber + 1));
397 std::string xTitle = str(format(
"angle layer %1% [deg]") % layerNumber);
398 std::string yTitle = str(format(
"angle layer %1% [deg]") % (layerNumber + 1));
400 xTitle, yTitle,
"counts");
403 name = str(format(
"CorrelationsThetaLayers_%1%_%2%") % layerNumber % (layerNumber + 1));
404 title = str(format(
"Correlations in Theta for Layers %1% %2%") % layerNumber % (layerNumber + 1));
406 xTitle, yTitle,
"counts");
413 double residualRange = 400;
415 auto residualU =
Axis(200, -residualRange, residualRange,
"residual U [#mum]");
416 auto residualV =
Axis(residualU).
title(
"residual V [#mum]");
420 factory.yTitleDefault(
"counts");
423 format(
"VXD Unbiased U Residuals for sensor %1%"));
425 format(
"VXD Unbiased V Residuals for sensor %1%"));
432 double residualRange = 400;
434 auto residualU =
Axis(200, -residualRange, residualRange,
"residual U [#mum]");
435 auto residualV =
Axis(residualU).
title(
"residual V [#mum]");
439 m_UBResidualsSensor = factory.xAxis(residualU).yAxis(residualV).zTitle(
"counts").CreateSensorsTH2F(format(
"UBResiduals_%1%"),
440 format(
"VXD Unbiased Residuals for sensor %1%"));
458 m_Hits->Fill(nPXD + nSVD + nCDC);
463 const ROOT::Math::XYZVector mom = tfr->
getMomentum();
471 float Phi = mom.Phi();
472 float Theta = mom.Theta();
481 const ROOT::Math::XYZVector& mom = tfr->
getMomentum();
492 m_Mom->Fill(mom.R());
521 float NDF = tfs->getNdf();
523 float chi2 = tfs->getChi2();
526 float Chi2NDF = chi2 / NDF;
534 int correlationIndex)
621 int nbinsi = onX ? input->GetNbinsX() : input->GetNbinsY();
622 int nbinsy = onX ? input->GetNbinsY() : input->GetNbinsX();
623 TAxis* axis = onX ? input->GetYaxis() : input->GetXaxis();
625 for (
int i = 1; i <= nbinsi; i++) {
629 for (
int j = 1; j <= nbinsy; j++) {
630 float value = onX ? input->GetBinContent(i, j) : input->GetBinContent(j, i);
631 sum += value * axis->GetBinCenter(j);
635 output->SetBinContent(i, count != 0 ? sum / count : 0);
640 const std::string& value)
642 TH1* histogram =
nullptr;
645 if (adept->GetName() == name) {
651 B2WARNING(
"Histogram " + name +
" not found, parameter change is skipped in " +
getName() +
".");
655 }
catch (
const std::invalid_argument& e) {
656 B2WARNING(
"Value " + value +
" of parameter " + parameter +
" for histogram " + histogram->GetName() +
657 " could not be parsed, parameter change is skipped in " +
getName() +
".");
658 }
catch (
const std::out_of_range& e) {
659 B2WARNING(
"Value " + value +
" of parameter " + parameter +
" for histogram " + histogram->GetName() +
660 " is out of range, parameter change is skipped in " +
getName() +
".");
667 if (parameter ==
"title") {
668 histogram->SetTitle(value.c_str());
671 if (parameter ==
"nbinsx") {
672 auto axis = histogram->GetXaxis();
673 axis->Set(stoi(value), axis->GetXmin(), axis->GetXmax());
676 if (parameter ==
"xlow") {
677 auto axis = histogram->GetXaxis();
678 axis->Set(axis->GetNbins(), stod(value), axis->GetXmax());
681 if (parameter ==
"xup") {
682 auto axis = histogram->GetXaxis();
683 axis->Set(axis->GetNbins(), axis->GetXmin(), stod(value));
686 if (parameter ==
"xTitle") {
687 histogram->GetXaxis()->SetTitle(value.c_str());
690 if (parameter ==
"yTitle") {
691 histogram->GetYaxis()->SetTitle(value.c_str());
695 if (
dynamic_cast<TH2F*
>(histogram) ==
nullptr) {
696 B2WARNING(
"Parameter " + parameter +
" not found in histogram " + histogram->GetName() +
", parameter change is skipped in " +
701 if (parameter ==
"nbinsy") {
702 auto axis = histogram->GetYaxis();
703 axis->Set(stoi(value), axis->GetXmin(), axis->GetXmax());
706 if (parameter ==
"ylow") {
707 auto axis = histogram->GetYaxis();
708 axis->Set(axis->GetNbins(), stod(value), axis->GetXmax());
711 if (parameter ==
"yup") {
712 auto axis = histogram->GetYaxis();
713 axis->Set(axis->GetNbins(), axis->GetXmin(), stod(value));
716 if (parameter ==
"zTitle") {
717 histogram->GetZaxis()->SetTitle(value.c_str());
721 B2WARNING(
"Parameter " + parameter +
" not found in histogram " + histogram->GetName() +
", parameter change is skipped in " +
DataType Z() const
access variable Z (= .at(2) without boundary check)
DataType y() const
access variable Y (= .at(1) without boundary check)
DataType z() const
access variable Z (= .at(2) without boundary check)
DataType X() const
access variable X (= .at(0) without boundary check)
DataType Y() const
access variable Y (= .at(1) without boundary check)
DataType x() const
access variable X (= .at(0) without boundary check)
TH1F * m_Hits
Number of all hits in tracks.
virtual void Define1DSensors()
Define 1D histograms with unbiased residuals for individual sensors.
TH1F * m_UBResidualsSVDV
Unbiased residuals for SVD v.
bool histogramsDefined
True if the defineHisto() was called.
TH1F * m_MomTheta
Track momentum Pt.Theta.
TH1F * m_Tracks
Number of all finding tracks.
bool checkVariableForNANOrINF(const double var)
Check a variable for whether or not it is NAN or INF.
TH1F * m_UBResidualsPXDY_Yang
Unbiased residuals in Y for PXD for Yang.
TH1F * m_MomPt
Track momentum Pt.
TH1F * m_TanLambda
TanLambda - the slope of the track in the r-z plane.
TH1F ** m_UBResidualsSensorU
Unbiased residuals for PXD and SVD u per sensor.
virtual void FillHitNumbers(int nPXD, int nSVD, int nCDC)
Fill histograms with numbers of hits.
TH1F * m_UBResidualsPXDZ_Yang
Unbiased residuals in Z for PXD for Yang.
static std::string SensorTitleDescription(VxdID sensorID)
Creates string description of the sensor from given sensor ID to be used in a histogram title.
TH1F * m_UBResidualsPXDU
Unbiased residuals for PXD u.
std::vector< std::tuple< std::string, std::string, std::string > > m_histogramParameterChanges
Used for changing parameters of histograms via the ProcessHistogramParameterChange function.
virtual void DefineHalfShellsVXD()
Define histograms with unbiased residuals for half-shells for PXD and SVD sensors.
TH1F * m_TracksCDC
Number of tracks only with CDC.
TH1F * m_UBResidualsSVDY_Pat
Unbiased residuals in Y for PXD for Pat.
TH1F * m_HitsSVD
Number of hits on SVD.
virtual void initialize() override
Initializer.
virtual void DefineUBResidualsVXD()
Define histograms with unbiased residuals in PXD and SVD sensors.
std::vector< TH1 * > m_histograms
All histograms created via the Create- functions are automatically added to this set.
virtual void DefineTRClusters()
Define histograms with correlations between neighbor layers and cluster hitmap in IP angle range.
TH2F ** m_TRClusterHitmap
Track related clusters - hitmap in IP angle range.
void ProcessHistogramParameterChange(const std::string &name, const std::string ¶meter, const std::string &value)
Process one change in histogram parameters.
TH1F * m_UBResidualsSVDZ_Mat
Unbiased residuals in Z for PXD for Mat.
TH1F * m_Omega
Omega - the curvature of the track.
virtual void event() override
This method is called for each event.
TH2F * m_UBResidualsPXD
Unbiased residuals for PXD u vs v.
static std::string SensorNameDescription(VxdID sensorID)
Creates string description of the sensor from given sensor ID to be used in a histogram name.
TH1F * m_TracksVXD
Number of tracks only with VXD.
TH1F * m_UBResidualsSVDX_Mat
Unbiased residuals in X for PXD for Mat.
virtual TH1F ** CreateSensors(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create array of TH1F histograms, one for each sensor.
DQMHistoModuleBase()
Constructor.
TH1F * m_UBResidualsPXDX_Yang
Unbiased residuals in X for PXD for Yang.
virtual void DefineTrackFitStatus()
Define histograms which require FitStatus.
virtual void FillHalfShellsSVD(const B2Vector3D &globalResidual_um, bool isNotMat)
Fill histograms with unbiased residuals for half-shells for SVD sensors.
std::string m_tracksStoreArrayName
StoreArray name where Tracks are written.
TH1F * m_Mom
Track momentum Magnitude.
TH1F * m_Chi2NDF
Chi2 / NDF.
TH1F * m_UBResidualsPXDX_Yin
half-shells
TH1F * m_UBResidualsSVDU
Unbiased residuals for SVD u.
TH2F * m_PhiD0
d0 vs Phi - the signed distance to the IP in the r-phi plane
virtual void FillUB2DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 2D histograms with unbiased residuals for individual sensors.
virtual void FillUBResidualsPXD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in PXD sensors.
virtual TH1F * Create(std::string name, std::string title, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create TH1F and add it to the vector of histograms (m_histograms).
TH1F * m_MomX
Track momentum Pt.X.
virtual void FillTrackFitStatus(const genfit::FitStatus *tfs)
Fill histograms which require FitStatus.
virtual void FillTRClusterHitmap(float phi_deg, float theta_deg, int layerIndex)
Fill cluster hitmap in IP angle range.
TH1F * m_UBResidualsSVDX_Pat
Unbiased residuals in X for PXD for Pat.
TH2F ** m_TRClusterCorrelationsPhi
Track related clusters - neighbor correlations in Phi.
TH1F * m_UBResidualsSVDZ_Pat
Unbiased residuals in Z for PXD for Pat.
TH2F * m_UBResidualsSVD
Unbiased residuals for SVD u vs v.
TH1F * m_MomPhi
Track momentum Pt.Phi.
TH1F * m_Phi
Phi - the angle of the transverse momentum in the r-phi plane, with CDF naming convention.
virtual void beginRun() override
Called when entering a new run.
TH1F * m_MomCosTheta
Track momentum Pt.CosTheta.
virtual void DefineHits()
Define histograms with numbers of hits.
virtual void FillHelixParametersAndCorrelations(const TrackFitResult *tfr)
Fill histograms with helix parameters and their correlations.
TH2F ** m_UBResidualsSensor
Unbiased residuals for PXD and SVD u vs v per sensor.
TH1F * m_HitsCDC
Number of hits on CDC.
virtual void DefineMomentumCoordinates()
Define histograms with track momentum Pt.
virtual void FillMomentumCoordinates(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.
TH1F ** m_UBResidualsSensorV
Unbiased residuals for PXD and SVD v per sensor.
static void ComputeMean(TH1F *output, TH2F *input, bool onX=true)
Creates a graph of means by given axis from given TH2F histogram.
virtual void DefineTracks()
All the following Define- functions should be used in the defineHisto() function to define histograms...
bool m_hltDQM
True if the DQM module is run on HLT.
TH2F * m_D0Z0
z0 vs d0 - signed distance to the IP in r-phi vs.
virtual void FillHalfShellsPXD(const B2Vector3D &globalResidual_um, bool isNotYang)
Fill histograms with unbiased residuals for half-shells for PXD sensors.
virtual void Define2DSensors()
Define 2D histograms with unbiased residuals for individual sensors.
TH1F * m_UBResidualsPXDY_Yin
Unbiased residuals in Y for PXD for Yin.
~DQMHistoModuleBase()
Destructor.
TH1F * m_MomY
Track momentum Pt.Y.
TH1F * m_UBResidualsSVDY_Mat
Unbiased residuals in Y for PXD for Mat.
virtual void DefineMomentumAngles()
Define histograms with track momentum Pt.
virtual TH1F ** CreateLayers(boost::format nameTemplate, boost::format titleTemplate, int nbinsx, double xlow, double xup, std::string xTitle, std::string yTitle)
Function to create array of TH1F histograms, one for each layer.
virtual void FillTrackIndexes(int iTrack, int iTrackVXD, int iTrackCDC, int iTrackVXDCDC)
Fill histograms with track indexes.
TH1F * m_HitsPXD
Number of hits on PXD.
TH1F * m_UBResidualsPXDZ_Yin
Unbiased residuals in Z for PXD for Yin.
std::string m_recoTracksStoreArrayName
StoreArray name where RecoTracks are written.
TH1F * m_TracksVXDCDC
Number of full tracks with VXD+CDC.
TH1F * m_MomZ
Track momentum Pt.Z.
TH1F * m_D0
d0 - the signed distance to the IP in the r-phi plane
TH1F * m_UBResidualsPXDV
Unbiased residuals for PXD v.
TH2F ** m_TRClusterCorrelationsTheta
Track related clusters - neighbor correlations in Theta.
virtual void FillTRClusterCorrelations(float phi_deg, float phiPrev_deg, float theta_deg, float thetaPrev_deg, int correlationIndex)
Fill histograms with correlations between neighbor layers.
virtual void FillMomentumAngles(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.
virtual void FillUBResidualsSVD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in SVD sensors.
virtual void DefineHelixParametersAndCorrelations()
Define histograms with helix parameters and their correlations.
TH1F * m_Z0
z0 - the z0 coordinate of the perigee (beam spot position)
virtual void FillUB1DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 1D histograms with unbiased residuals for individual sensors.
void EditHistogramParameter(TH1 *histogram, const std::string ¶meter, std::string value)
On given histogram sets given parameter to given value.
virtual void defineHisto() override
Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
This class unites some parameters for Factory which describe one axis of histogram.
Axis & title(std::string title)
Set value of title.
This class is used for creating TH1F and TH2F objects.
Factory & xTitleDefault(std::string xTitle)
Sets xTitle permanently.
Factory & xlowDefault(double xlow)
Sets xlow permanently.
Factory & yTitleDefault(std::string yTitle)
Sets yTitle permanently.
Factory & xAxisDefault(const Axis &axis)
Permanently copies parameters for x axis from given Axis.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
const std::string & getName() const
Returns the name of the module.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
bool isOptional(const std::string &name="")
Tell the DataStore about an optional input.
Accessor to arrays stored in the data store.
Values of the result of a track fit with a given particle hypothesis.
double getPhi() const
Getter for phi0 with CDF naming convention.
double getOmega() const
Getter for omega.
double getD0() const
Getter for d0.
double getTanLambda() const
Getter for tanLambda.
double getZ0() const
Getter for z0.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
double getPhi0() const
Getter for phi0.
static const double deg
degree to radians
Class to faciliate easy access to sensor information of the VXD like coordinate transformations or pi...
const std::set< Belle2::VxdID > getLayers(SensorInfoBase::SensorType sensortype=SensorInfoBase::VXD)
Return a set of all known Layers.
static GeoCache & getInstance()
Return a reference to the singleton instance.
const GeoTools * getGeoTools()
Return a raw pointer to a GeoTools object.
Class to uniquely identify a any structure of the PXD and SVD.
baseType getSensorNumber() const
Get the sensor id.
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.
Abstract base class for different kinds of events.