1 #ifndef ALIANALYSISMUMUEVENTCUTTER_H
2 #define ALIANALYSISMUMUEVENTCUTTER_H
6 * \class AliAnalysisMuMuEventCutter
8 * \brief Various event cuts used in AliAnalysisTaskMuMu
10 * \author L. Aphecetche and J. Martin Blanco
17 class AliMuonEventCuts;
21 class AliInputEventHandler;
23 class AliAnalysisMuMuEventCutter : public TObject
26 AliAnalysisMuMuEventCutter(TList* triggerClassesToConsider=0x0, TList* triggerInputsMap=0x0);
27 virtual ~AliAnalysisMuMuEventCutter();
29 Bool_t SelectTriggerClass(const TString& firedTriggerClasses, TString& acceptedClasses,
30 UInt_t L0, UInt_t L1, UInt_t L2) const;
32 Bool_t IsTrue(const AliVEvent& /*event*/) const { return kTRUE; }
33 void NameOfIsTrue(TString& name) const { name="ALL"; }
35 Bool_t IsFalse(const AliVEvent& /*event*/) const { return kFALSE; }
36 void NameOfIsFalse(TString& name) const { name="NONE"; }
38 Bool_t IsPhysicsSelected(const AliInputEventHandler& eventHandler) const;
39 void NameOfIsPhysicsSelected(TString& name) const { name="PSALL"; }
41 Bool_t IsPhysicsSelectedVDM(const AliVEvent& event) const;
42 void NameOfIsPhysicsSelectedVDM(TString& name) const { name="VDM"; }
44 Bool_t IsMCEventNSD(const AliVEvent& event) const;
45 void NameOfIsMCEventNSD(TString& name) const { name="NSD"; }
47 Bool_t IsAbsZBelowValue(const AliVEvent& event, const Double_t& z) const;
48 void NameOfIsAbsZBelowValue(TString& name, const Double_t& z) const;
50 Bool_t IsAbsZSPDBelowValue(const AliVEvent& event, const Double_t& z) const;
51 void NameOfIsAbsZSPDBelowValue(TString& name, const Double_t& z) const;
53 Bool_t IsSPDzVertexInRange(AliVEvent& event, const Double_t& zMin, const Double_t& zMax) const;
54 void NameOfIsSPDzVertexInRange(TString& name, const Double_t& zMin, const Double_t& zMax) const;
56 Bool_t IsSPDzQA(const AliVEvent& event/*, const AliVVertex& vertex2Test*/, const Double_t& zResCut, const Double_t& zDifCut) const;
57 void NameOfIsSPDzQA(TString& name, const Double_t& zResCut, const Double_t& zDifCut) const;
59 Bool_t HasSPDVertex(AliVEvent& event) const;
60 void NameOfHasSPDVertex(TString& name) const { name = "HASSPD"; }
62 Bool_t IsMeandNchdEtaInRange(AliVEvent& event, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const;
63 void NameOfIsMeandNchdEtaInRange(TString& name, const Double_t& dNchdEtaMin, const Double_t& dNchdEtaMax) const;
65 Bool_t IsTZEROPileUp(const AliVEvent& event) const;
66 void NameOfIsTZEROPileUp(TString& name) const { name="TZEROPILEUP"; }
68 AliMuonEventCuts* MuonEventCuts() const;
72 // kEventIR2PILEUP = BIT( 6), /// events with pile-up (using AliAnalysisUtils::IsOutOfBunchPileUp)
74 // kEventGOODVERTEX = BIT(10), /// events with a good vertex
75 // kEventZPOS = BIT(14), /// events with z > 0
76 // kEventZNEG = BIT(15), /// events with z < 0
78 // kEventTRKLETA1 = BIT(20), /// event with at least one tracklet in |eta| < fTrackletEtaCutValue[0]
80 // kEvent0TVX = BIT(31), /// events with 0TVX L0 input
81 // kEventV0AND = BIT(32), /// events with both 0V0C and 0V0A L0 inputs
82 // kEvent0SM2 = BIT(33), /// events with 0SM2 L0 input
83 // kEvent0MSL = BIT(34), /// events with 0MSL input
88 /// not implemented on purpose
89 AliAnalysisMuMuEventCutter& operator=(const AliAnalysisMuMuEventCutter& rhs);
90 /// not implemented on purpose
91 AliAnalysisMuMuEventCutter(const AliAnalysisMuMuEventCutter& rhs);
93 mutable AliMuonEventCuts* fMuonEventCuts; // common cuts for muon events (from Diego)
95 ClassDef(AliAnalysisMuMuEventCutter,1) // default event cutters for AliAnalysisTaskMuMu