2 // Class AliRsnVAnalysisTaskME
4 // Virtual Class derivated from AliAnalysisTaskME which will be base class
5 // for all RSN ME tasks
7 // authors: Martin Vala (martin.vala@cern.ch)
8 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
13 #include "AliESDEvent.h"
14 #include "AliMCEvent.h"
15 #include "AliAODEvent.h"
16 #include "AliAODTrack.h"
17 #include "AliMultiEventInputHandler.h"
18 #include "AliRsnVAnalysisTaskME.h"
20 ClassImp(AliRsnVAnalysisTaskME)
22 //_____________________________________________________________________________
23 AliRsnVAnalysisTaskME::AliRsnVAnalysisTaskME(const char *name) :
24 AliAnalysisTaskME(name),
25 fLogType(AliLog::kInfo),
26 fLogClassesString(""),
34 // Default constructor
36 AliDebug(AliLog::kDebug+2,"<-");
38 DefineOutput(1, TList::Class());
40 AliDebug(AliLog::kDebug+2,"->");
43 AliRsnVAnalysisTaskME::AliRsnVAnalysisTaskME(const AliRsnVAnalysisTaskME& copy) : AliAnalysisTaskME(copy),
44 fLogType(copy.fLogType),
45 fLogClassesString(copy.fLogClassesString),
46 fESDEvent(copy.fESDEvent),
47 fMCEvent(copy.fMCEvent),
48 fAODEvent(copy.fAODEvent),
50 fTaskInfo(copy.fTaskInfo)
52 AliDebug(AliLog::kDebug+2,"<-");
53 AliDebug(AliLog::kDebug+2,"->");
56 //_____________________________________________________________________________
57 void AliRsnVAnalysisTaskME::LocalInit()
63 SetDebugForAllClasses();
64 AliDebug(AliLog::kDebug+2,"<-");
65 AliAnalysisTaskME::LocalInit();
66 AliDebug(AliLog::kDebug+2,"->");
69 //_____________________________________________________________________________
70 Bool_t AliRsnVAnalysisTaskME::Notify()
76 AliDebug(AliLog::kDebug+2,"<-");
77 if (!AliAnalysisTaskME::Notify()) return kFALSE;
78 AliDebug(AliLog::kDebug+2,"->");
84 //_____________________________________________________________________________
85 void AliRsnVAnalysisTaskME::ConnectInputData(Option_t *opt)
91 SetDebugForAllClasses();
93 AliDebug(AliLog::kDebug+2,"<-");
95 AliAnalysisTaskME::ConnectInputData(opt);
97 AliDebug(AliLog::kDebug+2,"->");
100 //_____________________________________________________________________________
101 void AliRsnVAnalysisTaskME::RsnUserCreateOutputObjects()
104 // Rsn User Create Output Objects
107 AliDebug(AliLog::kDebug+2,"<-");
109 AliDebug(AliLog::kDebug+2,"->");
113 //_____________________________________________________________________________
114 void AliRsnVAnalysisTaskME::UserCreateOutputObjects()
117 // User Create Output Objects
120 SetDebugForAllClasses();
122 AliDebug(AliLog::kDebug+2,"<-");
124 fInfoList = new TList();
125 fInfoList->SetOwner();
126 fTaskInfo.GenerateInfoList(fInfoList);
127 RsnUserCreateOutputObjects();
129 PostData(1, fInfoList);
131 AliDebug(AliLog::kDebug+2,"<-");
134 //_____________________________________________________________________________
135 void AliRsnVAnalysisTaskME::UserExec(Option_t* opt)
141 AliDebug(AliLog::kDebug+2,"<-");
147 fTaskInfo.PrintInfo(fEntry);
149 PostData(1, fInfoList);
151 AliDebug(AliLog::kDebug+2,"->");
154 //_____________________________________________________________________________
155 void AliRsnVAnalysisTaskME::RsnUserExec(Option_t*)
161 AliDebug(AliLog::kDebug+2,"<-");
163 if (!CheckAndPrintEvents()) return;
165 AliDebug(AliLog::kDebug+2,"->");
168 //_____________________________________________________________________________
169 Bool_t AliRsnVAnalysisTaskME::CheckAndPrintEvents()
172 // Check for supported events
173 // return false in the case of unkown format
174 // or number of events is less or equal 1
177 AliInfo(Form("Current Entry %lld", Entry()));
178 Int_t nEvents = fInputHandler->GetBufferSize();
179 if (nEvents <= 1) return kFALSE;
180 fESDEvent = dynamic_cast<AliESDEvent*>(GetEvent(0));
181 fAODEvent = dynamic_cast<AliAODEvent*>(GetEvent(0));
184 AliESDEvent **allESDEvents = new AliESDEvent*[nEvents];
185 for (Int_t i = 0; i < nEvents; i++) {
186 allESDEvents[i] = dynamic_cast<AliESDEvent*>(GetEvent(i));
187 if (!allESDEvents[i]) {
188 AliWarning(Form("Null ESD event in index %d", i));
191 AliDebug(AliLog::kDebug, Form("ESD event %d has %d tracks", i, allESDEvents[i]->GetNumberOfTracks()));
193 } else if (fAODEvent) {
194 AliAODEvent **allAODEvents = new AliAODEvent*[nEvents];
195 for (Int_t i = 0; i < nEvents; i++) {
196 allAODEvents[i] = dynamic_cast<AliAODEvent*>(GetEvent(i));
197 if (!allAODEvents[i]) {
198 AliWarning(Form("Null AOD event in index %d", i));
201 AliDebug(AliLog::kDebug, Form("AOD event %d has %d tracks", i, allAODEvents[i]->GetNumberOfTracks()));
204 AliWarning("Unknown input format");
211 //_____________________________________________________________________________
212 void AliRsnVAnalysisTaskME::Terminate(Option_t* opt)
218 AliDebug(AliLog::kDebug+2,"<-");
219 AliAnalysisTask::Terminate();
221 fInfoList = dynamic_cast<TList*>(GetOutputData(1));
223 AliError(Form("At end of analysis, fOutList is %p", fInfoList));
229 TH1I *hEventInfo = (TH1I*) fInfoList->FindObject(fTaskInfo.GetEventHistogramName());
231 AliError(Form("hEventInfo is %p", hEventInfo));
235 AliInfo(Form("=== %s ==================", GetName()));
236 AliInfo(Form("Number Of Events Processed : %10lld", (Long64_t)hEventInfo->Integral()));
237 AliInfo(Form("Number Of Events Accepted : %10lld", (Long64_t)hEventInfo->GetBinContent(2)));
238 AliInfo(Form("Number Of Events Skipped : %10lld", (Long64_t)hEventInfo->GetBinContent(1)));
239 AliInfo(Form("=== end %s ==============", GetName()));
241 AliDebug(AliLog::kDebug+2,"->");
244 //_____________________________________________________________________________
245 void AliRsnVAnalysisTaskME::RsnTerminate(Option_t*)
251 AliDebug(AliLog::kDebug+2,"<-");
252 AliDebug(AliLog::kDebug+2,"->");
255 //_____________________________________________________________________________
256 void AliRsnVAnalysisTaskME::FillInfo()
262 fTaskInfo.FillInfo();
265 //_____________________________________________________________________________
266 void AliRsnVAnalysisTaskME::SetLogType(AliLog::EType_t type, TString allClasses)
272 AliDebug(AliLog::kDebug+2,"<-");
274 fLogClassesString = allClasses;
275 AliDebug(AliLog::kDebug+2,"->");
277 //_____________________________________________________________________________
278 void AliRsnVAnalysisTaskME::SetDebugForAllClasses()
281 // Set Debug For All Classes
284 AliDebug(AliLog::kDebug+2,"<-");
285 TObjArray* array = fLogClassesString.Tokenize(":");
288 for (Int_t i = 0;i < array->GetEntriesFast();i++) {
289 str = (TObjString *) array->At(i);
290 strr = str->GetString();
291 AliLog::SetClassDebugLevel(strr.Data(), fLogType);
292 AliInfo(Form("Setting Debug to %s", strr.Data()));
294 AliDebug(AliLog::kDebug+2,"->");