]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/dNdPt/AlidNdPtTask.cxx
correct usage of low p_T cut off, more options for background calculatiom (S. Jangal)
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtTask.cxx
CommitLineData
0aaa8b91 1/**************************************************************************\r
2* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
3* *\r
4* Author: The ALICE Off-line Project. *\r
5* Contributors are mentioned in the code where appropriate. *\r
6* *\r
7* Permission to use, copy, modify and distribute this software and its *\r
8* documentation strictly for non-commercial purposes is hereby granted *\r
9* without fee, provided that the above copyright notice appears in all *\r
10* copies and that both the copyright notice and this permission notice *\r
11* appear in the supporting documentation. The authors make no claims *\r
12* about the suitability of this software for any purpose. It is *\r
13* provided "as is" without express or implied warranty. *\r
14**************************************************************************/\r
15\r
16#include "iostream"\r
17\r
18#include "TChain.h"\r
19#include "TTree.h"\r
20#include "TH1F.h"\r
21#include "TCanvas.h"\r
22#include "TList.h"\r
23#include "TFile.h"\r
24\r
25#include "AliAnalysisTask.h"\r
26#include "AliAnalysisManager.h"\r
27#include "AliESDEvent.h"\r
28#include "AliESDInputHandler.h"\r
29#include "AliESDVertex.h"\r
30#include "AliTracker.h"\r
31#include "AliGeomManager.h"\r
32\r
b93ccf1c 33#include "AliCentrality.h"\r
0487c490 34#include "AliESDVZERO.h"\r
35#include "AliMultiplicity.h"\r
36\r
0aaa8b91 37#include "AliESDtrackCuts.h"\r
38#include "AliMCEventHandler.h"\r
39#include "dNdPt/AlidNdPt.h"\r
40#include "dNdPt/AlidNdPtEventCuts.h"\r
41#include "dNdPt/AlidNdPtAcceptanceCuts.h"\r
42\r
43#include "dNdPt/AlidNdPtTask.h"\r
44\r
45using namespace std;\r
46\r
47ClassImp(AlidNdPtTask)\r
48\r
49//_____________________________________________________________________________\r
50AlidNdPtTask::AlidNdPtTask(const char *name) \r
de93884d 51 : AliAnalysisTaskSE(name)\r
0aaa8b91 52 , fESD(0)\r
53 , fMC(0)\r
54 , fOutput(0)\r
55 , fPitList(0)\r
56 , fCompList(0)\r
57 , fUseMCInfo(kFALSE)\r
0487c490 58 , fUseCentrality(0) // default = off\r
59 , fUseCentralityBin(0)\r
0aaa8b91 60{\r
61 // Constructor\r
62\r
63 // Define input and output slots here\r
de93884d 64 DefineOutput(1, TList::Class());\r
0aaa8b91 65\r
66 // create the list for comparison objects\r
67 fCompList = new TList;\r
68}\r
69\r
70//_____________________________________________________________________________\r
71AlidNdPtTask::~AlidNdPtTask()\r
72{\r
73 if(fOutput) delete fOutput; fOutput =0; \r
de93884d 74 if(fCompList) delete fCompList; fCompList =0; \r
0aaa8b91 75}\r
76\r
77//____________________________________________________________________________\r
78Bool_t AlidNdPtTask::Notify()\r
79{\r
80 static Int_t count = 0;\r
81 count++;\r
695facdf 82 //Printf("Processing %d. file: %s", count, ((TTree*) GetInputData(0))->GetCurrentFile()->GetName());\r
83 TTree *chain = (TChain*)GetInputData(0);\r
84 if(chain)\r
85 Printf("Processing %d. file: %s", count, chain->GetCurrentFile()->GetName());\r
0aaa8b91 86\r
695facdf 87 /*\r
a8ac5525 88 TChain *chain = (TChain*)GetInputData(0);\r
89 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());\r
90 if (!esdH) {\r
91 Printf("ERROR: Could not get ESDInputHandler");\r
92 return kFALSE;\r
93 } else {\r
a8ac5525 94 if(chain)\r
7f7dd416 95 Printf("chain->GetCurrentFile()->GetName() %s", chain->GetCurrentFile()->GetName());\r
a8ac5525 96 }\r
695facdf 97 */\r
a8ac5525 98\r
0aaa8b91 99return kTRUE;\r
100}\r
101\r
0aaa8b91 102//_____________________________________________________________________________\r
103Bool_t AlidNdPtTask::AddAnalysisObject(AlidNdPt *pObj) \r
104{\r
105 // add analysis object to the list\r
106 if(pObj == 0) {\r
107 Printf("ERROR: Could not add comparison object");\r
108 return kFALSE;\r
109 }\r
110\r
111 // add object to the list\r
112 fCompList->AddLast(pObj);\r
113 \r
114return kTRUE;\r
115}\r
116\r
117//_____________________________________________________________________________\r
de93884d 118void AlidNdPtTask::UserCreateOutputObjects()\r
0aaa8b91 119{\r
120 // Create histograms\r
121 // Called once\r
122\r
de93884d 123 OpenFile(1, "RECREATE");\r
0aaa8b91 124\r
125 //\r
126 // create output list\r
127 //\r
128 fOutput = new TList;\r
129 fOutput->SetOwner();\r
130 fPitList = fOutput->MakeIterator();\r
131\r
132 // add dNdPt analysis objects to the output\r
133 AlidNdPt *pObj=0;\r
134 Int_t count=0;\r
135 TIterator *pitCompList = fCompList->MakeIterator();\r
136 pitCompList->Reset();\r
137 while(( pObj = (AlidNdPt *)pitCompList->Next()) != NULL) {\r
138 fOutput->Add(pObj);\r
139 count++;\r
140 }\r
de93884d 141 Printf("UserCreateOutputObjects(): Number of output objects: %d \n", count);\r
0487c490 142\r
143 if(fUseCentrality) {\r
144 Printf("Use Centrality - Bin %d", fUseCentralityBin);\r
145 }\r
0aaa8b91 146}\r
147\r
148//_____________________________________________________________________________\r
de93884d 149void AlidNdPtTask::UserExec(Option_t *) \r
0aaa8b91 150{\r
de93884d 151 //\r
0aaa8b91 152 // Called for each event\r
de93884d 153 //\r
154\r
155 // ESD event\r
156 fESD = (AliESDEvent*) (InputEvent());\r
0aaa8b91 157 if (!fESD) {\r
158 Printf("ERROR: ESD event not available");\r
159 return;\r
160 }\r
161\r
de93884d 162 // MC event\r
163 if(fUseMCInfo) {\r
164 fMC = MCEvent();\r
165 if (!fMC) {\r
166 Printf("ERROR: MC event not available");\r
167 return;\r
168 }\r
169 }\r
170\r
0aaa8b91 171 // Process analysis\r
0487c490 172 Bool_t process = kTRUE;\r
173\r
174 // Check fo centrality\r
175 if (fUseCentrality) {\r
176 if ( CalculateCentralityBin() != fUseCentralityBin ) {\r
177 process = kFALSE;\r
178 }\r
0aaa8b91 179 }\r
180\r
0487c490 181 if (process) {\r
182 AlidNdPt *pObj = 0;\r
183 fPitList->Reset();\r
184 while((pObj = (AlidNdPt *)fPitList->Next()) != NULL) {\r
185 pObj->Process(fESD,fMC);\r
186 }\r
187 }\r
188\r
189\r
0aaa8b91 190 // Post output data.\r
de93884d 191 PostData(1, fOutput);\r
0aaa8b91 192}\r
193\r
194//_____________________________________________________________________________\r
195void AlidNdPtTask::Terminate(Option_t *) \r
196{\r
197 // Called one at the end \r
198 \r
199 // check output data\r
de93884d 200 fOutput = dynamic_cast<TList*> (GetOutputData(1));\r
0aaa8b91 201 if (!fOutput) {\r
202 Printf("ERROR: AlidNdPtTask::Terminate(): Output data not avaiable GetOutputData(0)==0x0 ..." );\r
203 return;\r
204 }\r
205}\r
0487c490 206\r
207//________________________________________________________________________\r
208Int_t AlidNdPtTask::CalculateCentralityBin(){\r
209 // Get Centrality bin\r
210\r
211 Int_t centrality = -1;\r
515964cb 212 Float_t centralityF = -1;\r
0487c490 213\r
214 if (fUseCentrality == 0)\r
215 return centrality;\r
216\r
b93ccf1c 217 AliCentrality *esdCentrality = fESD->GetCentrality();\r
515964cb 218 \r
219 // New : 2010-11-18 JMT \r
220 if ( fUseCentrality == 1 )\r
221 centralityF = esdCentrality->GetCentralityPercentile("V0M");\r
222 else if ( fUseCentrality == 2 )\r
223 centralityF = esdCentrality->GetCentralityPercentile("CL1");\r
f4f8cae4 224 else if ( fUseCentrality == 3 )\r
225 centralityF = esdCentrality->GetCentralityPercentile("TRK"); \r
515964cb 226 if (centralityF == 0.)\r
227 centralityF = 100.;\r
228\r
229 if ( centralityF >= 0. && centralityF < 5.) centrality = 0;\r
230 else if ( centralityF >= 5. && centralityF < 10.) centrality = 5;\r
231 else if ( centralityF >= 10. && centralityF < 20.) centrality = 10;\r
232 else if ( centralityF >= 20. && centralityF < 30.) centrality = 20;\r
233 else if ( centralityF >= 30. && centralityF < 40.) centrality = 30;\r
234 else if ( centralityF >= 40. && centralityF < 50.) centrality = 40;\r
235 else if ( centralityF >= 50. && centralityF < 60.) centrality = 50;\r
236 else if ( centralityF >= 60. && centralityF < 70.) centrality = 60;\r
237 else if ( centralityF >= 70. && centralityF < 80.) centrality = 70;\r
238 else if ( centralityF >= 80. && centralityF < 90.) centrality = 80;\r
239 else if ( centralityF >= 90. && centralityF <=100.) centrality = 90;\r
0487c490 240 \r
241 return centrality;\r
242}\r