//____________________________________________________________________
//
// Cross-section class
// 
// This class is used to calculate the cross section and its error
//
// Author: Umberto Prosperi Porta <mailto: umberto.prosperi@physik.hu-berlin.de>
// Update: $Id: HepCrossSectionTask.h,v 1.18 2013/04/18 13:31:26 kind Exp $
// Copyright: 2011 (C) Umberto Prosperi Porta
//
#ifndef HEP_HepCrossSectionTask
#define HEP_HepCrossSectionTask
#ifndef ROOT_TTask
#include <TTask.h>
#endif
#include <iostream>
#include <fstream>

class HepDataMCPlot;
class HepDataMCSample;
class TString;
class TFile;
class TList;
class TH1F;

class HepCrossSectionTask : public TTask {

  public:
    
    TString         fInputFilename;  // Name of input file containing plots (incouding path)
    TString         fOutputFilename; // Name of output file containing histograms (incouding path)

    TString         fCutFlowName;    // Name of cut-flow plot (including path)
    TString         fSignalName;     // Name of signal
    
  private:
    
    HepDataMCPlot   *fCutFlowPlot;   // Cut-flow plot used for acceptance determination
    TFile           *f_input;        // Input file;
    TFile           *f_output;       // Output file;
    HepDataMCPlot   *h_cutflow;      // Histogram containing cut-flow plot
    HepDataMCSample *signal_sample;  // Histogram containing only the signal from cut-flow polt
    TList           *signal;         //  

    Int_t          Nbins;               // Number of bins in cut-flow plot
    Float_t        Ndata;               // Number of selected DATA-events
    Float_t        NdataErr;            // Number of selected DATA-events error
    Float_t        Nevents_sig;         // Number of selected  MC-events of signal
    Float_t        Nevents_sigErr;      // Number of selected  MC-events of signal error
    Float_t        Nevents_sig_gen;     // Number of generated MC-events of signal
    Float_t        Nevents;             // Number of selected  MC-DATA-events
    Float_t        NeventsErr;          // Number of selected  MC-DATA-events error
    Float_t        Nevents_bkg;         // Number of selected  MC-events of background
    Float_t        Nevents_sig_data;    // Number of selected events of signal
    Float_t        Nevents_sig_dataErr;           // Number of selected events of signal error
    Float_t        Acceptance;                    // Acceptance
    Float_t        AcceptanceErr;                 // Acceptance error
    Float_t        AcceptanceStatErr;             // Acceptance statistical error
    Float_t        AcceptanceSystErr;             // Acceptance systematic error
    Float_t        Luminosity;                    // Luminosity
    Float_t        LuminosityErr;                 // Luminosity error
    Float_t        Cross_Section;                 // Cross section
    Float_t        Cross_SectionErr;              // Cross section statistical error
    Float_t        Cross_SectionErr_Syst_up;      // Cross section systematic error (up)
    Float_t        Cross_SectionErr_Syst_down;    // Cross section systematic error (down)

    TH1F           *fHistXsecErrors; 
     

	
public:
    HepCrossSectionTask(const char* name, const char* title);
    virtual ~HepCrossSectionTask();

    virtual void Exec(Option_t *option);
    virtual void Print();
    void SetInputFilename(const char* InputFilename);
    void SetOutputFilename(const char* OutputFilename);
    void SetCutFlowName(const char* CutFlowName);
    void SetSignalName(const char* SignalName);
  

    

private:
    void AcceptanceCalc();
    void XsecCalc();



    
    ClassDef(HepCrossSectionTask,0) // Cross-section calculation
};
#endif

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