//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: HepDataMCSample.h,v 1.1 2011/08/22 04:19:28 kind Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef HEP_HepDataMCSample
#define HEP_HepDataMCSample
#ifndef ROOT_TNamed
#include <TNamed.h>
#endif
#ifndef ROOT_TAttFill
#include <TAttFill.h>
#endif
#ifndef ROOT_TAttLine
#include <TAttLine.h>
#endif
#ifndef ROOT_TFile
#include <TFile.h>
#endif
#ifndef ROOT_TH1F
#include <TH1F.h>
#endif

class HepDataMCSample : public TNamed {

private:
    TAttFill fAttFill;   // Fill attributes (used for stacked drawing)
    TAttLine fAttLine;   // Line attributes (used for overlay drawing)
    Float_t  fXsection;  // X-section for this sample (pb)
    Float_t  fNEvents;   // Weighted number of events in this sample
    Float_t  fLumi;      // Luminosity (pb^-1), see also GetLumi()
    TFile   *fFile;      // Pointer to histogram file (if open)
    TH1F    *fHistogram; // Corresponding histogram (used in HepDataMCPlot only)
    
public:
    HepDataMCSample();
    HepDataMCSample(const char* name, const char* title,
		    Color_t color, Style_t line_style, Width_t line_width,
		    Style_t fill_style);
    virtual ~HepDataMCSample();
    TFile* Open();
    void Close();
    Float_t GetLumi() const;
    
    inline const char* GetLabel() { return GetTitle(); }
    inline Color_t GetColor() { return fAttFill.GetFillColor(); }
    inline Style_t GetLineStyle() { return fAttLine.GetLineStyle(); }
    inline Width_t GetLineWidth() { return fAttLine.GetLineWidth(); }
    inline Style_t GetFillStyle() { return fAttFill.GetFillStyle(); }
    inline Float_t GetXsection() const { return fXsection; }
    inline Float_t GetNEvents() const { return fNEvents; }
    inline TFile* GetFile() const { return fFile; }
    inline TH1F* GetHistogram() const { return fHistogram; }
    inline TAttFill GetAttFill() const { return fAttFill; }
    inline TAttLine GetAttLine() const { return fAttLine; }
    inline void SetColor(Color_t color) { fAttFill.SetFillColor(color); }
    inline void SetLineStyle(Style_t lstyle) { fAttLine.SetLineStyle(lstyle); }
    inline void SetLineWidth(Width_t lwidth) { fAttLine.SetLineWidth(lwidth); }
    inline void SetFillStyle(Style_t fstyle) { fAttFill.SetFillStyle(fstyle); }
    inline void SetXsection(Float_t xsec) { fXsection = xsec; }
    inline void SetLumi(Float_t lumi) { fLumi = lumi; }
    inline void SetHistogram(TH1F *h) { fHistogram = h; }
    
    ClassDef(HepDataMCSample,1) // MC sample inside HepDataMCPlotter
};
#endif
 HepDataMCSample.h:1
 HepDataMCSample.h:2
 HepDataMCSample.h:3
 HepDataMCSample.h:4
 HepDataMCSample.h:5
 HepDataMCSample.h:6
 HepDataMCSample.h:7
 HepDataMCSample.h:8
 HepDataMCSample.h:9
 HepDataMCSample.h:10
 HepDataMCSample.h:11
 HepDataMCSample.h:12
 HepDataMCSample.h:13
 HepDataMCSample.h:14
 HepDataMCSample.h:15
 HepDataMCSample.h:16
 HepDataMCSample.h:17
 HepDataMCSample.h:18
 HepDataMCSample.h:19
 HepDataMCSample.h:20
 HepDataMCSample.h:21
 HepDataMCSample.h:22
 HepDataMCSample.h:23
 HepDataMCSample.h:24
 HepDataMCSample.h:25
 HepDataMCSample.h:26
 HepDataMCSample.h:27
 HepDataMCSample.h:28
 HepDataMCSample.h:29
 HepDataMCSample.h:30
 HepDataMCSample.h:31
 HepDataMCSample.h:32
 HepDataMCSample.h:33
 HepDataMCSample.h:34
 HepDataMCSample.h:35
 HepDataMCSample.h:36
 HepDataMCSample.h:37
 HepDataMCSample.h:38
 HepDataMCSample.h:39
 HepDataMCSample.h:40
 HepDataMCSample.h:41
 HepDataMCSample.h:42
 HepDataMCSample.h:43
 HepDataMCSample.h:44
 HepDataMCSample.h:45
 HepDataMCSample.h:46
 HepDataMCSample.h:47
 HepDataMCSample.h:48
 HepDataMCSample.h:49
 HepDataMCSample.h:50
 HepDataMCSample.h:51
 HepDataMCSample.h:52
 HepDataMCSample.h:53
 HepDataMCSample.h:54
 HepDataMCSample.h:55
 HepDataMCSample.h:56
 HepDataMCSample.h:57
 HepDataMCSample.h:58
 HepDataMCSample.h:59
 HepDataMCSample.h:60
 HepDataMCSample.h:61
 HepDataMCSample.h:62
 HepDataMCSample.h:63
 HepDataMCSample.h:64
 HepDataMCSample.h:65
 HepDataMCSample.h:66