X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONTrackParam.h;h=bbf082efdf192b659c8c6bfc57bf3f4d058b5052;hb=ad693bc11ae21c779abc0d61383c0268e4f98214;hp=878c49ceec1977554fba43d2bea12d38178ccbd1;hpb=6464217e9cb563b9fc37cdae477bac161ccf135f;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONTrackParam.h b/MUON/AliMUONTrackParam.h index 878c49ceec1..bbf082efdf1 100644 --- a/MUON/AliMUONTrackParam.h +++ b/MUON/AliMUONTrackParam.h @@ -15,67 +15,97 @@ //////////////////////////////////////////////////// #include +#include +#include "AliMUONHitForRec.h" + +class AliESDMuonTrack; class AliMUONTrackParam : public TObject { public: AliMUONTrackParam(); // Constructor - virtual ~AliMUONTrackParam(){} // Destructor + virtual ~AliMUONTrackParam(); // Destructor - AliMUONTrackParam(const AliMUONTrackParam& rhs);// copy constructor (should be added per default !) - AliMUONTrackParam& operator=(const AliMUONTrackParam& rhs);// (should be added per default !) + AliMUONTrackParam(const AliMUONTrackParam& theMUONTrackParam); + AliMUONTrackParam& operator=(const AliMUONTrackParam& theMUONTrackParam); + + void GetParamFrom(const AliESDMuonTrack& esdMuonTrack); + void SetParamFor(AliESDMuonTrack& esdMuonTrack); + // Get and Set methods for data + /// return inverse bending momentum (GeV/c ** -1) times the charge (assumed forward motion) Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;} - void SetInverseBendingMomentum(Double_t InverseBendingMomentum) {fInverseBendingMomentum = InverseBendingMomentum;} + /// set inverse bending momentum (GeV/c ** -1) times the charge (assumed forward motion) + void SetInverseBendingMomentum(Double_t inverseBendingMomentum) {fInverseBendingMomentum = inverseBendingMomentum;} + /// return bending slope (cm ** -1) Double_t GetBendingSlope(void) const {return fBendingSlope;} - void SetBendingSlope(Double_t BendingSlope) {fBendingSlope = BendingSlope;} + /// set bending slope (cm ** -1) + void SetBendingSlope(Double_t bendingSlope) {fBendingSlope = bendingSlope;} + /// return non bending slope (cm ** -1) Double_t GetNonBendingSlope(void) const {return fNonBendingSlope;} - void SetNonBendingSlope(Double_t NonBendingSlope) {fNonBendingSlope = NonBendingSlope;} + /// set non bending slope (cm ** -1) + void SetNonBendingSlope(Double_t nonBendingSlope) {fNonBendingSlope = nonBendingSlope;} + /// return Z coordinate (cm) Double_t GetZ(void) const {return fZ;} - void SetZ(Double_t Z) {fZ = Z;} + /// set Z coordinate (cm) + void SetZ(Double_t z) {fZ = z;} + /// return bending coordinate (cm) Double_t GetBendingCoor(void) const {return fBendingCoor;} - void SetBendingCoor(Double_t BendingCoor) {fBendingCoor = BendingCoor;} + /// set bending coordinate (cm) + void SetBendingCoor(Double_t bendingCoor) {fBendingCoor = bendingCoor;} + /// return non bending coordinate (cm) Double_t GetNonBendingCoor(void) const {return fNonBendingCoor;} - void SetNonBendingCoor(Double_t NonBendingCoor) {fNonBendingCoor = NonBendingCoor;} + /// set non bending coordinate (cm) + void SetNonBendingCoor(Double_t nonBendingCoor) {fNonBendingCoor = nonBendingCoor;} + + void SetTrackParam(AliMUONTrackParam& theMUONTrackParam); + + AliMUONHitForRec* GetHitForRecPtr(void) const; + /// set pointeur to associated HitForRec + void SetHitForRecPtr(AliMUONHitForRec* hitForRec) {fHitForRecPtr = hitForRec;} + Double_t Px() const; // return px Double_t Py() const; // return py Double_t Pz() const; // return pz Double_t P() const; // return total momentum - void ExtrapToZ(Double_t Z); - void ExtrapToStation(Int_t Station, AliMUONTrackParam *TrackParam); - void ExtrapToVertex(Double_t xVtx, Double_t yVtx, Double_t zVtx); // extrapolation to vertex through the absorber (with true vertex) - void BransonCorrection(Double_t xVtx, Double_t yVtx, Double_t zVtx); // makes Branson correction with true vertex - // returns total momentum after energy loss correction in the absorber - Double_t TotalMomentumEnergyLoss(Double_t thetaLimit, Double_t pTotal, Double_t theta); - void FieldCorrection(Double_t Z); // makes simple magnetic field correction through the absorber + /// return kTRUE if the covariance matrix exist, kFALSE if not + Bool_t CovariancesExist(void) {return (fCovariances) ? kTRUE : kFALSE;} + TMatrixD* GetCovariances(void); + void SetCovariances(TMatrixD* covariances); + void SetCovariances(Double_t matrix[5][5]); + void SetVariances(Double_t matrix[5][5]); + void DeleteCovariances(void); + + void EvalCovariances(AliMUONHitForRec* hit2); - void ExtrapOneStepHelix(Double_t charge, Double_t step, - Double_t *vect, Double_t *vout) const; - void ExtrapOneStepHelix3(Double_t field, Double_t step, - Double_t *vect, Double_t *vout) const; + /// necessary for sorting TClonesArray of TrackHit's + Bool_t IsSortable () const {return kTRUE;} + Int_t Compare(const TObject* trackParam) const; - void ExtrapOneStepRungekutta(Double_t charge, Double_t step, - Double_t* vect, Double_t* vout) const; - - - virtual void Print(Option_t* opt="") const; + virtual void Print(Option_t* opt="") const; + - protected: private: - Double_t fInverseBendingMomentum; ///< Inverse bending momentum (GeV/c ** -1) times the charge (assumed forward motion) - Double_t fBendingSlope; ///< Bending slope (cm ** -1) + // Parameters + Double_t fNonBendingCoor; ///< Non bending coordinate (cm) Double_t fNonBendingSlope; ///< Non bending slope (cm ** -1) + Double_t fBendingCoor; ///< Bending coordinate (cm) + Double_t fBendingSlope; ///< Bending slope (cm ** -1) + Double_t fInverseBendingMomentum; ///< Inverse bending momentum (GeV/c ** -1) times the charge (assumed forward motion) Double_t fZ; ///< Z coordinate (cm) - Double_t fBendingCoor; ///< bending coordinate (cm) - Double_t fNonBendingCoor; ///< non bending coordinate (cm) - - void SetGeant3Parameters(Double_t *VGeant3, Double_t ForwardBackward); - void GetFromGeant3Parameters(Double_t *VGeant3, Double_t Charge); - - void GetField(Double_t *Position, Double_t *Field) const; - - ClassDef(AliMUONTrackParam, 1) // Track parameters in ALICE dimuon spectrometer - }; + + /// Covariance matrix of track parameters, ordered as follow: + /// + /// + /// + /// + /// + TMatrixD *fCovariances; //! + + AliMUONHitForRec *fHitForRecPtr; //!< Pointer to associated HitForRec if any + + ClassDef(AliMUONTrackParam, 2) // Track parameters in ALICE dimuon spectrometer +}; #endif