]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMCEventHandler.h
Corrected directory name for the root archive file registered in a dataset in PROOF...
[u/mrichter/AliRoot.git] / STEER / AliMCEventHandler.h
index 40ccdb0f6594c57f36a26aed98ac593c85e13ee5..8fa8cc4d6d3fc1852d6072dbc4f904230a3961ae 100644 (file)
@@ -1,4 +1,4 @@
-// -*- mode: C++ -*- 
+// -*- mode: C++ -*-
 #ifndef ALIMCEVENTHANDLER_H
 #define ALIMCEVENTHANDLER_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 //-------------------------------------------------------------------------
 //                          Class AliMCEvent
 // This class gives access to MC truth during the analysis.
-// Monte Carlo truth is containe in the kinematics tree (produced particles) and 
+// Monte Carlo truth is contained in the kinematics tree (produced particles) and 
 // the tree of reference hits.
 //      
 // Origin: Andreas Morsch, CERN, andreas.morsch@cern.ch 
 //-------------------------------------------------------------------------
-
 #include "AliVEventHandler.h"
 #include "AliHeader.h"
+#include <TExMap.h>
+
 class TFile;
 class TTree;
+class TList;
+
 class TParticle;
 class TString;
 class TClonesArray;
 class TDirectoryFile;
 
-class AliHeader;
-class AliGenEventHeader;
-class AliStack;
+class AliMCEvent;
 
 
-class AliMCEventHandler : public AliVEventHandler 
+
+class AliMCEventHandler : public AliVEventHandler
 {
 public:
     AliMCEventHandler();
     AliMCEventHandler(const char* name, const char* title);
     virtual ~AliMCEventHandler();
-    virtual void         SetOutputFileName(char* /* fname */) {;}
-    virtual char*        GetOutputFileName() {return 0;}
-    virtual void         SetInputPath(char* fname); 
-    virtual TString*     GetInputPath() {return fPathName;}
-    virtual Bool_t       InitIO(Option_t* opt);
-    virtual Bool_t       BeginEvent();
+    virtual void         SetOutputFileName(const char* /* fname */) {;}
+    virtual const char*  GetOutputFileName() {return 0;}
+    virtual void         SetInputPath(const char* fname); 
+    virtual void         SetInputTree(TTree* /*tree*/) {;}
+    virtual TString*     GetInputPath() const {return fPathName;}
+    virtual Bool_t       Init(Option_t* opt);
+    virtual Bool_t       InitIO(Option_t* opt) {return Init(opt);};
+    virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*opt*/) {return kTRUE;}
+    virtual Bool_t       BeginEvent(Long64_t entry);
+    virtual Bool_t       Notify() { return AliVEventHandler::Notify(); };
     virtual Bool_t       Notify(const char* path);
     virtual Bool_t       FinishEvent();
     virtual Bool_t       Terminate();
     virtual Bool_t       TerminateIO();
     virtual void         ResetIO();
     virtual Bool_t       GetEvent(Int_t iev);
+    virtual void         SetReadTR(Bool_t flag) { fReadTR = flag; }
+    virtual void         AddSubsidiaryHandler(AliMCEventHandler* handler);
+    virtual void         SetNumberOfEventsInContainer(Int_t nev) {fEventsInContainer = nev;}
     //
-    AliStack*    Stack()   {return fStack;}
-    AliHeader*   Header()  {return fHeader;}
-    AliGenEventHeader* GenEventHeader() {return (fHeader->GenEventHeader());}
-    TTree*    TreeTR() {return fTreeTR;}
-    Int_t     GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs);
-    void      DrawCheck(Int_t i, Int_t search=0);
+    AliMCEvent* MCEvent() const {return fMCEvent;} 
+    TTree*      TreeTR()  const {return fTreeTR;}
+    TTree*      TreeK()   const {return fTreeK;}
+    Int_t       GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs);
+    void        DrawCheck(Int_t i, Int_t search=0);
+    Bool_t      InitOk() {return fInitOk;}
+    // Label manipulation
+    void   SelectParticle(Int_t i);
+    Bool_t IsParticleSelected(Int_t i);
+    void   CreateLabelMap();
+    Int_t  GetNewLabel(Int_t i);
+
 private:
-    Bool_t    OpenFile(Int_t i);
-    void      ReorderAndExpandTreeTR();
-    
+    Bool_t      OpenFile(Int_t i);
+    void  VerifySelectedParticles();
+    AliMCEventHandler(const AliMCEventHandler& handler);             
+    AliMCEventHandler& operator=(const AliMCEventHandler& handler);  
 private:
-    TFile            *fFileE;            //! File with TreeE
-    TFile            *fFileK;            //! File with TreeK
-    TFile            *fFileTR;           //! File with TreeTR
-    TFile            *fTmpFileTR;        //! Temporary file with TreeTR to read old format
-    TTree            *fTreeE;            //! TreeE  (Event Headers)
-    TTree            *fTreeK;            //! TreeK  (kinematics tree)
-    TTree            *fTreeTR;           //! TreeTR (track references tree)
-    TTree            *fTmpTreeTR;        //! Temporary tree TR to read old format
-    TDirectoryFile   *fDirK;             //! Directory for Kine Tree
-    TDirectoryFile   *fDirTR;            //! Directory for TR Tree
-    AliStack         *fStack;            //! Current pointer to stack
-    AliHeader        *fHeader;           //! Current pointer to header
-    TClonesArray     *fTrackReferences;  //! Current list of track references
-    Int_t             fNEvent;           //! Number of events
-    Int_t             fEvent;            //! Current event
-    Int_t             fNprimaries;       //! Number of primaries
-    Int_t             fNparticles;       //! Number of particles
-    TString          *fPathName;         //! Input file path 
-    char             *fExtension;        //! File name extension 
-    Int_t             fFileNumber;       //! Input file number
-    Int_t             fEventsPerFile;    //! Number of events per file
-    ClassDef(AliMCEventHandler,1)  //MC Truth EventHandler class 
+    AliMCEvent            *fMCEvent;            //! MC Event
+    TFile                 *fFileE;              //! File with TreeE
+    TFile                 *fFileK;              //! File with TreeK
+    TFile                 *fFileTR;             //! File with TreeTR
+    TTree                 *fTreeE;              //! TreeE  (Event Headers)
+    TTree                 *fTreeK;              //! TreeK  (kinematics tree)
+    TTree                 *fTreeTR;             //! TreeTR (track references tree)
+    TDirectoryFile        *fDirK;               //! Directory for Kine Tree
+    TDirectoryFile        *fDirTR;              //! Directory for TR Tree
+    TExMap                 fParticleSelected;   //! List of selected MC particles for t
+    TExMap                 fLabelMap;           //! Stores the Map of MC (ESDLabel,AODlabel)  
+    Int_t                  fNEvent;             //! Number of events
+    Int_t                  fEvent;              //! Current event
+    TString               *fPathName;           //! Input file path 
+    const Char_t          *fExtension;          //! File name extension 
+    Int_t                  fFileNumber;         //! Input file number
+    Int_t                  fEventsPerFile;      //! Number of events per file
+    Bool_t                 fReadTR;             // determines if TR shall be read
+    Bool_t                 fInitOk;             // Initialization ok
+    TList                 *fSubsidiaryHandlers; //! List of subsidiary MC handlers (for example for Background)
+    Int_t                  fEventsInContainer;  //! Number of events in container class 
+    ClassDef(AliMCEventHandler,1)  //MC Truth EventHandler class
 };
 #endif