New class AliMUONTrackExtrap containing static method for tack extrapolation (Philipp...
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackExtrap.h
1 #ifndef ALIMUONTRACKEXTRAP_H
2 #define ALIMUONTRACKEXTRAP_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*$Id$*/
7 // Revision of includes 07/05/2004
8
9 /// \ingroup rec
10 /// \class AliMUONTrackExtrap
11 /// \brief Track parameters in ALICE dimuon spectrometer
12 ///
13 //////////////////////////////////////////////////////////////
14 /// Tools for track extrapolation in ALICE dimuon spectrometer
15 //////////////////////////////////////////////////////////////
16
17 #include <TObject.h>
18
19 class AliMagF;
20 class AliMUONTrackParam;
21
22 class AliMUONTrackExtrap : public TObject 
23 {
24  public:
25         /// Constructor
26   AliMUONTrackExtrap() : TObject(){};
27         /// Destructor
28   virtual ~AliMUONTrackExtrap(){};
29   
30         /// set field map
31   static void SetField(const AliMagF* magField) {fgkField = magField;}
32   
33   static void ExtrapToZ(AliMUONTrackParam *trackParam, Double_t Z);
34   static void ExtrapToStation(AliMUONTrackParam *trackParamIn, Int_t station, AliMUONTrackParam *trackParamOut);
35   static void ExtrapToVertex(AliMUONTrackParam *trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx);
36   
37   static void ExtrapOneStepRungekutta(Double_t charge, Double_t step, Double_t* vect, Double_t* vout);
38   
39   
40  private:
41   static const AliMagF* fgkField;     //!< field map
42
43   // Functions
44   AliMUONTrackExtrap(const AliMUONTrackExtrap& trackExtrap);
45   AliMUONTrackExtrap& operator=(const AliMUONTrackExtrap& trackExtrap);
46
47   static void SetGeant3ParametersFromTrackParam(AliMUONTrackParam* trackParam, Double_t *vGeant3, Double_t forwardBackward);
48   static void SetTrackParamFromGeant3Parameters(Double_t *vGeant3, Double_t Charge, AliMUONTrackParam* trackParam);
49   
50   static void BransonCorrection(AliMUONTrackParam *trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx);
51   static Double_t TotalMomentumEnergyLoss(Double_t thetaLimit, Double_t pTotal, Double_t theta);
52   static void FieldCorrection(AliMUONTrackParam *trackParam, Double_t Z);
53   
54   static void ExtrapOneStepHelix(Double_t charge, Double_t step, Double_t *vect, Double_t *vout);
55   static void ExtrapOneStepHelix3(Double_t field, Double_t step, Double_t *vect, Double_t *vout);
56
57   static void GetField(Double_t *Position, Double_t *Field);
58   
59   ClassDef(AliMUONTrackExtrap, 0) // Tools for track extrapolation in ALICE dimuon spectrometer
60 };
61         
62 #endif