ROOT logo
#ifndef ALIMUONTRIGGERTRACK_H
#define ALIMUONTRIGGERTRACK_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/*$Id$*/
// Revision of includes 07/05/2004

/// \ingroup rec
/// \class AliMUONTriggerTrack
/// \brief Reconstructed trigger track in ALICE dimuon spectrometer
/// \author Philippe Crochet

#include <TObject.h>
#include <TMatrixD.h>
#include <TMath.h>

class AliMUONTrackReconstructor;

class AliMUONTriggerTrack : public TObject 
{
 public:
    AliMUONTriggerTrack(); // Constructor
    virtual ~AliMUONTriggerTrack(); // Destructor
    AliMUONTriggerTrack (const AliMUONTriggerTrack& AliMUONTriggerTrack); // copy constructor
    AliMUONTriggerTrack& operator=(const AliMUONTriggerTrack& AliMUONTriggerTrack); // assignment operator
    AliMUONTriggerTrack(Float_t x11, Float_t y11, Float_t z11, Float_t z21,
			Float_t slopeX, Float_t slopeY,
			Int_t iloTrg, Long_t theGTPattern, Int_t ptCutLevel=1); 
    
    virtual void Clear(Option_t* opt = "");
    
    // getters
    
    /// Return x position of fired Y strip in MC11
    Float_t GetX11()    const {return fx11;}
    /// Return y position of fired X strip in MC11
    Float_t GetY11()    const {return fy11;}
    /// Return z position of fired X strip in MC11
    Float_t GetZ11()    const {return fz11;}
    /// Return z position of fired X strip in MC21
    Float_t GetZ21()    const {return fz21;}
    /// Return track theta angle in X 
    Float_t GetThetax() const {return TMath::ATan(fSlopeX);}
    /// Return track theta angle in Y
    Float_t GetThetay() const {return TMath::ATan(fSlopeY);}
    /// Return track slope in X 
    Float_t GetSlopeX() const {return fSlopeX;}
    /// Return track slope in Y
    Float_t GetSlopeY() const {return fSlopeY;}
    /// Return local trigger number
    Int_t   GetLoTrgNum() const {return floTrgNum;}    

    // setters
    
    /// Set x position of fired Y strip in MC11
    void SetX11(Float_t x)     {fx11 = x;}
    /// Set y position of fired X strip in MC11
    void SetY11(Float_t y)     {fy11 = y;}
    /// Set z position of fired X strip in MC11
    void SetZ11(Float_t z)     {fz11 = z;}
    /// Set z position of fired X strip in MC21
    void SetZ21(Float_t z)     {fz21 = z;}
    /// Set track slope in X 
    void SetSlopeX(Float_t slopeX) {fSlopeX = slopeX;}
    /// Set track slope in Y
    void SetSlopeY(Float_t slopeY) {fSlopeY = slopeY;}
    /// Set local trigger number
    void SetLoTrgNum(Int_t loTrgNum) {floTrgNum = loTrgNum;}    

    /// Set Global trigger pattern  (do not work with static statement) 
    void SetGTPattern(UChar_t pat) {fGTPattern = pat;}    
    /// Return Global trigger pattern  (do not work with static statement) 
    UChar_t GetGTPattern() const {return fGTPattern;}

    /// Set word telling which trigger chambers where hit by track
    void     SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh) {fHitsPatternInTrigCh = hitsPatternInTrigCh;}
    /// Get word telling which trigger chambers where hit by track
    UShort_t GetHitsPatternInTrigCh() const {return fHitsPatternInTrigCh;}
  
    /// Set pt cut level
    void  SetPtCutLevel(Int_t ptCutLevel) { fPtCutLevel = ptCutLevel;}
    /// Get pt cut level
    Int_t GetPtCutLevel() const {return fPtCutLevel;}

    
    virtual void Print(Option_t* opt="FULL") const;

    const TMatrixD& GetCovariances() const;
    void  SetCovariances(const TMatrixD& covariances);
    void  SetCovariances(const Double_t matrix[3][3]);
  
    Bool_t Match(AliMUONTriggerTrack &track, Double_t sigmaCut) const;
    
protected:
  private:
  Float_t fx11;    ///< x position of fired Y strip in MC11
  Float_t fy11;    ///< y position of fired X strip in MC11
  Float_t fz11;    ///< z position of fired X strip in MC11
  Float_t fz21;    ///< z position of fired X strip in MC21
  Float_t fSlopeX; ///< track slope in X   
  Float_t fSlopeY; ///< track slope in Y
  Int_t   floTrgNum; ///< local trigger number
  UChar_t fGTPattern; ///< Global trigger pattern  (do not work with static statement)
  Int_t   fPtCutLevel;  ///< Trigger pt cut level as in ESDs (1->Apt; 2->Lpt; 3->Hpt)
  UShort_t fHitsPatternInTrigCh; ///< Word containing info on the hits left in trigger chambers
  mutable TMatrixD *fCovariances; ///< Covariance matrix of track parameters 

  ClassDef(AliMUONTriggerTrack, 7) // Reconstructed trigger track in ALICE dimuon spectrometer
    };
	
#endif

 AliMUONTriggerTrack.h:1
 AliMUONTriggerTrack.h:2
 AliMUONTriggerTrack.h:3
 AliMUONTriggerTrack.h:4
 AliMUONTriggerTrack.h:5
 AliMUONTriggerTrack.h:6
 AliMUONTriggerTrack.h:7
 AliMUONTriggerTrack.h:8
 AliMUONTriggerTrack.h:9
 AliMUONTriggerTrack.h:10
 AliMUONTriggerTrack.h:11
 AliMUONTriggerTrack.h:12
 AliMUONTriggerTrack.h:13
 AliMUONTriggerTrack.h:14
 AliMUONTriggerTrack.h:15
 AliMUONTriggerTrack.h:16
 AliMUONTriggerTrack.h:17
 AliMUONTriggerTrack.h:18
 AliMUONTriggerTrack.h:19
 AliMUONTriggerTrack.h:20
 AliMUONTriggerTrack.h:21
 AliMUONTriggerTrack.h:22
 AliMUONTriggerTrack.h:23
 AliMUONTriggerTrack.h:24
 AliMUONTriggerTrack.h:25
 AliMUONTriggerTrack.h:26
 AliMUONTriggerTrack.h:27
 AliMUONTriggerTrack.h:28
 AliMUONTriggerTrack.h:29
 AliMUONTriggerTrack.h:30
 AliMUONTriggerTrack.h:31
 AliMUONTriggerTrack.h:32
 AliMUONTriggerTrack.h:33
 AliMUONTriggerTrack.h:34
 AliMUONTriggerTrack.h:35
 AliMUONTriggerTrack.h:36
 AliMUONTriggerTrack.h:37
 AliMUONTriggerTrack.h:38
 AliMUONTriggerTrack.h:39
 AliMUONTriggerTrack.h:40
 AliMUONTriggerTrack.h:41
 AliMUONTriggerTrack.h:42
 AliMUONTriggerTrack.h:43
 AliMUONTriggerTrack.h:44
 AliMUONTriggerTrack.h:45
 AliMUONTriggerTrack.h:46
 AliMUONTriggerTrack.h:47
 AliMUONTriggerTrack.h:48
 AliMUONTriggerTrack.h:49
 AliMUONTriggerTrack.h:50
 AliMUONTriggerTrack.h:51
 AliMUONTriggerTrack.h:52
 AliMUONTriggerTrack.h:53
 AliMUONTriggerTrack.h:54
 AliMUONTriggerTrack.h:55
 AliMUONTriggerTrack.h:56
 AliMUONTriggerTrack.h:57
 AliMUONTriggerTrack.h:58
 AliMUONTriggerTrack.h:59
 AliMUONTriggerTrack.h:60
 AliMUONTriggerTrack.h:61
 AliMUONTriggerTrack.h:62
 AliMUONTriggerTrack.h:63
 AliMUONTriggerTrack.h:64
 AliMUONTriggerTrack.h:65
 AliMUONTriggerTrack.h:66
 AliMUONTriggerTrack.h:67
 AliMUONTriggerTrack.h:68
 AliMUONTriggerTrack.h:69
 AliMUONTriggerTrack.h:70
 AliMUONTriggerTrack.h:71
 AliMUONTriggerTrack.h:72
 AliMUONTriggerTrack.h:73
 AliMUONTriggerTrack.h:74
 AliMUONTriggerTrack.h:75
 AliMUONTriggerTrack.h:76
 AliMUONTriggerTrack.h:77
 AliMUONTriggerTrack.h:78
 AliMUONTriggerTrack.h:79
 AliMUONTriggerTrack.h:80
 AliMUONTriggerTrack.h:81
 AliMUONTriggerTrack.h:82
 AliMUONTriggerTrack.h:83
 AliMUONTriggerTrack.h:84
 AliMUONTriggerTrack.h:85
 AliMUONTriggerTrack.h:86
 AliMUONTriggerTrack.h:87
 AliMUONTriggerTrack.h:88
 AliMUONTriggerTrack.h:89
 AliMUONTriggerTrack.h:90
 AliMUONTriggerTrack.h:91
 AliMUONTriggerTrack.h:92
 AliMUONTriggerTrack.h:93
 AliMUONTriggerTrack.h:94
 AliMUONTriggerTrack.h:95
 AliMUONTriggerTrack.h:96
 AliMUONTriggerTrack.h:97
 AliMUONTriggerTrack.h:98
 AliMUONTriggerTrack.h:99
 AliMUONTriggerTrack.h:100
 AliMUONTriggerTrack.h:101
 AliMUONTriggerTrack.h:102
 AliMUONTriggerTrack.h:103
 AliMUONTriggerTrack.h:104
 AliMUONTriggerTrack.h:105
 AliMUONTriggerTrack.h:106
 AliMUONTriggerTrack.h:107
 AliMUONTriggerTrack.h:108
 AliMUONTriggerTrack.h:109
 AliMUONTriggerTrack.h:110
 AliMUONTriggerTrack.h:111
 AliMUONTriggerTrack.h:112
 AliMUONTriggerTrack.h:113