]>
Commit | Line | Data |
---|---|---|
1 | // -*- mode: C++ -*- | |
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 */ | |
6 | ||
7 | ||
8 | /* $Id$ */ | |
9 | ||
10 | //------------------------------------------------------------------------- | |
11 | // Class AliMCEvent | |
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. | |
15 | // | |
16 | // Origin: Andreas Morsch, CERN, andreas.morsch@cern.ch | |
17 | //------------------------------------------------------------------------- | |
18 | #include "AliVEventHandler.h" | |
19 | #include "AliHeader.h" | |
20 | #include <TExMap.h> | |
21 | ||
22 | class TFile; | |
23 | class TTree; | |
24 | class TList; | |
25 | ||
26 | class TParticle; | |
27 | class TString; | |
28 | class TClonesArray; | |
29 | class TDirectoryFile; | |
30 | ||
31 | class AliMCEvent; | |
32 | ||
33 | ||
34 | ||
35 | class AliMCEventHandler : public AliVEventHandler | |
36 | { | |
37 | public: | |
38 | ||
39 | enum PreReadMode_t {kNoPreRead = 0, kLmPreRead = 1, kHmPreRead = 2}; | |
40 | ||
41 | AliMCEventHandler(); | |
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 InitIO(Option_t* opt) {return Init(opt);}; | |
51 | virtual Bool_t Init(TTree* /*tree*/, Option_t* /*opt*/) {return kTRUE;} | |
52 | virtual Bool_t BeginEvent(Long64_t entry); | |
53 | virtual Bool_t Notify() { return AliVEventHandler::Notify(); }; | |
54 | virtual Bool_t Notify(const char* path); | |
55 | virtual Bool_t FinishEvent(); | |
56 | virtual Bool_t Terminate(); | |
57 | virtual Bool_t TerminateIO(); | |
58 | virtual void ResetIO(); | |
59 | virtual Bool_t GetEvent(Int_t iev); | |
60 | virtual void SetReadTR(Bool_t flag) { fReadTR = flag; } | |
61 | virtual void AddSubsidiaryHandler(AliMCEventHandler* handler); | |
62 | virtual void SetNumberOfEventsInContainer(Int_t nev) {fEventsInContainer = nev;} | |
63 | virtual void SetPreReadMode(PreReadMode_t mode) {fPreReadMode = mode;} | |
64 | // | |
65 | AliMCEvent* MCEvent() const {return fMCEvent;} | |
66 | TTree* TreeTR() const {return fTreeTR;} | |
67 | TTree* TreeK() const {return fTreeK;} | |
68 | Int_t GetParticleAndTR(Int_t i, TParticle*& particle, TClonesArray*& trefs); | |
69 | void DrawCheck(Int_t i, Int_t search=0); | |
70 | Bool_t InitOk() {return fInitOk;} | |
71 | // Label manipulation | |
72 | void SelectParticle(Int_t i); | |
73 | Bool_t IsParticleSelected(Int_t i); | |
74 | void CreateLabelMap(); | |
75 | Int_t GetNewLabel(Int_t i); | |
76 | ||
77 | private: | |
78 | Bool_t OpenFile(Int_t i); | |
79 | void VerifySelectedParticles(); | |
80 | AliMCEventHandler(const AliMCEventHandler& handler); | |
81 | AliMCEventHandler& operator=(const AliMCEventHandler& handler); | |
82 | private: | |
83 | AliMCEvent *fMCEvent; //! MC Event | |
84 | TFile *fFileE; //! File with TreeE | |
85 | TFile *fFileK; //! File with TreeK | |
86 | TFile *fFileTR; //! File with TreeTR | |
87 | TTree *fTreeE; //! TreeE (Event Headers) | |
88 | TTree *fTreeK; //! TreeK (kinematics tree) | |
89 | TTree *fTreeTR; //! TreeTR (track references tree) | |
90 | TDirectoryFile *fDirK; //! Directory for Kine Tree | |
91 | TDirectoryFile *fDirTR; //! Directory for TR Tree | |
92 | TExMap fParticleSelected; //! List of selected MC particles for t | |
93 | TExMap fLabelMap; //! Stores the Map of MC (ESDLabel,AODlabel) | |
94 | Int_t fNEvent; //! Number of events | |
95 | Int_t fEvent; //! Current event | |
96 | TString *fPathName; //! Input file path | |
97 | const Char_t *fExtension; //! File name extension | |
98 | Int_t fFileNumber; //! Input file number | |
99 | Int_t fEventsPerFile; //! Number of events per file | |
100 | Bool_t fReadTR; // determines if TR shall be read | |
101 | Bool_t fInitOk; // Initialization ok | |
102 | TList *fSubsidiaryHandlers; //! List of subsidiary MC handlers (for example for Background) | |
103 | Int_t fEventsInContainer; //! Number of events in container class | |
104 | PreReadMode_t fPreReadMode; //! Pre reading mode | |
105 | ||
106 | ClassDef(AliMCEventHandler,1) //MC Truth EventHandler class | |
107 | }; | |
108 | #endif | |
109 |