]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/ESD/AliESDInputHandler.cxx
Updates in event mixing code for low-pt code
[u/mrichter/AliRoot.git] / STEER / ESD / AliESDInputHandler.cxx
index 864dbb5bf8f91beb8bad31091a8e58052a517a97..76ed08e5f216547a37ac4af50c6caffa6c3b93a5 100644 (file)
@@ -126,6 +126,12 @@ Bool_t AliESDInputHandler::BeginEvent(Long64_t entry)
   
   fNewEvent = kTRUE;
   //
+  static Int_t prevRunNumber = -1;
+  if (prevRunNumber != fEvent->GetRunNumber() && NeedField()) {
+    fEvent->InitMagneticField();
+    prevRunNumber = fEvent->GetRunNumber();
+  } 
+  //
   // Event selection
   // 
   fIsSelectedResult = 0;
@@ -136,6 +142,9 @@ Bool_t AliESDInputHandler::BeginEvent(Long64_t entry)
   ((AliESDEvent*)fEvent)->SetESDfriend(fFriend);
   called = kTRUE;
 
+  // set transient pointer to event inside tracks
+  fEvent->ConnectTracks();
+
   if (fMixingHandler) fMixingHandler->BeginEvent(entry);
   if (fUseTags && fRunTag) {
     fEventTag = 0;
@@ -163,23 +172,23 @@ void AliESDInputHandler::ConnectFriends()
   //
   // Handle the friends first
   //
-  if (!fTree->FindBranch("ESDfriend.")) {
+  TTree* cTree = fTree->GetTree();
+  if (!cTree) cTree = fTree;      
+  if (!cTree->FindBranch("ESDfriend.")) {
     // Try to add ESDfriend. branch as friend
-      TString esdFriendTreeFName;
-      esdFriendTreeFName = (fTree->GetCurrentFile())->GetName();
-    
-
-    if(esdFriendTreeFName.Contains("AliESDs.root")) {
-      esdFriendTreeFName.ReplaceAll("AliESDs.root", fFriendFileName.Data());
-    } else if(esdFriendTreeFName.Contains("AliESDs_wSDD.root")) {
-      esdFriendTreeFName.ReplaceAll("AliESDs_wSDD.root", fFriendFileName.Data());
-    }
+    TString esdFriendTreeFName;
+    esdFriendTreeFName = (fTree->GetCurrentFile())->GetName();    
+    TString basename = gSystem->BaseName(esdFriendTreeFName);
+    Int_t index = basename.Index("#")+1;
+    basename.Remove(index);
+    basename += fFriendFileName;
+    TString dirname = gSystem->DirName(esdFriendTreeFName);
+    dirname += "/";
+    esdFriendTreeFName = dirname + basename;
 
-    TTree* cTree = fTree->GetTree();
-    if (!cTree) cTree = fTree;      
     cTree->AddFriend("esdFriendTree", esdFriendTreeFName.Data());
     cTree->SetBranchStatus("ESDfriend.", 1);
-    fFriend = (AliESDfriend*)(fEvent->FindListObject("AliESDfriend"));
+    fFriend = fEvent->FindFriend();
     if (fFriend) cTree->SetBranchAddress("ESDfriend.", &fFriend);
   }
 }
@@ -189,6 +198,7 @@ Bool_t  AliESDInputHandler::FinishEvent()
 {
     // Finish the event 
   if(fEvent)fEvent->Reset();
+  if (fFriend) fFriend->Reset();
   if (fMixingHandler) fMixingHandler->FinishEvent();
   return kTRUE;
 } 
@@ -208,6 +218,8 @@ Bool_t AliESDInputHandler::Notify(const char* path)
   SwitchOffBranches();
   SwitchOnBranches();
   fFriend = (AliESDfriend*)(fEvent->FindListObject("AliESDfriend"));
+  fUserInfo=fTree->GetTree()->GetUserInfo();
+
   //
   if (fUseHLT) {
     // Get HLTesdTree from current file
@@ -515,3 +527,6 @@ void AliESDInputHandler::CreatePIDResponse(Bool_t isMC/*=kFALSE*/)
 
 }
 
+
+
+