]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/AntiprotonToProton/AliProtonCorrectionAnalysisTask.cxx
Added possibility to do cut on TPCnSigma and rapidity in the task.
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / AntiprotonToProton / AliProtonCorrectionAnalysisTask.cxx
CommitLineData
6c7a4cd7 1#include "TChain.h"\r
2#include "TTree.h"\r
3#include "TString.h"\r
4#include "TList.h"\r
5#include "TH2F.h"\r
6\r
7#include "AliAnalysisTask.h"\r
8#include "AliAnalysisManager.h"\r
9\r
10#include "AliESDEvent.h"\r
11#include "AliESDInputHandler.h"\r
12#include "AliAODEvent.h"\r
13#include "AliAODInputHandler.h"\r
14#include "AliMCEventHandler.h"\r
15#include "AliMCEvent.h"\r
16#include "AliStack.h"\r
17#include "AliESDVertex.h"\r
18\r
19#include "AliProtonFeedDownAnalysis.h"\r
20#include "AliProtonAnalysisBase.h"\r
21#include "AliProtonCorrectionAnalysisTask.h"\r
22\r
23#include "AliProtonAbsorptionCorrection.h"\r
24#include "AliProtonSpectraCorrection.h"\r
25\r
26#include <Riostream.h>\r
27\r
28ClassImp(AliProtonCorrectionAnalysisTask)\r
29 \r
30//________________________________________________________________________ \r
31AliProtonCorrectionAnalysisTask::AliProtonCorrectionAnalysisTask()\r
32 : AliAnalysisTask(), fESD(0), fAOD(0), fMC(0),\r
33 fList(0),fProtonAnalysisBase(0),fProtonAbsorptionCorrection(0), fProtonFeedDownAnalysis(0),fProtonSpectraCorrection(0),fStatHist(0),\r
34 fIsOn_AliProtonAbsorptionCorrection(0),fIsOn_AliProtonFeedDownAnalysis(0),fIsOn_AliProtonSpectraCorrection(0)\r
35 {\r
36 //Dummy constructor\r
37 \r
38}\r
39\r
40//________________________________________________________________________\r
41AliProtonCorrectionAnalysisTask::AliProtonCorrectionAnalysisTask(const char *name) \r
42 : AliAnalysisTask(name, ""), fESD(0), fAOD(0), fMC(0),\r
43 fList(0),fProtonAnalysisBase(0),fProtonAbsorptionCorrection(0), fProtonFeedDownAnalysis(0),fProtonSpectraCorrection(0),fStatHist(0),\r
44 fIsOn_AliProtonAbsorptionCorrection(0),fIsOn_AliProtonFeedDownAnalysis(0),fIsOn_AliProtonSpectraCorrection(0)\r
45 {\r
46 // Constructor\r
47 \r
48 // Define input and output slots here\r
49 // Input slot #0 works with a TChain\r
50 DefineInput(0, TChain::Class());\r
51 // Output slot #0 writes into a TList container\r
52 DefineOutput(0, TList::Class());\r
53}\r
54\r
55//________________________________________________________________________\r
56void AliProtonCorrectionAnalysisTask::ConnectInputData(Option_t *) \r
57{\r
58 // Connect ESD or AOD here\r
59 // Called once\r
60 TString gAnalysisLevel = fProtonAnalysisBase->GetAnalysisLevel(); \r
61 \r
62 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));\r
63 if (!tree) \r
64 {\r
65 Printf("ERROR: Could not read chain from input slot 0");\r
66 } \r
67 else \r
68 {\r
69 if(gAnalysisLevel == "ESD") \r
70 {\r
71 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
72 if (!esdH) \r
73 {\r
74 Printf("ERROR: Could not get ESDInputHandler");\r
75 } \r
76 else\r
77 fESD = esdH->GetEvent();\r
78 AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());\r
79 if (!mcH) \r
80 {\r
81 Printf("ERROR: Could not retrieve MC event handler");\r
82 }\r
83 else\r
84 fMC = mcH->MCEvent();\r
85 }\r
86 else if(gAnalysisLevel == "AOD") \r
87 {\r
88 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); \r
89 if (!aodH) \r
90 {\r
91 Printf("ERROR: Could not get AODInputHandler");\r
92 }\r
93 else\r
94 fAOD = aodH->GetEvent();\r
95 }\r
96 else\r
97 Printf("Wrong analysis type: Only ESD, AOD types are allowed!");\r
98 }\r
99}\r
100//________________________________________________________________________\r
101void AliProtonCorrectionAnalysisTask::CreateOutputObjects() \r
102{\r
103 // Create output objects\r
104 // Called once\r
105 fList = new TList();\r
106 if(fIsOn_AliProtonAbsorptionCorrection)\r
107 {\r
108 fProtonAbsorptionCorrection->GetProtonContainer()->SetName("containerProtonsAbsorptionCorrection");\r
109 fList->Add(fProtonAbsorptionCorrection->GetProtonContainer());\r
110 fProtonAbsorptionCorrection->GetAntiProtonContainer()->SetName("containerAntiProtonsAbsorptionCorrection");\r
111 fList->Add(fProtonAbsorptionCorrection->GetAntiProtonContainer());\r
112 }\r
113 if(fIsOn_AliProtonFeedDownAnalysis)\r
114 {\r
115 fProtonFeedDownAnalysis->GetProtonContainer()->SetName("containerProtonsFeedDown");\r
116 fList->Add(fProtonFeedDownAnalysis->GetProtonContainer());\r
117 fProtonFeedDownAnalysis->GetAntiProtonContainer()->SetName("containerAntiProtonsFeedDown");\r
118 fList->Add(fProtonFeedDownAnalysis->GetAntiProtonContainer());\r
119 fList->Add(fProtonFeedDownAnalysis->GetLambdaHist());\r
120 fList->Add(fProtonFeedDownAnalysis->GetLambdaweightedHist());\r
121 fList->Add(fProtonFeedDownAnalysis->GetAntiLambdaHist());\r
122 fList->Add(fProtonFeedDownAnalysis->GetAntiLambdaweightedHist());\r
123 }\r
124 if(fIsOn_AliProtonSpectraCorrection)\r
125 {\r
126 fProtonSpectraCorrection->GetProtonContainer()->SetName("containerProtonsSpectraCorrection");\r
127 fList->Add(fProtonSpectraCorrection->GetProtonContainer());\r
128 fProtonSpectraCorrection->GetProtonContainer()->SetName("containerAntiProtonsSpectraCorrection");\r
129 fList->Add(fProtonSpectraCorrection->GetAntiProtonContainer());\r
130 }\r
131 fStatHist=new TH1F("StatsHist","StatsHist",10,-0.5,9.5);\r
132 fList->Add(fStatHist);\r
133 fStatHist->GetXaxis()->SetBinLabel(1,"level1cutESD");\r
134 fStatHist->GetXaxis()->SetBinLabel(2,"level2cutTrigger");\r
135 fStatHist->GetXaxis()->SetBinLabel(3,"level3cutVerstex");\r
136 fStatHist->GetXaxis()->SetBinLabel(4,"level4cutMC");\r
137}\r
138//________________________________________________________________________\r
139void AliProtonCorrectionAnalysisTask::Exec(Option_t *) \r
140{\r
141 // Main loop\r
142 // Called for each event\r
143 TString gAnalysisLevel =fProtonAnalysisBase->GetAnalysisLevel(); \r
144 //TString gAnalysisLevel = (fProtonFeedDownAnalysis->GetProtonAnalysisBaseObject())->GetAnalysisLevel(); \r
145 if(gAnalysisLevel == "ESD") \r
146 {\r
147 if (!fESD) \r
148 {\r
149 Printf("ERROR: fESD not available");\r
150 return;\r
151 }\r
152 fStatHist->Fill(0);\r
153 if(fProtonAnalysisBase->IsEventTriggered(fESD,fProtonAnalysisBase->GetTriggerMode())) \r
154 {\r
155 fStatHist->Fill(1);\r
156 const AliESDVertex *vertex = fProtonAnalysisBase->GetVertex(fESD,fProtonAnalysisBase->GetAnalysisMode(),fProtonAnalysisBase->GetVxMax(),fProtonAnalysisBase->GetVyMax(),fProtonAnalysisBase->GetVzMax());\r
157 if(vertex) \r
158 {\r
159 fStatHist->Fill(2);\r
160 Printf("Proton ESD analysis task: There are %d tracks in this event", fESD->GetNumberOfTracks());\r
161 AliStack* stack1=0x0;\r
162 if(!fMC)\r
163 return; \r
164 stack1 = fMC->Stack();\r
165 if(!stack1)\r
166 return;\r
167 fStatHist->Fill(3);\r
168 if(fIsOn_AliProtonAbsorptionCorrection)\r
224f441a 169 //fProtonAbsorptionCorrection->FillAbsorptionMaps(fESD,vertex,fMC);\r
170 fProtonAbsorptionCorrection->FillAbsorptionMaps(fESD,fMC);\r
6c7a4cd7 171 if(fIsOn_AliProtonFeedDownAnalysis)\r
172 { \r
173 fProtonFeedDownAnalysis->Analyze(fESD,vertex,stack1);\r
174 fProtonFeedDownAnalysis->Analyze(stack1);\r
175 } \r
176 if(fIsOn_AliProtonSpectraCorrection)\r
177 fProtonSpectraCorrection->FillCorrectionMaps(fESD,vertex,fMC);\r
178\r
179 }//reconstructed vertex\r
180 }//triggered event\r
181 }//ESD analysis \r
182 \r
183 else if(gAnalysisLevel == "AOD") \r
184 {\r
185 if (!fAOD) \r
186 {\r
187 Printf("ERROR: fAOD not available");\r
188 return;\r
189 }\r
190 Printf("Proton AOD analysis task: There are %d tracks in this event", fAOD->GetNumberOfTracks());\r
191 if(fIsOn_AliProtonAbsorptionCorrection)\r
192 fProtonAbsorptionCorrection->FillAbsorptionMaps(fAOD);\r
193 if(fIsOn_AliProtonFeedDownAnalysis)\r
194 fProtonFeedDownAnalysis->Analyze(fAOD);\r
195 if(fIsOn_AliProtonSpectraCorrection)\r
196 fProtonSpectraCorrection->FillCorrectionMaps(fAOD);\r
197 }//AOD analysis\r
198 \r
199 \r
200 // Post output data.\r
201 PostData(0, fList);\r
202} \r
203//__________________________________________________________________________________________\r
204void AliProtonCorrectionAnalysisTask::Terminate(Option_t *) \r
205{\r
206\r
207}\r
208//___________________________________________________________________________________________\r
209void AliProtonCorrectionAnalysisTask::SetAnalysisObjectAbsorptionCorrection(AliProtonAbsorptionCorrection *const analysis) \r
210{\r
211 if (analysis&&fProtonAnalysisBase)\r
212 {\r
213 Printf("Absorption Correection ON\n");\r
214 fIsOn_AliProtonAbsorptionCorrection=kTRUE;\r
215 fProtonAbsorptionCorrection = analysis;\r
216 fProtonAbsorptionCorrection->SetBaseAnalysis(fProtonAnalysisBase);\r
217 fProtonAbsorptionCorrection->InitAnalysisHistograms(fProtonAnalysisBase->GetNBinsX(),fProtonAnalysisBase->GetMinX(),fProtonAnalysisBase->GetMaxX(),fProtonAnalysisBase->GetNBinsY(),fProtonAnalysisBase->GetMinY(),fProtonAnalysisBase->GetMaxY());\r
218 }\r
219 else\r
220 fIsOn_AliProtonAbsorptionCorrection=kFALSE;\r
221}\r
222//___________________________________________________________________________________________\r
223void AliProtonCorrectionAnalysisTask::SetAnalysisObjectFeedDown(AliProtonFeedDownAnalysis *const analysis) \r
224{\r
225 if (analysis&&fProtonAnalysisBase)\r
226 {\r
227 Printf("Feed Down ON\n");\r
228 fIsOn_AliProtonFeedDownAnalysis=kTRUE;\r
229 fProtonFeedDownAnalysis = analysis;\r
230 fProtonFeedDownAnalysis->SetBaseAnalysis(fProtonAnalysisBase);\r
231 fProtonFeedDownAnalysis->InitAnalysisHistograms(fProtonAnalysisBase->GetNBinsX(),fProtonAnalysisBase->GetMinX(),fProtonAnalysisBase->GetMaxX(),fProtonAnalysisBase->GetNBinsY(),fProtonAnalysisBase->GetMinY(),fProtonAnalysisBase->GetMaxY());\r
232 }\r
233 else\r
234 fIsOn_AliProtonFeedDownAnalysis=kFALSE;\r
235}\r
236//___________________________________________________________________________________________\r
237void AliProtonCorrectionAnalysisTask::SetAnalysisObjectSpectraCorrection(AliProtonSpectraCorrection *const analysis) \r
238{ \r
239 if (analysis&&fProtonAnalysisBase)\r
240 {\r
241 Printf("Spectra Correection ON\n");\r
242 fIsOn_AliProtonSpectraCorrection=kTRUE;\r
243 fProtonSpectraCorrection= analysis;\r
244 fProtonSpectraCorrection->SetBaseAnalysis(fProtonAnalysisBase);\r
245 fProtonSpectraCorrection->InitAnalysisHistograms(fProtonAnalysisBase->GetNBinsX(),fProtonAnalysisBase->GetMinX(),fProtonAnalysisBase->GetMaxX(),fProtonAnalysisBase->GetNBinsY(),fProtonAnalysisBase->GetMinY(),fProtonAnalysisBase->GetMaxY());\r
246 }\r
247 else\r
248 fIsOn_AliProtonSpectraCorrection=kFALSE;\r
249}\r
250 \r
251\r
252\r
253\r