]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliMultiEventInputHandler.cxx
Creation of buffer delayed until Init()
[u/mrichter/AliRoot.git] / ANALYSIS / AliMultiEventInputHandler.cxx
index d36854dc35c4b16e296b4786b33b67c46f2a89a6..aec7d5162abe34c1024115bd1f815cc54940657c 100644 (file)
@@ -55,17 +55,9 @@ AliMultiEventInputHandler::AliMultiEventInputHandler(Int_t size, Int_t format) :
     fIndex(0),
     fCurrentBin(0),
     fEventPool(0),
-    fEventBuffer(new AliVEvent*[size])
+    fEventBuffer(0)
 {
-  // Default constructor
-    for (Int_t i = 0; i < size; i++) 
-       if (fFormat == 1) {
-           fEventBuffer[i] = new AliAODEvent();
-       } else if (fFormat == 0) {
-           fEventBuffer[i] = new AliESDEvent();
-       } else{
-           AliWarning(Form("Unknown Format %5d", fFormat));
-       }
+  // constructor
 }
 
 //______________________________________________________________________________
@@ -77,17 +69,10 @@ AliMultiEventInputHandler::AliMultiEventInputHandler(const char* name, const cha
     fIndex(0),
     fCurrentBin(0),
     fEventPool(0),
-    fEventBuffer(new AliVEvent*[size])
+    fEventBuffer(0)
 {
     // Constructor
-    for (Int_t i = 0; i < size; i++) 
-       if (fFormat == 1) {
-           fEventBuffer[i] = new AliAODEvent();
-       } else if (fFormat == 0) {
-           fEventBuffer[i] = new AliESDEvent();
-       } else{
-           AliWarning(Form("Unknown Format %5d", fFormat));
-       }
+
 }
 
 //______________________________________________________________________________
@@ -99,17 +84,49 @@ AliMultiEventInputHandler::~AliMultiEventInputHandler()
 Bool_t AliMultiEventInputHandler::Init(TTree* tree, Option_t* /*opt*/)
 {
     // Initialisation necessary for each new tree
-    fTree = tree;
-    fTree->GetEntry(0);
+    if (!fEventBuffer) {
+       fEventBuffer = new AliVEvent*[fBufferSize];
+       
+       for (Int_t i = 0; i < fBufferSize; i++) 
+           if (fFormat == 1) {
+               fEventBuffer[i] = new AliAODEvent();
+           } else if (fFormat == 0) {
+               fEventBuffer[i] = new AliESDEvent();
+           } else{
+               AliWarning(Form("Unknown Format %5d", fFormat));
+           }
+    }
     
+
+    fTree = tree;
     if (!fTree) return kFALSE;
-    // Get pointer to AOD event
-    fEventBuffer[0]->ReadFromTree(fTree, "");
+    for (Int_t i = 0; i < fBufferSize; i++) 
+       fEventBuffer[i]->Clear();
     fIndex     = 0;
     fNBuffered = 1;
     return kTRUE;
 }
 
+
+Bool_t AliMultiEventInputHandler::Notify(const char */*path*/)
+{
+    // Connect to new tree
+
+       
+    static Bool_t first = kTRUE;
+    
+    
+    if (first) {
+       fEventBuffer[0]->ReadFromTree(fTree, "");
+       first = kFALSE;
+    } else {
+       fEventBuffer[0]->ReadFromTree(fTree, "reconnect");
+    }
+    
+    
+    return (kTRUE);
+}
+
 Bool_t AliMultiEventInputHandler::BeginEvent(Long64_t /*entry*/)
 {
     // Actions before analysis of each event 
@@ -130,7 +147,7 @@ Bool_t AliMultiEventInputHandler::FinishEvent()
     
     fIndex %= fBufferSize;
     AliInfo(Form("Connecting buffer entry %5d", fIndex));
-
+    fEventBuffer[fIndex]->Clear();
     fEventBuffer[fIndex]->ReadFromTree(fTree, "reconnect");
 
     fNBuffered++;
@@ -139,7 +156,6 @@ Bool_t AliMultiEventInputHandler::FinishEvent()
     return (kTRUE);
 }
 
-
 AliVEvent* AliMultiEventInputHandler::GetEvent(Int_t iev) const
 {
     // Get event number iev from buffer