PandaRoot
PndTrkLegendreFits.h
Go to the documentation of this file.
1 #ifndef PndTrkLegendreFits_H
2 #define PndTrkLegendreFits_H 1
3 
4 // Root includes
5 #include "TROOT.h"
6 
7 class PndTrkLegendreFits : public TObject {
8 
9  private:
10  int fIcounter;
11 
12  int fNThetaDiv, fNRDiv;
13 
14  Double_t fDeltaT, fRMin, fThetaMax, fThetaMin;
15 
16  public:
19 
22 
23  int FindMaximumInMatrix(int nRDiv, // input, n. division in the R axis;
24  int nThetaD, // input n. division in the Theta axis;
25  UShort_t *Mat, // input Matrix of dimensions [fNRDiv][fNThetaDiv] of
26  // which the Maximum has to be searched;
27 
28  int *iRMax, // output, bin in R of the location of the Maximum;
29  int *iTMax // output, bin in Theta of the location of the Maximum;
30  );
31 
32  Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal,
33  Double_t rotationangle, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma,
34  bool *Type, int istampa, int IVOLTE);
35 
36  Short_t FitHelixCylinder2(Double_t *Cosine,
37  Short_t LEGIANDRE_NTHETADIV, // input, the theta divisions;
38  Short_t LEGIANDRE_NRADIUSDIV, // input, the theta divisions;
39  Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal,
40  Double_t rotationangle, Double_t *Sinus, Double_t THETAMAX, Double_t THETAMIN, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q,
41  Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE);
42 
43  Short_t
44  FitSZspace(Short_t nHitsinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t *ErrorDriftRadius, Double_t FInot, Short_t NMAX, Double_t *emme, int PlotNumber);
45 
46  int LoadMatrix_FindMaximum(Short_t nHitsinTrack, // input
47  Double_t *X, // X position (in conformal or SZ or whatever);
48  Double_t *Y, // Y position (in conformal or SZ or whatever);
49  Double_t *DriftRadius, // negative if Mvd hit or similar;
50  Double_t *ErrorDriftRadiusconformal, // for the Mvd this is the Radius of the circumference
51  // translated with the Conformal transformation,
52  // which is, in the XY space : a) centered on the Pixel
53  // or Strip; with radius = 0.01 cm --> therefore encompassing
54  // completely the Pixel or Stip hit.
55 
56  Double_t *Rout, // output parameter of the straight line; Xcos(Theta)+Y*sin(Theta)=R;
57  Double_t *Thetaout // output parameter of the straight line; Xcos(Theta)+Y*sin(Theta)=R;
58  );
59 
60  void LoadMatrix_FindMaximum2(Double_t *Cosine, // input, the precalculated values of cosine;
61  Short_t LEGIANDRE_NTHETADIV, // input, the theta divisions;
62  Short_t LEGIANDRE_NRADIUSDIV, // input, the theta divisions;
63  Short_t nHitsinTrack, // input
64  Double_t *Sinus, // input, the precalculated values of sinus;
65  Double_t THETAMAX, // input, maximum of Theta range (usually 2PI radians);
66  Double_t THETAMIN, // input, minimum of Theta range (usually 0 radians);
67  Double_t *X, // X position (in conformal or SZ or whatever);
68  Double_t *Y, // Y position (in conformal or SZ or whatever);
69  Double_t *DriftRadius, // negative if Mvd hit or similar;
70  Double_t *ErrorDriftRadiusconformal, // for the Mvd this is the Radius of the circumference
71  // translated with the Conformal transformation,
72  // which is, in the XY space : a) centered on the Pixel
73  // or Strip; with radius = 0.01 cm --> therefore encompassing
74  // completely the Pixel or Stip hit.
75 
76  Double_t *Rout, // output parameter of the straight line; Xcos(Theta)+Y*sin(Theta)=R;
77  Double_t *Thetaout // output parameter of the straight line; Xcos(Theta)+Y*sin(Theta)=R;
78  );
79 
81 };
82 
83 #endif
Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, Double_t rotationangle, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
__m128 m
Definition: P4_F32vec4.h:26
Short_t FitHelixCylinder2(Double_t *Cosine, Short_t LEGIANDRE_NTHETADIV, Short_t LEGIANDRE_NRADIUSDIV, Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, Double_t rotationangle, Double_t *Sinus, Double_t THETAMAX, Double_t THETAMIN, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
void LoadMatrix_FindMaximum2(Double_t *Cosine, Short_t LEGIANDRE_NTHETADIV, Short_t LEGIANDRE_NRADIUSDIV, Short_t nHitsinTrack, Double_t *Sinus, Double_t THETAMAX, Double_t THETAMIN, Double_t *X, Double_t *Y, Double_t *DriftRadius, Double_t *ErrorDriftRadiusconformal, Double_t *Rout, Double_t *Thetaout)
ClassDef(PndTrkLegendreFits, 1)
int LoadMatrix_FindMaximum(Short_t nHitsinTrack, Double_t *X, Double_t *Y, Double_t *DriftRadius, Double_t *ErrorDriftRadiusconformal, Double_t *Rout, Double_t *Thetaout)
int FindMaximumInMatrix(int nRDiv, int nThetaD, UShort_t *Mat, int *iRMax, int *iTMax)
Short_t FitSZspace(Short_t nHitsinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t *ErrorDriftRadius, Double_t FInot, Short_t NMAX, Double_t *emme, int PlotNumber)