#ifndef CBMGEANEPRO_H #define CBMGEANEPRO_H 1 #include "TNamed.h" #include "TVector3.h" #include "TGeant3.h" class TGeant3; class TDatabasePDG; class TArrayD; class CbmTrackPar; class CbmTrackParP; class CbmTrackParH; class CbmField; class CbmGeanePro : public TNamed { public: /** Default constructor **/ CbmGeanePro(); /** Destructor **/ ~CbmGeanePro(); /** Propagate particle *@param StartPos Starting position *@param StartPosErr Starting position error *@param StartMom Starting Momentum *@param StartMomErr Starting Momentum error *@param PDGCode PDG code of the particle **/ /** *@param TStart track parameter at starting (Helix) *@param TStart track parameter at end point (Helix) *@param PDG PDG code of particle (Hypothesis) */ Bool_t Propagate(CbmTrackParH *TStart, CbmTrackParH *TEnd, Int_t PDG); /** *@param TStart track parameter at starting (Parabola) *@param TStart track parameter at end point (Helix) *@param PDG PDG code of particle (Hypothesis) */ Bool_t Propagate(CbmTrackParP *TStart, CbmTrackParH *TEnd, Int_t PDG); /** *@param TStart track parameter at starting (Parabola) *@param TStart track parameter at end point (Parabola) *@param PDG PDG code of particle (Hypothesis) */ Bool_t Propagate(CbmTrackParP *TStart, CbmTrackParP *TEnd, Int_t PDG); /** *@param TStart track parameter at starting (Helix) *@param TStart track parameter at end point (Parabola) *@param PDG PDG code of particle (Hypothesis) */ Bool_t Propagate(CbmTrackParH *TStart, CbmTrackParP *TEnd, Int_t PDG); /** Tracking until plane reached *@param v0 vector to a point on the plane *@param v1 first unit vector on the plane *@param v2 second unit vector on the plane **/ Bool_t PropagateToPlane(TVector3 &v0, TVector3 &v1, TVector3 &v2); /** Tracking until plane reached *@param v1 vector to a point on the plane *@param v2 first unit vector on the plane **/ Bool_t PropagateFromPlane(TVector3 &v1, TVector3 &v2); /** Tracking until volume reached *@param VolName Volume name *@param CopyNo Copy number of the volume *@param option =1 prediction when entring in the volume =2 prediction when leaving the volume **/ Bool_t PropagateToVolume(TString VolName, Int_t CopyNo ,Int_t option); /** Tracking until prescribed length reached *@param VolName track length **/ Bool_t PropagateToLength(Float_t length); void Init(CbmTrackPar *TParam); void Propagate(Int_t PDG); private: TGeant3 *gMC3; TString fPropOption; Float_t ein[15]; /** Input error matrix**/ Int_t nepred; /** Number of predictions**/ TDatabasePDG *fdbPDG; Float_t pli[6]; Float_t x2[3]; Float_t p2[3]; TVector3 Pos; TVector3 PosErr; TVector3 Mom; TArrayD *fErrorMat; Ertrio_t *afErtrio; Float_t x1[3]; Float_t p1[3]; Int_t GeantCode; CbmTrackParH *fTrkParH; CbmTrackParP *fTrkParP; CbmTrackPar *fTrkPar; Int_t ProMode; CbmField *fField; Float_t plo[12]; TString VName; Int_t VCopyNo; Bool_t VEnter; ClassDef(CbmGeanePro,1); }; #endif