ROOT logo
#ifndef ALIMUONPAIRCUTS_H
#define ALIMUONPAIRCUTS_H

#include "AliAnalysisCuts.h"
#include "AliMuonTrackCuts.h"

class TList;
class TVector3;
class TArrayI;
class AliInputEventHandler;

class AliMuonPairCuts : public AliAnalysisCuts
{
 public:
  
  enum {
    kBothMuEta = BIT(0),
    kBothMuThetaAbs = BIT(1),
    kBothMuPdca = BIT(2),
    kBothMuTrackChiSquare = BIT(3),
    kBothMuMatchApt = BIT(4),
    kBothMuMatchLpt = BIT(5),
    kBothMuMatchHpt = BIT(6),
    kOneMuMatchApt = BIT(7),
    kOneMuMatchLpt = BIT(8),
    kOneMuMatchHpt = BIT(9),
    kDimuUnlikeSign = BIT(30),
    kDimuRapidity = BIT(31)
  };

  AliMuonPairCuts();
  AliMuonPairCuts(const char* name, const char* title);
  AliMuonPairCuts(const char* name, const char* title, const AliMuonTrackCuts& trackCuts);
  AliMuonPairCuts(const AliMuonPairCuts& obj);
  AliMuonPairCuts& operator=(const AliMuonPairCuts& obj);

  virtual ~AliMuonPairCuts();

  virtual UInt_t GetSelectionMask ( const TObject* obj );
  virtual Bool_t IsSelected ( TObject* /*obj*/ );
  virtual Bool_t IsSelected ( TList* list );
  virtual Bool_t IsSelected ( TObject* track1, TObject* track2 );

  UInt_t GetSelectionMask(const TObject* track1, const TObject* track2);
  
  void SetDefaultFilterMask();

  Bool_t SetRun ( const AliInputEventHandler* eventHandler );
  void SetIsMC ( Bool_t isMC = kTRUE );

  void Print ( Option_t* option = "" ) const;
  
  Double_t MuonMass2() const;
  
  /// Apply also sharp pt cut when matching with trigger
  void ApplySharpPtCutInMatching ( Bool_t sharpPtCut = kTRUE ) { fMuonTrackCuts.ApplySharpPtCutInMatching(sharpPtCut); }
  /// Get flag to apply the sharp pt cut when matching with trigger
  Bool_t IsApplySharpPtCutInMatching () const { return fMuonTrackCuts.IsApplySharpPtCutInMatching(); }
  
  Bool_t TrackPtCutMatchTrigClass ( const AliVParticle* track1, const AliVParticle* track2, const TArrayI ptCutFromClass ) const;
  
  /// Return the MuonTrackCuts (normally the standard user do not need to modify this data member)
  AliMuonTrackCuts& GetMuonTrackCuts () { return fMuonTrackCuts; }

 private:
  
  AliMuonTrackCuts fMuonTrackCuts; ///< Muon track cuts

  ClassDef(AliMuonPairCuts, 1); // Class for muon pair filters

};
 
#endif

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