- Set of changes needed for merging aod files in CAF. Some fixes also for event mixing.
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 27 May 2008 07:03:41 +0000 (07:03 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 27 May 2008 07:03:41 +0000 (07:03 +0000)
STEER/AliAODHandler.cxx
STEER/AliAODHandler.h
STEER/AliVEventHandler.h

index a4b3a1f..04f1522 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <TTree.h>
 #include <TFile.h>
+#include <TString.h>
 
 #include "AliAODHandler.h"
 #include "AliAODEvent.h"
@@ -36,7 +37,7 @@ AliAODHandler::AliAODHandler() :
     fAODEvent(NULL),
     fTreeA(NULL),
     fFileA(NULL),
-    fName("")
+    fFileName("")
 {
   // default constructor
 }
@@ -48,7 +49,7 @@ AliAODHandler::AliAODHandler(const char* name, const char* title):
     fAODEvent(NULL),
     fTreeA(NULL),
     fFileA(NULL),
-    fName("")
+    fFileName("")
 {
 }
 
@@ -62,11 +63,10 @@ AliAODHandler::~AliAODHandler()
     delete fFileA;
   }
   delete fTreeA;
-  delete fName;
  // destructor
 }
 
-
+//______________________________________________________________________________
 Bool_t AliAODHandler::Init(Option_t* opt)
 {
   // Initialize IO
@@ -78,14 +78,22 @@ Bool_t AliAODHandler::Init(Option_t* opt)
   }
   //
   // File opening according to execution mode
-  
-  if (!(strcmp(opt, "proof"))) {
+  TString option(opt);
+  option.ToLower();
+  if (option.Contains("proof")) {
     // proof
-    CreateTree(0);
+    if (option.Contains("special")) {
+       // File for tree already opened on slave -> merging via files
+       fFileA = gFile;
+       CreateTree(1);
+    } else {   
+       // Merging in memory
+       CreateTree(0);
+    }   
   } else {
     // local and grid
     TDirectory *owd = gDirectory;
-    fFileA = new TFile(fName, "RECREATE");
+    fFileA = new TFile(fFileName.Data(), "RECREATE");
     CreateTree(1);
     owd->cd();
   }
@@ -101,6 +109,7 @@ Bool_t AliAODHandler::FinishEvent()
     return kTRUE;
 }
 
+//______________________________________________________________________________
 Bool_t AliAODHandler::Terminate()
 {
     // Terminate 
@@ -108,6 +117,7 @@ Bool_t AliAODHandler::Terminate()
     return kTRUE;
 }
 
+//______________________________________________________________________________
 Bool_t AliAODHandler::TerminateIO()
 {
     // Terminate IO
@@ -118,7 +128,7 @@ Bool_t AliAODHandler::TerminateIO()
     return kTRUE;
 }
 
-
+//______________________________________________________________________________
 void AliAODHandler::CreateTree(Int_t flag)
 {
     // Creates the AOD Tree
@@ -127,19 +137,21 @@ void AliAODHandler::CreateTree(Int_t flag)
     if (flag == 0) fTreeA->SetDirectory(0);
 }
 
+//______________________________________________________________________________
 void AliAODHandler::FillTree()
 {
     // Fill the AOD Tree
     fTreeA->Fill();
 }
 
-
+//______________________________________________________________________________
 void AliAODHandler::AddAODtoTreeUserInfo()
 {
     // Add aod event to tree user info
     fTreeA->GetUserInfo()->Add(fAODEvent);
 }
 
+//______________________________________________________________________________
 void AliAODHandler::AddBranch(const char* cname, void* addobj)
 {
     // Add a new branch to the aod 
@@ -153,3 +165,17 @@ void AliAODHandler::AddBranch(const char* cname, void* addobj)
     fAODEvent->AddObject(obj);
     owd->cd();
 }
+
+//______________________________________________________________________________
+void AliAODHandler::SetOutputFileName(const char* fname)
+{
+// Set file name.
+   fFileName = fname;
+}
+
+//______________________________________________________________________________
+const char *AliAODHandler::GetOutputFileName()
+{
+// Get file name.
+   return fFileName.Data();
+}
index f459e96..807286a 100644 (file)
@@ -24,8 +24,8 @@ class AliAODHandler : public AliVEventHandler {
     AliAODHandler();
     AliAODHandler(const char* name, const char* title);
     virtual ~AliAODHandler();
-    virtual void         SetOutputFileName(const char* fname) {fName = fname;}
-    virtual const char*  GetOutputFileName() {return fName;}
+    virtual void         SetOutputFileName(const char* fname);
+    virtual const char*  GetOutputFileName();
     virtual Bool_t       Init(Option_t* option);
     virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*option*/)  {return kTRUE;}
     virtual Bool_t       BeginEvent(Long64_t /*entry*/)  {return kTRUE;}
@@ -38,7 +38,7 @@ class AliAODHandler : public AliVEventHandler {
     virtual void         SetCreateNonStandardAOD() {fIsStandard = kFALSE;}
     //
     AliAODEvent*         GetAOD()  {return fAODEvent;}
-    TTree*               GetTree() {return fTreeA;}
+    virtual TTree*       GetTree() {return fTreeA;}
     void                 CreateTree(Int_t flag);
     void                 FillTree();
     void                 AddAODtoTreeUserInfo();
@@ -50,12 +50,12 @@ class AliAODHandler : public AliVEventHandler {
     AliAODHandler(const AliAODHandler&);             // Not implemented
     AliAODHandler& operator=(const AliAODHandler&);  // Not implemented
  private:
-    Bool_t                   fIsStandard; //! Flag for standard aod creation 
+    Bool_t                   fIsStandard; // Flag for standard aod creation 
     AliAODEvent             *fAODEvent;   //! Pointer to the AOD event
     TTree                   *fTreeA;      //! tree for AOD persistency
     TFile                   *fFileA;      //! Output file
-    const char              *fName;       //! Output file name
-    ClassDef(AliAODHandler, 1);
+    TString                  fFileName;   //  Output file name
+    ClassDef(AliAODHandler, 2);
 };
 
 #endif
index 3918363..d7357e3 100644 (file)
@@ -20,6 +20,8 @@ class AliVEventHandler : public TNamed {
     AliVEventHandler();
     AliVEventHandler(const char* name, const char* title);
     virtual ~AliVEventHandler();
+    // Handled tree
+    virtual TTree       *GetTree() { return NULL; }
     // Output
     virtual void         SetOutputFileName(const char* fname)   = 0;
     virtual const char*  GetOutputFileName()              = 0;