fixed extension mode. in AOD input mode, extensions have to call mgr->GetOutputEventH...
authoragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 4 Mar 2011 09:07:52 +0000 (09:07 +0000)
committeragheata <agheata@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 4 Mar 2011 09:07:52 +0000 (09:07 +0000)
ANALYSIS/AliAnalysisTaskESDfilter.cxx
STEER/AliAODHandler.cxx
STEER/AliAODHandler.h
STEER/AliVEventHandler.h

index 909c8b2..15b3f79 100644 (file)
@@ -200,8 +200,10 @@ void AliAnalysisTaskESDfilter::UserExec(Option_t */*option*/)
   }\r
   // Filters must explicitely enable AOD filling in their UserExec (AG)\r
   if (!AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()) AliFatal("Cannot run ESD filter without an output event handler");\r
-  if(fEnableFillAOD) AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);\r
-\r
+  if(fEnableFillAOD) {\r
+     AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);\r
+     AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillExtension(kTRUE);\r
+  }   \r
   ConvertESDtoAOD();\r
 }\r
 \r
index ec39319..e2f26a4 100644 (file)
@@ -431,7 +431,6 @@ void AliAODHandler::StoreMCParticles(){
 Bool_t AliAODHandler::FinishEvent()
 {
   // Fill data structures
-  
   if(fFillAOD && fFillAODRun && fAODEvent){
       fAODEvent->MakeEntriesReferencable();
       fTreeA->BranchRef();
@@ -439,12 +438,13 @@ Bool_t AliAODHandler::FinishEvent()
   }
 
   if ((fFillAOD && fFillAODRun) || fFillExtension) {
-    if (fExtensions) {
+    if (fExtensions && fFillExtension) {
+      // fFillExtension can be set by the ESD filter or by a delta filter in case of AOD inputs
       TIter next(fExtensions);
       AliAODExtension *ext;
       while ((ext=(AliAODExtension*)next())) ext->FinishEvent();
     }
-    if (fFilters) {   
+    if (fFilters && fFillAOD && fFillAODRun) {
       TIter nextf(fFilters);
       AliAODExtension *ext;
       while ((ext=(AliAODExtension*)nextf())) {
index 5de824b..e8416fb 100644 (file)
@@ -37,7 +37,7 @@ class AliAODHandler : public AliVEventHandler {
     virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*option*/)  {return kTRUE;}
     virtual Bool_t       GetEntry() {return kTRUE;}
            
-    virtual Bool_t       BeginEvent(Long64_t /*entry*/) {fFillAOD=kFALSE; return kTRUE;}
+    virtual Bool_t       BeginEvent(Long64_t /*entry*/) {fFillAOD=kFALSE; fFillExtension=kFALSE; return kTRUE;}
     virtual Bool_t       Notify() { return AliVEventHandler::Notify(); };
     virtual Bool_t       Notify(const char * /* path */) {return kTRUE;}
     virtual Bool_t       FinishEvent();
@@ -46,6 +46,7 @@ class AliAODHandler : public AliVEventHandler {
     //
     virtual void         SetCreateNonStandardAOD()               {fIsStandard = kFALSE;}
     virtual void         SetFillAOD(Bool_t b)                    {fFillAOD = b;}
+    virtual void         SetFillExtension(Bool_t b)              {fFillExtension = b;}
     virtual void         SetFillAODforRun(Bool_t b)              {fFillAODRun = b;}
     virtual void         SetNeedsHeaderReplication()             {fNeedsHeaderReplication             = kTRUE;}
     virtual void         SetNeedsTracksBranchReplication()       {fNeedsTracksBranchReplication       = kTRUE;}
index b7db857..c1ddbb1 100644 (file)
@@ -24,6 +24,7 @@ class AliVEventHandler : public TNamed {
     virtual TTree       *GetTree() const { return NULL; }
     virtual Option_t    *GetDataType() const { return NULL; }
     virtual void         SetFillAOD(Bool_t) {}
+    virtual void         SetFillExtension(Bool_t) {}
     // Output
     virtual void         SetOutputFileName(const char* fname)   = 0;
     virtual const char*  GetOutputFileName()              = 0;