Belle II Software  release-06-02-00
QualityEstimatorLineFit3D Class Reference

Testbeam: Coords: Sensors: ^ . More...

#include <QualityEstimatorLineFit3D.h>

Inheritance diagram for QualityEstimatorLineFit3D:
Collaboration diagram for QualityEstimatorLineFit3D:

Public Member Functions

virtual double estimateQuality (std::vector< SpacePoint const * > const &measurements) final
 Minimal implementation of the quality estimation Calculates quality indicator in range [0,1]. More...
 
void setMagneticFieldStrength (double magneticFieldZ=1.5)
 Setter for z component of magnetic field. More...
 
virtual QualityEstimationResults estimateQualityAndProperties (std::vector< SpacePoint const * > const &measurements)
 Quality estimation providing additional quantities Calculates quality indicator in range [0,1] Optionally returns chi2 and additional informations. More...
 

Protected Member Functions

double calcPt (double const radius) const
 Returns a value for the transverse momentum in GeV calculated from a provided radius. More...
 

Protected Attributes

double m_magneticFieldZ = 1.5
 Member storing the z component of the magnetic field.
 
QualityEstimationResults m_results
 Result of the quality estimation This is stored as a member variable, because some values may be calculated by 'estimateQuality' anyways. More...
 

Detailed Description

Testbeam: Coords: Sensors: ^ .

/| ./| ./| | ^ | | | | | | |Y /Z | | | | | | |/ |/ |/ |/ ----—> X

beam parallel to x. Measurement errors in y & z (v&u) With these conditions, the following approach using 2 independent 2D line fits is acceptable (if rotation is the same for all sensors): Modells: Y_i = a*X_i + b Z_i = c*X_i + d

Definition at line 32 of file QualityEstimatorLineFit3D.h.

Member Function Documentation

◆ calcPt()

double calcPt ( double const  radius) const
inlineprotectedinherited

Returns a value for the transverse momentum in GeV calculated from a provided radius.

Utilizing m_magneticFieldZ and hard coded speed of light

Definition at line 82 of file QualityEstimatorBase.h.

◆ estimateQuality()

double estimateQuality ( std::vector< SpacePoint const * > const &  measurements)
finalvirtual

Minimal implementation of the quality estimation Calculates quality indicator in range [0,1].

measurements - std::vector<SpacePoint const*> ordered from innermost to outermost measurement

Implements QualityEstimatorBase.

Definition at line 15 of file QualityEstimatorLineFit3D.cc.

16 {
17  TVector3 directionVector;
18  double sumWyi = 0, // sum of weights for Yi
19  sumWzi = 0, // sum of weights for Zi
20  sumWyiXi = 0, // sum of (y-weights times x-values)
21  sumWziXi = 0, // sum of (z-weights times x-values)
22  sumWyiYi = 0, // sum of (y-weights times y-values)
23  sumWziZi = 0, // sum of (z-weights times z-values)
24  sumWyiXiYi = 0, // sum of (y-weights times x-values times y-values)
25  sumWziXiZi = 0, // sum of (z-weights times x-values times z-values)
26  sumWyiXi2 = 0, // sum of (y-weights times x-values^2)
27  sumWziXi2 = 0, // sum of (z-weights times x-values^2)
28  detValY = 0, // determinant for norming values - y
29  detValZ = 0, // determinant for norming values - z
30  slopeY = 0, // = a of model
31  slopeZ = 0, // = c of model
32  chi2 = 0, // final chi2-value of fit
33  interceptY = 0, // b of model, needed only for chi2-calculation
34  interceptZ = 0; // d of model, needed only for chi2-calculation
35 
36  // NOTE: this approach is not optimal. Maybe can be optimized for less redundancy
37  for (const SpacePoint* aHit : measurements) {
38  double Wyi = (1. / (aHit->getPositionError().Y() * aHit->getPositionError().Y()));
39  double Wzi = (1. / (aHit->getPositionError().Z() * aHit->getPositionError().Z()));
40 
41  sumWyi += Wyi;
42  sumWzi += Wzi;
43 
44  sumWyiXi += Wyi * aHit->getPosition().X();
45  sumWziXi += Wzi * aHit->getPosition().X();
46 
47  sumWyiYi += Wyi * aHit->getPosition().Y();
48  sumWziZi += Wzi * aHit->getPosition().Z();
49 
50  sumWyiXiYi += Wyi * aHit->getPosition().X() * aHit->getPosition().Y();
51  sumWziXiZi += Wzi * aHit->getPosition().X() * aHit->getPosition().Z();
52 
53  sumWyiXi2 += Wyi * aHit->getPosition().X() * aHit->getPosition().X();
54  sumWziXi2 += Wzi * aHit->getPosition().X() * aHit->getPosition().X();
55  }
56 
57  detValY = sumWyiXi2 * sumWyi - sumWyiXi * sumWyiXi;
58  if (detValY == 0) {
59  return 0;
60  }
61  detValY = 1. / detValY; // invert
62 
63  detValZ = sumWziXi2 * sumWzi - sumWziXi * sumWziXi;
64  if (detValZ == 0) {
65  return 0;
66  }
67  detValZ = 1. / detValZ; // invert
68 
69  slopeY = detValY * (sumWyi * sumWyiXiYi - sumWyiXi * sumWyiYi);
70  slopeZ = detValZ * (sumWzi * sumWziXiZi - sumWziXi * sumWziZi);
71 
72  interceptY = detValY * (- sumWyiXi * sumWyiXiYi + sumWyiXi2 * sumWyiYi);
73  interceptZ = detValZ * (- sumWziXi * sumWziXiZi + sumWziXi2 * sumWziZi);
74 
75  for (const SpacePoint* aHit : measurements) { // chi2 of xy-fit and of xz-fit can be combined by adding their values
76  chi2 += pow(((aHit->getPosition().Y() - slopeY * aHit->getPosition().X() - interceptY) / aHit->getPositionError().Y()) , 2)
77  + pow(((aHit->getPosition().Z() - slopeZ * aHit->getPosition().X() - interceptZ) / aHit->getPositionError().Z()) , 2);
78  }
79  m_results.chiSquared = chi2;
80 
81  //m_results.p = B2Vector3<double>(1, slopeY, slopeZ);
82 
83  return TMath::Prob(chi2, measurements.size() - 1);
84 }
QualityEstimationResults m_results
Result of the quality estimation This is stored as a member variable, because some values may be calc...
SpacePoint typically is build from 1 PXDCluster or 1-2 SVDClusters.
Definition: SpacePoint.h:42
boost::optional< double > chiSquared
chi squared value obtained by the fit of the QE

◆ estimateQualityAndProperties()

virtual QualityEstimationResults estimateQualityAndProperties ( std::vector< SpacePoint const * > const &  measurements)
inlinevirtualinherited

Quality estimation providing additional quantities Calculates quality indicator in range [0,1] Optionally returns chi2 and additional informations.

Eg. momentum estimation.

measurements - std::vector<SpacePoint const*> ordered from innermost to outermost measurement

Reimplemented in QualityEstimatorMC, and QualityEstimatorTripletFit.

Definition at line 70 of file QualityEstimatorBase.h.

◆ setMagneticFieldStrength()

void setMagneticFieldStrength ( double  magneticFieldZ = 1.5)
inlineinherited

Setter for z component of magnetic field.

Parameters
magneticFieldZ: value to set it to

Definition at line 55 of file QualityEstimatorBase.h.

Member Data Documentation

◆ m_results

QualityEstimationResults m_results
protectedinherited

Result of the quality estimation This is stored as a member variable, because some values may be calculated by 'estimateQuality' anyways.

Therefore they don't need to be calculated explicitly in 'estimateQualityAndProperties'.

Definition at line 92 of file QualityEstimatorBase.h.


The documentation for this class was generated from the following files: