//  
// Author: Soeren Stamm <mailto: stamm@physik.hu-berlin.de>
// Update: $Id: AtlDataMCPlotterTask.h,v 1.8 2016/02/16 13:56:28 kind Exp $
// Copyright: 2013 (C) Soeren Stamm
//
#ifndef ATLAS_AtlDataMCPlotterTask
#define ATLAS_AtlDataMCPlotterTask
#ifndef ROOT_TTask
#include <TTask.h>
#endif
#ifndef ROOT_TList
#include <TList.h>
#endif
#ifndef ATLAS_AtlSample
#include <AtlSample.h>
#endif
#ifndef ATLAS_AtlTask
#include <AtlTask.h>
#endif
#ifndef ATLAS_AtlPlotterFolder
#include <AtlPlotterFolder.h>
#endif

class AtlDataMCPlotterTask : public AtlTask {
    
  protected:
    TString *fRootScript;              // Path to Root script used 

    TList   *fListOfUserEnvs;          // List of user environment variables
    TList   *fListOfFolders;           // List of all folders 
    TList   *fNtuplePlotCmds;          // List of ntuple plot commands    

    Float_t  fDataLuminosity;          // Data luminosity for plotter
    
    TString *fLuminosityLabel;         // Luminosity Label for Plotter
    TString *fCenterOfMassEnergyLabel; // CenterOfMassEnergyLabel for plotter
    TString *fAtlasLabelStatus;        // Status label for plotter (default: "Work in Progress")
    Bool_t   fDrawDataZeroEntryErrors; // Flag for plotter (default = false)
    Bool_t   fUseOverflowUnderflow;    // Flag for plotter (default = false)
    Bool_t   fDrawMCError;             // Flag for plotter (default = ktrue)
    Bool_t   fExportPDF;               // Flag for plotter (default = kfalse)
    Bool_t   fDrawSignalOverlay;       // Flag for drawing the signal MC (assumed to be the least entry in the MC histogram stack) as overlay instead as part of the stack (default = false)
    Float_t  fScaleOverlay;            // Scale factor of the overlay histogram ( default = 1. )
    
  public:
    AtlDataMCPlotterTask(const char* name, const char* title);
    virtual ~AtlDataMCPlotterTask();
    
    void CreateRootScript(Option_t *option);
    virtual void CreateRunScript(Option_t *option = "");
    virtual void ExecInteractiveJob(Option_t *option);
    virtual Bool_t ExecBatchJob(Option_t *option);
    void AddUserEnv(const char* env);
    
    virtual void ExecGridJob(const Option_t*);
    virtual void ExecNAFBatchJob(const Option_t*);
    virtual void CreateNAFBatchRunScript();
    virtual void CreateGridRunScript();

    void SetAtlasLabelStatus(const char* label); 
    void SetCenterOfMassEnergyLabel(const char* label);
    void SetLuminosityLabel(const char* label);
    void SetDrawDataZeroEntryErrors(Bool_t status);
    void SetDrawMCError(Bool_t status);
    void SetExportPDF(Bool_t status);
    void SetUseOverflowUnderflow(Bool_t status);
    void SetDrawSignalOverlay(Bool_t status);
    void SetScaleOverlay(Float_t scale);
    
    inline void AddFolders(TList *folders) {
      fListOfFolders->AddAll(folders);
    }
    inline void AddNtuplePlotCmds(TList *NtuplePlotCmds) {
      fNtuplePlotCmds->AddAll(NtuplePlotCmds);
    }
    inline void SetDataLuminosity(Double_t luminosity) {
	fDataLuminosity = luminosity;
    }
    
    ClassDef(AtlDataMCPlotterTask,0) // Task for creating Data-MC stacked plots
};
#endif
 AtlDataMCPlotterTask.h:1
 AtlDataMCPlotterTask.h:2
 AtlDataMCPlotterTask.h:3
 AtlDataMCPlotterTask.h:4
 AtlDataMCPlotterTask.h:5
 AtlDataMCPlotterTask.h:6
 AtlDataMCPlotterTask.h:7
 AtlDataMCPlotterTask.h:8
 AtlDataMCPlotterTask.h:9
 AtlDataMCPlotterTask.h:10
 AtlDataMCPlotterTask.h:11
 AtlDataMCPlotterTask.h:12
 AtlDataMCPlotterTask.h:13
 AtlDataMCPlotterTask.h:14
 AtlDataMCPlotterTask.h:15
 AtlDataMCPlotterTask.h:16
 AtlDataMCPlotterTask.h:17
 AtlDataMCPlotterTask.h:18
 AtlDataMCPlotterTask.h:19
 AtlDataMCPlotterTask.h:20
 AtlDataMCPlotterTask.h:21
 AtlDataMCPlotterTask.h:22
 AtlDataMCPlotterTask.h:23
 AtlDataMCPlotterTask.h:24
 AtlDataMCPlotterTask.h:25
 AtlDataMCPlotterTask.h:26
 AtlDataMCPlotterTask.h:27
 AtlDataMCPlotterTask.h:28
 AtlDataMCPlotterTask.h:29
 AtlDataMCPlotterTask.h:30
 AtlDataMCPlotterTask.h:31
 AtlDataMCPlotterTask.h:32
 AtlDataMCPlotterTask.h:33
 AtlDataMCPlotterTask.h:34
 AtlDataMCPlotterTask.h:35
 AtlDataMCPlotterTask.h:36
 AtlDataMCPlotterTask.h:37
 AtlDataMCPlotterTask.h:38
 AtlDataMCPlotterTask.h:39
 AtlDataMCPlotterTask.h:40
 AtlDataMCPlotterTask.h:41
 AtlDataMCPlotterTask.h:42
 AtlDataMCPlotterTask.h:43
 AtlDataMCPlotterTask.h:44
 AtlDataMCPlotterTask.h:45
 AtlDataMCPlotterTask.h:46
 AtlDataMCPlotterTask.h:47
 AtlDataMCPlotterTask.h:48
 AtlDataMCPlotterTask.h:49
 AtlDataMCPlotterTask.h:50
 AtlDataMCPlotterTask.h:51
 AtlDataMCPlotterTask.h:52
 AtlDataMCPlotterTask.h:53
 AtlDataMCPlotterTask.h:54
 AtlDataMCPlotterTask.h:55
 AtlDataMCPlotterTask.h:56
 AtlDataMCPlotterTask.h:57
 AtlDataMCPlotterTask.h:58
 AtlDataMCPlotterTask.h:59
 AtlDataMCPlotterTask.h:60
 AtlDataMCPlotterTask.h:61
 AtlDataMCPlotterTask.h:62
 AtlDataMCPlotterTask.h:63
 AtlDataMCPlotterTask.h:64
 AtlDataMCPlotterTask.h:65
 AtlDataMCPlotterTask.h:66
 AtlDataMCPlotterTask.h:67
 AtlDataMCPlotterTask.h:68
 AtlDataMCPlotterTask.h:69
 AtlDataMCPlotterTask.h:70
 AtlDataMCPlotterTask.h:71
 AtlDataMCPlotterTask.h:72
 AtlDataMCPlotterTask.h:73
 AtlDataMCPlotterTask.h:74
 AtlDataMCPlotterTask.h:75
 AtlDataMCPlotterTask.h:76
 AtlDataMCPlotterTask.h:77
 AtlDataMCPlotterTask.h:78
 AtlDataMCPlotterTask.h:79
 AtlDataMCPlotterTask.h:80
 AtlDataMCPlotterTask.h:81
 AtlDataMCPlotterTask.h:82