Belle II Software  release-05-01-25
Fitter3DUtility.h
1 #ifndef FITTER3DUTILITY_H
2 #define FITTER3DUTILITY_H
3 
4 #include <TVectorD.h>
5 #include <TLorentzVector.h>
6 #include <TVector3.h>
7 #include <TVector2.h>
8 #include <map>
9 #include <string>
10 
11 namespace Belle2 {
16  class TRGCDCJSignal;
17  class TRGCDCJSignalData;
18  class TRGCDCJLUT;
20 };
21 
22 
25 
26 public:
27 
29  static int findSign(double* phi2);
30 
32  static void rPhiFit(double* rr, double* phi2, double* phierror, double& rho, double& myphi0);
33 
35  static void rPhiFitter(double* rr, double* phi2, double* invphierror, double& rho, double& myphi0);
36 
38  static void rPhiFitter(double* rr, double* phi2, double* invphierror, double& rho, double& myphi0, double& chi2);
39 
41  static void chargeFinder(double* nTSs, double* tsIds, double* tsHitmap, double phi0, double inCharge, double& outCharge);
42 
44  static void rPhiFit2(double* rr, double* phi2, double* phierror, double& rho, double& myphi0, int nTS);
45 
47  static unsigned toUnsignedTdc(int tdc, int nBits);
48 
50  static double calPhi(double wirePhi, double driftLength, double rr, int lr);
51 
53  static double calPhi(double wirePhi, double driftTime, double eventTime, double rr, int lr);
54 
56  static double calPhi(int localId, int nWires, double driftTime, double eventTime, double rr, int lr);
57 
59  static void calPhi(std::map<std::string, double> const& mConstD, std::map<std::string, std::vector<double> > const& mConstV,
60  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage, std::map<std::string, Belle2::TRGCDCJLUT* >& mLutStorage);
61 
63  static void saveStereoXt(std::vector<std::vector<double> >& stXts, std::string const& filePrefix);
64 
66  static void loadStereoXt(std::string const& filePrefix, int nFiles, std::vector<std::vector<double> >& stXts);
67 
69  static double stereoIdToPhi(std::vector<double>& stNWires, int iSt, int id);
70 
72  static void calPhiFast(std::map<std::string, std::vector<double> >& stGeometry, std::vector<std::vector<double> > const& stXts,
73  int eventTimeValid, int eventTime, std::vector<std::vector<int> > const& rawStTSs, std::vector<double>& stTSs);
74 
76  static double rotatePhi(double value, double refPhi);
77 
79  static double rotatePhi(double value, int refId, int nTSs);
80 
82  static int rotateTsId(int value, int refId, int nTSs);
83 
85  static int findQuadrant(double value);
86 
88  static void setErrorFast(std::vector<std::vector<int> > const& rawStTSs, int eventTimeValid, std::vector<double>& invZError2);
89 
91  static void setError(std::map<std::string, double> const& mConstD, std::map<std::string, std::vector<double> > const& mConstV,
92  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage);
93 
95  static double calStAxPhi(int charge, double anglest, double ztostraw, double rr, double rho, double phi0);
96 
98  static double calDeltaPhi(int charge, double anglest, double ztostraw, double rr, double phi, double rho, double phi0);
99 
101  static void constrainRPerStSl(std::map<std::string, std::vector<double> > const& mConstV,
102  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage);
103 
105  static double calZ(int charge, double anglest, double ztostraw, double rr, double phi, double rho, double phi0);
106 
108  static void calZ(std::map<std::string, double> const& mConstD, std::map<std::string, std::vector<double> > const& mConstV,
109  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage, std::map<std::string, Belle2::TRGCDCJLUT* >& mLutStorage);
110 
112  static double calS(double rho, double rr);
113 
115  static void calS(std::map<std::string, double> const& mConstD, std::map<std::string, std::vector<double> > const& mConstV,
116  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage, std::map<std::string, Belle2::TRGCDCJLUT* >& mLutStorage);
117 
119  static double calIZError2(int lr, double driftZError, double wireZError);
120 
122  static double calDen(double* arcS, double* zError);
123 
125  static double calDenWithIZError(double* arcS, double* iZError);
126 
129  static void rSFit(double* iezz2, double* arcS, double* zz, double& z0, double& cot, double& zchi2);
130 
132  static void rSFit2(double* iezz21, double* iezz22, double* arcS, double* zz, int* lutv, double& z0, double& cot, double& zchi2);
133 
135  static void rSFit(std::map<std::string, double> const& mConstD, std::map<std::string, std::vector<double> > const& mConstV,
136  std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage, std::map<std::string, Belle2::TRGCDCJLUT* >& mLutStorage);
137 
139  static void fitter3D(std::map<std::string, std::vector<double> >& stGeometry, std::vector<std::vector<double> > const& stXts,
140  int eventTimeValid, int eventTime,
141  std::vector<std::vector<int> > const& rawStTSs,
142  int charge, double radius, double phi_c, double& z0, double& cot, double& chi2);
144  static void fitter3D(std::map<std::string, std::vector<double> >& stGeometry, std::vector<std::vector<double> > const& stXts,
145  int eventTimeValid, int eventTime,
146  std::vector<std::vector<int> > const& rawStTSs,
147  int charge, double radius, double phi_c, double& z0, double& cot, double& chi2,
148  std::vector<double>& arcS, std::vector<double>& zz, std::vector<double>& invZError2);
149 
151  static void fitter3DFirm(std::map<std::string, double>& mConstD, std::map<std::string, std::vector<double> >& mConstV,
152  int eventTimeValid, int eventTime,
153  std::vector<std::vector<int> > const& rawStTSs,
154  int charge, double radius, double phi_c,
155  Belle2::TRGCDCJSignalData* commonData, std::map<std::string, Belle2::TRGCDCJSignal>& mSignalStorage,
156  std::map<std::string, Belle2::TRGCDCJLUT*>& mLutStorage);
157 
158 
161  static void findImpactPosition(TVector3* mcPosition, TLorentzVector* mcMomentum, int charge, TVector2& helixCenter,
162  TVector3& impactPosition);
163 
166  static void calHelixParameters(TVector3 position, TVector3 momentum, int charge, TVectorD& helixParameters);
167 
169  static void calVectorsAtR(TVectorD& helixParameters, int charge, double radius, TVector3& position, TVector3& momentum);
170 
172 
175  static int bitSize(int numberBits, int mode);
176 
178  static void changeInteger(int& integer, double real, double minValue, double maxValue, int bitSize);
179 
181  static void changeReal(double& real, int integer, double minValue, double maxValue, int bitSize);
182 
184  static void findExtreme(double& m_max, double& m_min, double value);
185 };
186 
187 #endif
Fitter3DUtility::fitter3DFirm
static void fitter3DFirm(std::map< std::string, double > &mConstD, std::map< std::string, std::vector< double > > &mConstV, int eventTimeValid, int eventTime, std::vector< std::vector< int > > const &rawStTSs, int charge, double radius, double phi_c, Belle2::TRGCDCJSignalData *commonData, std::map< std::string, Belle2::TRGCDCJSignal > &mSignalStorage, std::map< std::string, Belle2::TRGCDCJLUT * > &mLutStorage)
Combines several functions for fitter3D firmware.
Definition: Fitter3DUtility.cc:1879
Fitter3DUtility::findImpactPosition
static void findImpactPosition(TVector3 *mcPosition, TLorentzVector *mcMomentum, int charge, TVector2 &helixCenter, TVector3 &impactPosition)
MC calculation functions Calculates the impact position of track.
Definition: Fitter3DUtility.cc:1924
Fitter3DUtility::fitter3D
static void fitter3D(std::map< std::string, std::vector< double > > &stGeometry, std::vector< std::vector< double > > const &stXts, int eventTimeValid, int eventTime, std::vector< std::vector< int > > const &rawStTSs, int charge, double radius, double phi_c, double &z0, double &cot, double &chi2)
Combines several functions for fitter3D.
Definition: Fitter3DUtility.cc:1845
Fitter3DUtility::toUnsignedTdc
static unsigned toUnsignedTdc(int tdc, int nBits)
Changes tdc and event time to unsigned value that has # bits.
Definition: Fitter3DUtility.cc:226
Fitter3DUtility::calDeltaPhi
static double calDeltaPhi(int charge, double anglest, double ztostraw, double rr, double phi, double rho, double phi0)
Calculates the phi difference between fitted axial phi and stereo phi.
Definition: Fitter3DUtility.cc:808
Fitter3DUtility::calVectorsAtR
static void calVectorsAtR(TVectorD &helixParameters, int charge, double radius, TVector3 &position, TVector3 &momentum)
Calculates position and momentum at a certain radius.
Definition: Fitter3DUtility.cc:1968
Fitter3DUtility::changeInteger
static void changeInteger(int &integer, double real, double minValue, double maxValue, int bitSize)
Changes float to integer value.
Definition: Fitter3DUtility.cc:2002
Fitter3DUtility::findExtreme
static void findExtreme(double &m_max, double &m_min, double value)
Finds maximum and minium values.
Definition: Fitter3DUtility.cc:2028
Fitter3DUtility::calDen
static double calDen(double *arcS, double *zError)
Calculates the denominator for fitting z and arc s.
Definition: Fitter3DUtility.cc:1281
Fitter3DUtility
A class that holds functions for 3D tracking.
Definition: Fitter3DUtility.h:24
Fitter3DUtility::rPhiFit2
static void rPhiFit2(double *rr, double *phi2, double *phierror, double &rho, double &myphi0, int nTS)
A circle fitter.
Definition: Fitter3DUtility.cc:178
Fitter3DUtility::setError
static void setError(std::map< std::string, double > const &mConstD, std::map< std::string, std::vector< double > > const &mConstV, std::map< std::string, Belle2::TRGCDCJSignal > &mSignalStorage)
Sets error using JSignal class.
Definition: Fitter3DUtility.cc:683
Fitter3DUtility::calZ
static double calZ(int charge, double anglest, double ztostraw, double rr, double phi, double rho, double phi0)
Calculates z.
Definition: Fitter3DUtility.cc:896
Belle2::TRGCDCJSignalData
A class to hold common data for JSignals.
Definition: JSignalData.h:34
Fitter3DUtility::rotateTsId
static int rotateTsId(int value, int refId, int nTSs)
Rotates to range [0, nTSs-1].
Definition: Fitter3DUtility.cc:630
Fitter3DUtility::rPhiFitter
static void rPhiFitter(double *rr, double *phi2, double *invphierror, double &rho, double &myphi0)
A circle fitter with invPhiError without fit chi2 output.
Definition: Fitter3DUtility.cc:69
Fitter3DUtility::calPhi
static double calPhi(double wirePhi, double driftLength, double rr, int lr)
Pre 3D fitter functions. rr is in cm scale. driftLength is in cm scale.
Definition: Fitter3DUtility.cc:239
Fitter3DUtility::bitSize
static int bitSize(int numberBits, int mode)
Firmware convert functions.
Definition: Fitter3DUtility.cc:1986
Fitter3DUtility::calS
static double calS(double rho, double rr)
Calculates arc length.
Definition: Fitter3DUtility.cc:1209
Fitter3DUtility::constrainRPerStSl
static void constrainRPerStSl(std::map< std::string, std::vector< double > > const &mConstV, std::map< std::string, Belle2::TRGCDCJSignal > &mSignalStorage)
Constrains R for each SL differently using JSignal and multiple constants.
Definition: Fitter3DUtility.cc:829
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Fitter3DUtility::calDenWithIZError
static double calDenWithIZError(double *arcS, double *iZError)
Calculates the denominator for fitting z and arc s.
Definition: Fitter3DUtility.cc:1294
Fitter3DUtility::stereoIdToPhi
static double stereoIdToPhi(std::vector< double > &stNWires, int iSt, int id)
Converts stereo ts id to phi.
Definition: Fitter3DUtility.cc:576
Fitter3DUtility::changeReal
static void changeReal(double &real, int integer, double minValue, double maxValue, int bitSize)
Changes integer to float value.
Definition: Fitter3DUtility.cc:2015
Fitter3DUtility::setErrorFast
static void setErrorFast(std::vector< std::vector< int > > const &rawStTSs, int eventTimeValid, std::vector< double > &invZError2)
Sets error for fitting.
Definition: Fitter3DUtility.cc:665
Fitter3DUtility::calPhiFast
static void calPhiFast(std::map< std::string, std::vector< double > > &stGeometry, std::vector< std::vector< double > > const &stXts, int eventTimeValid, int eventTime, std::vector< std::vector< int > > const &rawStTSs, std::vector< double > &stTSs)
Calculates phi with fast simulation.
Definition: Fitter3DUtility.cc:583
Fitter3DUtility::rSFit2
static void rSFit2(double *iezz21, double *iezz22, double *arcS, double *zz, int *lutv, double &z0, double &cot, double &zchi2)
Fits z and arc S. (Will be deprecated.)
Definition: Fitter3DUtility.cc:1348
Fitter3DUtility::findQuadrant
static int findQuadrant(double value)
Finds quadrant of angle. Angle is in rad.
Definition: Fitter3DUtility.cc:642
Fitter3DUtility::rPhiFit
static void rPhiFit(double *rr, double *phi2, double *phierror, double &rho, double &myphi0)
A circle fitter.
Definition: Fitter3DUtility.cc:57
Fitter3DUtility::saveStereoXt
static void saveStereoXt(std::vector< std::vector< double > > &stXts, std::string const &filePrefix)
Saves stereo Xt to file.
Definition: Fitter3DUtility.cc:543
Fitter3DUtility::chargeFinder
static void chargeFinder(double *nTSs, double *tsIds, double *tsHitmap, double phi0, double inCharge, double &outCharge)
Charge finder using circle fitter output and axial TSs.
Definition: Fitter3DUtility.cc:140
Fitter3DUtility::rSFit
static void rSFit(double *iezz2, double *arcS, double *zz, double &z0, double &cot, double &zchi2)
3D fitter functions Fits z and arc S.
Definition: Fitter3DUtility.cc:1308
Fitter3DUtility::calHelixParameters
static void calHelixParameters(TVector3 position, TVector3 momentum, int charge, TVectorD &helixParameters)
HelixParameters: dR, phi0, keppa, dz, tanLambda Calculates the helix parameters of track.
Definition: Fitter3DUtility.cc:1950
Fitter3DUtility::calStAxPhi
static double calStAxPhi(int charge, double anglest, double ztostraw, double rr, double rho, double phi0)
Calculates the fitted axial phi for the stereo super layer.
Definition: Fitter3DUtility.cc:787
Fitter3DUtility::calIZError2
static double calIZError2(int lr, double driftZError, double wireZError)
Chooses and calculates inverse z error.
Fitter3DUtility::findSign
static int findSign(double *phi2)
2D fitter functions
Definition: Fitter3DUtility.cc:36
Fitter3DUtility::loadStereoXt
static void loadStereoXt(std::string const &filePrefix, int nFiles, std::vector< std::vector< double > > &stXts)
Load stereo Xt file.
Definition: Fitter3DUtility.cc:557
Fitter3DUtility::rotatePhi
static double rotatePhi(double value, double refPhi)
Rotates to range [-pi, pi].
Definition: Fitter3DUtility.cc:609