]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AOD/AliAODInputHandler.h
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODInputHandler.h
1 #ifndef ALIAODINPUTHANDLER_H
2 #define ALIAODINPUTHANDLER_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     AOD Input Handler realisation of the AliVEventHandler interface
10 //     Author: Andreas Morsch, CERN
11 //-------------------------------------------------------------------------
12
13 #include "AliInputEventHandler.h"
14 #include "AliAODEvent.h"
15 #include "AliMCEvent.h"
16 #include "AliAODMCHeader.h"
17 class TList;
18 class AliMCEvent;
19 class TH2F;
20 class AliMCEvent;
21 class AliAODpidUtil;
22 class AliPIDResponse;
23
24
25 class AliAODInputHandler : public AliInputEventHandler {
26
27  public:
28     AliAODInputHandler();
29     AliAODInputHandler(const char* name, const char* title);
30     virtual ~AliAODInputHandler();
31     virtual Bool_t       Init(Option_t* /*opt*/) {return kTRUE;}
32     virtual Bool_t       Init(TTree* tree, Option_t* opt);
33     AliAODEvent         *GetEvent() const {return fEvent;}
34     AliMCEvent          *MCEvent()  const {return fMCEvent;}
35     virtual void         AddFriend(char* filename);
36     virtual Bool_t       BeginEvent(Long64_t entry);
37     virtual Bool_t       Notify() { return AliVEventHandler::Notify();};
38     virtual Bool_t       Notify(const char* path);
39     virtual Bool_t       FinishEvent();
40     Option_t            *GetDataType() const;
41     // Get the statistics object (currently TH2). Option can be BIN0.
42     virtual TObject     *GetStatistics(Option_t *option="") const;
43     // Provisions for event merging
44     void                 SetMergeEvents(Bool_t flag) {fMergeEvents = flag;}
45     Bool_t               GetMergeEvents() const {return fMergeEvents;}
46     AliAODEvent*         GetEventToMerge() {return fAODEventToMerge;}
47     TTree*               GetTreeToMerge()  const {return fTreeToMerge;}
48     void                 SetMergeOffset(Int_t ioff) {fMergeOffset = ioff;}
49     Int_t                GetMergeOffset()     const {return fMergeOffset;}
50     void                 SetMergeTracks(Bool_t flag) {fMergeTracks = flag;}
51     Bool_t               GetMergeTracks()      const {return fMergeTracks;}
52     void                 SetMergeEMCALClusters(Bool_t flag) {fMergeEMCALClusters = flag;}
53     Bool_t               GetMergeEMCALClusters()      const {return fMergeEMCALClusters;}
54     void                 SetMergeEMCALCells(Bool_t flag)    {fMergeEMCALCells    = flag;}
55     Bool_t               GetMergeEMCALCells()         const {return fMergeEMCALCells   ;} 
56     void                 SetMergePHOSClusters(Bool_t flag) {fMergePHOSClusters   = flag;}
57     Bool_t               GetMergePHOSClusters()      const {return fMergePHOSClusters  ;}
58     void                 SetMergePHOSCells(Bool_t flag)    {fMergePHOSCells      = flag;}
59     Bool_t               GetMergePHOSCells()         const {return fMergePHOSCells     ;}  
60     void                 SetMergeEMCALTrigger(Bool_t flag)    {fMergeEMCALTrigger      = flag;}
61     Bool_t               GetMergeEMCALTrigger()         const {return fMergeEMCALTrigger     ;}  
62     void                 SetMergePHOSTrigger(Bool_t flag)    {fMergePHOSTrigger      = flag;}
63     Bool_t               GetMergePHOSTrigger()         const {return fMergePHOSTrigger     ;}  
64     void                 SetMergeHMPIDrings(Bool_t flag)    {fMergeHMPIDrings      = flag;}
65     Bool_t               GetMergeHMPIDrings()         const {return fMergeHMPIDrings     ;}  
66
67     //PID response
68     virtual AliPIDResponse* GetPIDResponse() {return (AliPIDResponse*)fAODpidUtil;}
69     virtual void CreatePIDResponse(Bool_t isMC=kFALSE);
70     AliAODpidUtil *GetAODpidUtil() const { return fAODpidUtil; }
71   
72  private:
73     void ConnectFriends();
74     AliAODInputHandler(const AliAODInputHandler& handler);             
75     AliAODInputHandler& operator=(const AliAODInputHandler& handler);  
76  private:
77     AliAODEvent    *fEvent;   //! Pointer to the event
78     AliMCEvent     *fMCEvent; //! Pointer to the MCEvent
79     TList          *fFriends; //  List of friend trees
80     AliAODpidUtil  *fAODpidUtil; //! Pointer to PID information
81   
82 // Support for merged events
83     Bool_t          fMergeEvents;     // Flag for event merging
84     Bool_t          fMergeTracks;        // Merge tracks
85     Bool_t          fMergeEMCALClusters; // Merge PHOS  cluster
86     Bool_t          fMergePHOSClusters;  // Merge EMCAL cluster
87     Bool_t          fMergeEMCALCells;    // Merge PHOS  cluster
88     Bool_t          fMergePHOSCells;     // Merge EMCAL cluster
89     Bool_t          fMergeEMCALTrigger;    // Merge EMCAL  cluster
90     Bool_t          fMergePHOSTrigger;     // Merge PHOS cluster
91     Bool_t          fMergeHMPIDrings;      // Merge HMPID rings information
92     Bool_t          fFriendsConnected;// Friends are connected
93     TFile          *fFileToMerge;     //! File for merging
94     TTree          *fTreeToMerge;     //! Tree for merging
95     AliAODEvent    *fAODEventToMerge; //! Event for merging
96     Int_t           fMergeOffset;     //! Event offset for merging
97     TH2F*           fHistStatistics[2]; //! how many events are cut away why {all,bin 0}
98     ClassDef(AliAODInputHandler, 4);
99 };
100
101 #endif