ROOT logo
#ifndef ALIMUONTRACKCUTS_H
#define ALIMUONTRACKCUTS_H

#include "TString.h"
#include "AliAnalysisCuts.h"
#include "AliOADBMuonTrackCutsParam.h"

class TList;
class TArrayI;
class AliVParticle;
class AliInputEventHandler;


class AliMuonTrackCuts : public AliAnalysisCuts
{
 public:
  
  enum {
    kMuEta = BIT(0),
    kMuThetaAbs = BIT(1),
    kMuPdca = BIT(2),
    kMuMatchApt = BIT(3),
    kMuMatchLpt = BIT(4),
    kMuMatchHpt = BIT(5),
    kMuTrackChiSquare = BIT(6)
  };
  
  AliMuonTrackCuts();
  AliMuonTrackCuts(const char* name, const char* title);
  AliMuonTrackCuts(const AliMuonTrackCuts& obj);
  AliMuonTrackCuts& operator=(const AliMuonTrackCuts& obj);

  virtual ~AliMuonTrackCuts();

  virtual UInt_t GetSelectionMask ( const TObject* obj );
  virtual Bool_t IsSelected ( TObject* obj );
  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 ( 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;

  /// 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; }
  
  /// Get track cuts param (you're not supposed to modify its content
  const AliOADBMuonTrackCutsParam GetMuonTrackCutsParam () const { return fOADBParam; };
  AliOADBMuonTrackCutsParam* CustomParam ();

 private:
  
  TString GuessPass ( const AliInputEventHandler* eventHandler );
  Bool_t ReadParamFromOADB ( Int_t runNumber, TString passName );

  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, 5); // Class for muon track filters
};
 
#endif

 AliMuonTrackCuts.h:1
 AliMuonTrackCuts.h:2
 AliMuonTrackCuts.h:3
 AliMuonTrackCuts.h:4
 AliMuonTrackCuts.h:5
 AliMuonTrackCuts.h:6
 AliMuonTrackCuts.h:7
 AliMuonTrackCuts.h:8
 AliMuonTrackCuts.h:9
 AliMuonTrackCuts.h:10
 AliMuonTrackCuts.h:11
 AliMuonTrackCuts.h:12
 AliMuonTrackCuts.h:13
 AliMuonTrackCuts.h:14
 AliMuonTrackCuts.h:15
 AliMuonTrackCuts.h:16
 AliMuonTrackCuts.h:17
 AliMuonTrackCuts.h:18
 AliMuonTrackCuts.h:19
 AliMuonTrackCuts.h:20
 AliMuonTrackCuts.h:21
 AliMuonTrackCuts.h:22
 AliMuonTrackCuts.h:23
 AliMuonTrackCuts.h:24
 AliMuonTrackCuts.h:25
 AliMuonTrackCuts.h:26
 AliMuonTrackCuts.h:27
 AliMuonTrackCuts.h:28
 AliMuonTrackCuts.h:29
 AliMuonTrackCuts.h:30
 AliMuonTrackCuts.h:31
 AliMuonTrackCuts.h:32
 AliMuonTrackCuts.h:33
 AliMuonTrackCuts.h:34
 AliMuonTrackCuts.h:35
 AliMuonTrackCuts.h:36
 AliMuonTrackCuts.h:37
 AliMuonTrackCuts.h:38
 AliMuonTrackCuts.h:39
 AliMuonTrackCuts.h:40
 AliMuonTrackCuts.h:41
 AliMuonTrackCuts.h:42
 AliMuonTrackCuts.h:43
 AliMuonTrackCuts.h:44
 AliMuonTrackCuts.h:45
 AliMuonTrackCuts.h:46
 AliMuonTrackCuts.h:47
 AliMuonTrackCuts.h:48
 AliMuonTrackCuts.h:49
 AliMuonTrackCuts.h:50
 AliMuonTrackCuts.h:51
 AliMuonTrackCuts.h:52
 AliMuonTrackCuts.h:53
 AliMuonTrackCuts.h:54
 AliMuonTrackCuts.h:55
 AliMuonTrackCuts.h:56
 AliMuonTrackCuts.h:57
 AliMuonTrackCuts.h:58
 AliMuonTrackCuts.h:59
 AliMuonTrackCuts.h:60
 AliMuonTrackCuts.h:61
 AliMuonTrackCuts.h:62
 AliMuonTrackCuts.h:63
 AliMuonTrackCuts.h:64
 AliMuonTrackCuts.h:65
 AliMuonTrackCuts.h:66
 AliMuonTrackCuts.h:67
 AliMuonTrackCuts.h:68
 AliMuonTrackCuts.h:69
 AliMuonTrackCuts.h:70
 AliMuonTrackCuts.h:71
 AliMuonTrackCuts.h:72
 AliMuonTrackCuts.h:73
 AliMuonTrackCuts.h:74
 AliMuonTrackCuts.h:75
 AliMuonTrackCuts.h:76
 AliMuonTrackCuts.h:77
 AliMuonTrackCuts.h:78
 AliMuonTrackCuts.h:79
 AliMuonTrackCuts.h:80
 AliMuonTrackCuts.h:81
 AliMuonTrackCuts.h:82
 AliMuonTrackCuts.h:83
 AliMuonTrackCuts.h:84
 AliMuonTrackCuts.h:85
 AliMuonTrackCuts.h:86
 AliMuonTrackCuts.h:87
 AliMuonTrackCuts.h:88