//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: HepDataMCPlot.h,v 1.39 2017/03/30 16:27:28 mergelm Exp $
// Copyright: 2009 (C) Oliver Maria Kind
//
#ifndef HEP_HepDataMCPlot
#define HEP_HepDataMCPlot
#ifndef HEP_HepDataMCFolder
#include <HepDataMCFolder.h>
#endif
#ifndef ROOT_TNamed
#include <TNamed.h>
#endif
#ifndef ROOT_HStack
#include <THStack.h>
#endif
#ifndef ROOT_TH1F
#include <TH1F.h>
#endif
#ifndef ROOT_TString
#include <TString.h>
#endif
#ifndef ROOT_TLegend
#include <TLegend.h>
#endif
#ifndef ROOT_TCanvas
#include <TCanvas.h>
#endif
#ifndef ROOT_TGraphAsymmErrors
#include <TGraphAsymmErrors.h>
#endif

class TList;
class TObjString;
class HepDataMCSample;
class TStyle;
class TBrowser;
class TPad;
class TFeldmanCousins;
class TFractionFitter;
class HepTemplate;
class TLine;

#if (__cplusplus > 201100L)
#define const_or_constexpr constexpr
#else
#define const_or_constexpr const
#endif

class HepDataMCPlot : public TNamed {
    
  private:
    static const Color_t fgUnifyColor = kYellow;        //! Color used for unify the MC stack
    static const_or_constexpr Double_t fgFeldmanCousinsCL = 0.680;   //! Confidence level for error calculation
    static const Int_t fgFeldmanCousinsMaxEntries = 0;  //! Separates Feldman-Cousins error
                                                        //  calculation from standard ROOT errors
    
    
    THStack  *fMCHistStack;             // MC HStack object
    TH1F     *fHistDATA;                // Pointer to DATA histograms for fast access
    TH1F     *fHistMCTop;               //! Pointer to top-most MC histogram of the stack
    TLegend  *fLegend;                  // Legend
    TLegend  *fLegendLarge;             // Large legend
    Bool_t    fFirstDraw;               //! Drawing the first time ?
    Bool_t    fFirstLegend;             //! Drawing the legend the first time ?
    TString  *fXTitle;                  // Title of x-axis
    TString  *fYTitle;                  // Title of y-axis
    Int_t     fN_MCHistograms;          // No. of MC histograms (used for histogram id)
    Bool_t    fGroupHistograms;         // Group histograms when drawing and in the legend
    TList    *fMCFolders;               // List of folders to group MC samples
    TList    *fMCSingleSamples;         // List of single MC samples, not belonging to folder
    Bool_t    fUnifyMCStack;            // Draw MC stack histograms as one
    Bool_t    fDrawMCError;             // Draw the total MC uncertainty on top
    Bool_t    fDrawNormError;           // Include the normalization error when computing the total uncertainty
    Bool_t    fUseOverflowUnderflow;    // Add overflow in last bin and underflow in first bin
    Bool_t    fDrawData;                // Draw DATA histogram (default=on)
    Bool_t    fDrawDataErrorX;          //! Draw x-errors for data histogram (default=on)
    Bool_t    fDrawDataZeroEntryErrors; // Draw the Data error bars even for 0 data entry bins
    Bool_t    fDrawDataZeroEntries;     //! Draw markers for bins with no data
    TGraphAsymmErrors *fMCErrors;       // Graph for drawing the MC error band
    TGraphAsymmErrors *fGraphDATA;      //! Graph for drawing data
    Float_t   fLumiDATA;                // Luminosity of data sample
    TList    *fMCFitTemplates;          // List of MC templates given to the fitter
    TFractionFitter *fFitter;           //! TFractionFitter instance.
    THStack  *fMCFittedHistStack;       // MC HStack object for fitted MC histograms
    Bool_t    fDrawCMSLumiAtlasLabel;   // Draw Labels,if kTRUE
    Bool_t    fUseAtlasStyle;	        // Use ATLAS style if it is true
    Bool_t    fUseShortCMSLumiLabel;    //! Use short label for CMS + Lumi
    TString   fCenterOfMassEnergyLabel; // Character string which denotes the centre of mass energy (example: "13")
    TString   fAtlasLabelStatus;        // Status label (example: "work in progress")
    TString   fLuminosityLabel;         // string which denotes the luminosity (example: "4.7 pb^{-1}")
    Float_t   fAtlasLabelPosX;          // X position of the Atlas label
    Float_t   fAtlasLabelPosY;          // Y position of the Atlas label
    Float_t   fCMSEnergyLabelPosX;      // X position of the cms energy label
    Float_t   fCMSEnergyLabelPosY;      // Y position of the cms energy label
    Float_t   fLuminosityLabelPosX;     // X position of the luminosity label
    Float_t   fLuminosityLabelPosY;     // Y position of the luminosity label
    Float_t   fAddRange;                // Extra space added when setting axis limit (default: 1.1)
    Bool_t    fDrawDataMCRatio;         // Switch for drawing data/mc ratio
    Bool_t    fDataMCRatioCenterOne;    // Switch for drawing data/mc ratio centered at one
    Bool_t    fDrawSignificance;        // Switch for drawing significance plot
    Float_t   fRatioHeight;             // Height of Ratio plots w.r.t stack plot ([0,1], default: 0.4)
    Bool_t    fYRangeUser;              // Flag if user defined y range should be used
    Double_t  fYRangeUserMin;           // Y-axis limit (min)
    Double_t  fYRangeUserMax;           // Y-axis limit (max)
    
    TCanvas  *fCanvas;                  //! Pointer to the canvas (if plot is drawn in a canvas)
    TPad     *fMainPad;                 //! Pointer to the pad of the stacked plot
    TPad     *fRatioPad1;               //! Pointer to the pad of the first ratio plot
    TPad     *fRatioPad2;               //! Pointer to the pad of the second ratio plot

    TH1      *fHistogramMainPad;        //! Pointer to the histogram used for drawing the axis of the stacked plot
    TH1      *fHistogramRatioPad1;      //! Pointer to the histogram used for drawing the axis the first ratio plot
    TH1      *fHistogramRatioPad2;      //! Pointer to the histogram used for drawing the axis second ratio plot
    TLine    *fRatioLine;               //! Line for Ratio plots indicating 0 or 1
    TH1      *fHistogramLastInStack;    //! Pointer to the last histogram inside the MC stack (supposed to be tha MC signal)
    Float_t   fScaleOverlay;            // Scale factor of the overlay histogram
    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
    
  public:
    HepDataMCPlot();
    HepDataMCPlot(const char* name, const char* title);
    virtual ~HepDataMCPlot();
    virtual void Draw(Option_t *option = "");
//    virtual void Paint(Option_t *option = "");
    virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
    virtual void Browse(TBrowser *b);
    virtual void Print(Option_t *option = "") const; // *MENU*
    virtual Bool_t IsFolder() const { return kFALSE; }
    void DrawLegend();
    void DrawLegendPad(); // *MENU*
    void SetHistDATA(TH1F *h, const char* label, Float_t lumiData);
    
    void AddHistMC(TH1F *h, HepDataMCSample *sample);
    void AddHistMC(TH1F *h, HepDataMCFolder *folder,
		   HepDataMCSample *sample);
    void SetXTitle(const char* title); // *MENU*
    void SetYTitle(const char* title); // *MENU*
    void SetXRange(Double_t xmin, Double_t xmax); // *MENU*
    void SetYRange(Double_t ymin, Double_t ymax);
    void SetYRangeRatio(Double_t ymin, Double_t ymax, Int_t ratio); // *MENU*
    void SetNdivisionsX(Int_t n = 510, Bool_t optim = kTRUE); // *MENU*
    void SetNdivisionsY(Int_t n = 510, Bool_t optim = kTRUE); // *MENU*
    static TString GetPathInsideFile(TDirectory *dir);
    Bool_t GetGroupHistograms() const { return fGroupHistograms; }
    void SetGroupHistograms(Bool_t GroupHistograms); // *TOGGLE*
    Bool_t GetUnifyMCStack() const { return fUnifyMCStack; }
    void SetUnifyMCStack(Bool_t UnifyMCStack); // *TOGGLE*
    void SetUnifyMCStack(Bool_t UnifyMCStack, Bool_t DoRedraw);
    Bool_t GetDrawMCError() { return fDrawMCError; }
    Bool_t GetDrawNormError() { return fDrawNormError; }
    void SetDrawMCError(Bool_t DrawMCError); // *TOGGLE*
    void SetDrawNormError(Bool_t DrawMCError); // *TOGGLE*
    void SetDrawMCError(Bool_t DrawMCError, Bool_t DoRedraw);
    void SetDrawData(Bool_t DrawData); // *TOGGLE*
    Bool_t GetDrawData() { return fDrawData; }
    void SetUseOverflowUnderflow(Bool_t UseOverflowUnderflow = kTRUE); // *TOGGLE*
    Bool_t GetUseOverflowUnderflow() {return fUseOverflowUnderflow;}
    Bool_t GetDrawDataZeroEntryErrors() { return fDrawDataZeroEntryErrors; }
    void SetDrawDataZeroEntryErrors(Bool_t DrawDataZeroEntryErrors = kTRUE); // *TOGGLE*
    void SetDrawDataZeroEntries(Bool_t flag = kTRUE); // *TOGGLE*
    void ComputeStatisticalUncertainty(TH1F* h, Int_t bin,
				       Double_t &up, Double_t &lo);
    void ComputeNormUncertainty(Int_t bin,
				Double_t &up, Double_t &lo);
    void PrepareFit(Bool_t single_samples = kFALSE, Bool_t prepare_effs = kFALSE);
    Int_t Fit();
    virtual void DrawFit(Option_t *option = "");
    void ListFolders();
    void ListSingleSamples();
    void ListTemplateFractions();
    Double_t GetTemplateFitFraction(const char* template_name);
    Double_t GetTemplateFitFractionError(const char* template_name);
    Float_t GetTemplateCutEfficiency(const char* template_name);
    void SetTemplateBounds(const char* template_name, Double_t Lower, Double_t Upper);
    void SetTemplateStartValue(const char* template_name, Double_t frac, Double_t frac_err);
    void FixTemplateFraction(const char* template_name, Bool_t fix = kTRUE);
    void Rebin(Int_t ngroup); // *MENU*
    void ScaleMCStack(Float_t scale); // *MENU*
    void ScaleMCFolder(Float_t scale, const char *mc_folder);

    void SetDrawDataMCRatio(Bool_t DrawDataMCRatio = kTRUE); // *TOGGLE*
    void SetDrawSignificance(Bool_t DrawSignificance = kTRUE); // *TOGGLE*
    void SetDataMCRatioCenterOne(Bool_t DataMCRatioCenter = kTRUE); // *TOGGLE*
    Bool_t GetDrawDataMCRatio() {return fDrawDataMCRatio;}
    Bool_t GetDrawSignificance() {return fDrawSignificance;}
    void ExportTemplates(TFile *f, const char* suffix);
    TList* GetListOfMCTemplates(const char* suffix);
    void PrintBinStatistics(Option_t *option = "");
    void OptimizeBinning(Double_t zs = 15, Double_t zb = 15,
			 Bool_t DrawStack = kFALSE);
    void SetDrawSignalOverlay(Bool_t DrawSignalOverlay); // *TOGGLE*
    void SetScaleOverlay(Float_t ScaleOverlay); // *MENU*
    
    inline void AddMCFolder(HepDataMCFolder *folder) {
	// Add MC folder for grouping histograms
	if ( fMCFolders == 0 ) fMCFolders = new TList;
	fMCFolders->Add(folder);
    }
    inline void AddMCSingleSample(HepDataMCSample *sample) {
	// Add MC single sample
	if ( fMCSingleSamples == 0 ) fMCSingleSamples = new TList;
	fMCSingleSamples->Add(sample);
    }
    inline void SetMCErrors(TGraphAsymmErrors *ErrorGraph) {
	fMCErrors = ErrorGraph;
    }
    inline void SetLumiDATA(Float_t lumiData) {
	fLumiDATA = lumiData;
    }
    inline TList* GetMCFolders() const { return fMCFolders; }
    inline TList* GetMCSingleSamples() { return fMCSingleSamples; }
    inline TH1F* GetHistDATA() const { return fHistDATA; }
    inline Float_t GetLumiDATA() { return fLumiDATA; }
    inline THStack* GetMCHistStack() const { return fMCHistStack; }
    inline TLegend* GetLegend() { return fLegend; }
    inline TLegend* GetLegendLarge() { return fLegendLarge; }
    inline const char* GetXTitle() { return fXTitle->Data(); }
    inline const char* GetYTitle() { return fYTitle->Data(); }
    inline TGraphAsymmErrors*  GetMCErrors() { return fMCErrors; }
    inline HepTemplate* GetTemplate(const char* title) {
	return (HepTemplate*)fMCFitTemplates->FindObject(title);
    }
    inline THStack* GetMCFittedHistStack() { return fMCFittedHistStack; }
    inline Int_t GetNFitTemplates() {
	if(fMCFitTemplates!=0) return fMCFitTemplates->GetEntries();
	else return 0;
    }
    
    //function to design plot in ATLAS style
    void SetUseAtlasStyle(Bool_t UseAtlasStyle = kTRUE){ 
	fUseAtlasStyle = UseAtlasStyle;
    }
    Bool_t GetUseAtlasStyle(){ return fUseAtlasStyle;}
    void SetAtlasStyle(); //set current style to ATLAS style
    inline void SetDrawCMSLumiAtlasLabel(Bool_t DrawCMSLumiAtlasLabel = kTRUE){
	fDrawCMSLumiAtlasLabel = DrawCMSLumiAtlasLabel;
    }
    inline Bool_t GetDrawCMSLumiAtlasLabel(){return fDrawCMSLumiAtlasLabel;}
    void DrawATLASLabel(Double_t x,Double_t y,TString text,Color_t color=1); 
    inline void SetAtlasLabelStatus(TString AtlasLabelStatus){
	fAtlasLabelStatus = AtlasLabelStatus;
    }
    inline TString  GetAtlasLabelStatus(){ return fAtlasLabelStatus;}
    inline void SetCentreOfMassEnergyLabel(TString CMSEnergy) {
	fCenterOfMassEnergyLabel = CMSEnergy;
    }
    inline void SetCenterOfMassEnergyLabel(TString CMSEnergy) {
	SetCentreOfMassEnergyLabel(CMSEnergy);
    }
    inline TString  GetCentreOfEnergyLabel() { return fCenterOfMassEnergyLabel;}
    inline TString  GetCenterOfEnergyLabel() { return GetCentreOfEnergyLabel(); }
    inline void SetLuminosityLabel(TString Luminosity){
	fLuminosityLabel = Luminosity;
    }
    inline TString  GetLuminosityLabel() { return fLuminosityLabel;}
    void DrawTextLatex(Double_t x, Double_t y,
		       Color_t color, TString text,
		       Double_t tsize = 0.04);

    inline void SetDrawDataErrorX(Bool_t DrawErrorX) {
	fDrawDataErrorX = DrawErrorX;
    }
    inline void SetAtlasLabelPos(Float_t x, Float_t y) {
	fAtlasLabelPosX = x;
	fAtlasLabelPosY = y;
    }
    inline void SetLuminosityLabelPos(Float_t x, Float_t y) {
	fLuminosityLabelPosX = x;
	fLuminosityLabelPosY = y;
    }
    inline void SetCMSEnergyLabelPos(Float_t x, Float_t y) {
	fCMSEnergyLabelPosX = x;
	fCMSEnergyLabelPosY = y;
    }
    inline void SetLegendPos(Float_t x1, Float_t y1,
			     Float_t x2, Float_t y2) {
	fLegend->SetX1NDC(x1); fLegend->SetY1NDC(y1);
	fLegend->SetX2NDC(x2); fLegend->SetY2NDC(y2);
    }
    inline void SetRatioHeight(Float_t ratio) { fRatioHeight = ratio; }
    TCanvas * GetCanvas() const { return fCanvas; }
    inline TPad* GetRatioPad1() { return fRatioPad1; }
    inline TPad* GetRatioPad2() { return fRatioPad2; }
    inline TPad* GetMainPad()   { return fMainPad; }
    inline TH1* GetHistogramMainPad() { return fHistogramMainPad; }
    inline TH1* GetHistogramRatioPad1() { return fHistogramRatioPad1; }
    inline TH1* GetHistogramRatioPad2() { return fHistogramRatioPad2; }
    inline Bool_t GetDrawSignalOverlay() const {
	//
	// 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
	//
	return fDrawSignalOverlay;
    }
	
    
  private:
    TGraphAsymmErrors* SetErrors(TH1F *FromHist,
				 Bool_t IsData,
				 Option_t *option = "");
    Double_t pValuePoisson(unsigned nObs, double nExp);
    Double_t pValuePoissonError(unsigned nObs, double E=1, double V=1);
    Double_t pValueToSignificance(double p, bool excess=true);
    TH1F* CompareHistograms(TH1* hObs=0, TH1* hExp=0,
			    bool neglectUncertainty=false,
			    bool variableBinning=false,
			    TH1* hPull=0);
    Double_t pja_normal_quantile(double p);
    void SetXRange(TPad *pad, Double_t xmin, Double_t xmax);
    void SetYRange(TPad *pad, Double_t ymin, Double_t ymax);
    void DrawNoStack(Option_t *option = "");
    void DrawStack(Option_t *option = "");
    void DrawDataMCRatio();
    void DrawSignificance();
    void AddOverflowUnderflowBins(TH1* hist);
    void SetColorsNoStack();
    void SetColorsStack();
    void SetupPad();
    void SetupAxis();
    
    ClassDef(HepDataMCPlot,21) // DATA-MC overlay/stacked plot
};
#endif

 HepDataMCPlot.h:1
 HepDataMCPlot.h:2
 HepDataMCPlot.h:3
 HepDataMCPlot.h:4
 HepDataMCPlot.h:5
 HepDataMCPlot.h:6
 HepDataMCPlot.h:7
 HepDataMCPlot.h:8
 HepDataMCPlot.h:9
 HepDataMCPlot.h:10
 HepDataMCPlot.h:11
 HepDataMCPlot.h:12
 HepDataMCPlot.h:13
 HepDataMCPlot.h:14
 HepDataMCPlot.h:15
 HepDataMCPlot.h:16
 HepDataMCPlot.h:17
 HepDataMCPlot.h:18
 HepDataMCPlot.h:19
 HepDataMCPlot.h:20
 HepDataMCPlot.h:21
 HepDataMCPlot.h:22
 HepDataMCPlot.h:23
 HepDataMCPlot.h:24
 HepDataMCPlot.h:25
 HepDataMCPlot.h:26
 HepDataMCPlot.h:27
 HepDataMCPlot.h:28
 HepDataMCPlot.h:29
 HepDataMCPlot.h:30
 HepDataMCPlot.h:31
 HepDataMCPlot.h:32
 HepDataMCPlot.h:33
 HepDataMCPlot.h:34
 HepDataMCPlot.h:35
 HepDataMCPlot.h:36
 HepDataMCPlot.h:37
 HepDataMCPlot.h:38
 HepDataMCPlot.h:39
 HepDataMCPlot.h:40
 HepDataMCPlot.h:41
 HepDataMCPlot.h:42
 HepDataMCPlot.h:43
 HepDataMCPlot.h:44
 HepDataMCPlot.h:45
 HepDataMCPlot.h:46
 HepDataMCPlot.h:47
 HepDataMCPlot.h:48
 HepDataMCPlot.h:49
 HepDataMCPlot.h:50
 HepDataMCPlot.h:51
 HepDataMCPlot.h:52
 HepDataMCPlot.h:53
 HepDataMCPlot.h:54
 HepDataMCPlot.h:55
 HepDataMCPlot.h:56
 HepDataMCPlot.h:57
 HepDataMCPlot.h:58
 HepDataMCPlot.h:59
 HepDataMCPlot.h:60
 HepDataMCPlot.h:61
 HepDataMCPlot.h:62
 HepDataMCPlot.h:63
 HepDataMCPlot.h:64
 HepDataMCPlot.h:65
 HepDataMCPlot.h:66
 HepDataMCPlot.h:67
 HepDataMCPlot.h:68
 HepDataMCPlot.h:69
 HepDataMCPlot.h:70
 HepDataMCPlot.h:71
 HepDataMCPlot.h:72
 HepDataMCPlot.h:73
 HepDataMCPlot.h:74
 HepDataMCPlot.h:75
 HepDataMCPlot.h:76
 HepDataMCPlot.h:77
 HepDataMCPlot.h:78
 HepDataMCPlot.h:79
 HepDataMCPlot.h:80
 HepDataMCPlot.h:81
 HepDataMCPlot.h:82
 HepDataMCPlot.h:83
 HepDataMCPlot.h:84
 HepDataMCPlot.h:85
 HepDataMCPlot.h:86
 HepDataMCPlot.h:87
 HepDataMCPlot.h:88
 HepDataMCPlot.h:89
 HepDataMCPlot.h:90
 HepDataMCPlot.h:91
 HepDataMCPlot.h:92
 HepDataMCPlot.h:93
 HepDataMCPlot.h:94
 HepDataMCPlot.h:95
 HepDataMCPlot.h:96
 HepDataMCPlot.h:97
 HepDataMCPlot.h:98
 HepDataMCPlot.h:99
 HepDataMCPlot.h:100
 HepDataMCPlot.h:101
 HepDataMCPlot.h:102
 HepDataMCPlot.h:103
 HepDataMCPlot.h:104
 HepDataMCPlot.h:105
 HepDataMCPlot.h:106
 HepDataMCPlot.h:107
 HepDataMCPlot.h:108
 HepDataMCPlot.h:109
 HepDataMCPlot.h:110
 HepDataMCPlot.h:111
 HepDataMCPlot.h:112
 HepDataMCPlot.h:113
 HepDataMCPlot.h:114
 HepDataMCPlot.h:115
 HepDataMCPlot.h:116
 HepDataMCPlot.h:117
 HepDataMCPlot.h:118
 HepDataMCPlot.h:119
 HepDataMCPlot.h:120
 HepDataMCPlot.h:121
 HepDataMCPlot.h:122
 HepDataMCPlot.h:123
 HepDataMCPlot.h:124
 HepDataMCPlot.h:125
 HepDataMCPlot.h:126
 HepDataMCPlot.h:127
 HepDataMCPlot.h:128
 HepDataMCPlot.h:129
 HepDataMCPlot.h:130
 HepDataMCPlot.h:131
 HepDataMCPlot.h:132
 HepDataMCPlot.h:133
 HepDataMCPlot.h:134
 HepDataMCPlot.h:135
 HepDataMCPlot.h:136
 HepDataMCPlot.h:137
 HepDataMCPlot.h:138
 HepDataMCPlot.h:139
 HepDataMCPlot.h:140
 HepDataMCPlot.h:141
 HepDataMCPlot.h:142
 HepDataMCPlot.h:143
 HepDataMCPlot.h:144
 HepDataMCPlot.h:145
 HepDataMCPlot.h:146
 HepDataMCPlot.h:147
 HepDataMCPlot.h:148
 HepDataMCPlot.h:149
 HepDataMCPlot.h:150
 HepDataMCPlot.h:151
 HepDataMCPlot.h:152
 HepDataMCPlot.h:153
 HepDataMCPlot.h:154
 HepDataMCPlot.h:155
 HepDataMCPlot.h:156
 HepDataMCPlot.h:157
 HepDataMCPlot.h:158
 HepDataMCPlot.h:159
 HepDataMCPlot.h:160
 HepDataMCPlot.h:161
 HepDataMCPlot.h:162
 HepDataMCPlot.h:163
 HepDataMCPlot.h:164
 HepDataMCPlot.h:165
 HepDataMCPlot.h:166
 HepDataMCPlot.h:167
 HepDataMCPlot.h:168
 HepDataMCPlot.h:169
 HepDataMCPlot.h:170
 HepDataMCPlot.h:171
 HepDataMCPlot.h:172
 HepDataMCPlot.h:173
 HepDataMCPlot.h:174
 HepDataMCPlot.h:175
 HepDataMCPlot.h:176
 HepDataMCPlot.h:177
 HepDataMCPlot.h:178
 HepDataMCPlot.h:179
 HepDataMCPlot.h:180
 HepDataMCPlot.h:181
 HepDataMCPlot.h:182
 HepDataMCPlot.h:183
 HepDataMCPlot.h:184
 HepDataMCPlot.h:185
 HepDataMCPlot.h:186
 HepDataMCPlot.h:187
 HepDataMCPlot.h:188
 HepDataMCPlot.h:189
 HepDataMCPlot.h:190
 HepDataMCPlot.h:191
 HepDataMCPlot.h:192
 HepDataMCPlot.h:193
 HepDataMCPlot.h:194
 HepDataMCPlot.h:195
 HepDataMCPlot.h:196
 HepDataMCPlot.h:197
 HepDataMCPlot.h:198
 HepDataMCPlot.h:199
 HepDataMCPlot.h:200
 HepDataMCPlot.h:201
 HepDataMCPlot.h:202
 HepDataMCPlot.h:203
 HepDataMCPlot.h:204
 HepDataMCPlot.h:205
 HepDataMCPlot.h:206
 HepDataMCPlot.h:207
 HepDataMCPlot.h:208
 HepDataMCPlot.h:209
 HepDataMCPlot.h:210
 HepDataMCPlot.h:211
 HepDataMCPlot.h:212
 HepDataMCPlot.h:213
 HepDataMCPlot.h:214
 HepDataMCPlot.h:215
 HepDataMCPlot.h:216
 HepDataMCPlot.h:217
 HepDataMCPlot.h:218
 HepDataMCPlot.h:219
 HepDataMCPlot.h:220
 HepDataMCPlot.h:221
 HepDataMCPlot.h:222
 HepDataMCPlot.h:223
 HepDataMCPlot.h:224
 HepDataMCPlot.h:225
 HepDataMCPlot.h:226
 HepDataMCPlot.h:227
 HepDataMCPlot.h:228
 HepDataMCPlot.h:229
 HepDataMCPlot.h:230
 HepDataMCPlot.h:231
 HepDataMCPlot.h:232
 HepDataMCPlot.h:233
 HepDataMCPlot.h:234
 HepDataMCPlot.h:235
 HepDataMCPlot.h:236
 HepDataMCPlot.h:237
 HepDataMCPlot.h:238
 HepDataMCPlot.h:239
 HepDataMCPlot.h:240
 HepDataMCPlot.h:241
 HepDataMCPlot.h:242
 HepDataMCPlot.h:243
 HepDataMCPlot.h:244
 HepDataMCPlot.h:245
 HepDataMCPlot.h:246
 HepDataMCPlot.h:247
 HepDataMCPlot.h:248
 HepDataMCPlot.h:249
 HepDataMCPlot.h:250
 HepDataMCPlot.h:251
 HepDataMCPlot.h:252
 HepDataMCPlot.h:253
 HepDataMCPlot.h:254
 HepDataMCPlot.h:255
 HepDataMCPlot.h:256
 HepDataMCPlot.h:257
 HepDataMCPlot.h:258
 HepDataMCPlot.h:259
 HepDataMCPlot.h:260
 HepDataMCPlot.h:261
 HepDataMCPlot.h:262
 HepDataMCPlot.h:263
 HepDataMCPlot.h:264
 HepDataMCPlot.h:265
 HepDataMCPlot.h:266
 HepDataMCPlot.h:267
 HepDataMCPlot.h:268
 HepDataMCPlot.h:269
 HepDataMCPlot.h:270
 HepDataMCPlot.h:271
 HepDataMCPlot.h:272
 HepDataMCPlot.h:273
 HepDataMCPlot.h:274
 HepDataMCPlot.h:275
 HepDataMCPlot.h:276
 HepDataMCPlot.h:277
 HepDataMCPlot.h:278
 HepDataMCPlot.h:279
 HepDataMCPlot.h:280
 HepDataMCPlot.h:281
 HepDataMCPlot.h:282
 HepDataMCPlot.h:283
 HepDataMCPlot.h:284
 HepDataMCPlot.h:285
 HepDataMCPlot.h:286
 HepDataMCPlot.h:287
 HepDataMCPlot.h:288
 HepDataMCPlot.h:289
 HepDataMCPlot.h:290
 HepDataMCPlot.h:291
 HepDataMCPlot.h:292
 HepDataMCPlot.h:293
 HepDataMCPlot.h:294
 HepDataMCPlot.h:295
 HepDataMCPlot.h:296
 HepDataMCPlot.h:297
 HepDataMCPlot.h:298
 HepDataMCPlot.h:299
 HepDataMCPlot.h:300
 HepDataMCPlot.h:301
 HepDataMCPlot.h:302
 HepDataMCPlot.h:303
 HepDataMCPlot.h:304
 HepDataMCPlot.h:305
 HepDataMCPlot.h:306
 HepDataMCPlot.h:307
 HepDataMCPlot.h:308
 HepDataMCPlot.h:309
 HepDataMCPlot.h:310
 HepDataMCPlot.h:311
 HepDataMCPlot.h:312
 HepDataMCPlot.h:313
 HepDataMCPlot.h:314
 HepDataMCPlot.h:315
 HepDataMCPlot.h:316
 HepDataMCPlot.h:317
 HepDataMCPlot.h:318
 HepDataMCPlot.h:319
 HepDataMCPlot.h:320
 HepDataMCPlot.h:321
 HepDataMCPlot.h:322
 HepDataMCPlot.h:323
 HepDataMCPlot.h:324
 HepDataMCPlot.h:325
 HepDataMCPlot.h:326