Added analysis task for * Event by event PID fluctuation analysis
[u/mrichter/AliRoot.git] / PWGCF / EBYE / PIDFluctuation / task / AliAnalysisTaskPIDFluctuation.h
1 #ifndef ALIANALYSISTASKPIDFLUCTUATION_H\r
2 #define ALIANALYSISTASKPIDFLUCTUATION_H\r
3 \r
4 /* \r
5  * Event by event PID fluctuation analysis\r
6  * author: Roberto Preghenella (R+)\r
7  * email:  preghenella@bo.infn.it\r
8  *\r
9  */\r
10  \r
11 class TList;\r
12 class TH1F;\r
13 class TH2F;\r
14 class TH3F;\r
15 class AliVEvent;\r
16 class AliVTrack;\r
17 class AliESDtrackCuts;\r
18 class AliPIDResponse;\r
19 \r
20 #include "AliAnalysisTaskSE.h"\r
21 #include "AliPID.h"\r
22 #include "THnSparse.h"\r
23 \r
24 class AliAnalysisTaskPIDFluctuation : \r
25 public AliAnalysisTaskSE \r
26 {\r
27   \r
28  public:\r
29   \r
30   AliAnalysisTaskPIDFluctuation(const Char_t *name = "PIDFluctuation"); // default constructor\r
31   virtual ~AliAnalysisTaskPIDFluctuation(); // default destructor\r
32   \r
33   void UserCreateOutputObjects();\r
34   void UserExec(Option_t *option);\r
35 \r
36   /* setters */\r
37   void SetPIDMethod(Int_t value) {fPIDMethod = value;}; // set PID method\r
38   void SetESDtrackCuts(AliESDtrackCuts *value) {fESDtrackCuts = value;}; // set ESD track cuts\r
39   void SetAODfilterBit(Int_t value) {fAODfilterBit = value;}; // set AOD filter bit\r
40   void SetEtaRange(Float_t etaMin, Float_t etaMax) {fEtaMin = etaMin; fEtaMax = etaMax;}; // set eta range\r
41   void SetPtRange(Float_t ptMin, Float_t ptMax) {fPtMin = ptMin; fPtMax = ptMax;}; // set pt range\r
42 \r
43   static const Int_t kNCentralityBins = 10; // N centrality bins\r
44 \r
45   enum EEventCounter_t {\r
46     kAllEvents,\r
47     kPhysicsSelection,\r
48     kPrimaryVertex,\r
49     kPrimaryVertexSPD,\r
50     kVertexAccepted,\r
51     kGoodCentrality,\r
52     kAcceptedEvents,\r
53     kNEventCounters\r
54   };\r
55 \r
56   enum ESparseData_t {\r
57     kCent_V0M,\r
58     kCent_TRK,\r
59     kNch,\r
60     kNch_plus,\r
61     kNch_minus,\r
62     kNpi,\r
63     kNpi_plus,\r
64     kNpi_minus,\r
65     kNka,\r
66     kNka_plus,\r
67     kNka_minus,\r
68     kNpr,\r
69     kNpr_plus,\r
70     kNpr_minus,\r
71     kNSparseData\r
72   };\r
73 \r
74   enum EPIDMethod_t {\r
75     kTPCTOF,\r
76     kTPConly,\r
77     kTOFonly,\r
78     kNPIDMethods\r
79   };\r
80 \r
81   static void MeasureNuDyn(const Char_t *filename, Int_t i1, Int_t i2, Int_t centralityEstimator = kCent_V0M);\r
82 \r
83  private:\r
84 \r
85   AliAnalysisTaskPIDFluctuation(const AliAnalysisTaskPIDFluctuation &); // not implemented\r
86   AliAnalysisTaskPIDFluctuation &operator=(const AliAnalysisTaskPIDFluctuation &); // not implemented\r
87   \r
88   /*** event and track selection ***/\r
89   Bool_t AcceptEvent(AliVEvent *event) const; // accept event\r
90   Bool_t AcceptTrack(AliVTrack *track) const; // accept track\r
91 \r
92   /*** PID functions ***/\r
93   Bool_t HasTPCPID(AliVTrack *track) const; // has TPC PID\r
94   Bool_t HasTOFPID(AliVTrack *track) const; // has TOF PID\r
95   Double_t MakeTPCPID(AliVTrack *track, Double_t *nSigma) const; // make TPC PID\r
96   Double_t MakeTOFPID(AliVTrack *track, Double_t *nSigma) const; // make TOF PID\r
97   void MakePID(AliVTrack *track, Bool_t *pidFlag, Float_t centrality) const; // make PID\r
98   void InitPID(AliVEvent *event); // init PID\r
99 \r
100   /*** PID objects and flags ***/\r
101   Int_t fPIDMethod; // PID method\r
102   AliESDtrackCuts *fESDtrackCuts; // ESD track cuts\r
103   Int_t fAODfilterBit; // AOD filter bit\r
104   Float_t fEtaMin; // eta min\r
105   Float_t fEtaMax; // eta max\r
106   Float_t fPtMin; // pt min\r
107   Float_t fPtMax; // pt max\r
108   AliPIDResponse *fPID; // PID\r
109 \r
110   /*** PID histos ***/\r
111   TList *fHistoList; // histo list\r
112   TH1F *fHistoEventCounter; // event counter\r
113   TH2F *fHistoAcceptedTracks; // accepted tracks\r
114   TH2F *fHistoTOFMatchedTracks; // TOF-matched tracks\r
115   TH3F *fHistoTPCdEdx; // TPC dEdx\r
116   TH3F *fHistoTPCdEdx_inclusive; // TPC dEdx\r
117   TH3F *fHistoTOFbeta; // TOF beta\r
118   TH3F *fHistoTPCdEdx_selected[AliPID::kSPECIES]; // TPC dEdx\r
119   TH3F *fHistoTOFbeta_selected[AliPID::kSPECIES]; // TOF beta\r
120   TH3F *fHistoNSigmaTPC[AliPID::kSPECIES]; // nsigma TPC\r
121   TH3F *fHistoNSigmaTOF[AliPID::kSPECIES]; // nsigma TOF\r
122 \r
123   /*** correlation histos */\r
124   THnSparseI *fHistoCorrelation; // correlation THnSparse\r
125 \r
126   /*** labels, names and titles ***/\r
127   static const Char_t *fgkEventCounterName[kNEventCounters]; // event couter name\r
128   static const Char_t *fgkEventCounterTitle[kNEventCounters]; // event couter title\r
129   static const Char_t *fgkSparseDataName[kNSparseData]; // sparse data name\r
130   static const Char_t *fgkSparseDataTitle[kNSparseData]; // sparse data title\r
131 \r
132     \r
133   ClassDef(AliAnalysisTaskPIDFluctuation, 1);\r
134 };\r
135 \r
136 #endif /* ALIANALYSISTASKPIDFLUCTUATION_H */\r