FairRoot
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FairRKPropagator.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
15 #ifndef RKPropagator
16 #define RKPropagator
17 #include "FairPropagator.h" // for FairPropagator, PCAOutputStruct
18 
19 #include <Rtypes.h> // for THashConsistencyHolder, ClassDef
20 #include <TVector3.h> // for TVector3
21 #include <iosfwd> // for string
22 class FairField; // lines 20-20
23 class FairTrackParH;
24 class FairTrackParP; // lines 21-21
25 class TBuffer;
26 class TClass;
27 class TMemberInspector;
28 
30 {
35 };
36 
38 {
39  private:
40  FairRKPropagator(const FairRKPropagator&); // Not implemented
41  FairRKPropagator& operator=(const FairRKPropagator&); // Not implemented
42  double fMaxStep;
43  FairField* fMagField;
44 
45  PropagationFlag fPropagationFlag;
46  TVector3 fDefPlaneV0;
47  TVector3 fDefPlaneV1;
48  TVector3 fDefPlaneV2;
49 
50  int fPCAPropagationType;
51  int fPCAPropagationDir;
52  FairTrackParP* fPCAPropagationPar;
53 
54  double GetChargeFromPDG(int pdg);
55  double CalculatePointToWireDistance(TVector3 point, TVector3 wire1, TVector3 wire2, TVector3& vwi);
56 
57  public:
58  double Step(double Charge, double* vecRKIn, double* vecOut);
59  double OneStepRungeKutta(double charge, double step, double* vect, double* vout);
67  void Propagate(double Charge, double* vecRKIn, double* Pos);
68 
78  void PropagateToPlane(double Charge, double* vecRKIn, double* vec1, double* vec2, double* vec3, double* vecOut);
79 
80  /* ===========================================================================================================================================
81  */
82 
86  virtual bool SetDestinationPlane(const TVector3& v0, const TVector3& v1, const TVector3& v2);
87 
91  virtual bool SetOriginPlane(const TVector3& v0, const TVector3& v1);
92 
98  virtual bool SetDestinationVolume(std::string volName, int copyNo, int option);
99 
103  virtual bool SetDestinationLength(float length);
104 
107  virtual bool SetPropagateOnlyParameters() { return true; }
108 
109  virtual bool Propagate(FairTrackParH* TStart, FairTrackParH* TEnd, int PDG);
110  virtual bool Propagate(FairTrackParP* TStart, FairTrackParH* TEnd, int PDG);
111  virtual bool Propagate(FairTrackParP* TStart, FairTrackParP* TEnd, int PDG);
112  virtual bool Propagate(FairTrackParH* TStart, FairTrackParP* TEnd, int PDG);
113  virtual bool Propagate(float* x1, float* p1, float* x2, float* p2, int PDG);
114 
115  virtual bool SetPCAPropagation(int pca, int dir = 1, FairTrackParP* par = nullptr);
116 
117  virtual PCAOutputStruct FindPCA(int PCA,
118  int PDGCode,
119  TVector3 Point,
120  TVector3 Wire1,
121  TVector3 Wire2,
122  double MaxDistance);
123 
124  virtual ~FairRKPropagator();
126 };
127 
128 #endif
virtual bool SetDestinationPlane(const TVector3 &v0, const TVector3 &v1, const TVector3 &v2)
virtual PCAOutputStruct FindPCA(int PCA, int PDGCode, TVector3 Point, TVector3 Wire1, TVector3 Wire2, double MaxDistance)
double Step(double Charge, double *vecRKIn, double *vecOut)
virtual bool SetDestinationVolume(std::string volName, int copyNo, int option)
virtual bool SetPropagateOnlyParameters()
void Propagate(double Charge, double *vecRKIn, double *Pos)
virtual bool SetPCAPropagation(int pca, int dir=1, FairTrackParP *par=nullptr)
ClassDef(FairRKPropagator, 2)
double OneStepRungeKutta(double charge, double step, double *vect, double *vout)
FairMQExParamsParOne * par
virtual bool SetDestinationLength(float length)
virtual bool SetOriginPlane(const TVector3 &v0, const TVector3 &v1)
virtual ~FairRKPropagator()
void PropagateToPlane(double Charge, double *vecRKIn, double *vec1, double *vec2, double *vec3, double *vecOut)
PropagationFlag