FairRoot/PandaRoot
Typedefs | Functions | Variables
inspectmode.C File Reference
#include <vector>
#include <fstream>
#include <iostream>
#include "TChain.h"
#include "TCanvas.h"
#include "TH2F.h"
#include "TString.h"
#include "TRegexp.h"
#include "TLine.h"
#include "TArrow.h"

Go to the source code of this file.

Typedefs

typedef std::vector< TStringStrArr
 
typedef std::map< TString, int > VarHash
 
typedef std::map< TString,
std::vector< double > > 
VarCutMap
 
typedef std::map< TString,
std::vector< double >
>::iterator 
VarCutMapIt
 

Functions

int SplitString (TString s, TString delim, StrArr &toks)
 
bool readConfig (TString fname, int mode)
 
int inspectmode (int mode, TString opt="cont", TString selcfg="../../softrig/selection_fsim_dec2014.cfg")
 

Variables

StrArr varlist
 
VarHash vhash
 
VarCutMap lecutmap
 
VarCutMap gecutmap
 

Typedef Documentation

typedef std::vector<TString> StrArr

Definition at line 16 of file inspectmode.C.

typedef std::map<TString, std::vector<double> > VarCutMap

Definition at line 18 of file inspectmode.C.

typedef std::map<TString, std::vector<double> >::iterator VarCutMapIt

Definition at line 19 of file inspectmode.C.

typedef std::map<TString,int> VarHash

Definition at line 17 of file inspectmode.C.

Function Documentation

int inspectmode ( int  mode,
TString  opt = "cont",
TString  selcfg = "../../softrig/selection_fsim_dec2014.cfg" 
)

Definition at line 123 of file inspectmode.C.

References c1, d, gecutmap, h, i, lecutmap, max(), min(), mode, n, printf(), readConfig(), TString, val, and varlist.

124 {
125  TString path="/data.local1/kgoetzen/data/softrig/fsim/merge4/shr/";
126 
127  TChain n(TString::Format("n%3d",mode));
128  n.Add(TString::Format("%sM*_n%3d_*root",path.Data(),mode));
129 
130  TCanvas *c1=new TCanvas("c1","c1",10,10,800,600);
131 
132  if (!readConfig(selcfg,mode)) return;
133 
134  cout <<"vars("<<mode<<")"<<endl;
135 
136  TLine l1;
137  l1.SetLineWidth(2);
138  l1.SetLineColor(2);
139 
140  TArrow ar1;
141  ar1.SetAngle(40);
142  ar1.SetLineWidth(2);
143  ar1.SetLineColor(2);
144  ar1.SetFillColor(2);
145 
146  for (int i=0;i<varlist.size();++i)
147  {
148  TString var = varlist[i];
149  cout <<var<<""<<endl;
150 
151  double min = n.GetMinimum(var), max = n.GetMaximum(var), d=max-min;
152 
153  min-=0.05*d;
154  max+=0.05*d;
155 
156  TH2F *h=new TH2F("h",var+" (mode "+TString::Format("%d",mode)+")",360,2.2,5.8,200,min,max);
157  h->SetStats(0);
158  h->SetXTitle("E_{cm} [GeV]");
159  h->SetYTitle(var);
160 
161  n.Draw(var+":mode/1e8-0.13+recmode*0.01>>h","xmct");
162  n.Draw(var+":mode/1e5+0.05>>+h","mode%1000==900");
163  n.Draw(var+":mode/1e5+0.03>>+h","mode%1000==900");
164  n.Draw(var+":mode/1e5+0.04>>+h","mode%1000==900");
165  n.Draw(var+":mode/1e5+0.06>>+h","mode%1000==900");
166 
167  h->SetContour(50);
168  h->Draw(opt);
169 
170  for (int j=0;j<lecutmap[var].size();j+=2)
171  {
172  double sqs = lecutmap[var][j], val = lecutmap[var][j+1];
173  printf(" sqs=%4.2f : %s<%f\n", sqs, var.Data(), val);
174  l1.DrawLine(sqs-0.15, val, sqs+0.15, val);
175  ar1.DrawArrow(sqs,val,sqs,val-d*0.05,0.015,"|>");
176  }
177 
178  for (int j=0;j<gecutmap[var].size();j+=2)
179  {
180  double sqs = gecutmap[var][j], val = gecutmap[var][j+1];
181  printf(" sqs=%4.2f : %s>%f\n", sqs, var.Data(), val);
182  l1.DrawLine(sqs-0.15, val, sqs+0.15, val);
183  ar1.DrawArrow(sqs,val,sqs,val+d*0.05,0.015,"|>");
184  }
185 
186  /*
187  TH2F *h=new TH2F("h",var,70,2.3,5.8,200,min,max);
188  h->SetStats(0);
189 
190  n.Draw(var+":mode/1e8+0.05>>h","xmct",opt);
191  n.Draw(var+":mode/1e5-0.05>>+h","mode%1000==900",opt);
192 
193  h->SetContour(50);
194 
195  */
196  c1->Update();
197  c1->SaveAs(TString::Format("fig/mode%d_%s.gif",mode,var.Data()));
198 
199 
200  }
201  cout <<endl;
202 
203 
204  return 0;
205 }
VarCutMap gecutmap
Definition: inspectmode.C:24
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
TObjArray * d
Int_t i
Definition: run_full.C:25
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11
int n
VarCutMap lecutmap
Definition: inspectmode.C:24
bool readConfig(TString fname, int mode)
Definition: inspectmode.C:43
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:26
Int_t mode
Definition: autocutx.C:47
friend F32vec4 min(const F32vec4 &a, const F32vec4 &b)
Definition: P4_F32vec4.h:25
c1
Definition: plot_dirc.C:35
StrArr varlist
Definition: inspectmode.C:21
bool readConfig ( TString  fname,
int  mode 
)

Definition at line 43 of file inspectmode.C.

References cut, file, gecutmap, i, lecutmap, SplitString(), t, TString, varlist, and vhash.

Referenced by inspectmode().

44 {
45  ifstream file(fname.Data());
46  if (!file.is_open()) return false;
47 
48  varlist.clear();
49  vhash.clear();
50  lecutmap.clear();
51  gecutmap.clear();
52 
53  char line[1500];
54 
55  StrArr sar1, sar2;
56 
57  // loop through file line by line
58  while (!file.eof())
59  {
60  file.getline(line,1499);
61  TString sline(line);
62 
63  // remove tabs everywhere
64  sline.ReplaceAll("\t","");
65  // if lines contains a '#' somewhere, cut string from that position (=comment)
66  if (sline.Contains("#")) sline = sline(0,sline.Index("#")-1);
67  // remove whitespace at begin and end
68  sline = sline.Strip(TString::kBoth);
69 
70  if (sline=="") continue;
71 
72  SplitString(sline,":",sar1);
73 
74  int cmode = (sar1[0].Atoi())%1000;
75  double sqs = (sar1[0].Atof())/100000.;
76  sqs = int(sqs*100)/100.;
77 
78  if (cmode != mode) continue;
79 
80  cout <<sline<<endl;
81 
82  SplitString(sar1[1],"&&",sar2);
83 
84  for (int i=0;i<sar2.size();++i)
85  {
86  TString var=sar2[i], cut=sar2[i];
87  cut.ReplaceAll("=","");
88  double gecut=-99999., lecut=-99999.;
89 
90  if (sar2[i].Contains(">"))
91  {
92  var=sar2[i](0,sar2[i].Index(">"));
93  gecut = TString(cut(cut.Index(">")+1,1000)).Atof();
94  }
95 
96  else if (sar2[i].Contains("<"))
97  {
98  var=sar2[i](0,sar2[i].Index("<"));
99  lecut = TString(cut(cut.Index("<")+1,1000)).Atof();
100  }
101 
102  //cout <<sqs<<" "<<"cut:"<<cut<<" le:"<<lecut<<" ge:"<<gecut<<endl;
103 
104  if ( lecutmap.find(var)==lecutmap.end() && var!="tag" )
105  {
106  varlist.push_back(var);
107  //vhash[var]=1;
108  std::vector<double> t;
109  lecutmap[var] = t;
110  gecutmap[var] = t;
111  }
112 
113  if (lecut>-99999) {lecutmap[var].push_back(sqs); lecutmap[var].push_back(lecut);}
114  if (gecut>-99999) {gecutmap[var].push_back(sqs); gecutmap[var].push_back(gecut);}
115  }
116  }
117 
118  file.close();
119 
120  return true;
121 }
VarCutMap gecutmap
Definition: inspectmode.C:24
Int_t i
Definition: run_full.C:25
TFile * file
VarCutMap lecutmap
Definition: inspectmode.C:24
int SplitString(TString s, TString delim, StrArr &toks)
Definition: inspectmode.C:26
VarHash vhash
Definition: inspectmode.C:22
double cut[MAX]
Definition: autocutx.C:36
Int_t mode
Definition: autocutx.C:47
std::vector< TString > StrArr
Definition: inspectmode.C:16
TTree * t
Definition: bump_analys.C:13
StrArr varlist
Definition: inspectmode.C:21
int SplitString ( TString  s,
TString  delim,
StrArr toks 
)

Definition at line 26 of file inspectmode.C.

References i, and TString.

Referenced by readConfig().

27 {
28  toks.clear();
29 
30  TObjArray *tok = s.Tokenize(delim);
31  int N = tok->GetEntries();
32 
33  for (int i=0;i<N;++i)
34  {
35  TString token = ((TObjString*)tok->At(i))->String();
36  token.ReplaceAll("\t","");
37  token = token.Strip(TString::kBoth);
38  toks.push_back(token);
39  }
40  return N;
41 }
Int_t i
Definition: run_full.C:25
TLorentzVector s
Definition: Pnd2DStar.C:50

Variable Documentation

VarCutMap gecutmap

Definition at line 24 of file inspectmode.C.

Referenced by inspectmode(), and readConfig().

VarCutMap lecutmap

Definition at line 24 of file inspectmode.C.

Referenced by inspectmode(), and readConfig().

StrArr varlist

Definition at line 21 of file inspectmode.C.

Referenced by inspectmode(), and readConfig().

VarHash vhash

Definition at line 22 of file inspectmode.C.

Referenced by readConfig().