#ifndef ATLAS_AtlAppAnalysisTask
#define ATLAS_AtlAppAnalysisTask
#ifndef ATLAS_AtlTask
#include <AtlTask.h>
#endif
#ifndef ATLAS_AtlToolCut
#include <AtlToolCut.h>
#endif
#ifndef ATLAS_AtlCut
#include <AtlCut.h>
#endif
#ifndef ROOT_TDataMember
#include <TDataMember.h>
#endif
class TChain;
class TSystem;
class AtlSelector;
class TClass;
class TDataMember;
class TROOT;
class AtlAnalysisTool;
class AtlAppAnalysisTask : public AtlTask {
protected:
TString *fInputTreeName;
TString *fSelector;
Bool_t fCtrlPlots;
TString *fRootScript;
TList *fListOfCuts;
TList *fListOfSubselectionCuts;
TList *fListOfToolCuts;
TList *fListOfUserEnvs;
TList *fListOfTools;
Bool_t fWriteEntryList;
Bool_t fLoadEntryList;
Bool_t fUseAntiList;
Bool_t fPrintEvent;
Bool_t fPrintObjectTable;
TString *fGridSuffix;
TString *fGridUser;
TString *fGridAnalysisName;
TString *fAthenaTag;
TString *fExcludedSites;
TString *fSingleSite;
TString *fReaderClass;
TString *fReaderArgs;
public:
AtlAppAnalysisTask(const char* name, const char* title);
virtual ~AtlAppAnalysisTask();
void CheckInputChain();
virtual void InitSelector() {;}
void SetInputTreeName(const char* TreeName);
void SetSelector(const char* Selector);
virtual void ExecInteractiveJob(Option_t *option);
virtual Bool_t ExecBatchJob(Option_t *option);
virtual void ExecNAFBatchJob(Option_t *option);
virtual void ExecGridJob(Option_t *option);
virtual void CreateRootScript(Option_t *option);
virtual void CreateNAFBatchRootScript(Option_t *option);
virtual void CreateRunScript(Option_t *option = "");
virtual void CreateNAFBatchRunScript();
virtual void CreateGridRunScript();
virtual void Print(Option_t *option = "") const;
void SetCut(const char* var, const char* val);
void SetToolCut(const char* tool, const char* var, const char* val);
AtlToolCut* FindToolCut(const char* tool, const char* var);
AtlCut* FindCut(const char* var);
void AddUserEnv(const char* env);
void SetEvtReader(char const * readerClass, char const * readerArgs = 0);
inline void AddCuts( TList* cuts ) { fListOfCuts->AddAll(cuts); }
inline void AddSubselectionCuts( TList* subselectionCuts ) { fListOfSubselectionCuts->AddAll(subselectionCuts); }
inline void AddTools( TList* tools ) { fListOfTools->AddAll(tools); }
inline void AddToolCuts( TList* toolcuts ) { fListOfToolCuts->AddAll(toolcuts); }
inline void AddUserEnvs( TList* envs ) { fListOfUserEnvs->AddAll(envs); }
inline void AddTool(AtlAnalysisTool *tool) {
fListOfTools->Add((TObject*)tool);
}
inline Bool_t GetCtrlPlots() { return fCtrlPlots; }
inline virtual void SetCtrlPlots(Bool_t CtrlPlots)
{ fCtrlPlots = CtrlPlots; }
inline TString* GetSelector() { return fSelector; }
inline TList* GetListOfCuts() { return fListOfCuts; }
inline TList* GetListOfSubselectionCuts() { return fListOfSubselectionCuts; }
inline TList* GetListOfToolCuts() { return fListOfToolCuts; }
inline Bool_t GetWriteEntryList() const { return fWriteEntryList; }
inline Bool_t GetLoadEntryList() const { return fLoadEntryList; }
inline Bool_t GetUseAntiList() const { return fUseAntiList; }
inline Bool_t GetPrintEvent() const { return fPrintEvent; }
inline Bool_t GetPrintObjectTable() const { return fPrintObjectTable; }
inline void SetToolVariable(const char* tool, const char* var, const char* val) {
SetToolCut(tool, var, val);
}
inline void SetWriteEntryList(Bool_t WriteEntryList)
{ fWriteEntryList = WriteEntryList; }
inline void SetLoadEntryList(Bool_t LoadEntryList)
{ fLoadEntryList = LoadEntryList; }
inline void SetUseAntiList(Bool_t UseAntiList)
{ fUseAntiList = UseAntiList; }
inline void SetPrintEvent(Bool_t PrintEvent)
{ fPrintEvent = PrintEvent; }
inline void SetPrintObjectTable(Bool_t PrintObjectTable)
{ fPrintObjectTable = PrintObjectTable; }
inline void SetGridSuffix(TString *GridSuffix)
{ fGridSuffix = GridSuffix; }
inline void SetGridUser(TString *GridUser)
{ fGridUser = GridUser; }
inline void SetGridAnalysisName(TString *GridAnalysisName)
{ fGridAnalysisName = GridAnalysisName; }
inline void SetAthenaTag(TString *AthenaTag)
{ fAthenaTag = AthenaTag; }
inline void SetExcludedSites(TString *ExcludedSites)
{ fExcludedSites = ExcludedSites; }
inline void SetSingleSite(TString *SingleSite)
{ fSingleSite = SingleSite; }
private:
TDataMember* FindDataMember(TClass *cl, const char* DMName) const;
ClassDef(AtlAppAnalysisTask,0)
};
#endif