Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
HelixBase.h
1/*
2 * HalHelixBase.h
3 *
4 * Created on: 30-04-2022
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9#ifndef HALHELIXBASE_H_
10#define HALHELIXBASE_H_
11
12#include <TObject.h>
13#include <TVector3.h>
18namespace Hal {
19 class HelixBase : public TObject {
20 private:
21 static Double_t fgHelixBz;
22 Double_t fX0, fY0, fZ0;
23 Double_t fPhi0, fPhiCos, fPhiSin;
24 Double_t fLambda, fLambdaCos, fLambdaSin;
25 Double_t fCurv;
26 Double_t fXc, fYc;
27 Double_t fH;
28 static Double_t GetBz();
29 Double_t FudgePathLenght(const TVector3& vec) const;
30 Double_t Distance(const TVector3& p, Bool_t scanPeriods = kTRUE) const;
31
32 protected:
44 HelixBase(Double_t x,
45 Double_t y,
46 Double_t z,
47 Double_t px,
48 Double_t py,
49 Double_t pz,
50 Double_t charge,
51 Double_t conversion = 0.);
60 void BasePathLength(Double_t r, Double_t x, Double_t y, Double_t& s1, Double_t& s2) const;
68 void BaseSetParams(const TVector3& x, const TVector3& mom, Double_t charge, Double_t conversion = 0.);
80 void BaseSetParams(Double_t x,
81 Double_t y,
82 Double_t z,
83 Double_t px,
84 Double_t py,
85 Double_t pz,
86 Double_t charge,
87 Double_t conversion = 0);
92 inline Double_t BaseGetXcenter() const { return fXc; };
97 inline Double_t BaseGetYcenter() const { return fYc; };
102 inline Double_t BaseGetStartX() const { return fX0; };
107 inline Double_t BaseGetStartY() const { return fY0; };
112 inline Double_t BaseGetStartZ() const { return fZ0; };
119 Double_t BasePathLength(const TVector3& point, Bool_t scanPeriods = kTRUE) const;
127 Double_t BasePathLength(Double_t x, Double_t y) const;
133 TVector3 BasePosition(Double_t s) const;
138 TVector3 BaseGetStartPoint() const;
143 TVector3 BaseMomentum(Double_t s) const;
151 Int_t BaseIntersection(Double_t R, TVector3& x1, TVector3& x2) const;
152 void BasePrint() const;
159 void BasePathLength(Double_t r, Double_t& s1, Double_t& s2) const;
166 void BaseShift(Double_t x, Double_t y, Double_t z);
173 void BaseFullEval(Double_t s, TVector3& mom, TVector3& pos) const;
174
175 public:
176 HelixBase();
177 HelixBase(const HelixBase& t);
185 HelixBase(const TVector3& x, const TVector3& mom, Double_t charge, Double_t conversion = 0.);
190 inline Double_t GetCurv() const { return fCurv; };
195 inline Double_t GetPhi0() const { return fPhi0; };
200 inline Double_t GetDipAngle() const { return fLambda; };
205 inline Double_t GetH() const { return fH; };
211 HelixBase& operator=(const HelixBase& helix);
218 void PathLengths(const HelixBase& h, Double_t& s1, Double_t& s2) const;
223 static void SetMagField(Double_t Bz);
230 Double_t GetPathAbsMin(Double_t s1, Double_t s2) const;
235 Double_t GetPeriod() const;
240 Double_t GetRotationDirection() const;
245 static Double_t MaxPath() { return 1E+9; };
246 virtual ~HelixBase();
247 ClassDef(HelixBase, 1)
248 };
249} // namespace Hal
250#endif /* HALHELIXBASE_H_ */
Double_t BaseGetStartZ() const
Definition HelixBase.h:112
static Double_t MaxPath()
Definition HelixBase.h:245
Double_t BaseGetYcenter() const
Definition HelixBase.h:97
Double_t GetCurv() const
Definition HelixBase.h:190
Double_t GetRotationDirection() const
Double_t GetPeriod() const
void BaseShift(Double_t x, Double_t y, Double_t z)
Double_t GetH() const
Definition HelixBase.h:205
Int_t BaseIntersection(Double_t R, TVector3 &x1, TVector3 &x2) const
Definition HelixBase.cxx:81
Double_t GetPathAbsMin(Double_t s1, Double_t s2) const
Double_t GetDipAngle() const
Definition HelixBase.h:200
TVector3 BasePosition(Double_t s) const
HelixBase & operator=(const HelixBase &helix)
Double_t BaseGetStartY() const
Definition HelixBase.h:107
TVector3 BaseMomentum(Double_t s) const
void BaseSetParams(const TVector3 &x, const TVector3 &mom, Double_t charge, Double_t conversion=0.)
Double_t BaseGetXcenter() const
Definition HelixBase.h:92
Double_t GetPhi0() const
Definition HelixBase.h:195
Double_t BaseGetStartX() const
Definition HelixBase.h:102
static void SetMagField(Double_t Bz)
void PathLengths(const HelixBase &h, Double_t &s1, Double_t &s2) const
void BasePathLength(Double_t r, Double_t x, Double_t y, Double_t &s1, Double_t &s2) const
TVector3 BaseGetStartPoint() const
void BaseFullEval(Double_t s, TVector3 &mom, TVector3 &pos) const