]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliInputEventHandler.h
New hook needed for fast mixing.
[u/mrichter/AliRoot.git] / STEER / AliInputEventHandler.h
index d05e15334dba5dedef5f37e3b24dd9074b1e9f9b..5b6b7b0cbffe39ce607893ef7d8860c2c9f750d3 100644 (file)
 
 
 class AliVEvent;
+class AliVCuts;
 class AliRunTag;
 
+
 class AliInputEventHandler : public AliVEventHandler {
 
  public:
+ enum EInputHandlerFlags {
+    kUserCallSelectionMask = BIT(14) // Watch out for defining base class bits
+ };
     AliInputEventHandler();
     AliInputEventHandler(const char* name, const char* title);
     virtual ~AliInputEventHandler();
@@ -27,14 +32,18 @@ class AliInputEventHandler : public AliVEventHandler {
     virtual const char  *GetOutputFileName()                          {return 0;}
     virtual Bool_t       Init(Option_t* /*opt*/)                      {return kTRUE;}
     virtual Bool_t       Init(TTree* /*tree*/, Option_t* /*opt*/)     {return kTRUE;}
+    virtual Bool_t       GetEntry() {if(fMixingHandler) fMixingHandler->GetEntry(); return kTRUE;}
+    
     virtual Bool_t       BeginEvent(Long64_t /*entry*/)               {return kTRUE;}
-    virtual Bool_t       Notify() { return AliVEventHandler::Notify(); };
+    virtual Bool_t       Notify() { return AliVEventHandler::Notify();}
     virtual Bool_t       Notify(const char */*path*/)                 {return kTRUE;}
     virtual Bool_t       FinishEvent()                                {return kTRUE;}        
     virtual Bool_t       Terminate()                                  {return kTRUE;}
     virtual Bool_t       TerminateIO()                                {return kTRUE;}
     // Setters
     virtual void         SetInputTree(TTree* tree)                    {fTree = tree;}
+    virtual void         SetEventSelection(AliVCuts* cuts)            {fEventCuts = cuts;}
+    virtual void         SetUserCallSelectionMask(Bool_t flag=kTRUE)  {TObject::SetBit(kUserCallSelectionMask,flag);}
     //
     void SetInactiveBranches(const char* branches) {fBranches   = branches;}
     void SetActiveBranches  (const char* branches) {fBranchesOn = branches;}
@@ -43,7 +52,19 @@ class AliInputEventHandler : public AliVEventHandler {
     virtual AliRunTag   *GetRunTag()       const                      {return 0;}
     virtual Option_t    *GetAnalysisType() const                      {return 0;}
     virtual TTree       *GetTree( )        const                      {return fTree;}
-    virtual Long64_t     GetReadEntry()    const                      {return fTree->GetReadEntry();}
+    virtual AliVCuts    *GetEventSelection() const                    {return fEventCuts;}
+    virtual Long64_t     GetReadEntry()    const;
+    virtual Bool_t       IsUserCallSelectionMask() const              {return TObject::TestBit(kUserCallSelectionMask);}
+    virtual Bool_t       NewEvent()
+       {Bool_t ne = fNewEvent; fNewEvent = kFALSE; return ne;}
+    virtual UInt_t       IsEventSelected() 
+        {return fIsSelectedResult;}
+    // Mixing
+    void SetMixingHandler(AliInputEventHandler* mixing) 
+    {fMixingHandler = mixing;}
+    AliInputEventHandler* MixingHandler()
+    {return fMixingHandler;}
+
  protected:
     void SwitchOffBranches() const;
     void SwitchOnBranches()  const;
@@ -54,7 +75,11 @@ class AliInputEventHandler : public AliVEventHandler {
     TTree          *fTree;         //! Pointer to the tree
     TString         fBranches;     //  List of branches to be switched off (separated by space)
     TString         fBranchesOn;   //  List of branches to be switched on  (separated by space)
-    ClassDef(AliInputEventHandler, 2);
+    Bool_t          fNewEvent;     //  New event flag 
+    AliVCuts*       fEventCuts;    //  Cuts on the event level
+    UInt_t          fIsSelectedResult; //  Selection result
+    AliInputEventHandler* fMixingHandler; // Optionla plugin for mixing 
+    ClassDef(AliInputEventHandler, 5);
 };
 
 #endif