X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliESDMuonTrack.h;h=d2c0580c1c944464e26b35e4202acd8f162fa5fc;hb=9e78371d181c0b5d26df93575f2a86efb4fa9ef9;hp=5daf86416215aae2b00ebf96269b17ea5f67b69c;hpb=732a24fe12969c50908153cee19b25134fee1baa;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliESDMuonTrack.h b/STEER/AliESDMuonTrack.h index 5daf8641621..d2c0580c1c9 100644 --- a/STEER/AliESDMuonTrack.h +++ b/STEER/AliESDMuonTrack.h @@ -6,8 +6,8 @@ /* $Id$ */ -// Class to describe the MUON tracks -// in the Event Summary Data class +/// \class AliESDMuonTrack +/// \brief Class to describe the MUON tracks in the Event Summary Data class // Author: G.Martinez @@ -31,6 +31,13 @@ public: virtual void Clear(Option_t* opt = ""); + void Reset(); + + // Return kTRUE if the track contain tracker data + Bool_t ContainTrackerData() const {return (fMuonClusterMap>0) ? kTRUE : kFALSE;} + // Return kTRUE if the track contain trigger data + Bool_t ContainTriggerData() const {return (LoCircuit()>0) ? kTRUE : kFALSE;} + // Get and Set methods for data at vertex Double_t GetInverseBendingMomentum(void) const {return fInverseBendingMomentum;} void SetInverseBendingMomentum(Double_t InverseBendingMomentum) @@ -100,16 +107,16 @@ public: Int_t LoDev(void) const { return fLocalTrigger >> 17 & 0x1F; } Int_t LoLpt(void) const { return fLocalTrigger >> 22 & 0x03; } Int_t LoHpt(void) const { return fLocalTrigger >> 24 & 0x03; } - + // Get and Set methods for the hit strips pattern in the trigger chambers - UShort_t GetTriggerX1Pattern() { return fX1Pattern; } - UShort_t GetTriggerY1Pattern() { return fY1Pattern; } - UShort_t GetTriggerX2Pattern() { return fX2Pattern; } - UShort_t GetTriggerY2Pattern() { return fY2Pattern; } - UShort_t GetTriggerX3Pattern() { return fX3Pattern; } - UShort_t GetTriggerY3Pattern() { return fY3Pattern; } - UShort_t GetTriggerX4Pattern() { return fX4Pattern; } - UShort_t GetTriggerY4Pattern() { return fY4Pattern; } + UShort_t GetTriggerX1Pattern() const { return fX1Pattern; } + UShort_t GetTriggerY1Pattern() const { return fY1Pattern; } + UShort_t GetTriggerX2Pattern() const { return fX2Pattern; } + UShort_t GetTriggerY2Pattern() const { return fY2Pattern; } + UShort_t GetTriggerX3Pattern() const { return fX3Pattern; } + UShort_t GetTriggerY3Pattern() const { return fY3Pattern; } + UShort_t GetTriggerX4Pattern() const { return fX4Pattern; } + UShort_t GetTriggerY4Pattern() const { return fY4Pattern; } void SetTriggerX1Pattern(UShort_t pat) { fX1Pattern = pat; } void SetTriggerY1Pattern(UShort_t pat) { fY1Pattern = pat; } void SetTriggerX2Pattern(UShort_t pat) { fX2Pattern = pat; } @@ -122,8 +129,8 @@ public: // Get and Set methods for muon cluster map UInt_t GetMuonClusterMap() const {return fMuonClusterMap;} void SetMuonClusterMap(UInt_t muonClusterMap) {fMuonClusterMap = muonClusterMap;} - void AddInMuonClusterMap(Int_t chamber); - Bool_t IsInMuonClusterMap(Int_t chamber) const; + void AddInMuonClusterMap(Int_t chamber) {fMuonClusterMap |= BIT(chamber);} + Bool_t IsInMuonClusterMap(Int_t chamber) const {return (Bool_t) ((fMuonClusterMap & BIT(chamber)) != 0);} // Methods to get, fill and check the array of associated clusters Int_t GetNClusters() const; @@ -158,7 +165,7 @@ public: Bool_t XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; } Double_t Pt() const { return TMath::Sqrt(Px()*Px() + Py()*Py()); } Double_t OneOverPt() const { return (Pt() != 0.) ? 1./Pt() : FLT_MAX; } - Double_t Phi() const { return TMath::ATan2(Py(), Px()); } + Double_t Phi() const { return TMath::Pi()+TMath::ATan2(-Py(), -Px()); } Double_t Theta() const { return TMath::ATan2(Pt(), Pz()); } Double_t E() const { return TMath::Sqrt(M()*M() + P()*P()); } Double_t M() const { return TDatabasePDG::Instance()->GetParticle("mu-")->Mass(); } @@ -167,6 +174,45 @@ public: Short_t Charge() const { return (Short_t)TMath::Sign(1., GetInverseBendingMomentum()); } const Double_t *PID() const { return (Double_t*)0x0; } + /// Set the corresponding MC track number + void SetLabel(Int_t label) {fLabel = label;} + /// Return the corresponding MC track number + Int_t GetLabel() const {return fLabel;} + + /// Additional methods to decode hit pattern + /// The hit pattern is a UShort_t with: + ///
+  ///   0    |   1 0 0 0 1  |  1 1  |   1  1  0  1  |   1  1  0  1   
+  ///        |              |       |               | 
+  /// unused |  RPC (0-17)  |  flag |  Bend plane   | Non-bend plane
+  ///        |      or      |       | Match chamber | Match chamber
+  ///        | further info |       |  11 12 13 14  |  11 12 13 14
+  ///        |    (20-24)   |       |               |
+  /// 
+ enum EAliTriggerChPatternFlag { + kNoEff, ///< Track is not good for chamber efficiency evaluation + kChEff, ///< Track crosses different RPCs + kSlatEff, ///< Track crosses the same RPC in all planes + kBoardEff ///< Track crosses the same board in all planes + }; + enum EAliTriggerChPatternInfo { + kCrossDifferentSlats = 20, ///< The RPC cannot be univoquely determined + kTrackMatchesManyPads = 21, ///< Track not good for effciency calculation since it matches many pads + kTrackMatchesFewPads = 22, ///< Track not good for effciency calculation since it matches pads in less than 3/4 chambers + kTrackOutsideGeometry = 23, ///< Problems in pattern determination since track extrapolation is outside trigger chambers + kTrackerTrackPattern = 24 ///< The pattern was calculated from a tracker track not matching trigger track + }; + /// Set hits pattern + static void SetFiredChamber(UShort_t& pattern, Int_t cathode, Int_t chamber); + /// Add efficiency flag and crossed RPC or info on rejected track + static void AddEffInfo(UShort_t& pattern, Int_t slatOrInfo, EAliTriggerChPatternFlag effType = kNoEff); + /// Chamber was hit + static Bool_t IsChamberHit(UShort_t pattern, Int_t cathode, Int_t chamber); + /// Get Efficiency flag + static Int_t GetEffFlag(UShort_t pattern); + /// Getting crossed slat or info + static Int_t GetSlatOrInfo(UShort_t pattern); + protected: // parameters at vertex @@ -215,13 +261,15 @@ protected: UShort_t fX4Pattern; ///< x-strips pattern in st7/ch2 UShort_t fY4Pattern; ///< y-strips pattern in st7/ch2 - UInt_t fMuonClusterMap; ///< Map of clusters in tracking chambers - UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers - UChar_t fNHit; ///< number of hit in the track + UInt_t fMuonClusterMap; ///< Map of clusters in tracking chambers + UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers + UChar_t fNHit; ///< number of hit in the track mutable TClonesArray* fClusters; ///< Array of clusters attached to the track - ClassDef(AliESDMuonTrack,10) // MUON ESD track class + Int_t fLabel; ///< point to the corresponding MC track + + ClassDef(AliESDMuonTrack,11) // MUON ESD track class }; #endif