//  
// Author: Soeren Stamm <mailto: stamm@physik.hu-berlin.de>
// Update: $Id: AtlHistFactoryMeasurement.h,v 1.11 2016/04/19 07:46:21 stamm Exp $
// Copyright: 2015 (C) Soeren Stamm
//
#ifndef ATLAS_AtlHistFactoryMeasurement
#define ATLAS_AtlHistFactoryMeasurement
#ifndef ROOT_TNamed
#include <TNamed.h>
#endif
#ifndef ROOT_TStyle
#include <TStyle.h>
#endif

class TString;
class TList;
class AtlHistFactoryChannel;
class AtlHistFactorySystematic;

class AtlHistFactoryMeasurement : public TNamed {

protected:
    TString *fOutputDir;       // Output directory (workspace, xml files, etc.)
    TString *fOutPrefix;       // Output prefix for HistFactory (may include directories)
    TString *fScheme;          // Name of the plotter folder (default = "plots_datamc")

    TList *fListOfChannels;    // List of all channels

    Double_t fLumi;            // Set Lumi (see RooStats documentation for more details)
    Double_t fLumiRelError;    // Set relative lumi error

    Int_t fBinLow;             // Set lowest bin included in the measurement for all (!) observables
    Int_t fBinHigh;            // Set highest bin included in the measurement for all (!) observables

    TList *fPOIs;              // List of parameters of interest

    Bool_t fUseAsimovData;     // Use Asimov data? (default = kTRUE)
    Bool_t fUsePseudoExp;      // Use Pseudo exp. for shapes? (default = kFALSE)
    Bool_t fExportShapePlots;  // Export shape plots to pdf? (default = kFALSE)
    Bool_t fExportCorrMatrix;  // Export correlation matrix? (default = kFALSE)
    Bool_t fRunPulls;          // Run Pull Plots (default = kFALSE)
    Bool_t fNoSystematics;     // Skip all systematics? (default = kFALSE)
    
public:
    AtlHistFactoryMeasurement(const char* name, const char* title,
			      const char* outdir,
			      const char* scheme = "plots_datamc",
			      const char* out_prefix = "models/atlas");
    virtual ~AtlHistFactoryMeasurement();

    void AddChannel(AtlHistFactoryChannel *ch);
    void AddPOI(const char* poi);

    void SetDrawOptions(const char* sample_name,
			Color_t fill_color, Style_t fill_style,
			Color_t line_color, Style_t line_style = 1);

    TString* GetModelFileName(const char* channel = "combined");
    
    inline TString* GetOutputDir() const { return fOutputDir; }
    inline TString* GetOutPrefix() const { return fOutPrefix; }
    inline TString* GetScheme() const { return fScheme; }
    inline TList*   GetListOfChannels() const { return fListOfChannels; }
    inline Double_t GetLumi() const { return fLumi; }
    inline Double_t GetLumiRelError() const { return fLumiRelError; }
    inline TList* GetPOIs() const { return fPOIs; }
    inline Int_t GetBinLow() const { return fBinLow; }
    inline Int_t GetBinHigh() const { return fBinHigh; }
    inline Bool_t GetUseAsimovData() const { return fUseAsimovData; }
    inline Bool_t GetUsePseudoExp() const { return fUsePseudoExp; }
    inline Bool_t GetExportShapePlots() const { return fExportShapePlots; }
    inline Bool_t GetExportCorrMatrix() const { return fExportCorrMatrix; }
    inline Bool_t GetRunPullPlots() const { return fRunPulls; }
    inline Bool_t GetNoSystematics() const { return fNoSystematics; }
    
    inline void SetLumiAndRelError(Double_t lumi, Double_t relerr) {
	fLumi = lumi;
	fLumiRelError = relerr;
    }
    inline void SetBinLow(Int_t bin) { fBinLow = bin; }
    inline void SetBinHigh(Int_t bin) { fBinHigh = bin; }
    inline void SetUseAsimovData(Bool_t flag = kTRUE) { fUseAsimovData = flag; }
    inline void SetUsePseudoExp(Bool_t flag = kTRUE) { fUsePseudoExp = flag; }
    inline void SetExportShapePlots(Bool_t flag = kTRUE) { fExportShapePlots = flag; }
    inline void SetExportCorrMatrix(Bool_t flag = kTRUE) { fExportCorrMatrix = flag; }
    inline void SetRunPullPlots(Bool_t flag = kTRUE) { fRunPulls = flag; }
    inline void SetNoSystematics(Bool_t flag = kTRUE) { fNoSystematics = flag; }
    
    ClassDef(AtlHistFactoryMeasurement,0) // DOCUMENT ME
};
#endif

 AtlHistFactoryMeasurement.h:1
 AtlHistFactoryMeasurement.h:2
 AtlHistFactoryMeasurement.h:3
 AtlHistFactoryMeasurement.h:4
 AtlHistFactoryMeasurement.h:5
 AtlHistFactoryMeasurement.h:6
 AtlHistFactoryMeasurement.h:7
 AtlHistFactoryMeasurement.h:8
 AtlHistFactoryMeasurement.h:9
 AtlHistFactoryMeasurement.h:10
 AtlHistFactoryMeasurement.h:11
 AtlHistFactoryMeasurement.h:12
 AtlHistFactoryMeasurement.h:13
 AtlHistFactoryMeasurement.h:14
 AtlHistFactoryMeasurement.h:15
 AtlHistFactoryMeasurement.h:16
 AtlHistFactoryMeasurement.h:17
 AtlHistFactoryMeasurement.h:18
 AtlHistFactoryMeasurement.h:19
 AtlHistFactoryMeasurement.h:20
 AtlHistFactoryMeasurement.h:21
 AtlHistFactoryMeasurement.h:22
 AtlHistFactoryMeasurement.h:23
 AtlHistFactoryMeasurement.h:24
 AtlHistFactoryMeasurement.h:25
 AtlHistFactoryMeasurement.h:26
 AtlHistFactoryMeasurement.h:27
 AtlHistFactoryMeasurement.h:28
 AtlHistFactoryMeasurement.h:29
 AtlHistFactoryMeasurement.h:30
 AtlHistFactoryMeasurement.h:31
 AtlHistFactoryMeasurement.h:32
 AtlHistFactoryMeasurement.h:33
 AtlHistFactoryMeasurement.h:34
 AtlHistFactoryMeasurement.h:35
 AtlHistFactoryMeasurement.h:36
 AtlHistFactoryMeasurement.h:37
 AtlHistFactoryMeasurement.h:38
 AtlHistFactoryMeasurement.h:39
 AtlHistFactoryMeasurement.h:40
 AtlHistFactoryMeasurement.h:41
 AtlHistFactoryMeasurement.h:42
 AtlHistFactoryMeasurement.h:43
 AtlHistFactoryMeasurement.h:44
 AtlHistFactoryMeasurement.h:45
 AtlHistFactoryMeasurement.h:46
 AtlHistFactoryMeasurement.h:47
 AtlHistFactoryMeasurement.h:48
 AtlHistFactoryMeasurement.h:49
 AtlHistFactoryMeasurement.h:50
 AtlHistFactoryMeasurement.h:51
 AtlHistFactoryMeasurement.h:52
 AtlHistFactoryMeasurement.h:53
 AtlHistFactoryMeasurement.h:54
 AtlHistFactoryMeasurement.h:55
 AtlHistFactoryMeasurement.h:56
 AtlHistFactoryMeasurement.h:57
 AtlHistFactoryMeasurement.h:58
 AtlHistFactoryMeasurement.h:59
 AtlHistFactoryMeasurement.h:60
 AtlHistFactoryMeasurement.h:61
 AtlHistFactoryMeasurement.h:62
 AtlHistFactoryMeasurement.h:63
 AtlHistFactoryMeasurement.h:64
 AtlHistFactoryMeasurement.h:65
 AtlHistFactoryMeasurement.h:66
 AtlHistFactoryMeasurement.h:67
 AtlHistFactoryMeasurement.h:68
 AtlHistFactoryMeasurement.h:69
 AtlHistFactoryMeasurement.h:70
 AtlHistFactoryMeasurement.h:71
 AtlHistFactoryMeasurement.h:72
 AtlHistFactoryMeasurement.h:73
 AtlHistFactoryMeasurement.h:74
 AtlHistFactoryMeasurement.h:75
 AtlHistFactoryMeasurement.h:76
 AtlHistFactoryMeasurement.h:77
 AtlHistFactoryMeasurement.h:78
 AtlHistFactoryMeasurement.h:79
 AtlHistFactoryMeasurement.h:80
 AtlHistFactoryMeasurement.h:81
 AtlHistFactoryMeasurement.h:82
 AtlHistFactoryMeasurement.h:83
 AtlHistFactoryMeasurement.h:84
 AtlHistFactoryMeasurement.h:85
 AtlHistFactoryMeasurement.h:86
 AtlHistFactoryMeasurement.h:87
 AtlHistFactoryMeasurement.h:88
 AtlHistFactoryMeasurement.h:89
 AtlHistFactoryMeasurement.h:90
 AtlHistFactoryMeasurement.h:91
 AtlHistFactoryMeasurement.h:92