]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODHandler.h
Improved muon AOD's from Laurent
[u/mrichter/AliRoot.git] / STEER / AliAODHandler.h
index 6448d6350b4bf857624fa1728f656869420ee58b..e920babaadff494fdc75e3a9129c3e8e7033ba69 100644 (file)
@@ -20,8 +20,8 @@ class AliMCEventHandler;
 class AliAODMCHeader;
 class AliAODExtension;
 class AliGenEventHeader;
-
-
+class TMap;
+class AliAnalysisFilter;
 
 class AliAODHandler : public AliVEventHandler {
     
@@ -93,10 +93,14 @@ class AliAODHandler : public AliVEventHandler {
     void                 SetMCEventHandler(AliMCEventHandler* mcH) {fMCEventH = mcH;} // For internal use
     void StoreMCParticles(); // Store MC particles, only to be called from AliAnalyisTaskMCParticleFilter
 
+  void Print(Option_t* opt="") const;
+  
  private:
     void SetMCHeaderInfo(AliAODMCHeader *mcHeader,AliGenEventHeader *genHeader); // Utility function t catch different types of eventheaders
     AliAODHandler(const AliAODHandler&);             // Not implemented
     AliAODHandler& operator=(const AliAODHandler&);  // Not implemented
+  void PrintExtensions(const char* name, const TObjArray& array) const;
+  
  private:
     Bool_t                   fIsStandard;                         // Flag for standard aod creation
     Bool_t                   fFillAOD;                            // Flag for filling of the AOD tree at the end (all or nothing evt by evt)
@@ -132,6 +136,8 @@ class AliAODHandler : public AliVEventHandler {
 //     Author: Andrei Gheata, CERN
 //-------------------------------------------------------------------------
 
+class AliAODBranchReplicator;
+
 class AliAODExtension : public TNamed {
 
 public:
@@ -140,7 +146,7 @@ enum EAliAODExtensionFlags {
    kFilteredAOD      = BIT(14)
 };
     
-    AliAODExtension() : TNamed(), fAODEvent(0), fTreeE(0), fFileE(0), fNtotal(0), fNpassed(0), fSelected(kFALSE) {}
+  AliAODExtension();
     AliAODExtension(const char* name, const char* title, Bool_t isfilter=kFALSE);
     virtual ~AliAODExtension();
     void                 AddBranch(const char* cname, void* addobj);
@@ -157,6 +163,13 @@ enum EAliAODExtensionFlags {
     void                 SetEvent(AliAODEvent *event);
     void                 SetOutputFileName(const char* fname) {TNamed::SetName(fname);}
     Bool_t               TerminateIO();
+
+  void Print(Option_t* opt="") const;
+  
+  void FilterBranch(const char* branchName, AliAODBranchReplicator* replicator=0x0);
+  void DisableReferences() { fEnableReferences=kFALSE; }
+  void EnableReferences() { fEnableReferences=kTRUE; }
+  
  private:
     AliAODExtension(const AliAODExtension&);             // Not implemented
     AliAODExtension& operator=(const AliAODExtension&);  // Not implemented
@@ -168,6 +181,13 @@ enum EAliAODExtensionFlags {
     Int_t                    fNtotal;                 //! Number of processed events
     Int_t                    fNpassed;                //! Number of events that passed the filter
     Bool_t                   fSelected;               //! Select current event for filtered AOD's. Made false at event start.
-    ClassDef(AliAODExtension, 1)                      // Support for extra AOD branches in a separate AOD file
+
+    TMap*                    fRepFiMap; // which branch(es) to filter out / and or replicate
+    TList*                   fRepFiList; // list of unique filter/replicator
+  
+    Bool_t                   fEnableReferences; // whether or not to enable the TRefTable branch
+    TList*                   fObjectList; //! internal list of which objects to keep 
+  
+  ClassDef(AliAODExtension, 2) // Support for extra AOD branches in a separate AOD file
 };
 #endif