#include "AliVCuts.h"
#include "AliMCEvent.h"
#include "AliAODpidUtil.h"
+#include "AliAODMCHeader.h"
ClassImp(AliAODInputHandler)
fMergePHOSCells(kTRUE),
fMergeEMCALTrigger(kTRUE),
fMergePHOSTrigger(kTRUE),
+ fMergeHMPIDrings(kTRUE),
fFriendsConnected(kFALSE),
fFileToMerge(0),
fTreeToMerge(0),
fMergePHOSCells(kTRUE),
fMergeEMCALTrigger(kTRUE),
fMergePHOSTrigger(kTRUE),
+ fMergeHMPIDrings(kTRUE),
fFriendsConnected(kFALSE),
fFileToMerge(0),
fTreeToMerge(0),
Bool_t AliAODInputHandler::BeginEvent(Long64_t entry)
{
// Begin event
- TClonesArray* mcParticles = (TClonesArray*) (fEvent->FindListObject("mcparticles"));
- if (mcParticles) {
- if (!fMCEvent) fMCEvent = new AliMCEvent();
- fMCEvent->SetParticleArray(mcParticles);
+ static Int_t prevRunNumber = -1;
+ if (prevRunNumber != fEvent->GetRunNumber() && NeedField()) {
+ fEvent->InitMagneticField();
+ prevRunNumber = fEvent->GetRunNumber();
+ }
+
+ AliAODMCHeader* mcHeader = (AliAODMCHeader*) fEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
+ TClonesArray* mcParticles = (TClonesArray*) (fEvent->FindListObject("mcparticles"));
+
+ if (mcParticles && mcHeader) {
+ if (!fMCEvent) fMCEvent = new AliMCEvent();
+ fMCEvent->SetExternalHeader(mcHeader);
+ fMCEvent->SetParticleArray(mcParticles);
}
+
// When merging, get current event number from GetReadEntry(),
// entry gives the events in the current file
if (fTreeToMerge) fTreeToMerge->GetEntry(GetReadEntry() + fMergeOffset);
if (fEventCuts)
fIsSelectedResult = fEventCuts->GetSelectionMask(fEvent);
else
- fIsSelectedResult = fEvent->GetHeader()->GetOfflineTrigger();
+ fIsSelectedResult = static_cast<AliVAODHeader*>(fEvent->GetHeader())->GetOfflineTrigger();
if (fMixingHandler) fMixingHandler->BeginEvent(entry);
-
+
+ // set transient pointer to event inside tracks
+ fEvent->ConnectTracks();
+
return kTRUE;
}
fEvent->ReadFromTree(fTree, "reconnect");
}
fFriendsConnected = kFALSE;
+ fUserInfo=fTree->GetTree()->GetUserInfo();
TTree *ttree = fTree->GetTree();
if (!ttree) ttree = fTree;
TString aodTreeFName,aodFriendTreeFName;
TTree *ttree = fTree->GetTree();
if (!ttree) ttree = fTree;
+ if(!ttree->GetCurrentFile()){
+ AliWarning("Couldn't get current AOD file, not connecting friends");
+ return;
+ }
aodTreeFName = ttree->GetCurrentFile()->GetName();
while((obj = (TNamed*)next())) {
aodFriendTreeFName = aodTreeFName;
+ if (strlen(GetInputFileName())) aodFriendTreeFName.ReplaceAll(GetInputFileName(),obj->GetName());
aodFriendTreeFName.ReplaceAll("AliAOD.root",obj->GetName());
aodFriendTreeFName.ReplaceAll("AliAODs.root",obj->GetName());
ttree->AddFriend("aodTree", aodFriendTreeFName.Data());