//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlEvtReaderBase.h,v 1.7 2018/01/15 16:21:26 kaphle Exp $
// Copyright: 2011 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlEvtReaderBase
#define ATLAS_AtlEvtReaderBase
#include <cmath>
#ifndef ROOT_TObject
#include <TObject.h>
#endif
#ifndef ATLAS_AtlEvent
#include <AtlEvent.h>
#endif
#ifndef ATLAS_AtlSelector
#include <AtlSelector.h>
#endif
#ifndef ROOT_TTree
#include <TTree.h>
#endif

//class TTree;
//class AtlSelector;

class AtlEvtReaderBase : public TObject {

  protected:
    AtlEvent    *fEvent;  // Event object
    AtlSelector *fParent; // Parent selector
    
  public:

    struct InitialSumOfWeights_t {
        InitialSumOfWeights_t()
            : one(NAN)
            , mcevt(NAN)
            , mcevt_pileup_zvtx(NAN)
        { }

        /* choose a weight -> */
        double one;
        double mcevt;
        double mcevt_pileup_zvtx;
    };

    AtlEvtReaderBase(AtlSelector *parent);
    virtual ~AtlEvtReaderBase();
    virtual void SetBranches(TTree *t) {;}
    virtual Int_t GetEntry(TTree *t, Long64_t entry = 0)
    { return 0; }
    virtual Bool_t Notify() { return kTRUE; }
    inline void SetEvent(AtlEvent *evt) { fEvent = evt; }
    virtual InitialSumOfWeights_t GetInitialSumOfWeights(TFile * inputFile) const;

    static Bool_t SumOverTree(TTree * tree, char const * expression, Double_t & result);
    inline Bool_t IsFirstEvent() const { return fParent->IsFirstEvent(); }

  protected:
    virtual void BuildEvent() {;}
    virtual void BuildEventHeader() {;}

    ClassDef(AtlEvtReaderBase,0) // Abstract event reader class
};
#endif

 AtlEvtReaderBase.h:1
 AtlEvtReaderBase.h:2
 AtlEvtReaderBase.h:3
 AtlEvtReaderBase.h:4
 AtlEvtReaderBase.h:5
 AtlEvtReaderBase.h:6
 AtlEvtReaderBase.h:7
 AtlEvtReaderBase.h:8
 AtlEvtReaderBase.h:9
 AtlEvtReaderBase.h:10
 AtlEvtReaderBase.h:11
 AtlEvtReaderBase.h:12
 AtlEvtReaderBase.h:13
 AtlEvtReaderBase.h:14
 AtlEvtReaderBase.h:15
 AtlEvtReaderBase.h:16
 AtlEvtReaderBase.h:17
 AtlEvtReaderBase.h:18
 AtlEvtReaderBase.h:19
 AtlEvtReaderBase.h:20
 AtlEvtReaderBase.h:21
 AtlEvtReaderBase.h:22
 AtlEvtReaderBase.h:23
 AtlEvtReaderBase.h:24
 AtlEvtReaderBase.h:25
 AtlEvtReaderBase.h:26
 AtlEvtReaderBase.h:27
 AtlEvtReaderBase.h:28
 AtlEvtReaderBase.h:29
 AtlEvtReaderBase.h:30
 AtlEvtReaderBase.h:31
 AtlEvtReaderBase.h:32
 AtlEvtReaderBase.h:33
 AtlEvtReaderBase.h:34
 AtlEvtReaderBase.h:35
 AtlEvtReaderBase.h:36
 AtlEvtReaderBase.h:37
 AtlEvtReaderBase.h:38
 AtlEvtReaderBase.h:39
 AtlEvtReaderBase.h:40
 AtlEvtReaderBase.h:41
 AtlEvtReaderBase.h:42
 AtlEvtReaderBase.h:43
 AtlEvtReaderBase.h:44
 AtlEvtReaderBase.h:45
 AtlEvtReaderBase.h:46
 AtlEvtReaderBase.h:47
 AtlEvtReaderBase.h:48
 AtlEvtReaderBase.h:49
 AtlEvtReaderBase.h:50
 AtlEvtReaderBase.h:51
 AtlEvtReaderBase.h:52
 AtlEvtReaderBase.h:53
 AtlEvtReaderBase.h:54
 AtlEvtReaderBase.h:55
 AtlEvtReaderBase.h:56
 AtlEvtReaderBase.h:57
 AtlEvtReaderBase.h:58
 AtlEvtReaderBase.h:59
 AtlEvtReaderBase.h:60
 AtlEvtReaderBase.h:61
 AtlEvtReaderBase.h:62
 AtlEvtReaderBase.h:63
 AtlEvtReaderBase.h:64
 AtlEvtReaderBase.h:65