#ifndef HEP_HepCrossSectionTask
#include <HepCrossSectionTask.h>
#endif
#include <HepDataMCPlot.h>
#include <HepDataMCSample.h>
#include <TString.h>
#include <TFile.h>
#include <TList.h>
#include <TMath.h>
#include <TH1F.h>
#include <iostream>
using namespace std;
#ifndef __CINT__
ClassImp(HepCrossSectionTask);
#endif
HepCrossSectionTask::HepCrossSectionTask(const char* name,
const char* title) : TTask(name, title) {
fCutFlowPlot = 0;
signal_sample = 0;
Nbins = 0;
Ndata = 0;
NdataErr = 0;
Nevents_sig = 0;
Nevents_sigErr = 0;
Nevents_sig_gen = 0;
Nevents = 0;
NeventsErr = 0;
Nevents_bkg = 0;
Nevents_sig_data = 0;
Nevents_sig_dataErr = 0;
Acceptance = 0;
AcceptanceErr = 0;
AcceptanceStatErr = 0;
AcceptanceSystErr = 0;
Luminosity = 0;
LuminosityErr = 0;
Cross_Section = 0;
Cross_SectionErr = 0;
Cross_SectionErr_Syst_up = 0;
Cross_SectionErr_Syst_down = 0;
}
HepCrossSectionTask::~HepCrossSectionTask() {
delete fInputFilename;
delete fCutFlowName;
if ( fCutFlowPlot != 0 ) {
delete fCutFlowPlot;
fCutFlowPlot = 0;
}
if ( signal_sample != 0 ) {
delete signal_sample;
signal_sample = 0;
}
}
void HepCrossSectionTask::SetInputFilename(const char* InputFilename) {
fInputFilename.Remove(0);
fInputFilename.Append(InputFilename);
}
void HepCrossSectionTask::SetOutputFilename(const char* OutputFilename) {
fOutputFilename.Remove(0);
fOutputFilename.Append(OutputFilename);
}
void HepCrossSectionTask::SetCutFlowName(const char* CutFlowName) {
fCutFlowName.Remove(0);
fCutFlowName.Append(CutFlowName);
}
void HepCrossSectionTask::SetSignalName(const char* SignalName) {
fSignalName.Remove(0);
fSignalName.Append(SignalName);
}
void HepCrossSectionTask::Exec(Option_t *option) {
AcceptanceCalc();
XsecCalc();
Print();
gDirectory->cd();
gDirectory->mkdir("XsecHistograms");
gDirectory->cd("XsecHistograms");
fHistXsecErrors = new TH1F("h_XsecErrors","Cross Section Errors",3,0,3);
fHistXsecErrors->SetYTitle("Cross Section (pb)");
fHistXsecErrors->SetBinContent(1,Cross_Section);
fHistXsecErrors->SetBinError(1,Cross_SectionErr);
fHistXsecErrors->SetBinContent(2,Cross_Section + Cross_SectionErr_Syst_up);
fHistXsecErrors->SetBinContent(3,Cross_Section - Cross_SectionErr_Syst_down);
fHistXsecErrors->GetXaxis()->SetBinLabel(1, "#sigma #pm #Delta#sigma_{stat.}");
fHistXsecErrors->GetXaxis()->SetBinLabel(2, "#sigma + L_{up}");
fHistXsecErrors->GetXaxis()->SetBinLabel(3, "#sigma + L_{down}");
fHistXsecErrors->GetYaxis()->SetLimits(0,23);
fHistXsecErrors->SetMarkerColor(8);
fHistXsecErrors->SetMarkerStyle(8);
fHistXsecErrors->SetMarkerSize(2);
fHistXsecErrors->SetLineColor(1);
f_output = new TFile(fOutputFilename,"RECREATE");
fHistXsecErrors->Write();
gDirectory->cd("..");
}
void HepCrossSectionTask::Print() {
cout<<
endl
<<"Nevents_sig gen = "<< Nevents_sig_gen <<endl
<<"Nevents = "<< Nevents <<endl
<<"Nevents_sig = "<< Nevents_sig <<endl
<<"Nevents_bkg = "<< Nevents_bkg <<endl
<<"Ndata = "<< Ndata <<endl
<<"Nevents_sig_data = "<< Nevents_sig_data << endl
<<"Acceptance = "<< Acceptance <<endl
<<"Acceptance Error = "<< AcceptanceErr <<endl
<<"Luminosity = "<< Luminosity << " pb^-1 " <<endl<<endl
<<"Luminosity Error = "<< LuminosityErr <<endl
<<"Cross Section = "<< Cross_Section<< " pb " << endl
<<"CS Statistical Error = "<< Cross_SectionErr<< " pb " << endl
<<"CS Systematic Error(+)= "<< Cross_SectionErr_Syst_up<< " pb " << endl
<<"CS Systematic Error(-)= "<< Cross_SectionErr_Syst_down<< " pb " << endl;
}
void HepCrossSectionTask::AcceptanceCalc() {
f_input = new TFile(fInputFilename,"READ");
if (!f_input) cout << endl <<
"ERROR: Cannot find MCPlotter file..." << endl;
cout<<"test file : "<<f_input<<endl;
cout<<"test hist : "<<fCutFlowName<<endl;
h_cutflow = (HepDataMCPlot*)f_input->Get(fCutFlowName);
Nbins = h_cutflow->GetHistDATA()->GetNbinsX() + 1;
Ndata = h_cutflow->GetHistDATA()->GetBinContent(Nbins-1);
signal = ((HepDataMCFolder*)(h_cutflow->GetMCFolders())->FindObject(fSignalName))->GetMCSamples();
signal_sample = (HepDataMCSample*)signal->At(0);
Nevents_sig = signal_sample->GetHistogram()->GetBinContent(Nbins-1);
Nevents_sig_gen = signal_sample->GetHistogram()->GetBinContent(1);
Acceptance = Nevents_sig / Nevents_sig_gen;
AcceptanceStatErr = (TMath::Sqrt(Acceptance*Acceptance*Nevents_sig_gen+Nevents_sig*(1-2*Acceptance)))/Nevents_sig_gen;
AcceptanceErr = AcceptanceStatErr + AcceptanceSystErr;
}
void HepCrossSectionTask::XsecCalc() {
for (int i = 0; i < h_cutflow->GetMCHistStack()->GetHists()->GetEntries(); i++) {
Nevents += ((TH1F*)h_cutflow->GetMCHistStack()->GetHists()->At(i))->GetBinContent(Nbins-1);
}
Nevents_bkg = Nevents - Nevents_sig;
Nevents_sig_data = Ndata - Nevents + Nevents_sig;
Luminosity = h_cutflow->GetLumiDATA();
Cross_Section = (Nevents_sig_data)/(Luminosity*Acceptance);
cout<<"lumi f = "<<Luminosity<<endl;
cout<<"lumi p = "<<h_cutflow->GetLumiDATA()<<endl;
NdataErr = h_cutflow->GetHistDATA()->GetBinError(Nbins-1);
NeventsErr = h_cutflow->GetMCHistStack()->GetHistogram()->GetBinError(Nbins-1);
Nevents_sigErr = signal_sample->GetHistogram()->GetBinError(Nbins-1);
Nevents_sig_dataErr = TMath::Sqrt(NdataErr*NdataErr+NeventsErr*NeventsErr+Nevents_sigErr*Nevents_sigErr);
LuminosityErr = Luminosity*0.045;
Cross_SectionErr = Cross_Section*(TMath::Sqrt( (
(TMath::Power(AcceptanceErr/Acceptance,2))+
(TMath::Power(Nevents_sig_dataErr/Nevents_sig_data,2))
) ) );
Cross_SectionErr_Syst_up = (Nevents_sig_data/Acceptance)*(LuminosityErr/(TMath::Power(Luminosity+LuminosityErr,2)));
Cross_SectionErr_Syst_down = (Nevents_sig_data/Acceptance)*(LuminosityErr/(TMath::Power(Luminosity-LuminosityErr,2)));
}
HepCrossSectionTask.cxx:1 HepCrossSectionTask.cxx:2 HepCrossSectionTask.cxx:3 HepCrossSectionTask.cxx:4 HepCrossSectionTask.cxx:5 HepCrossSectionTask.cxx:6 HepCrossSectionTask.cxx:7 HepCrossSectionTask.cxx:8 HepCrossSectionTask.cxx:9 HepCrossSectionTask.cxx:10 HepCrossSectionTask.cxx:11 HepCrossSectionTask.cxx:12 HepCrossSectionTask.cxx:13 HepCrossSectionTask.cxx:14 HepCrossSectionTask.cxx:15 HepCrossSectionTask.cxx:16 HepCrossSectionTask.cxx:17 HepCrossSectionTask.cxx:18 HepCrossSectionTask.cxx:19 HepCrossSectionTask.cxx:20 HepCrossSectionTask.cxx:21 HepCrossSectionTask.cxx:22 HepCrossSectionTask.cxx:23 HepCrossSectionTask.cxx:24 HepCrossSectionTask.cxx:25 HepCrossSectionTask.cxx:26 HepCrossSectionTask.cxx:27 HepCrossSectionTask.cxx:28 HepCrossSectionTask.cxx:29 HepCrossSectionTask.cxx:30 HepCrossSectionTask.cxx:31 HepCrossSectionTask.cxx:32 HepCrossSectionTask.cxx:33 HepCrossSectionTask.cxx:34 HepCrossSectionTask.cxx:35 HepCrossSectionTask.cxx:36 HepCrossSectionTask.cxx:37 HepCrossSectionTask.cxx:38 HepCrossSectionTask.cxx:39 HepCrossSectionTask.cxx:40 HepCrossSectionTask.cxx:41 HepCrossSectionTask.cxx:42 HepCrossSectionTask.cxx:43 HepCrossSectionTask.cxx:44 HepCrossSectionTask.cxx:45 HepCrossSectionTask.cxx:46 HepCrossSectionTask.cxx:47 HepCrossSectionTask.cxx:48 HepCrossSectionTask.cxx:49 HepCrossSectionTask.cxx:50 HepCrossSectionTask.cxx:51 HepCrossSectionTask.cxx:52 HepCrossSectionTask.cxx:53 HepCrossSectionTask.cxx:54 HepCrossSectionTask.cxx:55 HepCrossSectionTask.cxx:56 HepCrossSectionTask.cxx:57 HepCrossSectionTask.cxx:58 HepCrossSectionTask.cxx:59 HepCrossSectionTask.cxx:60 HepCrossSectionTask.cxx:61 HepCrossSectionTask.cxx:62 HepCrossSectionTask.cxx:63 HepCrossSectionTask.cxx:64 HepCrossSectionTask.cxx:65 HepCrossSectionTask.cxx:66 HepCrossSectionTask.cxx:67 HepCrossSectionTask.cxx:68 HepCrossSectionTask.cxx:69 HepCrossSectionTask.cxx:70 HepCrossSectionTask.cxx:71 HepCrossSectionTask.cxx:72 HepCrossSectionTask.cxx:73 HepCrossSectionTask.cxx:74 HepCrossSectionTask.cxx:75 HepCrossSectionTask.cxx:76 HepCrossSectionTask.cxx:77 HepCrossSectionTask.cxx:78 HepCrossSectionTask.cxx:79 HepCrossSectionTask.cxx:80 HepCrossSectionTask.cxx:81 HepCrossSectionTask.cxx:82 HepCrossSectionTask.cxx:83 HepCrossSectionTask.cxx:84 HepCrossSectionTask.cxx:85 HepCrossSectionTask.cxx:86 HepCrossSectionTask.cxx:87 HepCrossSectionTask.cxx:88 HepCrossSectionTask.cxx:89 HepCrossSectionTask.cxx:90 HepCrossSectionTask.cxx:91 HepCrossSectionTask.cxx:92 HepCrossSectionTask.cxx:93 HepCrossSectionTask.cxx:94 HepCrossSectionTask.cxx:95 HepCrossSectionTask.cxx:96 HepCrossSectionTask.cxx:97 HepCrossSectionTask.cxx:98 HepCrossSectionTask.cxx:99 HepCrossSectionTask.cxx:100 HepCrossSectionTask.cxx:101 HepCrossSectionTask.cxx:102 HepCrossSectionTask.cxx:103 HepCrossSectionTask.cxx:104 HepCrossSectionTask.cxx:105 HepCrossSectionTask.cxx:106 HepCrossSectionTask.cxx:107 HepCrossSectionTask.cxx:108 HepCrossSectionTask.cxx:109 HepCrossSectionTask.cxx:110 HepCrossSectionTask.cxx:111 HepCrossSectionTask.cxx:112 HepCrossSectionTask.cxx:113 HepCrossSectionTask.cxx:114 HepCrossSectionTask.cxx:115 HepCrossSectionTask.cxx:116 HepCrossSectionTask.cxx:117 HepCrossSectionTask.cxx:118 HepCrossSectionTask.cxx:119 HepCrossSectionTask.cxx:120 HepCrossSectionTask.cxx:121 HepCrossSectionTask.cxx:122 HepCrossSectionTask.cxx:123 HepCrossSectionTask.cxx:124 HepCrossSectionTask.cxx:125 HepCrossSectionTask.cxx:126 HepCrossSectionTask.cxx:127 HepCrossSectionTask.cxx:128 HepCrossSectionTask.cxx:129 HepCrossSectionTask.cxx:130 HepCrossSectionTask.cxx:131 HepCrossSectionTask.cxx:132 HepCrossSectionTask.cxx:133 HepCrossSectionTask.cxx:134 HepCrossSectionTask.cxx:135 HepCrossSectionTask.cxx:136 HepCrossSectionTask.cxx:137 HepCrossSectionTask.cxx:138 HepCrossSectionTask.cxx:139 HepCrossSectionTask.cxx:140 HepCrossSectionTask.cxx:141 HepCrossSectionTask.cxx:142 HepCrossSectionTask.cxx:143 HepCrossSectionTask.cxx:144 HepCrossSectionTask.cxx:145 HepCrossSectionTask.cxx:146 HepCrossSectionTask.cxx:147 HepCrossSectionTask.cxx:148 HepCrossSectionTask.cxx:149 HepCrossSectionTask.cxx:150 HepCrossSectionTask.cxx:151 HepCrossSectionTask.cxx:152 HepCrossSectionTask.cxx:153 HepCrossSectionTask.cxx:154 HepCrossSectionTask.cxx:155 HepCrossSectionTask.cxx:156 HepCrossSectionTask.cxx:157 HepCrossSectionTask.cxx:158 HepCrossSectionTask.cxx:159 HepCrossSectionTask.cxx:160 HepCrossSectionTask.cxx:161 HepCrossSectionTask.cxx:162 HepCrossSectionTask.cxx:163 HepCrossSectionTask.cxx:164 HepCrossSectionTask.cxx:165 HepCrossSectionTask.cxx:166 HepCrossSectionTask.cxx:167 HepCrossSectionTask.cxx:168 HepCrossSectionTask.cxx:169 HepCrossSectionTask.cxx:170 HepCrossSectionTask.cxx:171 HepCrossSectionTask.cxx:172 HepCrossSectionTask.cxx:173 HepCrossSectionTask.cxx:174 HepCrossSectionTask.cxx:175 HepCrossSectionTask.cxx:176 HepCrossSectionTask.cxx:177 HepCrossSectionTask.cxx:178 HepCrossSectionTask.cxx:179 HepCrossSectionTask.cxx:180 HepCrossSectionTask.cxx:181 HepCrossSectionTask.cxx:182 HepCrossSectionTask.cxx:183 HepCrossSectionTask.cxx:184 HepCrossSectionTask.cxx:185 HepCrossSectionTask.cxx:186 HepCrossSectionTask.cxx:187 HepCrossSectionTask.cxx:188 HepCrossSectionTask.cxx:189 HepCrossSectionTask.cxx:190 HepCrossSectionTask.cxx:191 HepCrossSectionTask.cxx:192 HepCrossSectionTask.cxx:193 HepCrossSectionTask.cxx:194 HepCrossSectionTask.cxx:195 HepCrossSectionTask.cxx:196 HepCrossSectionTask.cxx:197 HepCrossSectionTask.cxx:198 HepCrossSectionTask.cxx:199 HepCrossSectionTask.cxx:200 HepCrossSectionTask.cxx:201 HepCrossSectionTask.cxx:202 HepCrossSectionTask.cxx:203 HepCrossSectionTask.cxx:204 HepCrossSectionTask.cxx:205 HepCrossSectionTask.cxx:206 HepCrossSectionTask.cxx:207 HepCrossSectionTask.cxx:208 HepCrossSectionTask.cxx:209 HepCrossSectionTask.cxx:210 HepCrossSectionTask.cxx:211 HepCrossSectionTask.cxx:212 HepCrossSectionTask.cxx:213 HepCrossSectionTask.cxx:214 HepCrossSectionTask.cxx:215 HepCrossSectionTask.cxx:216 HepCrossSectionTask.cxx:217 HepCrossSectionTask.cxx:218 HepCrossSectionTask.cxx:219 HepCrossSectionTask.cxx:220 HepCrossSectionTask.cxx:221 HepCrossSectionTask.cxx:222 HepCrossSectionTask.cxx:223 HepCrossSectionTask.cxx:224 HepCrossSectionTask.cxx:225 HepCrossSectionTask.cxx:226 HepCrossSectionTask.cxx:227 HepCrossSectionTask.cxx:228 HepCrossSectionTask.cxx:229 HepCrossSectionTask.cxx:230 HepCrossSectionTask.cxx:231 HepCrossSectionTask.cxx:232 HepCrossSectionTask.cxx:233 HepCrossSectionTask.cxx:234 HepCrossSectionTask.cxx:235 HepCrossSectionTask.cxx:236 HepCrossSectionTask.cxx:237 HepCrossSectionTask.cxx:238 HepCrossSectionTask.cxx:239 HepCrossSectionTask.cxx:240 HepCrossSectionTask.cxx:241 HepCrossSectionTask.cxx:242 HepCrossSectionTask.cxx:243 HepCrossSectionTask.cxx:244 HepCrossSectionTask.cxx:245 HepCrossSectionTask.cxx:246 HepCrossSectionTask.cxx:247 HepCrossSectionTask.cxx:248 HepCrossSectionTask.cxx:249 HepCrossSectionTask.cxx:250 HepCrossSectionTask.cxx:251 HepCrossSectionTask.cxx:252 HepCrossSectionTask.cxx:253 HepCrossSectionTask.cxx:254 HepCrossSectionTask.cxx:255 HepCrossSectionTask.cxx:256 HepCrossSectionTask.cxx:257 HepCrossSectionTask.cxx:258 HepCrossSectionTask.cxx:259 HepCrossSectionTask.cxx:260 HepCrossSectionTask.cxx:261 HepCrossSectionTask.cxx:262 HepCrossSectionTask.cxx:263 HepCrossSectionTask.cxx:264 HepCrossSectionTask.cxx:265 HepCrossSectionTask.cxx:266 HepCrossSectionTask.cxx:267 HepCrossSectionTask.cxx:268 HepCrossSectionTask.cxx:269 HepCrossSectionTask.cxx:270 HepCrossSectionTask.cxx:271 HepCrossSectionTask.cxx:272 HepCrossSectionTask.cxx:273 HepCrossSectionTask.cxx:274 HepCrossSectionTask.cxx:275 HepCrossSectionTask.cxx:276 HepCrossSectionTask.cxx:277 HepCrossSectionTask.cxx:278 HepCrossSectionTask.cxx:279 HepCrossSectionTask.cxx:280 HepCrossSectionTask.cxx:281 HepCrossSectionTask.cxx:282 HepCrossSectionTask.cxx:283 HepCrossSectionTask.cxx:284 HepCrossSectionTask.cxx:285 HepCrossSectionTask.cxx:286 HepCrossSectionTask.cxx:287 HepCrossSectionTask.cxx:288 HepCrossSectionTask.cxx:289 HepCrossSectionTask.cxx:290 HepCrossSectionTask.cxx:291 HepCrossSectionTask.cxx:292 HepCrossSectionTask.cxx:293 HepCrossSectionTask.cxx:294 HepCrossSectionTask.cxx:295 HepCrossSectionTask.cxx:296 HepCrossSectionTask.cxx:297 HepCrossSectionTask.cxx:298 HepCrossSectionTask.cxx:299 HepCrossSectionTask.cxx:300 HepCrossSectionTask.cxx:301 HepCrossSectionTask.cxx:302 HepCrossSectionTask.cxx:303 HepCrossSectionTask.cxx:304 HepCrossSectionTask.cxx:305 HepCrossSectionTask.cxx:306 HepCrossSectionTask.cxx:307 HepCrossSectionTask.cxx:308 HepCrossSectionTask.cxx:309 HepCrossSectionTask.cxx:310