LCOV - code coverage report
Current view: top level - ITSMFT/MFT/MFTrec - AliMFTTrackExtrap.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 4 25.0 %
Date: 2016-06-14 17:26:59 Functions: 1 11 9.1 %

          Line data    Source code
       1             : #ifndef AliMFTTrackExtrap_H
       2             : #define AliMFTTrackExtrap_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 AliMFTTrackExtrap
      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             : #include <TMatrixD.h>
      19             : 
      20             : class AliMagF;
      21             : class AliMFTTrackParam;
      22             : 
      23             : class AliMFTTrackExtrap : public TObject 
      24             : {
      25             :  public:
      26             :         /// Constructor
      27           0 :   AliMFTTrackExtrap() : TObject(){};
      28             :         /// Destructor
      29           0 :   virtual ~AliMFTTrackExtrap(){};
      30             :   
      31             :   static void SetField();
      32             :   
      33             :   /// return kTRUE if the field is switched ON
      34           0 :   static Bool_t IsFieldON() {return fgFieldON;}
      35             :   
      36             :   static Double_t GetImpactParamFromBendingMomentum(Double_t bendingMomentum);
      37             :   static Double_t GetBendingMomentumFromImpactParam(Double_t impactParam);
      38             :   
      39             :   // Linearly extrapolate track parameters
      40             :   static void LinearExtrapToZ(AliMFTTrackParam* trackParam, Double_t zEnd);
      41             :   
      42             :   // Linearly extrapolate track parameters and covariances
      43             :   static void LinearExtrapToZCov(AliMFTTrackParam* trackParam, Double_t zEnd, Bool_t updatePropagator = kFALSE);
      44             :   
      45             :   // Extrapolate track parameters in magnetic field
      46             :   static Bool_t ExtrapToZ(AliMFTTrackParam *trackParam, Double_t zEnd);
      47             :   
      48             :   // Extrapolate track parameters and covariances in magnetic field
      49             :   static Bool_t ExtrapToZCov(AliMFTTrackParam* trackParam, Double_t zEnd, Bool_t updatePropagator = kFALSE);
      50             :   
      51             :   // Extrapolate track parameters to vertex, corrected for multiple scattering and energy loss effects
      52             :   // Add branson correction resolution and energy loss fluctuation to parameter covariances
      53             :   static void ExtrapToVertex(AliMFTTrackParam* trackParam,
      54             :                              Double_t xVtx, Double_t yVtx, Double_t zVtx,
      55             :                              Double_t errXVtx, Double_t errYVtx);
      56             :   
      57             :   // Extrapolate track parameters to vertex, corrected for multiple scattering effects only
      58             :   // Add branson correction resolution to parameter covariances
      59             :   static void ExtrapToVertexWithoutELoss(AliMFTTrackParam* trackParam,
      60             :                                          Double_t xVtx, Double_t yVtx, Double_t zVtx,
      61             :                                          Double_t errXVtx, Double_t errYVtx);
      62             :   
      63             :   // Extrapolate track parameters to vertex, corrected for energy loss effects only
      64             :   // Add dispersion due to multiple scattering and energy loss fluctuation to parameter covariances
      65             :   static void ExtrapToVertexWithoutBranson(AliMFTTrackParam* trackParam, Double_t zVtx);
      66             :   
      67             :   // Extrapolate track parameters to vertex without multiple scattering and energy loss corrections
      68             :   // Add dispersion due to multiple scattering to parameter covariances
      69             :   static void ExtrapToVertexUncorrected(AliMFTTrackParam* trackParam, Double_t zVtx);
      70             :   
      71             :   static Double_t TotalMomentumEnergyLoss(AliMFTTrackParam* trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx);
      72             :   
      73             :   static Double_t GetMCSAngle2(const AliMFTTrackParam& param, Double_t dZ, Double_t x0);
      74             :   static void     AddMCSEffect(AliMFTTrackParam *param, Double_t dZ, Double_t x0);
      75             :   
      76             :   static Bool_t ExtrapOneStepRungekutta(Double_t charge, Double_t step, const Double_t* vect, Double_t* vout);
      77             :   
      78             :         static Double_t LinearRegression(Int_t nVal, Double_t *xVal, Double_t *yVal, Double_t &p0, Double_t &p1);
      79             :         static Double_t Sagitta(Int_t nVal, Double_t *xVal, Double_t *yVal, Double_t &distL, Double_t &q2);
      80             :         static Double_t QuadraticRegression(Int_t nVal, Double_t *xVal, Double_t *yVal, Double_t &p0, Double_t &p1, Double_t &p2);
      81             :         static Double_t CircleRegression(Int_t nVal, Double_t *xVal, Double_t *yVal);
      82             : 
      83             :  private:
      84             :   static const Double_t fgkSimpleBPosition;     //!<! position of the dipole
      85             :   static const Double_t fgkSimpleBLength;       //!<! length of the dipole
      86             :   static       Double_t fgSimpleBValue;         //!<! magnetic field value at the centre
      87             :   static       Bool_t   fgFieldON;              //!<! kTRUE if the field is switched ON
      88             :   static const Bool_t   fgkUseHelix;            //!<! Tell whether to use Helix or not (default is Runge-Kutta)
      89             :   static const Int_t    fgkMaxStepNumber;       //!<! Maximum number of steps for track extrapolation
      90             :   static const Double_t fgkHelixStepLength;     //!<! Step lenght for track extrapolation (used in Helix)
      91             :   static const Double_t fgkRungeKuttaMaxResidue;//!<! Maximal distance (in Z) to destination to stop the track extrapolation (used in Runge-Kutta)
      92             :   
      93             :   // Functions
      94             : 
      95             :   /// Not implemented
      96             :   AliMFTTrackExtrap(const AliMFTTrackExtrap& trackExtrap);
      97             :   /// Not implemented
      98             :   AliMFTTrackExtrap& operator=(const AliMFTTrackExtrap& trackExtrap);
      99             : 
     100             :   static Bool_t ExtrapToZHelix(AliMFTTrackParam *trackParam, Double_t Z);
     101             :   static Bool_t ExtrapToZRungekutta(AliMFTTrackParam *trackParam, Double_t Z);
     102             :   
     103             :   static void ConvertTrackParamForExtrap(AliMFTTrackParam* trackParam, Double_t forwardBackward, Double_t *v3);
     104             :   static void RecoverTrackParam(Double_t *v3, Double_t Charge, AliMFTTrackParam* trackParam);
     105             :   
     106             :   static void ExtrapToVertex(AliMFTTrackParam* trackParam,
     107             :                              Double_t xVtx, Double_t yVtx, Double_t zVtx,
     108             :                              Double_t errXVtx, Double_t errYVtx,
     109             :                              Bool_t correctForMCS, Bool_t correctForEnergyLoss);
     110             :   
     111             :   static void AddMCSEffectInAbsorber(AliMFTTrackParam* trackParam, Double_t signedPathLength, Double_t f0, Double_t f1, Double_t f2);
     112             :   static void CorrectMCSEffectInAbsorber(AliMFTTrackParam* param,
     113             :                                          Double_t xVtx, Double_t yVtx, Double_t zVtx,
     114             :                                          Double_t errXVtx, Double_t errYVtx,
     115             :                                          Double_t absZBeg, Double_t pathLength, Double_t f0, Double_t f1, Double_t f2);
     116             :   static void CorrectELossEffectInAbsorber(AliMFTTrackParam* param, Double_t eLoss, Double_t sigmaELoss2);
     117             :   static Bool_t GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Double_t trackXYZOut[3], Double_t pTotal,
     118             :                                            Double_t &pathLength, Double_t &f0, Double_t &f1, Double_t &f2,
     119             :                                            Double_t &meanRho, Double_t &totalELoss, Double_t &sigmaELoss2);
     120             :   
     121             :   static Double_t BetheBloch(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZ, Double_t atomicZoverA);
     122             :   static Double_t EnergyLossFluctuation(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA);
     123             :   
     124             :   static void Cov2CovP(const TMatrixD &param, TMatrixD &cov);
     125             :   static void CovP2Cov(const TMatrixD &param, TMatrixD &cov);
     126             :   
     127             :   static void ExtrapOneStepHelix(Double_t charge, Double_t step, const Double_t *vect, Double_t *vout);
     128             :   static void ExtrapOneStepHelix3(Double_t field, Double_t step, const Double_t *vect, Double_t *vout);
     129             :   
     130          12 :   ClassDef(AliMFTTrackExtrap, 0) // Tools for track extrapolation in ALICE dimuon spectrometer
     131             : };
     132             :         
     133             : #endif

Generated by: LCOV version 1.11