AliAODEvent::GetHeader now return AliVHeader
[u/mrichter/AliRoot.git] / PWG / muon / AliAnalysisTaskNorm.h
1 #ifndef ALIANALYSISTASKNORM_H
2 #define ALIANALYSISTASKNORM_H
3  
4 /* $Id$ */ 
5 //
6 // AliAnalysisTaskNorm
7 // Analysis task for muon trigger normalization 
8 // 
9 // author: C. Hadjidakis 
10 //
11
12 #ifndef ALIANALYSISTASKSE_H
13 #  include "AliAnalysisTaskSE.h"
14 #endif
15
16 class AliCounterCollection;
17 class AliMuonEventCuts;
18 class AliVEvent;
19
20 class AliAnalysisTaskNorm : public AliAnalysisTaskSE
21 {
22  public:
23
24   AliAnalysisTaskNorm(const char *name = "<default name>");
25   virtual ~AliAnalysisTaskNorm();
26
27   virtual void Print(Option_t *opt="") const;
28   void Print(TObjArray *obj) const;
29   virtual void Terminate(Option_t *);
30   virtual void UserCreateOutputObjects();
31   virtual void UserExec(Option_t* opt);
32
33   //
34   static Bool_t IsAODEvent( const AliVEvent *event);
35   static TString GetFiredTriggerClasses( const AliVEvent *event);
36
37   //build list of counters
38   TList *BuildListOfNormFactor(const TObjArray*);
39   TList *BuildListOfTrigger(const TObjArray*);
40   TList *BuildListOfCentrality(AliCentrality *centrality);  
41   TList *BuildListOfPileUp( const AliVEvent *event);
42   TList *BuildListOfTracklets( const AliVEvent *event);
43   TList *BuildListOfV0AMult( const AliVEvent *event);
44
45   //fill histograms
46   void FillHistoPileUpVertices( const AliVEvent *event, const TObjArray*);
47   void FillHistoMult( const AliVEvent *event, const TObjArray*);
48
49   Bool_t CheckPattern(TString, TObjArray*, TObjArray*);
50   TObjArray *BuildArrayOfTrigger(const TObjArray*, TString keepPattern="", TString rejectPattern="OTHER,TRUE,PHI,ANY,EMC,-ACE-,-ABCE-,WU,MUP,SPI,SHM");
51   //
52   Bool_t IsPileupFromSPDInMultBins(const AliVEvent *event) const; 
53
54   TString GetOCDBPath() {return "raw://";}; // OCDB to be used (raw:// by default)
55
56   //Fill object methods
57   void FillEventCounters(Int_t, TList*,TList*,TList*,TList*,TList*,TList*,Bool_t,Bool_t,TString,Bool_t);
58
59   //
60   AliMuonEventCuts* GetMuonEventCuts() { return fMuonEventCuts;}
61   void SetIsMC(Bool_t isMC) { fIsMC = isMC;};
62   void SetIsESD(Bool_t isESD) { fIsESD = isESD;};
63   void SetBeamConf(TString sBeamConf) { fBeamConf = sBeamConf;};
64
65  private:
66
67   enum eListV0A {
68     kV0AMB  = 0, ///<V0A mult for CINT7 trigger
69     kV0AMUL = 1, ///<V0A mult for CMUL7 trigger
70     kV0AMultvsCentMB = 2, ///<V0A mult vs centrality for CMUL7 trigger
71     kV0ACentvsV0CCentMUL = 3, ///<V0A vs V0C centrality for CMUL7 trigger
72     kV0ACentvsCL1CentMUL = 4, ///<V0A vs CL1 centrality for CMUL7 trigger
73     kV0ACentvsV0CCentMB = 5, ///<V0A vs V0C centrality for CINT7 trigger
74     kV0ACentvsCL1CentMB = 6, ///<V0A vs CL1 centrality for CINT7 trigger
75     kV0CCentvsCL1CentMB = 7, ///<V0A vs CL1 centrality for CINT7 trigger
76     kV0ACentMB  = 8, ///<V0A centrality for CINT7 trigger
77     kV0ACentMUL = 9 ///<V0A centrality for CMUL7 trigger
78   };
79   
80   enum eListZN {
81     kZNMB  = 0, ///<ZN energy for CINT7 trigger
82     kZNMUL = 1, ///<ZN energy for CMUL7 trigger
83     kZNCentMB  = 2, ///<ZN cent for CINT7 trigger
84     kZNCentMUL = 3, ///<ZN cent for CMUL7 trigger
85     kZNMultvsCentMB = 4 ///<ZN mult vs centrality for CINT7 trigger
86    };
87
88   enum eListVertex {
89     kVZMB = 0, ///< primary vertex Z
90     kVnCMB = 1, ///<primary vertex nContributors
91     kPileupVZMB = 2, ///< pileup vertices Z
92     kPileupnCMB = 3, ///< pileup nContributors
93     kVZMUL = 4, ///< primary vertex Z
94     kVnCMUL = 5, ///<primary vertex nContributors
95     kPileupVZMUL = 6, ///< pileup vertices Z
96     kPileupnCMUL = 7, ///< pileup nContributors
97     kDeltaZMB = 8,///<distrance between primary and pileupvertices
98     kDeltaZMUL = 9,///<distrance between primary and pileupvertices
99     kNPileupMB = 10,///<number of pileupvertices
100     kNPileupMUL = 11///<number of pileupvertices
101   };
102
103   AliCounterCollection *fRunCounters;//! run counters
104   AliCounterCollection *fEventCounters;//! event counters
105   TObjArray *fListVertex; //!list of objects vertex related
106   TObjArray *fListV0A; //!list of objects V0A related
107   TObjArray *fListZN; //!list of objects ZN related
108   Bool_t fIsESD; //ESD or AOD
109   Bool_t fIsMC; //MC or data
110   TString fBeamConf; //Beam configuration (p-Pb,Pb-p)
111   AliMuonEventCuts *fMuonEventCuts; // cuts for muon events 
112
113   TObjArray *fSCentEst; // array of centrality estimators
114   TArrayI fCentBin; //centrality range for event counters
115   TObjArray *fSCentBin; // array of centrality bins
116   TArrayI fTrackletsBin; //ntracklets range for event counters
117   TObjArray *fSTrackletsBin; //array of ntracklets bins
118   TArrayI fV0AMultBin; //V0Amult range for event counters
119   TObjArray *fSV0AMultBin; //array of V0Amult bins
120   
121   AliAnalysisTaskNorm(const AliAnalysisTaskNorm&);// not implemented
122   AliAnalysisTaskNorm& operator=(const AliAnalysisTaskNorm&); //not implemented;
123
124   ClassDef(AliAnalysisTaskNorm,4); 
125
126 };
127
128 #endif