]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AliMuonEventCuts.h
Split the TaskMuMu into more manageable sub-analysis (Laurent)
[u/mrichter/AliRoot.git] / PWG / muon / AliMuonEventCuts.h
1 #ifndef ALIMUONEVENTCUTS_H
2 #define ALIMUONEVENTCUTS_H
3
4 #include "AliAnalysisCuts.h"
5
6 class AliVEvent;
7 class AliVVertex;
8 class TList;
9 class TAxis;
10 class TArrayI;
11 class TString;
12 class TObjString;
13 class TObjArray;
14
15 class AliMuonEventCuts : public AliAnalysisCuts
16 {
17  public:
18   
19   enum {
20     kPhysicsSelected = BIT(0),
21     kSelectedCentrality = BIT(1),
22     kSelectedTrig = BIT(2),
23     kGoodVertex = BIT(3)
24   };
25   
26   AliMuonEventCuts();
27   AliMuonEventCuts(const char* name, const char* title);
28   AliMuonEventCuts(const AliMuonEventCuts& obj);
29   AliMuonEventCuts& operator=(const AliMuonEventCuts& obj);
30   
31   virtual ~AliMuonEventCuts();
32   
33   virtual UInt_t GetSelectionMask ( const TObject* obj );
34   virtual Bool_t IsSelected ( TObject* obj );
35   virtual Bool_t IsSelected ( TList* /*list */ );
36   
37   void SetDefaultFilterMask();
38   void SetDefaultParameters();
39   
40   // Handle trigger
41   void SetTrigClassPatterns ( const TString trigPattern );
42   /// Get default trigger class patterns
43   TString GetDefaultTrigClassPatterns() { return fDefaultTrigClassPatterns; };
44   void SetTrigClassLevels ( const TString pattern = "MSL:Lpt,MUSL:Lpt,MSH:Hpt,MUSH:Hpt,MUL:LptLpt,MUU:LptLpt,MLL:LptLpt" );
45   TArrayI GetTrigClassPtCutLevel ( const TString trigClassName ) const;
46   void SetTrigInputsMap ( const TString trigInputsMap );
47   /// Get trigger classes found in run
48   TList* GetAllSelectedTrigClasses () const { return fAllSelectedTrigClasses; }
49   const TObjArray* GetSelectedTrigClassesInEvent ( const AliVEvent* event );
50   const TObjArray* GetSelectedTrigClassesInEvent(const TString& firedTriggerClasses,
51                                                  UInt_t l0Inputs, UInt_t l1Inputs, UInt_t l2Inputs);
52
53   UInt_t GetTriggerInputBitMaskFromInputName(const char* inputName) const;
54
55   // Handle centrality
56   void SetCentralityClasses(Int_t nCentralityBins = -1, Double_t* centralityBins = 0x0);
57   /// Get centrality classes
58   TAxis* GetCentralityClasses() const { return fCentralityClasses; }
59   
60   void SetCentralityEstimator ( const TString centralityEstimator = "V0M" );
61   TString GetCentralityEstimator () const;
62   Double_t GetCentrality ( const AliVEvent* event ) const;
63   
64   
65   /// Set Physics selection mask
66   void SetPhysicsSelectionMask ( const UInt_t physicsSelectionMask ) { fPhysicsSelectionMask = physicsSelectionMask; }
67   
68   
69   /// Set minimum number of vertex contributors
70   void SetVertexMinNContributors ( const Int_t vertexMinNContributors ) { fVertexMinNContributors = vertexMinNContributors; }
71   /// Get minimum number of vertex contributors
72   Int_t GetVertexMinNContributors () const { return fVertexMinNContributors; }
73   /// Set Vz limits
74   void SetVertexVzLimits ( Double_t vzMin = -999., Double_t vzMax = 999. ) { fVertexVzMin = vzMin; fVertexVzMax = vzMax; }
75   /// Get Vtx vz min
76   Double_t GetVertexVzMin () const { return fVertexVzMin; }
77   /// Get Vtx vz max
78   Double_t GetVertexVzMax () const { return fVertexVzMax; }
79
80   void Print ( Option_t* option = "" ) const;
81
82  protected:
83   
84   void BuildTriggerClasses ( const TString firedTrigClasses, UInt_t l0Inputs, UInt_t l1Inputs, UInt_t l2Inputs );
85   Bool_t CheckTriggerClassPattern ( const TString& toCheck ) const;
86   Bool_t CheckTriggerClassCombination ( const TObjArray* combo, const TString& firedTriggerClasses, UInt_t l0Inputs, UInt_t l1Inputs, UInt_t l2Inputs ) const;
87   void AddToEventSelectedClass ( const TString& toCheck, const TObjString* foundTrig, const UInt_t comboType = 0 );
88   Bool_t UpdateEvent( const AliVEvent* event );
89   void SetDefaultTrigClassPatterns();
90   void SetDefaultTrigInputsMap();
91     
92   UInt_t fPhysicsSelectionMask; ///< Physics selection mask
93   
94   Int_t fVertexMinNContributors;  ///< Minimum number of SPD vertex contributors
95   Double_t fVertexVzMin;          ///< SPD vertex Vz min
96   Double_t fVertexVzMax;          ///< SPD vertex Vz max
97   
98   TString fDefaultTrigClassPatterns; ///< Default trigger class patterns
99   TObjArray* fSelectedTrigPattern; ///< List of triggers to be kept
100   TObjArray* fRejectedTrigPattern; ///< List of triggers to be rejected
101   TObjArray* fSelectedTrigLevel;   ///< Track-trigger pt cut for selected trigger class
102   TObjArray* fSelectedTrigCombination; ///< Selected trigger combinations
103   TList* fTrigInputsMap;       ///< Trigger inputs map
104   TList* fAllSelectedTrigClasses;  ///< List of all selected trigger classes found
105   TAxis* fCentralityClasses;   ///< Centrality classes
106   
107   private:
108   ULong64_t fEventTriggerMask; //!< Fired trigger mask in the event
109   TObjArray* fSelectedTrigClassesInEvent; //!< list of selected trigger classes in current event
110   enum {kComboSimple, kComboFormula, kComboAND, kComboOR}; //!< Trigger combination types
111   
112   ClassDef(AliMuonEventCuts, 4); // Class for muon event filters
113 };
114
115 #endif
116