ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/Limits/Limit.cc
Revision: 1.6
Committed: Sun Mar 20 12:17:58 2011 UTC (14 years, 1 month ago) by auterman
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +17 -5 lines
Error occurred while calculating annotation data.
Log Message:
Modification of CLs: Adding functunality to integrate until a given Test-statistic value, i.e. until a value determined by a no-signal hypotheses for expected observed

File Contents

# Content
1 //User
2 #include "cls.h"
3 #include "ConfigFile.h"
4 #include "table.h"
5
6 //system
7 #include <string>
8 #include <iostream>
9 #include <cmath>
10 #include <cstdlib>
11
12 //ROOT
13 #include "TH1.h"
14
15 using namespace std;
16
17
18 void Limit(int argc, char *argv[])
19 {
20 if (argc<1){
21 std::cerr<<"Error: Expected '"<<argv[0]<<" <limit config>'!"<<std::endl;
22 exit(1);
23 }
24
25 for (int file=1; file<argc; ++file){
26 std::cout << "opening: "<<argv[file]<<std::endl;
27 ConfigFile config(argv[file]);
28
29 int ndata = config.read<int>("data");
30 double nback = config.read<double>("background");
31 double bkgUncert = config.read<double>("background.uncertainty");
32 double signal = config.read<double>("signal.LO");
33 double sigUncert = config.read<double>("signal.LO.uncertainty");
34 double sigSignal = config.read<double>("signal.LO.signalregion.IsoMuon");
35 double sigSigTau = config.read<double>("signal.LO.signalregion.Tau");
36 double signalNLO = config.read<double>("signal.NLO");
37 double sigUncertNLO = config.read<double>("signal.NLO.uncertainty");
38 double sigSignalNLO = config.read<double>("signal.NLO.signalregion.IsoMuon");
39 double sigSigTauNLO = config.read<double>("signal.NLO.signalregion.Tau");
40 double bkgControl = config.read<double>("background.controlregion.IsoMuon");
41 double bkgSignal = config.read<double>("background.signalregion.IsoMuon");
42
43 double xsec = config.read<double>("Xsection");
44 double kfactor = config.read<double>("signal.kFactor");
45
46 //bkgUncert += sigSignal * sigUncert/signal;
47
48 //config.add("data", ndata);
49 //config.add("background", nback);
50 //config.add("background.uncertainty", bkgUncert);
51
52 char * n = new char[32];
53 sprintf(n,"bkgd%d",file); TH1 * bgd = new TH1F(n, "",1,0,1);
54 sprintf(n,"bkgd_NoSig%d",file); TH1 * bgd_NoSig = new TH1F(n, "",1,0,1);
55 sprintf(n,"data%d",file); TH1 * data = new TH1F(n, "",1,0,1);
56 sprintf(n,"sig%d", file); TH1 * sig = new TH1F(n,"",1,0,1);
57 data->SetBinContent(1,ndata);
58 data->SetBinError(1,sqrt(ndata));
59 bgd_NoSig->SetBinContent(1,nback);
60 bgd_NoSig->SetBinError(1,bkgUncert);
61 double bLO=(nback - sigSignal -sigSigTau<0?0:nback - sigSignal -sigSigTau);
62 bgd->SetBinContent(1,bLO);
63 bgd->SetBinError(1,bkgUncert);
64 sig->SetBinContent(1,signal);
65 sig->SetBinError(1,sigUncert);
66
67 cls limit_sys("cls_limit.ps",
68 sig, // signal with total syst. and stat. errors
69 bgd, // with total syst. and stat. errors
70 data,
71 bgd_NoSig);
72 limit_sys.SetStat(true); //Consider Bin-Errors (containing the full syst. uncertainties)
73 limit_sys.SetNMC(50000); //number of pseudo-experiments for each CL calculation
74 //limit_sys.Draw();
75
76 sprintf(n,"bkgdNLO%d",file); TH1 * bgdNLO = new TH1F(n, "",1,0,1);
77 sprintf(n,"bkgdNoSigNLO%d",file); TH1 * bgdNoSigNLO = new TH1F(n, "",1,0,1);
78 sprintf(n,"dataNLO%d",file); TH1 * dataNLO = new TH1F(n, "",1,0,1);
79 sprintf(n,"sigNLO%d", file); TH1 * sigNLO = new TH1F(n,"",1,0,1);
80
81 double bNLO=(nback - sigSignalNLO -sigSigTauNLO<0?0:nback - sigSignalNLO - sigSigTauNLO);
82
83 dataNLO->SetBinContent(1,ndata);
84 dataNLO->SetBinError(1,sqrt(ndata));
85 bgdNLO->SetBinContent(1,bNLO);
86 bgdNLO->SetBinError(1,bkgUncert);
87 bgdNoSigNLO->SetBinContent(1,nback);
88 bgdNoSigNLO->SetBinError(1,bkgUncert);
89 sigNLO->SetBinContent(1,signalNLO);
90 sigNLO->SetBinError(1,sigUncertNLO);
91
92 cls limit_sys_NLO("cls_limit_NLO.ps",
93 sigNLO, // signal with total syst. and stat. errors
94 bgdNLO, // with total syst. and stat. errors
95 dataNLO,
96 bgdNoSigNLO);
97 limit_sys_NLO.SetStat(true); //Consider Bin-Errors (containing the full syst. uncertainties)
98 limit_sys_NLO.SetNMC(50000); //number of pseudo-experiments for each CL calculation
99 //limit_sys.Draw();
100
101 try {
102 //limit_sys.WriteResult( &config, xsec );
103 limit_sys.WriteConfidence( &config, "LO." );
104 limit_sys_NLO.WriteConfidence( &config, "NLO." );
105 }
106 catch(exception& e){
107 cout << "Exception catched: " << e.what();
108 }
109
110 //write stuff:
111 time_t rawtime;
112 struct tm * timeinfo;
113 time ( &rawtime );
114 timeinfo = localtime ( &rawtime );
115 ofstream ofile;
116 ofile.open (argv[file]);
117 if (ofile.good())
118 std::cout << "writing '"<<argv[file]<<"'"<<std::endl;
119 else if ( (ofile.rdstate() & ifstream::failbit ) != 0 )
120 std::cerr << "ERROR opening '"<<argv[file]<<"'! Does the directory exist?"<<std::endl;
121
122 ofile << config.getComment() << asctime (timeinfo)
123 << config.getComment()<< "\n"
124 << config;
125
126 std::cout<<"d:"<<ndata<<", b:"<<bNLO<<", s:"<<signalNLO<<std::endl;
127
128 }
129 }
130
131
132 int main(int argc, char *argv[])
133 {
134 Limit(argc,argv);
135 }