#ifndef ALIMUONTRACKCUTS_H
#define ALIMUONTRACKCUTS_H
+#include "TString.h"
#include "AliAnalysisCuts.h"
-#include "TArrayD.h"
+#include "AliOADBMuonTrackCutsParam.h"
-class AliVParticle;
class TList;
-class TVector3;
+class TArrayI;
+class AliVParticle;
+class AliInputEventHandler;
+
class AliMuonTrackCuts : public AliAnalysisCuts
{
kMuMatchApt = BIT(3),
kMuMatchLpt = BIT(4),
kMuMatchHpt = BIT(5),
- kMuTrackChiSquare = BIT(6),
- kMuSharpPtCut = BIT(7)
+ kMuTrackChiSquare = BIT(6)
};
-
+
AliMuonTrackCuts();
- AliMuonTrackCuts(const char* name, const char* title, Bool_t isESD);
+ AliMuonTrackCuts(const char* name, const char* title);
AliMuonTrackCuts(const AliMuonTrackCuts& obj);
+ AliMuonTrackCuts& operator=(const AliMuonTrackCuts& obj);
virtual ~AliMuonTrackCuts();
virtual Bool_t IsSelected ( TList* /*list */ );
void SetDefaultFilterMask();
+ void SetPassNumber ( Int_t passNumber );
+ /// Set pass name
+ void SetPassName ( TString passName ) { fPassName = passName; }
+ /// Set is MC
+ void SetIsMC ( Bool_t isMC = kTRUE ) { fIsMC = isMC; }
+ /// Allow default parameters
+ void SetAllowDefaultParams ( Bool_t allowDefaultParams = kTRUE ) { fAllowDefaultParams = allowDefaultParams; }
+ void SetCustomParamFromRun ( Int_t runNumber = -1, TString passName = "" );
+ void SetCustomParam ( const AliInputEventHandler* eventHandler );
+
+ /// Get pass name
+ TString GetPassName () const { return fPassName; }
- Bool_t SetRun(Int_t runNumber);
- void SetUseCustomParam( Bool_t useCustomParam = kTRUE, Int_t runNumber = -1 );
- void SetIsMC(Bool_t isMC = kTRUE) { fIsMC = isMC; }
-
+ Bool_t SetRun ( const AliInputEventHandler* eventHandler );
+
void Print ( Option_t* option = "" ) const;
+
+ Bool_t TrackPtCutMatchTrigClass ( const AliVParticle* track, const TArrayI ptCutFromClass) const;
TVector3 GetCorrectedDCA ( const AliVParticle* track ) const;
Double_t GetAverageMomentum ( const AliVParticle* track ) const;
+ Bool_t IsThetaAbs23 ( const AliVParticle* track ) const;
- enum {
- kThetaAbs23, ///< Theta_abs between 2 and 3 degrees
- kThetaAbs310, ///< Theta_abs between 3 and 10 degrees
- kNthetaAbs ///< Number of theta abs bins
- };
-
- // Parameters
- enum {
- kMeanDcaX, ///< Average track DCA_x
- kMeanDcaY, ///< Average track DCA_y
- kMeanDcaZ, ///< Average track DCA_z
- kMeanPCorr23, ///< Average momentum correction in 2-3 deg
- kMeanPCorr310, ///< Average momentum correction in 3-10 deg
- kSigmaPdca23, ///< Sigma_PxDCA in 2-3 deg
- kSigmaPdca310, ///< Sigma_PxDCA in 3-10 deg
- kNSigmaPdcaCut, ///< Cut value in units of sigma_PxDCA
- kChi2NormCut, ///< Cut on the normalized chi2 of track
- kRelPResolution, ///< Relative momentum resolution
- kSlopeResolution, ///< Slope resolution
- kSharpPtApt, ///< Sharp tracker pt cut for Apt
- kSharpPtLpt, ///< Sharp tracker pt cut for Lpt
- kSharpPtHpt, ///< Sharp tracker pt cut for Hpt
- kNParameters ///< Total number of parameters
- };
-
- void SetMeanDCA ( Double_t xAtDca, Double_t yAtDca, Double_t zAtDca = 0.);
- TVector3 GetMeanDCA () const;
-
- void SetMeanPCorr ( Double_t pCorrThetaAbs23, Double_t pCorrThetaAbs310 );
- Double_t GetMeanPCorr ( Double_t rAtAbsEnd ) const;
-
- void SetSigmaPdca ( Double_t sigmaThetaAbs23, Double_t sigmaThetaAbs310 );
- Double_t GetSigmaPdca ( Double_t rAtAbsEnd ) const;
-
- void SetNSigmaPdca ( Double_t nSigmas );
- Double_t GetNSigmaPdca () const;
-
- void SetChi2NormCut ( Double_t chi2normCut );
- Double_t GetChi2NormCut () const;
+ /// Apply also sharp pt cut when matching with trigger
+ void ApplySharpPtCutInMatching ( Bool_t sharpPtCut = kTRUE ) { fSharpPtCut = sharpPtCut; }
+ /// Get flag to apply the sharp pt cut when matching with trigger
+ Bool_t IsApplySharpPtCutInMatching () const { return fSharpPtCut; }
- void SetRelPResolution ( Double_t relPResolution );
- Double_t GetRelPResolution () const;
-
- void SetSlopeResolution ( Double_t slopeResolution );
- Double_t GetSlopeResolution () const;
-
- void SetSharpPtCut ( Int_t trigPtCut, Double_t ptCutValue );
- Double_t GetSharpPtCut ( Int_t trigPtCut, Bool_t warn = kTRUE ) const;
-
- Bool_t StreamParameters ( Int_t runNumber, Int_t maxRun );
+ /// Get track cuts param (you're not supposed to modify its content
+ const AliOADBMuonTrackCutsParam GetMuonTrackCutsParam () const { return fOADBParam; };
+ AliOADBMuonTrackCutsParam* CustomParam ();
private:
- AliMuonTrackCuts& operator=(const AliMuonTrackCuts& obj); // not implemented (on purpose)
-
- Int_t GetThetaAbsBin ( Double_t rAtAbsEnd ) const;
- Bool_t SetParameter ( Int_t iparam, Float_t value );
- Bool_t RunMatchesRange ( Int_t runNumber, const Char_t* objName );
-
- Bool_t fIsESD; ///< Event is ESD
- Bool_t fIsMC; ///< Monte Carlo analysis
- Bool_t fUseCustomParam; ///< Use custom parameters (do not search in OADB)
+
+ TString GuessPass ( const AliInputEventHandler* eventHandler );
+ Bool_t ReadParamFromOADB ( Int_t runNumber, TString passName );
- TArrayD fParameters; ///< List of parameters
+ Bool_t fIsMC; ///< Monte Carlo analysis
+ Bool_t fUseCustomParam; ///< Use custom parameters (do not search in OADB)
+ Bool_t fSharpPtCut; ///< Flag to apply sharp pt cut in track-trigger matching
+ Bool_t fAllowDefaultParams; ///< Flag to allow default parameters from OADB
+ TString fPassName; ///< Pass name
+ AliOADBMuonTrackCutsParam fOADBParam; ///< Track param in OADB
- ClassDef(AliMuonTrackCuts, 1); // Class for muon track filters
+ ClassDef(AliMuonTrackCuts, 5); // Class for muon track filters
};
#endif