]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODInputHandler.cxx
Generated static dependecies
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODInputHandler.cxx
index 835ade29514a67067788ab3352ae2efe6fe9757e..7f52973a8d066d5318541a067ffdc3fc4b04cf55 100644 (file)
@@ -32,6 +32,7 @@
 #include "AliVCuts.h"
 #include "AliMCEvent.h"
 #include "AliAODpidUtil.h"
+#include "AliAODMCHeader.h"
 
 ClassImp(AliAODInputHandler)
 
@@ -52,6 +53,7 @@ AliAODInputHandler::AliAODInputHandler() :
        fMergePHOSCells(kTRUE), 
        fMergeEMCALTrigger(kTRUE), 
        fMergePHOSTrigger(kTRUE),
+   fMergeHMPIDrings(kTRUE),
     fFriendsConnected(kFALSE),
     fFileToMerge(0),
     fTreeToMerge(0),
@@ -77,6 +79,7 @@ AliAODInputHandler::AliAODInputHandler(const char* name, const char* title):
   fMergePHOSCells(kTRUE),
   fMergeEMCALTrigger(kTRUE), 
   fMergePHOSTrigger(kTRUE),
+  fMergeHMPIDrings(kTRUE),
   fFriendsConnected(kFALSE),
   fFileToMerge(0),
   fTreeToMerge(0),
@@ -124,11 +127,21 @@ Bool_t AliAODInputHandler::Init(TTree* tree, Option_t* opt)
 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);
@@ -136,10 +149,13 @@ Bool_t AliAODInputHandler::BeginEvent(Long64_t entry)
     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;
 }
 
@@ -153,6 +169,7 @@ Bool_t AliAODInputHandler::Notify(const char* path)
       fEvent->ReadFromTree(fTree, "reconnect");
   }
   fFriendsConnected = kFALSE;
+  fUserInfo=fTree->GetTree()->GetUserInfo();
     
   TTree *ttree = fTree->GetTree();
   if (!ttree) ttree = fTree;
@@ -245,10 +262,15 @@ void AliAODInputHandler::ConnectFriends()
        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());