#ifndef HEP_HepDataMCSample
#include <HepDataMCSample.h>
#endif
#include <iostream>
#include <TSystem.h>
using namespace std;
#ifndef __CINT__
ClassImp(HepDataMCSample);
#endif
HepDataMCSample::HepDataMCSample() {
fFile = 0;
fHistogram = 0;
}
HepDataMCSample::HepDataMCSample(const char* name, const char* title,
Color_t color, Style_t line_style,
Width_t line_width, Style_t fill_style) :
TNamed(name, title), fAttFill(color, fill_style),
fAttLine(color, line_style, line_width) {
fNEvents = 0.;
fXsection = 0.;
fLumi = 0.;
fFile = 0;
fHistogram = 0;
}
HepDataMCSample::~HepDataMCSample() {
Info("~HepDataMCSample", "Sample = %s", GetName());
if ( fFile != 0 ) {
Info("~HepDataMCSample", "File = %s", fFile->GetName());
cout.flush();
delete fFile; fFile = 0;
}
fHistogram = 0;
}
TFile* HepDataMCSample::Open() {
if ( fFile == 0 ) {
fFile = new TFile(GetName(), "read");
Float_t nevt = 0.;
TH1F *h = (TH1F*)fFile->Get("job_info/h_nevts");
if ( h != 0 ) {
nevt = h->GetBinContent(3);
} else {
h = (TH1F*)fFile->Get("fullCutFlow_genXpileupXzvertexWeights");
if ( h != 0 ) nevt = h->GetBinContent(1);
}
if ( fLumi <= 0. ) {
if ( h == 0 ) {
Error("Open",
"Cannot find histogram for number of events in file %s needed to compute the luminosity. Abort!",
fFile->GetName());
gSystem->Abort(0);
}
fNEvents = nevt;
}
}
return fFile;
}
void HepDataMCSample::Close() {
if ( fFile != 0 ) delete fFile;
fFile = 0;
}
Float_t HepDataMCSample::GetLumi() const {
return ( fLumi > 0. ) ? fLumi : fNEvents/fXsection;
}