//  
// Author: Soeren Stamm <mailto: stamm@physik.hu-berlin.de>
// Update: $Id: AtlHistFactorySystOneSided.h,v 1.4 2016/04/19 07:52:23 stamm Exp $
// Copyright: 2015 (C) Soeren Stamm
//
#ifndef ATLAS_AtlHistFactorySystOneSided
#define ATLAS_AtlHistFactorySystOneSided
#ifndef ATLAS_AtlHistFactorySystematic
#include <AtlHistFactorySystematic.h>
#endif
#ifndef ATLAS_AtlHistFactorySystematic
#include <AtlHistFactorySystematic.h>
#endif
#ifndef ATLAS_AtlTopLevelAnalysis
#include <AtlTopLevelAnalysis.h>
#endif

class AtlHistFactorySystOneSided : public AtlHistFactorySystematic {

public:
    enum ESymmetryMode {
	kFullDiff, // up/down = nom +- (syst-nom)
	kHalfDiff  // up/down = nom +- (syst-nom)/2.
    };
    
private:
    ESymmetryMode fSymMode;  // Mode for symmetrization procedure
    TFile *fPlotterFileSyst; // MCPlotter file for systematic
    TFile *fPlotterFileSystNom; // MCPlotter file for systematic (nominal)
    TFile *fPlotterFileNom;  // MCPlotter file for nominal
    AtlTopLevelAnalysis::ESystematic fSyst; // Systematic
    AtlTopLevelAnalysis::ESystematic fNominal; // Nominal (needed for symmetrization)
    AtlTopLevelAnalysis::ESystematic fSystNom; // Use different nominal vor symmetrization
    TList *fHistsSyst; // List of MCPlotter templates for systematic
    TList *fHistsSystNom; // List of MCPlotter templates for systematic (nominal)
    TList *fHistsNom;  // List of MCPlotter templates for nominal
    
public:
    AtlHistFactorySystOneSided();
    AtlHistFactorySystOneSided(const char* systname,
			       const char* systtitle,
			       AtlTopLevelAnalysis::ESystematic Syst,
			       ESymmetryMode Mode,
			       Bool_t useShape = kFALSE);
    virtual ~AtlHistFactorySystOneSided();

    virtual void Initialize(const char* BaseDir,
			    const char* scheme = "plots_datamc");
    virtual void Clear(Option_t *option = "");
    inline void SetSystNominal(AtlTopLevelAnalysis::ESystematic systnom) {
	fSystNom = systnom;
    }
	
protected:
    virtual void GetHistsFromFile(const char* process);
    virtual void ComputeUpDownVariation(const char* process);
    
    ClassDef(AtlHistFactorySystOneSided, 1) // DOCUMENT ME
};
#endif

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