Logo coherent WaveBurst  
Library Reference Guide
Logo
cwb_report_prod_1.C
Go to the documentation of this file.
1 /*
2 # Copyright (C) 2019 Gabriele Vedovato, Marco Drago
3 #
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17 
18 
19 // post-production macro for the background report : used by the cwb_report command
20 
21 {
22  cout<<"cwb_report_prod_1.C starts..."<<endl;
23 
24  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_ROOTLOGON_FILE"));
25  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_PARAMETERS_FILE"));
26  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_UPARAMETERS_FILE"));
27  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_PPARAMETERS_FILE"));
28  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_UPPARAMETERS_FILE"));
29  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_EPPARAMETERS_FILE"));
30 
31 #ifndef _USE_ROOT6
32  // the CWB_CAT_NAME declared in CWB_EPPARAMETERS_FILE is not visible. why?
33  // the include is defined again
34  #undef GTOOLBOX_HH
35 #endif
36  #include "GToolbox.hh"
37 
38  CWB::Toolbox::mkDir(netdir,!pp_batch);
39 
40  gStyle->SetTitleOffset(1.4,"X");
41  gStyle->SetTitleOffset(1.2,"Y");
42  gStyle->SetLabelOffset(0.014,"X");
43  gStyle->SetLabelOffset(0.010,"Y");
44  gStyle->SetLabelFont(42,"X");
45  gStyle->SetLabelFont(42,"Y");
46  gStyle->SetTitleFont(42,"X");
47  gStyle->SetTitleFont(42,"Y");
48  gStyle->SetLabelSize(0.04,"X");
49  gStyle->SetLabelSize(0.04,"Y");
50 
51  gStyle->SetTitleH(0.050);
52  gStyle->SetTitleW(0.95);
53  gStyle->SetTitleY(0.98);
54  gStyle->SetTitleFont(12,"D");
55  gStyle->SetTitleColor(kBlue,"D");
56  gStyle->SetTextFont(12);
57  gStyle->SetTitleFillColor(kWhite);
58  gStyle->SetLineColor(kWhite);
59  gStyle->SetNumberContours(256);
60  gStyle->SetCanvasColor(kWhite);
61  gStyle->SetStatBorderSize(1);
62  gStyle->SetOptStat(kFALSE);
63 
64  // remove the red box around canvas
65  gStyle->SetFrameBorderMode(0);
66  gROOT->ForceStyle();
67 
68  cout<<"netplot starts..."<<endl;
69 
70  if(nIFO==1) { // Single Detector Mode
72  config.Import();
73  config.SetSingleDetectorMode();
74  config.Export();
75  }
76 
77  // ----------------------------------------------------------
78  // canvas
79  // ----------------------------------------------------------
80  TCanvas *c1 = new TCanvas("c","C",0,0,600,600);
81  c1->SetBorderMode(0);
82  c1->SetFillColor(0);
83  c1->SetBorderSize(2);
84  c1->SetLogx(kFALSE);
85  c1->SetGridx();
86  c1->SetGridy();
87  c1->SetRightMargin(0.1517039);
88  c1->SetTopMargin(0.0772727);
89  c1->SetBottomMargin(0.103939);
90  //gStyle->SetPalette(1,0);
91  //Re-implementing red-yellow palette
92  TColor::InitializeColors();
93  const Int_t nRGBs = 3;
94  Double_t stops[nRGBs] = { 0.00, 0.50, 1.00};
95  Double_t red[nRGBs] = { 0.559, 1.00, 1.00};
96  Double_t green[nRGBs] = { 0.00, 0.00, 1.00};
97  Double_t blue[nRGBs] = { 0.10, 0.00, 0.00};
98  TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, 255);
99 
100  TChain wave("waveburst");
101  TChain live("liveTime");
102  wave.Add(net_file_name);
103  live.Add(liv_file_name);
105  wave.SetEstimate(wave.GetEntries());
106 
107  // check vetoes
108  bool bcat2 = false;
109  bool bhveto = false;
110  bool bcat3 = false;
111 
112  for(int i=0;i<nVDQF;i++) if(VDQF[i].cat==CWB_CAT2) bcat2=true;
113  for(int i=0;i<nVDQF;i++) if(VDQF[i].cat==CWB_HVETO) bhveto=true;
114  for(int i=0;i<nVDQF;i++) if(VDQF[i].cat==CWB_CAT3) bcat3=true;
115 
116  for(int i=0;i<nVDQF;i++) {
117  if((VDQF[i].cat!=CWB_CAT2)&&(VDQF[i].cat!=CWB_HVETO)&&(VDQF[i].cat!=CWB_CAT3)) continue;
118  char veto_name[256];sprintf(veto_name,"%s_%s",CWB_CAT_NAME[VDQF[i].cat].Data(),VDQF[i].ifo);
119  if(!CWB::Toolbox::isLeafInTree(W.fChain,veto_name)) {
120  cout << "cwb_report_prod_1.C Error : Leaf " << veto_name
121  << " is not present in tree" << endl;
122  gSystem->Exit(1);
123  }
124  }
125 
126  gSystem->Exec("date");
127 
128  char fname[1024];
129  char ch1[256];
130  char ch3[256];
131 
132  int n;
133  double sTARt, sTOp;
134 
135  W.GetEntry(0); sTARt = W.gps[0];
136  sTOp = W.gps[0];
137  for(int k=1;k<wave.GetEntries();k++){
138  W.GetEntry(k);
139  if(int(k/100000)*100000 == k) cout << "processed: " << k <<endl;
140  if(W.gps[0]>sTOp) {sTOp = W.gps[0];}
141  if(W.gps[0]<sTARt) {sTARt = W.gps[0];}
142  }
143  double T_bgn = sTARt;
144  double T_end = sTOp;
145  T_bgn-=(T_end-T_bgn)/100.;
146  T_end+=(T_end-T_bgn)/100.;
147  int nBins = 100;
148  sprintf(fname,"%s/time.txt",netdir);
149  FILE* ftrig = fopen(fname,"w");
150  if(ftrig==NULL) {
151  cout << "cwb_report_prod_1.C - File open error : " << fname << endl;
152  gSystem->Exit(1);
153  }
154  fprintf(ftrig,"#Start\tStop\n");
155  fprintf(ftrig,"%d\t%d\n",(int)T_bgn,(int)T_end);
156  fclose(ftrig);
157  sprintf(fname,"Red dots vetoed CAT3 or hveto");
158 
159  TH2F* rho_T = new TH2F("rho_T","",nBins,T_bgn,T_end,pp_rho_bin,pp_rho_min,pp_rho_max);
160  rho_T->SetTitleOffset(1.3,"Y");
161  rho_T->GetXaxis()->SetTitle(fname);
162  rho_T->GetXaxis()->SetTimeDisplay(1);
163  rho_T->GetYaxis()->SetTitle("#rho");
164  rho_T->SetMarkerStyle(20);
165  rho_T->SetMarkerColor(1);
166  rho_T->SetMarkerSize(0.8);
167  rho_T->SetStats(kFALSE);
168 
169  TH2F* rho_T2 = new TH2F("rho_T2","",nBins,T_bgn,T_end,pp_rho_bin,pp_rho_min,pp_rho_max);
170  rho_T2->SetTitle("Red dots vetoed CAT3 or hveto");
171  rho_T2->GetXaxis()->SetTitle(fname);
172  rho_T2->GetXaxis()->SetTimeDisplay(1);
173  rho_T2->GetYaxis()->SetTitle("#rho");
174  rho_T2->SetMarkerStyle(20);
175  rho_T2->SetMarkerColor(2);
176  rho_T2->SetMarkerSize(0.8);
177  rho_T2->SetStats(kFALSE);
178 
179  if(c1) delete c1;
180  c1 = new TCanvas("c","C",0,0,800,600);
181  c1->SetBorderMode(0);
182  c1->SetFillColor(0);
183  c1->SetBorderSize(2);
184  c1->SetGridx();
185  c1->SetGridy();
186  c1->SetBottomMargin(0.143939);
187  c1->SetRightMargin(0.1517039);
188  c1->SetTopMargin(0.0772727);
189 
190  int nfreq = (freqHigh-freqLow)/1.;
191  TH2F* ff=new TH2F("ff","ff",nfreq,freqLow,freqHigh,pp_rho_bin,pp_rho_min,pp_rho_max);
192  ff->SetTitleOffset(1.3,"Y");
193  ff->SetTitle("");
194  ff->GetXaxis()->SetTitle("frequency, Hz");
195  ff->SetStats(kFALSE);
196 
197  c1->Clear();
198  sprintf(ch1,"rho[%d]:frequency[0]>>ff",pp_irho);
199  c1->SetLogz(kTRUE);
200  ff->GetYaxis()->SetTitle("#rho(ECOR)");
201  Draw(wave,ch1,ch2,"colz");
202  sprintf(fname,"%s/ECOR_frequency.eps",netdir);
203  c1->Update(); c1->SaveAs(fname);
204 
205  c1->Clear();
206  sprintf(ch1,"rho[0]:frequency[0]>>ff");
207  c1->SetLogz(kTRUE);
208  ff->GetYaxis()->SetTitle("#rho(ecor)");
209  Draw(wave,ch1,ch2,"colz");
210  sprintf(fname,"%s/ecor_frequency.eps",netdir);
211  cout << fname << endl;
212  c1->Update(); c1->SaveAs(fname);
213 
214  c1->Clear();
215  if(pp_rho_log) c1->SetLogy(kTRUE);
216  sprintf(ch1,"rho[%d]:frequency[0]>>ff",pp_irho);
217  c1->SetLogz(kTRUE);
218  if(fHigh-fLow>256) c1->SetLogx(kTRUE);
219  ff->SetTitle("after pp-cuts (loudest not vetoed : black)");
220  ff->GetYaxis()->SetTitle("#rho");
221  ff->GetXaxis()->SetMoreLogLabels(kTRUE);
222  ff->GetXaxis()->SetNoExponent(kTRUE);
223  Draw(wave,ch1,ch2,"colz");
224 
225  // set marker on the first not vetoed pp_max_nloudest_list loudest events
226  sprintf(ch1,"rho[%d]:frequency[0]:Entry$",pp_irho);
227  Draw(wave,ch1,ch2,"goff");
228  int sel_size = wave.GetSelectedRows();
229  double* sel_rho = wave.GetV1();
230  double* sel_freq = wave.GetV2();
231  double* sel_entry = wave.GetV3();
232  Int_t *_index = new Int_t[sel_size];
233  TMath::Sort(sel_size,sel_rho,_index,true);
234  if(sel_size>pp_max_nloudest_list) sel_size=pp_max_nloudest_list;
235  // get veto branches
236  UChar_t VETO[100];
237  TString VETO_NAME[100];
238  int nveto=0;
239  size_t nbranch = wave.GetListOfBranches()->GetEntries();
240  for(int n=0;n<nbranch;++n) {
241  TBranch *br =dynamic_cast<TBranch*>(wave.GetListOfBranches()->At(n));
242  if(TString(br->GetName()).Contains("veto_")) {
243  // cat2 is a special case, the events tagged with cat2 are not vetoed
244  if(!TString(br->GetName()).Contains("veto_cat2")) {
245  VETO_NAME[nveto] = br->GetName();
246  wave.SetBranchAddress(br->GetName(),&VETO[nveto++]);
247  }
248  }
249  }
250  for(int i=0;i<sel_size;i++) {
251  int l=_index[i];
252  int j=int(sel_entry[l]);
253  wave.GetEntry(j);
254  bool veto=false;
255  for(int k=0;k<nveto;k++) {
256 #ifdef CAT3_VETO
257  if(VETO[k] && VETO_NAME[k].Contains("veto_cat3")) veto=true;
258 #endif
259 #ifdef HVETO_VETO
260  if(VETO[k] && VETO_NAME[k].Contains("veto_hveto")) veto=true;
261 #endif
262 #ifdef USER_VETO
263  if(VETO[k] && VETO_NAME[k].Contains("veto_user")) veto=true;
264 #endif
265  }
266  if(!veto) {
267  // set black marker for not vetoed loudest events
268  TMarker *mP = new TMarker(sel_freq[l], sel_rho[l], 20);
269  mP->SetMarkerSize(0.9);
270  mP->SetMarkerColor(kBlack);
271  mP->Draw();
272  }
273  }
274  sprintf(fname,"%s/rho_frequency.eps",netdir);
275  c1->Update(); c1->SaveAs(fname);
276 
277  c1->Clear();
278  sprintf(ch1,"rho[%d]:time[0]>>rho_T",pp_irho);
279  c1->SetLogz(kFALSE);
280  c1->SetLogx(kFALSE);
281  if(pp_rho_log) c1->SetLogy(kTRUE); else c1->SetLogy(kFALSE);
282  if(bhveto||bcat3) {
283  sprintf(ch1,"rho[%d]:time[0]>>rho_T",pp_irho);
284  Draw(wave,ch1,veto_not_vetoed,"");
285  sprintf(ch1,"rho[%d]:time[0]>>rho_T2",pp_irho);
286  Draw(wave,ch1,veto_vetoed,"P SAME");
287  rho_T->SetTitle("after pp-cuts (black), vetoed by cat3 or hveto (red)");
288  } else {
289  Draw(wave,ch1,ch2,"");
290  rho_T->SetTitle("after pp-cuts");
291  }
292  sprintf(fname,"%s/rho_time.eps",netdir);
293  c1->Update(); c1->Print(fname);
294 
295  /* if (online)
296  {
297  //ONLINE
298  if(c1) delete c1;
299  c1 = new TCanvas("c","C",0,0,1200,800);
300  c1->SetBorderMode(0);
301  c1->SetFillColor(0);
302  c1->SetBorderSize(2);
303  c1->SetGridx();
304  c1->SetGridy();
305  c1->SetBottomMargin(0.143939);
306  c1->SetRightMargin(0.1517039);
307  c1->SetTopMargin(0.0772727);
308 
309  char s_gracedb[2048];
310  sprintf(s_gracedb,"%s && rho[%i]>%f && rho[%i]<%f",ch2,pp_irho,t_rho_lum,pp_irho,t_rho_off);
311  char s_offline[2048];
312  sprintf(s_offline,"%s && rho[%i]>%f",ch2,pp_irho,t_rho_off);
313  char notch2[2048];
314  sprintf(notch2,"!(%s && rho[%i]>%f)",ch2,pp_irho,t_rho_lum);
315  c1->Clear();
316  c1->SetLogz(kFALSE);
317  c1->SetLogx(kFALSE);
318 
319  TH2F* rho_on = new TH2F("rho_on","",nBins,T_bgn,T_end,pp_rho_bin,pp_rho_min,pp_rho_max);
320  rho_on->SetTitleOffset(1.3,"Y");
321  rho_on->GetXaxis()->SetTitle(fname);
322  rho_on->GetXaxis()->SetTimeDisplay(1);
323  rho_on->GetYaxis()->SetTitle("#rho");
324  rho_on->SetMarkerStyle(20);
325  rho_on->SetMarkerColor(1);
326  rho_on->SetMarkerSize(0.8);
327  rho_on->SetStats(kFALSE);
328 
329  TH2F* rho_on2 = new TH2F("rho_on2","",nBins,T_bgn,T_end,pp_rho_bin,pp_rho_min,pp_rho_max);
330  rho_on2->GetXaxis()->SetTitle(fname);
331  rho_on2->GetXaxis()->SetTimeDisplay(1);
332  rho_on2->GetYaxis()->SetTitle("#rho");
333  rho_on2->SetMarkerStyle(20);
334  rho_on2->SetMarkerColor(2);
335  rho_on2->SetMarkerSize(0.8);
336  rho_on2->SetStats(kFALSE);
337 
338  TH2F* rho_on3 = new TH2F("rho_on3","",nBins,T_bgn,T_end,pp_rho_bin,pp_rho_min,pp_rho_max);
339  rho_on3->GetXaxis()->SetTitle(fname);
340  rho_on3->GetXaxis()->SetTimeDisplay(1);
341  rho_on3->GetYaxis()->SetTitle("#rho");
342  rho_on3->SetMarkerStyle(20);
343  rho_on3->SetMarkerColor(3);
344  rho_on3->SetMarkerSize(0.8);
345  rho_on3->SetStats(kFALSE);
346 
347  sprintf(ch1,"rho[%d]:time[0]>>rho_on",pp_irho);
348  Draw(wave,ch1,notch2,"P");
349  sprintf(ch1,"rho[%d]:time[0]>>rho_on2",pp_irho);
350  Draw(wave,ch1,s_gracedb,"P SAME");
351  sprintf(ch1,"rho[%d]:time[0]>>rho_on3",pp_irho);
352  Draw(wave,ch1,s_offline,"P SAME");
353  rho_on->GetXaxis()->SetTitle("time, gps");
354  rho_on->SetTitle("all (black), gracedb (red), offline (green)");
355  sprintf(fname,"%s/rho_time_online.eps",netdir);
356  c1->Update(); c1->Print(fname);
357 
358  TH2F* ff_on=new TH2F("ff_on","ff_on",nfreq,freqLow,freqHigh,pp_rho_bin,pp_rho_min,pp_rho_max);
359  ff_on->SetTitleOffset(1.3,"Y");
360  ff_on->SetTitle("");
361  ff_on->GetXaxis()->SetTitle("frequency, Hz");
362  ff_on->SetStats(kFALSE);
363  ff_on->SetMarkerStyle(20);
364  ff_on->SetMarkerColor(1);
365  ff_on->SetMarkerSize(0.8);
366 
367  TH2F* ff_on2=new TH2F("ff_on2","ff_on2",nfreq,freqLow,freqHigh,pp_rho_bin,pp_rho_min,pp_rho_max);
368  ff_on2->SetTitleOffset(1.3,"Y");
369  ff_on2->SetTitle("");
370  ff_on2->GetXaxis()->SetTitle("frequency, Hz");
371  ff_on2->SetStats(kFALSE);
372  ff_on2->SetMarkerStyle(20);
373  ff_on2->SetMarkerColor(2);
374  ff_on2->SetMarkerSize(0.8);
375 
376  TH2F* ff_on3=new TH2F("ff_on3","ff_on3",nfreq,freqLow,freqHigh,pp_rho_bin,pp_rho_min,pp_rho_max);
377  ff_on3->SetTitleOffset(1.3,"Y");
378  ff_on3->SetTitle("");
379  ff_on3->GetXaxis()->SetTitle("frequency, Hz");
380  ff_on3->SetStats(kFALSE);
381  ff_on3->SetMarkerStyle(20);
382  ff_on3->SetMarkerColor(3);
383  ff_on3->SetMarkerSize(0.8);
384 
385  c1->Clear();
386  ff_on->SetTitle("all (black), lumin (red), offline (green)");
387  ff_on->GetYaxis()->SetTitle("#rho");
388  ff_on->GetXaxis()->SetMoreLogLabels(kTRUE);
389  ff_on->GetXaxis()->SetNoExponent(kTRUE);
390  sprintf(ch1,"rho[%d]:frequency[0]>>ff_on",pp_irho);
391  Draw(wave,ch1,notch2,"P");
392  sprintf(ch1,"rho[%d]:frequency[0]>>ff_on2",pp_irho);
393  Draw(wave,ch1,s_gracedb,"P SAME");
394  sprintf(ch1,"rho[%d]:frequency[0]>>ff_on3",pp_irho);
395  Draw(wave,ch1,s_offline,"P SAME");
396  sprintf(fname,"%s/rho_frequency_online.eps",netdir);
397  c1->Update(); c1->SaveAs(fname);
398 
399  TH2F* tf_on=new TH2F("tf_on","tf_on",nBins,T_bgn,T_end,nfreq,freqLow,freqHigh);
400  tf_on->SetTitleOffset(1.3,"Y");
401  tf_on->SetTitle("");
402  tf_on->GetXaxis()->SetTitle("frequency, Hz");
403  tf_on->SetStats(kFALSE);
404  tf_on->SetMarkerStyle(20);
405  tf_on->SetMarkerColor(1);
406  tf_on->SetMarkerSize(0.8);
407 
408  TH2F* tf_on2=new TH2F("tf_on2","tf_on2",nBins,T_bgn,T_end,nfreq,freqLow,freqHigh);
409  tf_on2->SetTitleOffset(1.3,"Y");
410  tf_on2->SetTitle("");
411  tf_on2->GetXaxis()->SetTitle("frequency, Hz");
412  tf_on2->SetStats(kFALSE);
413  tf_on2->SetMarkerStyle(20);
414  tf_on2->SetMarkerColor(2);
415  tf_on2->SetMarkerSize(0.8);
416 
417  TH2F* tf_on3=new TH2F("tf_on3","tf_on3",nBins,T_bgn,T_end,nfreq,freqLow,freqHigh);
418  tf_on3->SetTitleOffset(1.3,"Y");
419  tf_on3->SetTitle("");
420  tf_on3->GetXaxis()->SetTitle("frequency, Hz");
421  tf_on3->SetStats(kFALSE);
422  tf_on3->SetMarkerStyle(20);
423  tf_on3->SetMarkerColor(3);
424  tf_on3->SetMarkerSize(0.8);
425 
426  c1->Clear();
427  tf_on->SetTitle("all (black), lumin (red), offline (green)");
428  tf_on->GetYaxis()->SetTitle("frequency");
429  tf_on->GetXaxis()->SetTitle("time");
430  tf_on->GetXaxis()->SetTimeDisplay(1);
431  tf_on->GetXaxis()->SetMoreLogLabels(kTRUE);
432  tf_on->GetXaxis()->SetNoExponent(kTRUE);
433  sprintf(ch1,"frequency[0]:time[0]>>tf_on");
434  Draw(wave,ch1,notch2,"P");
435  sprintf(ch1,"frequency[0]:time[0]>>tf_on2");
436  Draw(wave,ch1,s_gracedb,"P SAME");
437  sprintf(ch1,"frequency[0]:time[0]>>tf_on3");
438  Draw(wave,ch1,s_offline,"P SAME");
439  sprintf(fname,"%s/time_frequency_online.eps",netdir);
440  c1->Update(); c1->SaveAs(fname);
441 
442  }
443 */
444 
445  gSystem->Exit(0);
446 }
TH2F * rho_T
char ch2[2048]
double sTARt
Double_t green[nRGBs]
void Export(TString fname="")
Definition: config.cc:406
double fHigh
double T_bgn
char ch1[256]
bool bcat3
gx Draw(GWAT_TIME)
dqfile VDQF[100]
bool bhveto
netevent W & wave
TString("c")
int nBins
Int_t GetEntry(Int_t)
Definition: netevent.cc:409
UChar_t VETO[100]
const Int_t nRGBs
Double_t blue[nRGBs]
static TString CWB_CAT_NAME[14]
Definition: GToolbox.hh:21
int nVDQF
int j
Definition: cwb_net.C:28
i drho i
void Import(TString umacro="")
Definition: config.cc:352
static bool checkFile(TString fName, bool question=false, TString message="")
Definition: Toolbox.cc:4670
fprintf(ftrig,"#Start\top\)
char ifo[NIFO_MAX][8]
char ch3[256]
#define nIFO
CWB_CAT cat
Definition: Toolbox.hh:86
Int_t * _index
Definition: TimeSortTree.C:25
Double_t stops[nRGBs]
double pp_rho_min
static bool isLeafInTree(TTree *itree, TString leaf)
Definition: Toolbox.cc:5466
TCanvas * c1
i() int(T_cor *100))
char netdir[1024]
bool pp_rho_log
int l
char fname[1024]
int k
pp_rho_bin
double pp_rho_max
char net_file_name[256]
double T_end
char liv_file_name[256]
sprintf(fname,"%s/time.txt", netdir)
TChain live("liveTime")
bool bcat2
double fLow
int n
FILE * ftrig
double sTOp
static void mkDir(TString dir, bool question=false, bool remove=true)
Definition: Toolbox.cc:4714
char veto_not_vetoed[1024]
int pp_max_nloudest_list
double freqHigh
int cat
TH2F * rho_T2
double freqLow
Int_t GetEntries()
Definition: netevent.cc:403
fclose(ftrig)
TString config
Double_t red[nRGBs]
i drho pp_irho
void SetSingleDetectorMode()
Definition: config.cc:1352
char veto_vetoed[1024]