ROOT logo
#ifndef ALIANALYSISMUMUEVENTCUTTER_H
#define ALIANALYSISMUMUEVENTCUTTER_H

/**
 *
 * \class AliAnalysisMuMuEventCutter
 *
 * \brief Various event cuts used in AliAnalysisTaskMuMu
 *
 * \author L. Aphecetche and J. Martin Blanco
 *
 */

#include "TObject.h"
#include "TString.h"

class AliMuonEventCuts;
class TList;
class AliVEvent;
class AliVVertex;
class AliInputEventHandler;

class AliAnalysisMuMuEventCutter : public TObject
{
public:
  AliAnalysisMuMuEventCutter(TList* triggerClassesToConsider=0x0, TList* triggerInputsMap=0x0);
  virtual ~AliAnalysisMuMuEventCutter();
  
  Bool_t SelectTriggerClass(const TString& firedTriggerClasses, TString& acceptedClasses,
                            UInt_t L0, UInt_t L1, UInt_t L2) const;
  
  Bool_t IsTrue(const AliVEvent& /*event*/) const { return kTRUE; }
  void NameOfIsTrue(TString& name) const { name="ALL"; }

  Bool_t IsFalse(const AliVEvent& /*event*/) const { return kFALSE; }
  void NameOfIsFalse(TString& name) const { name="NONE"; }

  Bool_t IsPhysicsSelected(const AliInputEventHandler& eventHandler) const;
  void NameOfIsPhysicsSelected(TString& name) const { name="PSALL"; }

  Bool_t IsPhysicsSelectedVDM(const AliVEvent& event) const;
  void NameOfIsPhysicsSelectedVDM(TString& name) const { name="VDM"; }
  
  Bool_t IsMCEventNSD(const AliVEvent& event) const;
  void NameOfIsMCEventNSD(TString& name) const { name="NSD"; }

  Bool_t IsAbsZBelowValue(const AliVEvent& event, const Double_t& z) const;
  void NameOfIsAbsZBelowValue(TString& name, const Double_t& z) const;
  
  Bool_t IsAbsZSPDBelowValue(const AliVEvent& event, const Double_t& z) const;
  void NameOfIsAbsZSPDBelowValue(TString& name, const Double_t& z) const;
  
  Bool_t IsSPDzVertexInRange(AliVEvent& event, const Double_t& zMin, const Double_t& zMax) const;
  void NameOfIsSPDzVertexInRange(TString& name, const Double_t& zMin, const Double_t& zMax) const;
  
  Bool_t IsSPDzQA(const AliVEvent& event/*, const AliVVertex& vertex2Test*/, const Double_t& zResCut, const Double_t& zDifCut) const;
  void NameOfIsSPDzQA(TString& name, const Double_t& zResCut, const Double_t& zDifCut) const;
  
  Bool_t HasSPDVertex(AliVEvent& event) const;
  void NameOfHasSPDVertex(TString& name) const { name = "HASSPD"; }
  
  Bool_t IsMeandNchdEtaInRange(AliVEvent& event, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const;
  void NameOfIsMeandNchdEtaInRange(TString& name, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const;
  
  Bool_t IsTZEROPileUp(const AliVEvent& event) const;
  void NameOfIsTZEROPileUp(TString& name) const { name="TZEROPILEUP"; }
  
  AliMuonEventCuts* MuonEventCuts() const;
  
//  enum EEventCut
//  {
//    kEventIR2PILEUP     = BIT( 6), /// events with pile-up (using AliAnalysisUtils::IsOutOfBunchPileUp)
//    
//    kEventGOODVERTEX    = BIT(10), /// events with a good vertex
//    kEventZPOS          = BIT(14), /// events with z > 0
//    kEventZNEG          = BIT(15), /// events with z < 0
//    
//    kEventTRKLETA1      = BIT(20), /// event with at least one tracklet in |eta| < fTrackletEtaCutValue[0]

//    kEvent0TVX          = BIT(31), /// events with 0TVX L0 input
//    kEventV0AND         = BIT(32), /// events with both 0V0C and 0V0A L0 inputs
//    kEvent0SM2          = BIT(33), /// events with 0SM2 L0 input
//    kEvent0MSL          = BIT(34), /// events with 0MSL input
//  };
  
private:
  
  /// not implemented on purpose
  AliAnalysisMuMuEventCutter& operator=(const AliAnalysisMuMuEventCutter& rhs);
  /// not implemented on purpose
  AliAnalysisMuMuEventCutter(const AliAnalysisMuMuEventCutter& rhs);
  
  mutable AliMuonEventCuts* fMuonEventCuts; // common cuts for muon events (from Diego)
  
  ClassDef(AliAnalysisMuMuEventCutter,1) // default event cutters for AliAnalysisTaskMuMu
};

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