]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliInputEventHandler.h
New hook needed for fast mixing.
[u/mrichter/AliRoot.git] / STEER / AliInputEventHandler.h
1 #ifndef ALIINPUTEVENTHANDLER_H
2 #define ALIINPUTEVENTHANDLER_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 //     Input Handler realisation of the AliVEventHandler interface
10 //     Author: Andreas Morsch, CERN
11 //-------------------------------------------------------------------------
12
13 #include "AliVEventHandler.h"
14 #include <TTree.h>
15
16
17 class AliVEvent;
18 class AliVCuts;
19 class AliRunTag;
20
21
22 class AliInputEventHandler : public AliVEventHandler {
23
24  public:
25  enum EInputHandlerFlags {
26     kUserCallSelectionMask = BIT(14) // Watch out for defining base class bits
27  };
28     AliInputEventHandler();
29     AliInputEventHandler(const char* name, const char* title);
30     virtual ~AliInputEventHandler();
31     virtual void         SetOutputFileName(const char* /*fname*/) {;}
32     virtual const char  *GetOutputFileName()                          {return 0;}
33     virtual Bool_t       Init(Option_t* /*opt*/)                      {return kTRUE;}
34     virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*opt*/)     {return kTRUE;}
35     virtual Bool_t       GetEntry() {if(fMixingHandler) fMixingHandler->GetEntry(); return kTRUE;}
36     
37     virtual Bool_t       BeginEvent(Long64_t /*entry*/)               {return kTRUE;}
38     virtual Bool_t       Notify() { return AliVEventHandler::Notify();}
39     virtual Bool_t       Notify(const char */*path*/)                 {return kTRUE;}
40     virtual Bool_t       FinishEvent()                                {return kTRUE;}        
41     virtual Bool_t       Terminate()                                  {return kTRUE;}
42     virtual Bool_t       TerminateIO()                                {return kTRUE;}
43     // Setters
44     virtual void         SetInputTree(TTree* tree)                    {fTree = tree;}
45     virtual void         SetEventSelection(AliVCuts* cuts)            {fEventCuts = cuts;}
46     virtual void         SetUserCallSelectionMask(Bool_t flag=kTRUE)  {TObject::SetBit(kUserCallSelectionMask,flag);}
47     //
48     void SetInactiveBranches(const char* branches) {fBranches   = branches;}
49     void SetActiveBranches  (const char* branches) {fBranchesOn = branches;}
50      // Getters
51     virtual AliVEvent   *GetEvent()        const                      {return 0;}
52     virtual AliRunTag   *GetRunTag()       const                      {return 0;}
53     virtual Option_t    *GetAnalysisType() const                      {return 0;}
54     virtual TTree       *GetTree( )        const                      {return fTree;}
55     virtual AliVCuts    *GetEventSelection() const                    {return fEventCuts;}
56     virtual Long64_t     GetReadEntry()    const;
57     virtual Bool_t       IsUserCallSelectionMask() const              {return TObject::TestBit(kUserCallSelectionMask);}
58     virtual Bool_t       NewEvent()
59         {Bool_t ne = fNewEvent; fNewEvent = kFALSE; return ne;}
60     virtual UInt_t       IsEventSelected() 
61         {return fIsSelectedResult;}
62     // Mixing
63     void SetMixingHandler(AliInputEventHandler* mixing) 
64     {fMixingHandler = mixing;}
65     AliInputEventHandler* MixingHandler()
66     {return fMixingHandler;}
67
68  protected:
69     void SwitchOffBranches() const;
70     void SwitchOnBranches()  const;
71  private:
72     AliInputEventHandler(const AliInputEventHandler& handler);             
73     AliInputEventHandler& operator=(const AliInputEventHandler& handler);  
74  protected:
75     TTree          *fTree;         //! Pointer to the tree
76     TString         fBranches;     //  List of branches to be switched off (separated by space)
77     TString         fBranchesOn;   //  List of branches to be switched on  (separated by space)
78     Bool_t          fNewEvent;     //  New event flag 
79     AliVCuts*       fEventCuts;    //  Cuts on the event level
80     UInt_t          fIsSelectedResult; //  Selection result
81     AliInputEventHandler* fMixingHandler; // Optionla plugin for mixing 
82     ClassDef(AliInputEventHandler, 5);
83 };
84
85 #endif