2 #include "AliAnalysisManager.h" 6 #include <TClonesArray.h> 9 #include <AliMCEvent.h> 12 #if 0 // For Emacs - do not remove 19 AliMCEventHandler* parent)
20 : AliMCEventHandler(name, what),
28 fNEventsInContainer(0),
45 AliWarning(
"No parent");
60 AliDebugF(10,
"AliFMDMCHitHandler::Init(\"%s\")", opt);
63 if (option.EqualTo(
"proof") || option.EqualTo(
"local"))
return true;
67 TClass* cl = gROOT->GetClass(GetTitle());
69 if (cl->InheritsFrom(
"AliHit")) {
73 else if (cl->InheritsFrom(
"AliSDigit")) {
77 else if (cl->InheritsFrom(
"AliDigit")) {
88 fArray =
new TClonesArray(GetTitle());
92 AliError(
"Parent does not have an events tree");
115 AliDebugF(10,
"AliFMDMCHitHandler::BeginEvent(%lld)", entry);
130 AliError(
"Parent does not have a kinematics tree");
134 TFile* fileK = treeK->GetCurrentFile();
136 AliError(
"Kinematics tree has no associated file");
153 AliDebugF(10,
"AliFMDMCHitHandler::Notify(\"%s\")", path);
163 AliDebug(10,
"AliFMDMCHitHandler::FinishEvent()");
173 AliDebug(10,
"AliFMDMCHitHandler::Terminate()");
183 AliDebug(10,
"AliFMDMCHitHandler::TerminateIO()");
194 AliDebug(10,
"AliFMDMCHitHandler::ResetIO()");
197 AliDebugF(10,
"Got parent path %s", path ? path->Data() :
"null");
209 AliDebugF(10,
"Got parent path %s", path ? path->Data() :
"null");
210 if (!path)
return false;
213 if (fileNo > 0) ext = TString::Format(
"%d", fileNo);
216 if (w.EndsWith(
"s")) w.Chop();
218 TString fn = TString::Format(
"%s%s.%s%s.root",
219 path->Data(), GetName(),
221 Info(
"Init",
"Opening %s", fn.Data());
222 fFile = TFile::Open(fn,
"READ");
224 AliErrorF(
"Failed to open %s", fn.Data());
240 AliDebugF(10,
"AliFMDMCHitHandler::LoadEvent(%d)", iev);
247 if (!
fFile)
return false;
249 TString folder = TString::Format(
"Event%d", iev);
252 AliWarningF(
"Folder %s not found in file", folder.Data());
258 AliWarningF(
"Folder %s does not contain the %s tree %s",
259 folder.Data(), GetTitle(),
fTreeName.Data());
274 ::Error(
"AliFMDMCHitHandler::Create",
"No analysis manager");
278 AliVEventHandler* vmc = mgr->GetMCtruthEventHandler();
280 ::Error(
"AliFMDMCHitHandler::Create",
"No MC truth handler");
284 AliMCEventHandler* mc =
dynamic_cast<AliMCEventHandler*
>(vmc);
286 ::Error(
"AliFMDMCHitHandler::Create",
287 "MC truth handler not a AliMCEventHandler, but %s",
293 mc->AddSubsidiaryHandler(ret);
304 ::Error(
"AliFMDMCHitHandler::GetArray",
"No handler passed");
308 AliMCEventHandler* mc = handler->
GetParent();
310 ::Error(
"AliFMDMCHitHandler::GetArray",
"Handler has no parent");
314 AliMCEvent*
event = mc->MCEvent();
316 ::Error(
"AliFMDMCHitHandler::GetArray",
"No MC event");
320 AliStack*
stack =
event->Stack();
322 ::Error(
"AliFMDMCHitHandler::GetArray",
"Event has no stack");
328 ::Error(
"AliFMDMCHitHandler::GetArray",
"Handler has no tree");
332 Int_t treeIdx = stack->TreeKEntry(particle);
333 if (treeIdx < 0 || treeIdx >= tree->GetEntries()) {
334 ::Error(
"AliFMDMCHitHandler::GetArray",
335 "Index %d of %d out of bounds [0,%lld]", treeIdx, particle,
336 tree->GetEntries()-1);
340 tree->GetEntry(treeIdx);
virtual Bool_t OpenFile(Int_t ev)
virtual TTree * GetTree() const
AliMCEventHandler * fParent
virtual Bool_t FinishEvent()
static AliFMDMCHitHandler * Create(const char *name="FMD", const char *what="Hits")
AliFMDMCHitHandler(const char *name="FMD", const char *clsName="AliFMDHit", AliMCEventHandler *parent=0)
virtual Bool_t LoadEvent(Int_t iev)
virtual Bool_t TerminateIO()
virtual Bool_t BeginEvent(Long64_t entry)
virtual Bool_t Init(TTree *t, Option_t *o)
TString * GetParentPath() const
virtual Bool_t Terminate()
AliMCEventHandler * GetParent()
static TClonesArray * GetParticleArray(AliFMDMCHitHandler *handler, Int_t particle)
TClonesArray * GetArray()