]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AliMuonTrackCuts.h
Transition PWG3 --> PWGHF
[u/mrichter/AliRoot.git] / PWG / muon / AliMuonTrackCuts.h
1 #ifndef ALIMUONTRACKCUTS_H
2 #define ALIMUONTRACKCUTS_H
3
4 #include "AliAnalysisCuts.h"
5 #include "TArrayD.h"
6
7 class AliVParticle;
8 class TList;
9 class TVector3;
10
11 class AliMuonTrackCuts : public AliAnalysisCuts
12 {
13  public:
14   
15   enum {
16     kMuEta = BIT(0),
17     kMuThetaAbs = BIT(1),
18     kMuPdca = BIT(2),
19     kMuMatchApt = BIT(3),
20     kMuMatchLpt = BIT(4),
21     kMuMatchHpt = BIT(5),
22     kMuTrackChiSquare = BIT(6),
23   };
24
25   AliMuonTrackCuts();
26   AliMuonTrackCuts(const char* name, const char* title, Bool_t isESD);
27   AliMuonTrackCuts(const AliMuonTrackCuts& obj);
28
29   virtual ~AliMuonTrackCuts();
30
31   virtual UInt_t GetSelectionMask ( const TObject* obj );
32   virtual Bool_t IsSelected ( TObject* obj );
33   virtual Bool_t IsSelected ( TList* /*list */ );
34   
35   void SetDefaultFilterMask();
36
37   Bool_t SetRun(Int_t runNumber);
38   void SetUseCustomParam( Bool_t useCustomParam = kTRUE, Int_t runNumber = -1 );
39   void SetIsMC(Bool_t isMC = kTRUE) { fIsMC = isMC; }
40
41   void Print ( Option_t* option = "" ) const;
42
43   TVector3 GetCorrectedDCA ( const AliVParticle* track ) const;
44   Double_t GetAverageMomentum ( const AliVParticle* track ) const;
45
46   enum {
47     kThetaAbs23,   ///< Theta_abs between 2 and 3 degrees
48     kThetaAbs310,  ///< Theta_abs between 3 and 10 degrees
49     kNthetaAbs     ///< Number of theta abs bins
50   };
51
52   // Parameters
53   enum {
54     kMeanDcaX,        ///< Average track DCA_x
55     kMeanDcaY,        ///< Average track DCA_y
56     kMeanDcaZ,        ///< Average track DCA_z
57     kMeanPCorr23,     ///< Average momentum correction in 2-3 deg
58     kMeanPCorr310,    ///< Average momentum correction in 3-10 deg
59     kSigmaPdca23,     ///< Sigma_PxDCA in 2-3 deg
60     kSigmaPdca310,    ///< Sigma_PxDCA in 3-10 deg
61     kNSigmaPdcaCut,   ///< Cut value in units of sigma_PxDCA
62     kChi2NormCut,     ///< Cut on the normalized chi2 of track
63     kRelPResolution,  ///< Relative momentum resolution
64     kSlopeResolution, ///< Slope resolution
65     kNParameters      ///< Total number of parameters
66   };
67
68   void SetMeanDCA ( Double_t xAtDca, Double_t yAtDca, Double_t zAtDca = 0.);
69   TVector3 GetMeanDCA () const;
70
71   void SetMeanPCorr ( Double_t pCorrThetaAbs23, Double_t pCorrThetaAbs310 ); 
72   Double_t GetMeanPCorr ( Double_t rAtAbsEnd ) const;
73
74   void SetSigmaPdca ( Double_t sigmaThetaAbs23, Double_t sigmaThetaAbs310 );
75   Double_t GetSigmaPdca ( Double_t rAtAbsEnd ) const;
76
77   void SetNSigmaPdca ( Double_t nSigmas );
78   Double_t GetNSigmaPdca () const;
79
80   void SetChi2NormCut ( Double_t chi2normCut );
81   Double_t GetChi2NormCut () const;
82   
83   void SetRelPResolution ( Double_t relPResolution );
84   Double_t GetRelPResolution () const;
85   
86   void SetSlopeResolution ( Double_t slopeResolution );
87   Double_t GetSlopeResolution () const;
88
89   Bool_t StreamParameters ( Int_t runNumber, Int_t maxRun );
90
91  private:
92   AliMuonTrackCuts& operator=(const AliMuonTrackCuts& obj); // not implemented (on purpose)
93
94   Int_t GetThetaAbsBin ( Double_t rAtAbsEnd ) const;
95   Bool_t SetParameter ( Int_t iparam, Float_t value );
96   Bool_t RunMatchesRange ( Int_t runNumber, const Char_t* objName );
97
98   Bool_t fIsESD;            ///< Event is ESD
99   Bool_t fIsMC;             ///< Monte Carlo analysis
100   Bool_t fUseCustomParam;   ///< Use custom parameters (do not search in OADB)
101
102   TArrayD fParameters;      ///< List of parameters
103
104   ClassDef(AliMuonTrackCuts, 1); // Class for muon track filters
105 };
106  
107 #endif
108