AddFriend in Notify()
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2010 12:35:33 +0000 (12:35 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 1 Apr 2010 12:35:33 +0000 (12:35 +0000)
ANALYSIS/AliAnalysisTaskSE.cxx
STEER/AliESDInputHandler.cxx

index 189d6f5..14cd7fe 100644 (file)
@@ -316,8 +316,11 @@ void AliAnalysisTaskSE::Exec(Option_t* option)
 
     if (handler) handler->SetFillAOD(isSelected);
 
-    if( fInputHandler ) fEntry = fInputHandler->GetReadEntry();
-  
+    if( fInputHandler ) {
+       fEntry = fInputHandler->GetReadEntry();
+       fESDfriend = ((AliESDInputHandler*)fInputHandler)->GetESDfriend();
+    }
+    
 
 // Notify the change of run number
     if (InputEvent() && (InputEvent()->GetRunNumber() != fCurrentRunNumber)) {
index 9a0465b..c89939c 100644 (file)
@@ -70,7 +70,6 @@ AliESDInputHandler::AliESDInputHandler() :
 AliESDInputHandler::~AliESDInputHandler() 
 {
   //  destructor
-  //  delete fEvent;
 }
 
 //______________________________________________________________________________
@@ -83,33 +82,19 @@ AliESDInputHandler::AliESDInputHandler(const char* name, const char* title):
 
 Bool_t AliESDInputHandler::Init(TTree* tree,  Option_t* opt)
 {
+    //
     // Initialisation necessary for each new tree 
+    // 
     fAnalysisType = opt;
     fTree         = tree;
     
     if (!fTree) return kFALSE;
     fTree->GetEntry(0);
     
-    // Get pointer to ESD event
-     
-    if (!fTree->FindBranch("ESDfriend.") && fReadFriends) {
-      // Try to add ESDfriend. branch as friend
-      TString esdTreeFName, esdFriendTreeFName;    
-      TTree* theTree = fTree->GetTree();
-      if (!theTree) theTree = tree;
-      esdTreeFName = (theTree->GetCurrentFile())->GetName();
-      esdFriendTreeFName = esdTreeFName;
-      esdFriendTreeFName.ReplaceAll("AliESDs.root", fFriendFileName.Data());
-      theTree->AddFriend("esdFriendTree", esdFriendTreeFName.Data());
-    }
-
-    SwitchOffBranches();
-    SwitchOnBranches();
 
     if (!fEvent) fEvent = new AliESDEvent();
     fEvent->ReadFromTree(fTree);
     fNEvents = fTree->GetEntries();
-    fFriend = (AliESDfriend*)(fEvent->FindListObject("AliESDfriend"));
     return kTRUE;
 }
 
@@ -136,7 +121,6 @@ Bool_t AliESDInputHandler::BeginEvent(Long64_t entry)
   //
   // Friends
   ((AliESDEvent*)fEvent)->SetESDfriend(fFriend);
-  
   return kTRUE;
 }
 
@@ -152,6 +136,31 @@ Bool_t AliESDInputHandler::Notify(const char* path)
     // Notify a directory change
     AliInfo(Form("Directory change %s \n", path));
     //
+    // Handle the friends first
+    //
+    if (!fTree->FindBranch("ESDfriend.") && fReadFriends) {
+      // Try to add ESDfriend. branch as friend
+      TString esdTreeFName, esdFriendTreeFName;    
+      esdTreeFName = (fTree->GetCurrentFile())->GetName();
+      esdFriendTreeFName = esdTreeFName;
+      esdFriendTreeFName.ReplaceAll("AliESDs.root", fFriendFileName.Data());
+
+      TTree* cTree = fTree->GetTree();
+      if (!cTree) cTree = fTree;
+      
+      cTree->AddFriend("esdFriendTree", esdFriendTreeFName.Data());
+      cTree->SetBranchStatus("ESDfriend.", 1);
+      fFriend = (AliESDfriend*)(fEvent->FindListObject("AliESDfriend"));
+      cTree->SetBranchAddress("ESDfriend.", &fFriend);
+    } 
+    //
+    //
+    SwitchOffBranches();
+    SwitchOnBranches();
+    fFriend = (AliESDfriend*)(fEvent->FindListObject("AliESDfriend"));
+    
+
+    //
     if (fUseHLT) {
        // Get HLTesdTree from current file
        TTree* cTree = fTree;
@@ -165,6 +174,9 @@ Bool_t AliESDInputHandler::Notify(const char* path)
        }
     }
 
+
+
+
     if (!fUseTags) return (kTRUE);
     
     Bool_t zip = kFALSE;