FairRoot/PandaRoot
Typedefs | Functions | Variables
simubg.C File Reference
#include <algorithm>
#include "TFile.h"
#include "TTree.h"
#include "TLeaf.h"
#include "TString.h"
#include "TH1F.h"
#include "TCanvas.h"
#include "TROOT.h"
#include "TEventList.h"
#include "TDirectory.h"
#include <iostream>
#include <fstream>
#include "TLine.h"
#include "TLatex.h"
#include "TStyle.h"
#include "TObjArray.h"
#include "TPRegexp.h"
#include "TRegexp.h"
#include "TSystemDirectory.h"
#include "TSystemFile.h"
#include <map>
#include <utility>

Go to the source code of this file.

Typedefs

typedef std::map< int, int > CountMap
 

Functions

void init (TTree *t)
 
int uid (int lev, int lrun, int lmode)
 
int countEvents (TTree *t, TEventList &el)
 
int readmodes (TString fname)
 
void readdir ()
 
int simubg (TString cfgfile)
 

Variables

std::map< int, TStringcuts
 
std::map< int, TStringfiles
 
std::map< int, double > effs
 
std::map< int, double > effb
 
std::vector< int > modes
 
CountMap gevtcnt
 
CountMap evtcnt
 
CountMap evcntrec [10]
 
Int_t ev
 
Int_t run
 
Int_t mode
 
Int_t rec
 
Int_t nbranch
 

Typedef Documentation

typedef std::map<int, int> CountMap

Definition at line 26 of file simubg.C.

Function Documentation

int countEvents ( TTree *  t,
TEventList &  el 
)

Definition at line 55 of file simubg.C.

References ev, evcntrec, evtcnt, gevtcnt, i, mode, rec, run, and uid().

56 {
57  t->SetBranchStatus("*",0);
58  t->SetBranchStatus("ev",1);
59  t->SetBranchStatus("run",1);
60  t->SetBranchStatus("mode",1);
61  t->SetBranchStatus("recmode",1);
62 
63  evtcnt.clear();
64  for (int j=0;j<10;++j) evcntrec[j].clear();
65 
66  for (int i=0;i<el.GetN();++i)
67  {
68  t->GetEntry(el.GetEntry(i));
69 
70  evtcnt[uid(ev,run,mode)] += 1;
71  gevtcnt[uid(ev,run,mode)] += 1;
72 
73  if (rec<10) evcntrec[rec][uid(ev,run,mode)]+=1;
74  }
75  t->SetBranchStatus("*",1);
76 
77  return evtcnt.size();
78 }
Int_t run
Definition: autocutx.C:47
Int_t i
Definition: run_full.C:25
int ev
CountMap evcntrec[10]
Definition: autocutx.C:31
Int_t mode
Definition: autocutx.C:47
int uid(int lev, int lrun, int lmode)
Definition: autocutx.C:122
CountMap gevtcnt
Definition: simubg.C:32
TTree * t
Definition: bump_analys.C:13
Int_t rec
Definition: autocutx.C:47
CountMap evtcnt
Definition: simubg.C:32
void init ( TTree *  t)

Definition at line 38 of file simubg.C.

References ev, mode, rec, and run.

39 {
40  t->SetBranchAddress("ev",&ev);
41  t->SetBranchAddress("run",&run);
42  t->SetBranchAddress("mode",&mode);
43  t->SetBranchAddress("recmode",&rec);
44 }
Int_t run
Definition: autocutx.C:47
int ev
Int_t mode
Definition: autocutx.C:47
TTree * t
Definition: bump_analys.C:13
Int_t rec
Definition: autocutx.C:47
void readdir ( )

Definition at line 133 of file simubg.C.

References files, i, and TString.

Referenced by simubg().

134 {
135  TSystemDirectory dir("*.root",".");
136 
137  TList *list = dir.GetListOfFiles();
138 
139  int nent = list->GetEntries();
140 
141  TRegexp reg("^M[0-9]+_n[0-9]+.+root");
142 
143  for (int i=0; i<nent; ++i)
144  {
145  TString fname = ((TSystemFile*) list->At(i))->GetName();
146  TString mpat = fname(reg);
147 
148  if (mpat)
149  {
150  int lmode = TString(mpat(1,3)+mpat(6,3)).Atoi();
151  files[lmode] = fname;
152  }
153  }
154 }
Int_t i
Definition: run_full.C:25
std::map< int, TString > files
Definition: simubg.C:28
int readmodes ( TString  fname)

Definition at line 82 of file simubg.C.

References cnt, cuts, effb, effs, f, modes, and TString.

Referenced by simubg().

83 {
84  ifstream f(fname.Data());
85  if (!f.is_open())
86  {
87  cout <<"Cannot read file "<<fname.Data()<<endl;
88  return 0;
89  }
90 
91  TString sline;
92  int cnt = 0;
93 
94  TRegexp reffs("eff_s = [0-9]+.[0-9]+");
95  TRegexp reffb("eff_b = [0-9]+.[0-9]+");
96 
97  modes.clear();
98 
99  // loop through file line by line
100  while (!f.eof())
101  {
102  sline.ReadLine(f);
103  sline = sline.Strip(TString::kBoth);
104 
105  if (sline=="") continue;
106 
107  //cout <<sline<<endl;
108 
109  if (sline.BeginsWith("#"))
110  {
111  int lmode = TString(sline(2,6)).Atoi();
112  if (sline(reffs)!="")
113  effs[lmode] = TString(TString(sline(reffs))(8,100)).Atof();
114  if (sline(reffb)!="")
115  effb[lmode] = TString(TString(sline(reffb))(8,100)).Atof();
116  //cout <<lmode<<" "<<effs[lmode]<<" "<<effb[lmode]<<endl;
117  }
118  else
119  {
120  int lmode = TString(sline(0,6)).Atoi();
121  modes.push_back(lmode);
122  cuts[lmode] = sline(9,500);
123  //cout <<lmode<<" "<<cuts[lmode].Data()<<endl;
124  cnt++;
125  }
126  }
127 
128  f.close();
129 
130  return cnt;
131 }
int modes[]
Definition: evaltrig.C:36
TString cuts[MAX]
Definition: autocutx.C:35
std::map< int, double > effb
Definition: simubg.C:29
TFile * f
Definition: bump_analys.C:12
std::map< int, double > effs
Definition: simubg.C:29
Int_t cnt
Definition: hist-t7.C:106
int simubg ( TString  cfgfile)

Definition at line 158 of file simubg.C.

References c1, countEvents(), cut, cuts, effb, effs, f, files, gevtcnt, i, init, modes, printf(), readdir(), readmodes(), t, and TString.

159 {
160  int nmodes = readmodes(cfgfile);
161  readdir();
162 
163  if (nmodes==0) return;
164 
165  TRegexp rtname("n[0-9][0-9][0-9]");
166 
167  double sumeffb=0., geffb=0.;
168 
169  TCanvas *c1=new TCanvas("c1","c1",5,5,1800,800);
170  c1->Divide(10,6);
171 
172  gevtcnt.clear();
173 
174  for( int i=0; i<modes.size(); ++i)
175  {
176  int lmode = modes[i];
177 
178  sumeffb += effb[lmode];
179 
180  TFile f(files[lmode],"READ");
181  TString tname = files[lmode](rtname);
182  TTree *t = (TTree*) f.Get(tname);
183 
184  if (t)
185  {
186  init(t);
187  TString cut = cuts[lmode]+"&&mode%1000==900";
188  TEventList el("el");
189  t->Draw(">>el",cut);
190 
191  //cout <<"el:"<<el.GetN()<<" ev:"<<countEvents(t, el)<<" ";
192  countEvents(t, el);
193  geffb = (double)gevtcnt.size()/3e4;
194 
195  t->Draw(">>el",cuts[lmode]);
196  t->SetEventList(&el);
197 
198  c1->cd(i%60+1);
199  t->SetLineColor(1); t->Draw("xm");
200  t->SetLineColor(2); t->Draw("xm","xmct","same");
201  t->SetLineColor(4); t->Draw("xm","mode%1000==900","same");
202  c1->Update();
203  TLatex lat; lat.SetTextSize(0.09);
204  lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.85,TString::Format("(%02d) %d",i+1,lmode%1000));
205  lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.73,TString::Format("S:%4.2f%%",effs[lmode]));
206  lat.DrawLatex(gPad->GetUxmin()+(gPad->GetUxmax()-gPad->GetUxmin())*0.05,gPad->GetUymax()*0.61,TString::Format("B:%4.3f%%",effb[lmode]));
207  c1->Update();
208  }
209 
210  printf("(%2d) %d (%4.1f, %6.3f; %6.3f; %6.3f) %s : %s\n",i+1, lmode, effs[lmode], effb[lmode], sumeffb, geffb, files[lmode].Data(), cuts[lmode].Data());
211  }
212 
213  printf("\nSUM(effb) = %6.3f%% SIMU(effb) = %6.3f%%\n",sumeffb, geffb);
214  return 0;
215 }
int modes[]
Definition: evaltrig.C:36
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Int_t i
Definition: run_full.C:25
void readdir()
Definition: simubg.C:133
TString cuts[MAX]
Definition: autocutx.C:35
std::map< int, TString > files
Definition: simubg.C:28
static int init
Definition: ranlxd.cxx:374
std::map< int, double > effb
Definition: simubg.C:29
double cut[MAX]
Definition: autocutx.C:36
CountMap gevtcnt
Definition: simubg.C:32
TFile * f
Definition: bump_analys.C:12
int readmodes(TString fname)
Definition: simubg.C:82
c1
Definition: plot_dirc.C:35
std::map< int, double > effs
Definition: simubg.C:29
int countEvents(TTree *t, TEventList &el)
Definition: autocutx.C:129
TTree * t
Definition: bump_analys.C:13
int uid ( int  lev,
int  lrun,
int  lmode 
)

Definition at line 48 of file simubg.C.

49 {
50  return lev+10000*lrun+(((lmode/100)%10)*20+lmode%10)*100000;
51 }

Variable Documentation

std::map<int, TString> cuts

Definition at line 28 of file simubg.C.

std::map<int, double> effb

Definition at line 29 of file simubg.C.

Referenced by findcuts(), readmodes(), and simubg().

std::map<int, double> effs

Definition at line 29 of file simubg.C.

Referenced by analyse_phi(), analyse_phi2(), findcuts(), readmodes(), and simubg().

Int_t ev

Definition at line 34 of file simubg.C.

CountMap evcntrec[10]

Definition at line 32 of file simubg.C.

CountMap evtcnt

Definition at line 32 of file simubg.C.

Referenced by countEvents().

std::map<int, TString> files
CountMap gevtcnt

Definition at line 32 of file simubg.C.

Referenced by countEvents(), and simubg().

Int_t mode

Definition at line 34 of file simubg.C.

std::vector<int> modes

Definition at line 30 of file simubg.C.

Int_t nbranch

Definition at line 34 of file simubg.C.

Int_t rec

Definition at line 34 of file simubg.C.

Int_t run

Definition at line 34 of file simubg.C.