2 // Class AliRsnComparisonAT
6 // authors: Martin Vala (martin.vala@cern.ch)
7 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
14 #include "TClonesArray.h"
18 #include "AliESDtrack.h"
19 #include "AliMCEvent.h"
21 #include "AliRsnMCInfo.h"
22 #include "AliRsnComparisonObj.h"
23 #include "AliRsnComparisonAT.h"
25 ClassImp(AliRsnComparisonAT)
27 //________________________________________________________________________
28 AliRsnComparisonAT::AliRsnComparisonAT(const char*name)
29 : AliRsnAnalysisTaskBase(name),fOutList(0x0),fMyInputNum(1),fMyPIDInputNum(0)
31 //=========================================================
32 // Default constructor
33 //=========================================================
37 DefineOutput(0, TList::Class());
40 //________________________________________________________________________
41 void AliRsnComparisonAT::InitIOVars()
43 //=========================================================
44 // Sets default values for input and output
45 //=========================================================
46 AliDebug(AliLog::kDebug, "<-");
47 AliRsnAnalysisTaskBase::InitIOVars();
49 AliDebug(AliLog::kDebug, "->");
52 //________________________________________________________________________
53 void AliRsnComparisonAT::LocalInit()
55 //=========================================================
57 //=========================================================
60 //________________________________________________________________________
61 void AliRsnComparisonAT::CreateOutputObjects()
63 //=========================================================
64 // CreateOutputObjects()
65 //=========================================================
66 AliDebug(AliLog::kDebug, "<-");
68 // AliRsnDaughter::SetPIDMethod ( AliRsnDaughter::kRealistic );
69 // fReader = dynamic_cast<AliRsnReader*> ( GetInputData ( 1 ) );
70 // fPID = dynamic_cast<AliRsnPID*> ( GetInputData ( 2 ) );
74 fOutList = new TList();
75 AliRsnComparisonObj* obj;
77 TList *listMainParticle,*listMainPID,*listPID,*listParticle,*listTmp;
79 listMainParticle = new TList();
80 listMainParticle->SetName("MCParticles");
81 for (Int_t i=0;i<fMyInput[0].GetEntries();i++)
83 obj = (AliRsnComparisonObj*) fMyInput[0].At(i);
85 listParticle = obj->GenerateParticleInfoHistogramList("");
88 AliError(Form("List not crated for i=%d",i));
92 listMainParticle->Add(listParticle);
94 fOutList->Add(listMainParticle);
97 listMainPID = new TList();
98 listMainPID->SetName("PID");
99 for (Int_t j=0;j<fMyPIDInputNum;j++)
101 listPID = new TList();
102 listPID->SetName(fMyPIDInput[j].GetName());
103 for (Int_t i=0;i<fMyPIDInput[j].GetEntries();i++)
105 obj = (AliRsnComparisonObj*) fMyPIDInput[j].At(i);
107 listTmp = obj->GeneratePIDHistogramList(fMyPIDInput[j].GetName());
110 AliError(Form("List not crated for i=%d",i));
113 listPID->Add(listTmp);
116 listMainPID->Add(listPID);
118 fOutList->Add(listMainPID);
119 // listMainPID->Print();
121 AliDebug(AliLog::kDebug, "->");
124 //________________________________________________________________________
125 void AliRsnComparisonAT::Exec(Option_t *)
127 //=========================================================
129 //=========================================================
131 if (fInputType[0]==kESDMC)
133 fRSN[0] = GetRsnEventFromInputType(0);
139 if (!fRSN[0]) return;
140 LoopOverRSNDaughters();
142 if (fInputType[0]==kESDMC)
148 // fNumEventsProcessed++;
149 PostData(0, fOutList);
152 //________________________________________________________________________
153 void AliRsnComparisonAT::Terminate(Option_t *)
155 //=========================================================
157 //=========================================================
158 AliDebug(AliLog::kDebug, "<-");
159 fOutList = dynamic_cast<TList*>(GetOutputData(0));
162 AliError(" fOutList not available");
166 AliDebug(AliLog::kDebug, "->");
169 //________________________________________________________________________
170 void AliRsnComparisonAT::LoopOverESDtracks()
172 //=========================================================
173 // Loop over all ESD tracks
174 //=========================================================
175 if (!fESD[0]) return;
176 // AliInfo(Form("%d",fESD[0]->GetNumberOfTracks()));
177 AliRsnComparisonObj* input=0;
178 for (Int_t i=0;i< fESD[0]->GetNumberOfTracks(); i++)
180 AliESDtrack *esdtrack = fESD[0]->GetTrack(i);
181 for (Int_t j=0;j<fMyInputNum;j++)
183 for (Int_t k=0;i<fMyInput[j].GetEntries();k++)
185 input = (AliRsnComparisonObj*) fMyInput[j].At(k);
186 // input->FillPIDHistograms(esdtrack, fMC[0]);
189 for (Int_t j=0;j<fMyPIDInputNum;j++)
191 for (Int_t k=0;i<fMyPIDInput[j].GetEntries();k++)
193 input = (AliRsnComparisonObj*) fMyPIDInput[j].At(k);
194 input->FillPIDHistograms(esdtrack, fMC[0]);
200 //________________________________________________________________________
201 void AliRsnComparisonAT::LoopOverMCtracks()
203 //=========================================================
204 // Loop over all MC tracks
205 //=========================================================
209 AliRsnComparisonObj* input=0;
210 AliMCParticle *mctrack;
211 for (Int_t i=0;i<fMC[0]->GetNumberOfTracks(); i++)
213 mctrack = fMC[0]->GetTrack(i);
214 if (!mctrack) {AliInfo("mctrack == null");continue;}
215 for (Int_t j=0;j<fMyInputNum;j++)
217 for (Int_t k=0;k<fMyInput[j].GetEntries();k++)
219 input = (AliRsnComparisonObj*) fMyInput[j].At(k);
220 input->FillHistograms(mctrack);
223 for (Int_t j=0;j<fMyPIDInputNum;j++)
225 for (Int_t k=0;k<fMyPIDInput[j].GetEntries();k++)
227 input = (AliRsnComparisonObj*) fMyPIDInput[j].At(k);
228 input->FillPIDHistograms(mctrack);
234 //________________________________________________________________________
235 void AliRsnComparisonAT::LoopOverRSNDaughters()
237 //=========================================================
238 // Loop over all rsn daughters
239 //=========================================================
241 TClonesArray *tracks = (TClonesArray*) fRSN[0]->GetTracks();
242 AliRsnDaughter *daughter=0;
243 AliRsnComparisonObj* input=0;
244 for (Int_t i=0;i< tracks->GetEntriesFast(); i++)
246 daughter = (AliRsnDaughter*) tracks->At(i);
247 for (Int_t j=0;j<fMyInputNum;j++)
249 for (Int_t k=0;k<fMyInput[j].GetEntries();k++)
251 input = (AliRsnComparisonObj*) fMyInput[j].At(k);
252 // input->FillPIDHistograms(daughter);
255 for (Int_t j=0;j<fMyPIDInputNum;j++)
257 for (Int_t k=0;k<fMyPIDInput[j].GetEntries();k++)
259 input = (AliRsnComparisonObj*) fMyPIDInput[j].At(k);
260 input->FillPIDHistograms(daughter);
266 //________________________________________________________________________
267 void AliRsnComparisonAT::PrintStat()
269 //=========================================================
271 //=========================================================
272 AliDebug(AliLog::kDebug, "<-");
274 AliDebug(AliLog::kDebug, "->");
277 void AliRsnComparisonAT::AddMyInput(AliRsnComparisonObj * obj, const Int_t & index)
279 // if ( ( index<0 ) || ( index>kMyInputNum ) ) return;
281 fMyInput[index].Add(obj);
282 // AliInfo(Form("%d %s",fMyInput[index].GetEntries(),fMyInput[index].GetName()));
285 void AliRsnComparisonAT::AddMyPIDInput(AliRsnComparisonObj * obj, const Int_t & index)
287 // if ( ( index<0 ) || ( index>kMyInputNum ) ) return;
289 fMyPIDInput[index].Add(obj);
290 // AliInfo(Form("%d %s",fMyInput[index].GetEntries(),fMyInput[index].GetName()));
293 void AliRsnComparisonAT::SetMyPIDInputName(TString name, const Int_t & index)
295 fMyPIDInput[index].SetName(name.Data());