]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AliMuonEventCuts.h
Reduce computing time when requiring logical OR of triggers (useTFormula only when...
[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
51   
52   // Handle centrality
53   void SetCentralityClasses(Int_t nCentralityBins = -1, Double_t* centralityBins = 0x0);
54   /// Get centrality classes
55   TAxis* GetCentralityClasses() const { return fCentralityClasses; }
56   
57   void SetCentralityEstimator ( const TString centralityEstimator = "V0M" );
58   TString GetCentralityEstimator () const;
59   Double_t GetCentrality ( const AliVEvent* event ) const;
60   
61   
62   /// Set Physics selection mask
63   void SetPhysicsSelectionMask ( const UInt_t physicsSelectionMask ) { fPhysicsSelectionMask = physicsSelectionMask; }
64   
65   
66   /// Set minimum number of vertex contributors
67   void SetVertexMinNContributors ( const Int_t vertexMinNContributors ) { fVertexMinNContributors = vertexMinNContributors; }
68   /// Get minimum number of vertex contributors
69   Int_t GetVertexMinNContributors () const { return fVertexMinNContributors; }
70   /// Set Vz limits
71   void SetVertexVzLimits ( Double_t vzMin = -999., Double_t vzMax = 999. ) { fVertexVzMin = vzMin; fVertexVzMax = vzMax; }
72   /// Get Vtx vz min
73   Double_t GetVertexVzMin () const { return fVertexVzMin; }
74   /// Get Vtx vz max
75   Double_t GetVertexVzMax () const { return fVertexVzMax; }
76
77   void Print ( Option_t* option = "" ) const;
78
79  protected:
80   
81   void BuildTriggerClasses ( const TString firedTrigClasses, UInt_t l0Inputs, UInt_t l1Inputs, UInt_t l2Inputs );
82   Bool_t CheckTriggerClassPattern ( const TString& toCheck ) const;
83   Bool_t CheckTriggerClassCombination ( const TObjArray* combo, const TString& firedTriggerClasses, UInt_t l0Inputs, UInt_t l1Inputs, UInt_t l2Inputs ) const;
84   void AddToEventSelectedClass ( const TString& toCheck, const TObjString* foundTrig, const UInt_t comboType = 0 );
85   Bool_t UpdateEvent( const AliVEvent* event );
86   void SetDefaultTrigClassPatterns();
87   void SetDefaultTrigInputsMap();
88     
89   UInt_t fPhysicsSelectionMask; ///< Physics selection mask
90   
91   Int_t fVertexMinNContributors;  ///< Minimum number of SPD vertex contributors
92   Double_t fVertexVzMin;          ///< SPD vertex Vz min
93   Double_t fVertexVzMax;          ///< SPD vertex Vz max
94   
95   TString fDefaultTrigClassPatterns; ///< Default trigger class patterns
96   TObjArray* fSelectedTrigPattern; ///< List of triggers to be kept
97   TObjArray* fRejectedTrigPattern; ///< List of triggers to be rejected
98   TObjArray* fSelectedTrigLevel;   ///< Track-trigger pt cut for selected trigger class
99   TObjArray* fSelectedTrigCombination; ///< Selected trigger combinations
100   TList* fTrigInputsMap;       ///< Trigger inputs map
101   TList* fAllSelectedTrigClasses;  ///< List of all selected trigger classes found
102   TAxis* fCentralityClasses;   ///< Centrality classes
103   
104   private:
105   ULong64_t fEventTriggerMask; //!< Fired trigger mask in the event
106   TObjArray* fSelectedTrigClassesInEvent; //!< list of selected trigger classes in current event
107   enum {kComboSimple, kComboFormula, kComboAND, kComboOR}; //!< Trigger combination types
108   
109   ClassDef(AliMuonEventCuts, 4); // Class for muon event filters
110 };
111
112 #endif
113