2 #ifndef ALIMCEVENTHANDLER_H
3 #define ALIMCEVENTHANDLER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 //-------------------------------------------------------------------------
12 // This class gives access to MC truth during the analysis.
13 // Monte Carlo truth is contained in the kinematics tree (produced particles) and
14 // the tree of reference hits.
16 // Origin: Andreas Morsch, CERN, andreas.morsch@cern.ch
17 //-------------------------------------------------------------------------
18 #include "AliVEventHandler.h"
19 #include "AliHeader.h"
35 class AliMCEventHandler : public AliVEventHandler
39 enum PreReadMode_t {kNoPreRead = 0, kLmPreRead = 1, kHmPreRead = 2};
42 AliMCEventHandler(const char* name, const char* title);
43 virtual ~AliMCEventHandler();
44 virtual void SetOutputFileName(const char* /* fname */) {;}
45 virtual const char* GetOutputFileName() {return 0;}
46 virtual void SetInputPath(const char* fname);
47 virtual void SetInputTree(TTree* /*tree*/) {;}
48 virtual TString* GetInputPath() const {return fPathName;}
49 virtual Bool_t Init(Option_t* opt);
50 virtual Bool_t GetEntry() {return kTRUE;}
51 virtual Bool_t InitIO(Option_t* opt) {return Init(opt);};
52 virtual Bool_t Init(TTree* /*tree*/, Option_t* /*opt*/) {return kTRUE;}
53 virtual Bool_t BeginEvent(Long64_t entry);
54 virtual Bool_t Notify() { return AliVEventHandler::Notify(); };
55 virtual Bool_t Notify(const char* path);
56 virtual Bool_t FinishEvent();
57 virtual Bool_t Terminate();
58 virtual Bool_t TerminateIO();
59 virtual void ResetIO();
60 virtual Bool_t GetEvent(Int_t iev);
61 virtual void SetReadTR(Bool_t flag) { fReadTR = flag; }
62 virtual void AddSubsidiaryHandler(AliMCEventHandler* handler);
63 virtual void SetNumberOfEventsInContainer(Int_t nev) {fEventsInContainer = nev;}
64 virtual void SetPreReadMode(PreReadMode_t mode) {fPreReadMode = mode;}
66 AliMCEvent* MCEvent() const {return fMCEvent;}
67 TTree* TreeTR() const {return fTreeTR;}
68 TTree* TreeK() const {return fTreeK;}
69 Int_t GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs);
70 void DrawCheck(Int_t i, Int_t search=0);
71 Bool_t InitOk() {return fInitOk;}
73 void SelectParticle(Int_t i);
74 Bool_t IsParticleSelected(Int_t i);
75 void CreateLabelMap();
76 Int_t GetNewLabel(Int_t i);
79 Bool_t OpenFile(Int_t i);
80 void VerifySelectedParticles();
81 AliMCEventHandler(const AliMCEventHandler& handler);
82 AliMCEventHandler& operator=(const AliMCEventHandler& handler);
84 AliMCEvent *fMCEvent; //! MC Event
85 TFile *fFileE; //! File with TreeE
86 TFile *fFileK; //! File with TreeK
87 TFile *fFileTR; //! File with TreeTR
88 TTree *fTreeE; //! TreeE (Event Headers)
89 TTree *fTreeK; //! TreeK (kinematics tree)
90 TTree *fTreeTR; //! TreeTR (track references tree)
91 TDirectoryFile *fDirK; //! Directory for Kine Tree
92 TDirectoryFile *fDirTR; //! Directory for TR Tree
93 TExMap fParticleSelected; //! List of selected MC particles for t
94 TExMap fLabelMap; //! Stores the Map of MC (ESDLabel,AODlabel)
95 Int_t fNEvent; //! Number of events
96 Int_t fEvent; //! Current event
97 TString *fPathName; //! Input file path
98 const Char_t *fExtension; //! File name extension
99 Int_t fFileNumber; //! Input file number
100 Int_t fEventsPerFile; //! Number of events per file
101 Bool_t fReadTR; // determines if TR shall be read
102 Bool_t fInitOk; // Initialization ok
103 TList *fSubsidiaryHandlers; //! List of subsidiary MC handlers (for example for Background)
104 Int_t fEventsInContainer; //! Number of events in container class
105 PreReadMode_t fPreReadMode; //! Pre reading mode
107 ClassDef(AliMCEventHandler,1) //MC Truth EventHandler class