X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONTrackExtrap.h;h=0aa630d756fa5025abdf47ba102c36a2ec4f0a62;hb=c36a6b315317eb2a42340ab160ebbde7f9e21e78;hp=4e58af5337b0173dd805ba7d396b8d2cca01a0ff;hpb=c04e32388cbba6774b396bd538800fa5f82e78d9;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONTrackExtrap.h b/MUON/AliMUONTrackExtrap.h index 4e58af5337b..0aa630d756f 100644 --- a/MUON/AliMUONTrackExtrap.h +++ b/MUON/AliMUONTrackExtrap.h @@ -30,26 +30,49 @@ class AliMUONTrackExtrap : public TObject /// set field map static void SetField(const AliMagF* magField) {fgkField = magField;} + static Double_t GetImpactParamFromBendingMomentum(Double_t bendingMomentum); + static Double_t GetBendingMomentumFromImpactParam(Double_t impactParam); + static void ExtrapToZ(AliMUONTrackParam *trackParam, Double_t Z); + static void ExtrapToZCov(AliMUONTrackParam* trackParam, Double_t zEnd); static void ExtrapToStation(AliMUONTrackParam *trackParamIn, Int_t station, AliMUONTrackParam *trackParamOut); - static void ExtrapToVertex(AliMUONTrackParam *trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx); + static void ExtrapToVertexUncorrected(AliMUONTrackParam* trackParam, Double_t zVtx); + static void ExtrapToVertex(AliMUONTrackParam *trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx, + Bool_t CorrectForMCS = kTRUE, Bool_t CorrectForEnergyLoss = kTRUE); + + static Double_t TotalMomentumEnergyLoss(AliMUONTrackParam* trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx); + + static void AddMCSEffect(AliMUONTrackParam *param, Double_t dZ, Double_t x0); static void ExtrapOneStepRungekutta(Double_t charge, Double_t step, Double_t* vect, Double_t* vout); private: - static const AliMagF* fgkField; //!< field map - + static const AliMagF* fgkField; //!< field map + static const Bool_t fgkUseHelix; //!< Tell whether to use Helix or not (default is Runge-Kutta) + static const Int_t fgkMaxStepNumber; //!< Maximum number of steps for track extrapolation + static const Double_t fgkHelixStepLength; //!< Step lenght for track extrapolation (used in Helix) + static const Double_t fgkRungeKuttaMaxResidue;//!< Maximal distance (in Z) to destination to stop the track extrapolation (used in Runge-Kutta) + // Functions + + /// Not implemented AliMUONTrackExtrap(const AliMUONTrackExtrap& trackExtrap); + /// Not implemented AliMUONTrackExtrap& operator=(const AliMUONTrackExtrap& trackExtrap); - static void SetGeant3ParametersFromTrackParam(AliMUONTrackParam* trackParam, Double_t *vGeant3, Double_t forwardBackward); - static void SetTrackParamFromGeant3Parameters(Double_t *vGeant3, Double_t Charge, AliMUONTrackParam* trackParam); + static void ExtrapToZHelix(AliMUONTrackParam *trackParam, Double_t Z); + static void ExtrapToZRungekutta(AliMUONTrackParam *trackParam, Double_t Z); + + static void ConvertTrackParamForExtrap(AliMUONTrackParam* trackParam, Double_t forwardBackward, Double_t *v3); + static void RecoverTrackParam(Double_t *v3, Double_t Charge, AliMUONTrackParam* trackParam); + + static void AddMCSEffectInAbsorber(AliMUONTrackParam* trackParam, Double_t pathLength, Double_t f0, Double_t f1, Double_t f2); + static void GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Double_t trackXYZOut[3], Double_t &pathLength, + Double_t &f0, Double_t &f1, Double_t &f2, Double_t &meanRho); - static void BransonCorrection(AliMUONTrackParam *trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx); - static Double_t TotalMomentumEnergyLoss(Double_t thetaLimit, Double_t pTotal, Double_t theta); - static void FieldCorrection(AliMUONTrackParam *trackParam, Double_t Z); + static Double_t TotalMomentumEnergyLoss(Double_t pTotal, Double_t pathLength, Double_t rho); + static Double_t ApproximateBetheBloch(Double_t beta2); static void ExtrapOneStepHelix(Double_t charge, Double_t step, Double_t *vect, Double_t *vout); static void ExtrapOneStepHelix3(Double_t field, Double_t step, Double_t *vect, Double_t *vout);