#ifndef ATLAS_AtlAnalysisTool
#define ATLAS_AtlAnalysisTool
#ifndef ATLAS_AtlEvent
#include <AtlEvent.h>
#endif
#ifndef ROOT_TObject
#include <TObject.h>
#endif
class AtlSelector;
class AtlAnalysisTool : public TNamed {
public:
enum EProcessMode {
kSystematics,
kObjectsDefinition,
kScaleFactor,
kPreAnalysis,
kMainAnalysis,
kPostAnalysis,
kIndividual,
kOff
};
EProcessMode fProcessMode;
Int_t fVerbosityLevel;
TString fOutputDir;
protected:
AtlEvent *fEvent;
TTree *fTree;
TFile *fOutputFile;
TString *fOption;
AtlSelector *fParent;
public:
AtlAnalysisTool(const char* name, const char* title);
virtual ~AtlAnalysisTool();
virtual void SetBranchStatus() = 0;
virtual void BookHistograms() = 0;
virtual void FillHistograms() = 0;
virtual void Init();
virtual void FillHistogramsNoEvtSel() {;}
virtual Bool_t AnalyzeEvent() { return kTRUE; }
virtual void SetCutDefaults() {;}
virtual void Clear() {;}
virtual Bool_t Notify() { return kTRUE; }
virtual void Terminate() {;}
virtual void Print() const;
Bool_t Process();
AtlAnalysisTool* GetTool(const char* ClassName,
const char* ToolName = "",
Bool_t force = kFALSE) const;
static const char* GetProcessModeName(EProcessMode mode);
inline Float_t GetPreTagEvtWeight() const { return fEvent->GetPreTagEvtWeight(); }
inline Float_t GetTagEvtWeight() const { return fEvent->GetTagEvtWeight(); }
inline Bool_t IsObjectsDefinition() const
{ return fProcessMode == kObjectsDefinition; }
inline Bool_t IsScaleFactor() const
{ return fProcessMode == kScaleFactor; }
inline Bool_t IsPreAnalysis() const
{ return fProcessMode == kPreAnalysis; }
inline Bool_t IsMainAnalysis() const
{ return fProcessMode == kMainAnalysis; }
inline Bool_t IsPostAnalysis() const
{ return fProcessMode == kPostAnalysis; }
inline Bool_t IsSystematics() const
{ return fProcessMode == kSystematics; }
inline Bool_t IsIndividual() const
{ return fProcessMode == kIndividual; }
inline Bool_t IsOff() const
{ return fProcessMode == kOff; }
inline void SetParent(AtlSelector *parent)
{ fParent = parent; }
inline void SetEvent(AtlEvent *evt)
{ fEvent = evt; }
inline void SetTree(TTree *t)
{ fTree = t; }
inline void SetOutputFile(TFile *f)
{ fOutputFile = f; }
inline void SetOutputDir(const char* dir)
{ fOutputDir = dir; }
inline const char* GetOutputDir() const
{ return fOutputDir.Data(); }
ClassDef(AtlAnalysisTool,0)
};
#endif