]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AliAnalysisMuMuCutRegistry.h
Merge branch 'AndreaV2Changes'
[u/mrichter/AliRoot.git] / PWG / muon / AliAnalysisMuMuCutRegistry.h
1 #ifndef ALIANALYSISMUMUCUTREGISTRY_H
2 #define ALIANALYSISMUMUCUTREGISTRY_H
3
4 /**
5  *
6  * \class AliAnalysisMuMuCutRegistry
7  *
8  * \brief Container of AliAnalysisMuMuCutElement and AliAnalysisMuMuCutCombination objects.
9  *
10  * \author L. Aphecetche (Subatech)
11  *
12  */
13
14 #include "TObject.h"
15 #include "TString.h"
16 #include "TMethodCall.h"
17 #include "AliAnalysisMuMuCutElement.h"
18
19 class AliVEvent;
20 class AliAnalysisMuMuCutElementBar;
21 class AliAnalysisMuMuCutCombination;
22 class AliVParticle;
23 class AliVEventHandler;
24
25 class AliAnalysisMuMuCutRegistry : public TObject
26 {
27 public:
28   AliAnalysisMuMuCutRegistry();
29   virtual ~AliAnalysisMuMuCutRegistry();
30
31   AliAnalysisMuMuCutElement* AddEventCut(TObject& cutClass,
32                                            const char* cutMethodName,
33                                            const char* cutMethodPrototype,
34                                            const char* defaultParameters);
35
36   AliAnalysisMuMuCutElement* AddTrackCut(TObject& cutClass,
37                                            const char* cutMethodName,
38                                            const char* cutMethodPrototype,
39                                            const char* defaultParameters);
40
41   AliAnalysisMuMuCutElement* AddTrackPairCut(TObject& cutClass,
42                                              const char* cutMethodName,
43                                              const char* cutMethodPrototype,
44                                              const char* defaultParameters);
45
46   AliAnalysisMuMuCutElement* AddTriggerClassCut(TObject& cutClass,
47                                                 const char* cutMethodName,
48                                                 const char* cutMethodPrototype,
49                                                 const char* defaultParameters);
50   
51   AliAnalysisMuMuCutElement* Not(const AliAnalysisMuMuCutElement& cutElement);
52
53   AliAnalysisMuMuCutElement* AddCutElement(AliAnalysisMuMuCutElement* ce);
54
55   Int_t AddCutCombination(const TObjArray& cutElements);
56   
57   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1);
58   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1, AliAnalysisMuMuCutElement* ce2);
59   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1, AliAnalysisMuMuCutElement* ce2, AliAnalysisMuMuCutElement* ce3);
60   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1, AliAnalysisMuMuCutElement* ce2, AliAnalysisMuMuCutElement* ce3,
61                           AliAnalysisMuMuCutElement* ce4);
62   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1, AliAnalysisMuMuCutElement* ce2, AliAnalysisMuMuCutElement* ce3,
63                           AliAnalysisMuMuCutElement* ce4, AliAnalysisMuMuCutElement* ce5);
64   Int_t AddCutCombination(AliAnalysisMuMuCutElement* ce1, AliAnalysisMuMuCutElement* ce2, AliAnalysisMuMuCutElement* ce3,
65                           AliAnalysisMuMuCutElement* ce4, AliAnalysisMuMuCutElement* ce5, AliAnalysisMuMuCutElement* ce6);
66
67   /// Get cut combinations of a given type
68   const TObjArray* GetCutCombinations(AliAnalysisMuMuCutElement::ECutType type) const;
69   TObjArray* GetCutCombinations(AliAnalysisMuMuCutElement::ECutType type);
70
71   /// Get cut elements of a given type
72   const TObjArray* GetCutElements(AliAnalysisMuMuCutElement::ECutType type) const;
73   TObjArray* GetCutElements(AliAnalysisMuMuCutElement::ECutType type);
74
75   virtual void Print(Option_t* opt="") const;
76   
77   Bool_t AlwaysTrue(const AliVEvent& /*event*/) const { return kTRUE; }
78   void NameOfAlwaysTrue(TString& name) const { name="ALL"; }
79   Bool_t AlwaysTrue(const AliVEventHandler& /*eventHandler*/) const { return kTRUE; }
80   Bool_t AlwaysTrue(const AliVParticle& /*part*/) const { return kTRUE; }
81   Bool_t AlwaysTrue(const AliVParticle& /*p1*/, const AliVParticle& /*p2*/) const { return kTRUE; }
82   
83 private:
84   
85   /// not implemented on purpose
86   AliAnalysisMuMuCutRegistry(const AliAnalysisMuMuCutRegistry& rhs);
87   /// not implemented on purpose
88   AliAnalysisMuMuCutRegistry& operator=(const AliAnalysisMuMuCutRegistry& rhs);
89   
90   AliAnalysisMuMuCutElement* CreateCutElement(AliAnalysisMuMuCutElement::ECutType expectedType,
91                                               TObject& cutClass,
92                                               const char* cutMethodName,
93                                               const char* cutMethodPrototype,
94                                               const char* defaultParameters);
95   
96 private:
97   
98   mutable TObjArray* fCutElements; // cut elements
99   mutable TObjArray* fCutCombinations; // cut combinations
100   
101   ClassDef(AliAnalysisMuMuCutRegistry,1) // storage for cut pointers
102 };
103
104 #endif