Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Plot_BCAL_LED_Ratio_low_down_quadavg.C
Go to the documentation of this file.
1 #include <unistd.h>
2 using namespace std;
3 
4 
5 void split(const std::string &s, char delim, std::vector<std::string> &elems) {
6  std::stringstream ss;
7  ss.str(s);
8  std::string item;
9  while (std::getline(ss, item, delim)) {
10  elems.push_back(item);
11  }
12 }
13 
14 TFile *GetReferenceFile(Int_t run, TString variation = "default"){
15  char command[1024];
16  // first get the location of the file
17  sprintf(command, "ccdb dump %s:%i:%s", "/BCAL/LED_monitoring/reference_file", run, variation.Data());
18  FILE* inputPipe = gSystem->OpenPipe(command, "r");
19  if(inputPipe == NULL)
20  return NULL;
21  //get the first (comment) line
22  char buff[1024];
23  if(fgets(buff, sizeof(buff), inputPipe) == NULL)
24  return NULL;
25  //get the actual data
26  if(fgets(buff, sizeof(buff), inputPipe) == NULL)
27  return NULL;
28  stringstream ss;
29  ss << buff;
30  char url_base[1024], path_name[1024];
31  ss >> url_base >> path_name;
32  //Close the pipe
33  gSystem->ClosePipe(inputPipe);
34 
35  // build URL of the location of the file
36  stringstream ss_url;
37  //cout << url_base << endl;
38  //cout << table_name << endl;
39  ss_url << url_base << "/" << path_name;
40 
41  // figure out the name of the file
42  vector<string> tokens;
43  split(path_name, '/', tokens);
44  string filename = *(tokens.end()-1);
45 
46  // download the file if it doesn't already exist
47  ifstream f(filename.c_str());
48  if(!f.good()) {
49  sprintf(command, "curl -O %s", ss_url.str().c_str());
50  gSystem->Exec(command);
51  } else {
52  f.close();
53  }
54 
55 
56  // open it and return
57  TFile *rootfile = new TFile(filename.c_str());
58 
59  // error check
60 
61  return rootfile;
62 }
63 
64 void Plot_BCAL_LED_Ratio_low_down_quadavg(string infilename = "hd_root.root", int run = 20000)
65 {
66  // #include <TRandom.h>
67 
68  //gROOT->Reset();
69 gStyle->SetPalette(1,0);
70 gStyle->SetOptStat(kFALSE);
71 // gStyle->SetOptStat(11111111);
72 gStyle->SetPadRightMargin(0.15);
73 gStyle->SetPadLeftMargin(0.15);
74 gStyle->SetPadBottomMargin(0.15);
75 //
76 
77  char string[256];
78  //char path[256];
79  Int_t j,k;
80  Int_t n;
81  Int_t errorbars = 0;
82 
83  TProfile *run1_low_down_1 = NULL;
84  TProfile *run1_low_down_2 = NULL;
85  TProfile *run1_low_down_3 = NULL;
86  TProfile *run1_low_down_4 = NULL;
87 
88  TProfile *run2_low_down_1 = NULL;
89  TProfile *run2_low_down_2 = NULL;
90  TProfile *run2_low_down_3 = NULL;
91  TProfile *run2_low_down_4 = NULL;
92 
93  TH1D *run1_low_down_1_hist = NULL;
94  TH1D *run1_low_down_2_hist = NULL;
95  TH1D *run1_low_down_3_hist = NULL;
96  TH1D *run1_low_down_4_hist = NULL;
97 
98  TH1D *run2_low_down_1_hist = NULL;
99  TH1D *run2_low_down_2_hist = NULL;
100  TH1D *run2_low_down_3_hist = NULL;
101  TH1D *run2_low_down_4_hist = NULL;
102 
103 
104 // sprintf(string,"hd_root.root");
105 // sprintf(string,"0%03i/bcalled0%03i.root",runnumber1,runnumber1);
106  printf ("Histogram input filename=%s\n",infilename.c_str());
107  TFile *run1in = new TFile(infilename.c_str(),"read");
108 
109 // TProfile *sector1_up_peak_vevent2 = (TProfile*)run1in->Get("bcalLED/sector1_up_peak_vevent2");
110 // if (sector1_up_peak_vevent2->FindLastBinAbove(0,1) > 100)
111  run1_low_down_1 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_1_peak_vchannel");
112 
113 // TProfile *sector2_up_peak_vevent2 = (TProfile*)run1in->Get("bcalLED/sector2_up_peak_vevent2");
114 // if (sector2_up_peak_vevent2->FindLastBinAbove(0,1) > 100)
115  run1_low_down_2 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_2_peak_vchannel");
116 
117 // TProfile *sector3_up_peak_vevent2 = (TProfile*)run1in->Get("bcalLED/sector3_up_peak_vevent2");
118 // if (sector3_up_peak_vevent2->FindLastBinAbove(0,1) > 100)
119  run1_low_down_3 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_3_peak_vchannel");
120 
121 // TProfile *sector4_up_peak_vevent2 = (TProfile*)run1in->Get("bcalLED/sector4_up_peak_vevent2");
122 // if (sector4_up_peak_vevent2->FindLastBinAbove(0,1) > 100)
123  run1_low_down_4 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_4_peak_vchannel");
124 
125  //sprintf(string,"BCAL_LED_Reference_Spring2016.root");
126  //printf ("Histogram input filename=%s\n",string);
127  //TFile *run2in = new TFile(string,"read");
128  TFile *run2in = GetReferenceFile(run);
129 
130  run2_low_down_1 = (TProfile*)run2in->Get("bcalLED/low_bias_down_sector_1_peak_vchannel");
131  run2_low_down_2 = (TProfile*)run2in->Get("bcalLED/low_bias_down_sector_2_peak_vchannel");
132  run2_low_down_3 = (TProfile*)run2in->Get("bcalLED/low_bias_down_sector_3_peak_vchannel");
133  run2_low_down_4 = (TProfile*)run2in->Get("bcalLED/low_bias_down_sector_4_peak_vchannel");
134 
135  cout << "input profiles, projecting into histograms" << "\n";
136 
137  run1_low_down_1_hist = run1_low_down_1->ProjectionX("run1_low_down_1_projectionx");
138  run1_low_down_2_hist = run1_low_down_2->ProjectionX("run1_low_down_2_projectionx");
139  run1_low_down_3_hist = run1_low_down_3->ProjectionX("run1_low_down_3_projectionx");
140  run1_low_down_4_hist = run1_low_down_4->ProjectionX("run1_low_down_4_projectionx");
141 
142  run2_low_down_1_hist = run2_low_down_1->ProjectionX("run2_low_down_1_projectionx");
143  run2_low_down_2_hist = run2_low_down_2->ProjectionX("run2_low_down_2_projectionx");
144  run2_low_down_3_hist = run2_low_down_3->ProjectionX("run2_low_down_3_projectionx");
145  run2_low_down_4_hist = run2_low_down_4->ProjectionX("run2_low_down_4_projectionx");
146 
147 
148  cout << "profiles projected into histograms" << "\n";
149 
150  run1_low_down_1_hist->SetTitle("6v Downstream sector 1");
151  run1_low_down_2_hist->SetTitle("6v Downstream sector 2");
152  run1_low_down_3_hist->SetTitle("6v Downstream sector 3");
153  run1_low_down_4_hist->SetTitle("6v Downstream sector 4");
154 
155  cout << "Dividing over quadrant average" << "\n";
156 
157  double quad1sector1avgrun1 = run1_low_down_1_hist->Integral(0,191);
158  double quad2sector1avgrun1 = run1_low_down_1_hist->Integral(192,383);
159  double quad3sector1avgrun1 = run1_low_down_1_hist->Integral(384,575);
160  double quad4sector1avgrun1 = run1_low_down_1_hist->Integral(576,767);
161  double quad5sector1avgrun1 = run1_low_down_1_hist->Integral(768,959);
162  double quad6sector1avgrun1 = run1_low_down_1_hist->Integral(960,1151);
163  double quad7sector1avgrun1 = run1_low_down_1_hist->Integral(1152,1343);
164  double quad8sector1avgrun1 = run1_low_down_1_hist->Integral(1344,1535);
165 
166  double quad1sector2avgrun1 = run1_low_down_2_hist->Integral(0,191);
167  double quad2sector2avgrun1 = run1_low_down_2_hist->Integral(192,383);
168  double quad3sector2avgrun1 = run1_low_down_2_hist->Integral(384,575);
169  double quad4sector2avgrun1 = run1_low_down_2_hist->Integral(576,767);
170  double quad5sector2avgrun1 = run1_low_down_2_hist->Integral(768,959);
171  double quad6sector2avgrun1 = run1_low_down_2_hist->Integral(960,1151);
172  double quad7sector2avgrun1 = run1_low_down_2_hist->Integral(1152,1343);
173  double quad8sector2avgrun1 = run1_low_down_2_hist->Integral(1344,1535);
174 
175  double quad1sector3avgrun1 = run1_low_down_3_hist->Integral(0,191);
176  double quad2sector3avgrun1 = run1_low_down_3_hist->Integral(192,383);
177  double quad3sector3avgrun1 = run1_low_down_3_hist->Integral(384,575);
178  double quad4sector3avgrun1 = run1_low_down_3_hist->Integral(576,767);
179  double quad5sector3avgrun1 = run1_low_down_3_hist->Integral(768,959);
180  double quad6sector3avgrun1 = run1_low_down_3_hist->Integral(960,1151);
181  double quad7sector3avgrun1 = run1_low_down_3_hist->Integral(1152,1343);
182  double quad8sector3avgrun1 = run1_low_down_3_hist->Integral(1344,1535);
183 
184  double quad1sector4avgrun1 = run1_low_down_4_hist->Integral(0,191);
185  double quad2sector4avgrun1 = run1_low_down_4_hist->Integral(192,383);
186  double quad3sector4avgrun1 = run1_low_down_4_hist->Integral(384,575);
187  double quad4sector4avgrun1 = run1_low_down_4_hist->Integral(576,767);
188  double quad5sector4avgrun1 = run1_low_down_4_hist->Integral(768,959);
189  double quad6sector4avgrun1 = run1_low_down_4_hist->Integral(960,1151);
190  double quad7sector4avgrun1 = run1_low_down_4_hist->Integral(1152,1343);
191  double quad8sector4avgrun1 = run1_low_down_4_hist->Integral(1344,1535);
192 
193  double quad1avgrun1 = quad1sector1avgrun1 + quad1sector2avgrun1 + quad1sector3avgrun1 + quad1sector4avgrun1;
194  double quad2avgrun1 = quad2sector1avgrun1 + quad2sector2avgrun1 + quad2sector3avgrun1 + quad2sector4avgrun1;
195  double quad3avgrun1 = quad3sector1avgrun1 + quad3sector2avgrun1 + quad3sector3avgrun1 + quad3sector4avgrun1;
196  double quad4avgrun1 = quad4sector1avgrun1 + quad4sector2avgrun1 + quad4sector3avgrun1 + quad4sector4avgrun1;
197  double quad5avgrun1 = quad5sector1avgrun1 + quad5sector2avgrun1 + quad5sector3avgrun1 + quad5sector4avgrun1;
198  double quad6avgrun1 = quad6sector1avgrun1 + quad6sector2avgrun1 + quad6sector3avgrun1 + quad6sector4avgrun1;
199  double quad7avgrun1 = quad7sector1avgrun1 + quad7sector2avgrun1 + quad7sector3avgrun1 + quad7sector4avgrun1;
200  double quad8avgrun1 = quad8sector1avgrun1 + quad8sector2avgrun1 + quad8sector3avgrun1 + quad8sector4avgrun1;
201 
202  double quadav, bincontent1, bincontent2, bincontent3, bincontent4;
203 
204  for (int chid=0; chid < 1536 ; chid++)
205  {
206  quadav=0;
207  bincontent1=0;
208  bincontent2=0;
209  bincontent3=0;
210  bincontent4=0;
211  if (chid < 192 && chid > -1) {quadav = quad1avgrun1;}
212  if (chid < 384 && chid > 191) {quadav = quad2avgrun1;}
213  if (chid < 576 && chid > 383) {quadav = quad3avgrun1;}
214  if (chid < 768 && chid > 575) {quadav = quad4avgrun1;}
215  if (chid < 960 && chid > 767) {quadav = quad5avgrun1;}
216  if (chid < 1152 && chid > 959) {quadav = quad6avgrun1;}
217  if (chid < 1344 && chid > 1151) {quadav = quad7avgrun1;}
218  if (chid < 1536 && chid > 1343) {quadav = quad8avgrun1;}
219  bincontent1 = run1_low_down_1_hist->GetBinContent(chid);
220  bincontent2 = run1_low_down_2_hist->GetBinContent(chid);
221  bincontent3 = run1_low_down_3_hist->GetBinContent(chid);
222  bincontent4 = run1_low_down_4_hist->GetBinContent(chid);
223  run1_low_down_1_hist->SetBinContent(chid, bincontent1/quadav);
224  run1_low_down_2_hist->SetBinContent(chid, bincontent2/quadav);
225  run1_low_down_3_hist->SetBinContent(chid, bincontent3/quadav);
226  run1_low_down_4_hist->SetBinContent(chid, bincontent4/quadav);
227  }
228 
229  double quad1sector1avgrun2 = run2_low_down_1_hist->Integral(0,191);
230  double quad2sector1avgrun2 = run2_low_down_1_hist->Integral(192,383);
231  double quad3sector1avgrun2 = run2_low_down_1_hist->Integral(384,575);
232  double quad4sector1avgrun2 = run2_low_down_1_hist->Integral(576,767);
233  double quad5sector1avgrun2 = run2_low_down_1_hist->Integral(768,959);
234  double quad6sector1avgrun2 = run2_low_down_1_hist->Integral(960,1151);
235  double quad7sector1avgrun2 = run2_low_down_1_hist->Integral(1152,1343);
236  double quad8sector1avgrun2 = run2_low_down_1_hist->Integral(1344,1535);
237 
238  double quad1sector2avgrun2 = run2_low_down_2_hist->Integral(0,191);
239  double quad2sector2avgrun2 = run2_low_down_2_hist->Integral(192,383);
240  double quad3sector2avgrun2 = run2_low_down_2_hist->Integral(384,575);
241  double quad4sector2avgrun2 = run2_low_down_2_hist->Integral(576,767);
242  double quad5sector2avgrun2 = run2_low_down_2_hist->Integral(768,959);
243  double quad6sector2avgrun2 = run2_low_down_2_hist->Integral(960,1151);
244  double quad7sector2avgrun2 = run2_low_down_2_hist->Integral(1152,1343);
245  double quad8sector2avgrun2 = run2_low_down_2_hist->Integral(1344,1535);
246 
247  double quad1sector3avgrun2 = run2_low_down_3_hist->Integral(0,191);
248  double quad2sector3avgrun2 = run2_low_down_3_hist->Integral(192,383);
249  double quad3sector3avgrun2 = run2_low_down_3_hist->Integral(384,575);
250  double quad4sector3avgrun2 = run2_low_down_3_hist->Integral(576,767);
251  double quad5sector3avgrun2 = run2_low_down_3_hist->Integral(768,959);
252  double quad6sector3avgrun2 = run2_low_down_3_hist->Integral(960,1151);
253  double quad7sector3avgrun2 = run2_low_down_3_hist->Integral(1152,1343);
254  double quad8sector3avgrun2 = run2_low_down_3_hist->Integral(1344,1535);
255 
256  double quad1sector4avgrun2 = run2_low_down_4_hist->Integral(0,191);
257  double quad2sector4avgrun2 = run2_low_down_4_hist->Integral(192,383);
258  double quad3sector4avgrun2 = run2_low_down_4_hist->Integral(384,575);
259  double quad4sector4avgrun2 = run2_low_down_4_hist->Integral(576,767);
260  double quad5sector4avgrun2 = run2_low_down_4_hist->Integral(768,959);
261  double quad6sector4avgrun2 = run2_low_down_4_hist->Integral(960,1151);
262  double quad7sector4avgrun2 = run2_low_down_4_hist->Integral(1152,1343);
263  double quad8sector4avgrun2 = run2_low_down_4_hist->Integral(1344,1535);
264 
265  double quad1avgrun2 = quad1sector1avgrun2 + quad1sector2avgrun2 + quad1sector3avgrun2 + quad1sector4avgrun2;
266  double quad2avgrun2 = quad2sector1avgrun2 + quad2sector2avgrun2 + quad2sector3avgrun2 + quad2sector4avgrun2;
267  double quad3avgrun2 = quad3sector1avgrun2 + quad3sector2avgrun2 + quad3sector3avgrun2 + quad3sector4avgrun2;
268  double quad4avgrun2 = quad4sector1avgrun2 + quad4sector2avgrun2 + quad4sector3avgrun2 + quad4sector4avgrun2;
269  double quad5avgrun2 = quad5sector1avgrun2 + quad5sector2avgrun2 + quad5sector3avgrun2 + quad5sector4avgrun2;
270  double quad6avgrun2 = quad6sector1avgrun2 + quad6sector2avgrun2 + quad6sector3avgrun2 + quad6sector4avgrun2;
271  double quad7avgrun2 = quad7sector1avgrun2 + quad7sector2avgrun2 + quad7sector3avgrun2 + quad7sector4avgrun2;
272  double quad8avgrun2 = quad8sector1avgrun2 + quad8sector2avgrun2 + quad8sector3avgrun2 + quad8sector4avgrun2;
273 
274  for (int chid=0; chid < 1536 ; chid++)
275  {
276  quadav=0;
277  bincontent1=0;
278  bincontent2=0;
279  bincontent3=0;
280  bincontent4=0;
281  if (chid < 192 && chid > -1) {quadav = quad1avgrun2;}
282  if (chid < 384 && chid > 191) {quadav = quad2avgrun2;}
283  if (chid < 576 && chid > 383) {quadav = quad3avgrun2;}
284  if (chid < 768 && chid > 575) {quadav = quad4avgrun2;}
285  if (chid < 960 && chid > 767) {quadav = quad5avgrun2;}
286  if (chid < 1152 && chid > 959) {quadav = quad6avgrun2;}
287  if (chid < 1344 && chid > 1151) {quadav = quad7avgrun2;}
288  if (chid < 1536 && chid > 1343) {quadav = quad8avgrun2;}
289  bincontent1 = run2_low_down_1_hist->GetBinContent(chid);
290  bincontent2 = run2_low_down_2_hist->GetBinContent(chid);
291  bincontent3 = run2_low_down_3_hist->GetBinContent(chid);
292  bincontent4 = run2_low_down_4_hist->GetBinContent(chid);
293  run2_low_down_1_hist->SetBinContent(chid, bincontent1/quadav);
294  run2_low_down_2_hist->SetBinContent(chid, bincontent2/quadav);
295  run2_low_down_3_hist->SetBinContent(chid, bincontent3/quadav);
296  run2_low_down_4_hist->SetBinContent(chid, bincontent4/quadav);
297  }
298 
299 // // // cout << "Dividing histograms" << "\n";
300 
301  run1_low_down_1_hist->Divide(run2_low_down_1_hist);
302  run1_low_down_2_hist->Divide(run2_low_down_2_hist);
303  run1_low_down_3_hist->Divide(run2_low_down_3_hist);
304  run1_low_down_4_hist->Divide(run2_low_down_4_hist);
305 
306  cout << "Histograms divided" << "\n";
307 
308  run1_low_down_1_hist->SetMinimum(0.8);
309  run1_low_down_1_hist->SetMaximum(1.2);
310  run1_low_down_2_hist->SetMinimum(0.8);
311  run1_low_down_2_hist->SetMaximum(1.2);
312  run1_low_down_3_hist->SetMinimum(0.8);
313  run1_low_down_3_hist->SetMaximum(1.2);
314  run1_low_down_4_hist->SetMinimum(0.8);
315  run1_low_down_4_hist->SetMaximum(1.2);
316 
317 
318 // run1_low_down_1_hist->SetMaximum(run1_low_down_1_hist->GetBinContent(run1_low_down_1_hist->GetMaximumBin())*1.05);
319 // run1_low_down_1_hist->SetMinimum(run1_low_down_1_hist->GetMinimum(0.1)*0.95);
320 //
321 // run1_low_down_2_hist->SetMaximum(run1_low_down_2_hist->GetBinContent(run1_low_down_2_hist->GetMaximumBin())*1.05);
322 // run1_low_down_2_hist->SetMinimum(run1_low_down_2_hist->GetMinimum(0.1)*0.95);
323 //
324 // run1_low_down_3_hist->SetMaximum(run1_low_down_3_hist->GetBinContent(run1_low_down_3_hist->GetMaximumBin())*1.01);
325 // run1_low_down_3_hist->SetMinimum(run1_low_down_3_hist->GetMinimum(0.1)*0.95);
326 //
327 // run1_low_down_4_hist->SetMaximum(run1_low_down_4_hist->GetBinContent(run1_low_down_4_hist->GetMaximumBin())*1.01);
328 // run1_low_down_4_hist->SetMinimum(run1_low_down_4_hist->GetMinimum(0.1)*0.95);
329 
330 
331 ///////////////////////////////////////////////////////////////////////////
332  TCanvas *c2 = new TCanvas("c2","c2 pedsubpeak ",200,10,1200,1200);
333  c2->Divide(2,2);
334 
335  TVirtualPad *c2_1 = c2->cd(1);
336  c2_1->SetBorderMode(0);
337  c2_1->SetFillColor(0);
338 
339  c2_1->SetGridx();
340  c2_1->SetGridy();
341  c2_1->SetBorderMode(0);
342  c2_1->SetFillColor(0);
343 
344  if (errorbars ==0) {run1_low_down_1_hist->Draw("hist p");}
345  else {run1_low_down_1_hist->Draw("E1 X0");}
346  run1_low_down_1_hist->SetMarkerColor(2);
347  run1_low_down_1_hist->SetMarkerStyle(2);
348 
349 
350  sprintf(string,"Run ratio to reference");
351 // sprintf(string,"Run %05d ratio to reference",runnumber1);
352  TLatex *t1 = new TLatex(0.15,0.92,string);
353  t1->SetNDC();
354  t1->SetTextSize(0.03);
355  t1->Draw();
356 
357 ///////////////////////////////////////////////////////////////////////////
358  TVirtualPad *c2_2 = c2->cd(2);
359  c2_2->SetBorderMode(0);
360  c2_2->SetFillColor(0);
361 
362  c2_2->SetGridx();
363  c2_2->SetGridy();
364  c2_2->SetBorderMode(0);
365  c2_2->SetFillColor(0);
366 
367  if (errorbars ==0) {run1_low_down_2_hist->Draw("hist p");}
368  else {run1_low_down_2_hist->Draw("E1 X0");}
369  run1_low_down_2_hist->SetMarkerColor(2);
370  run1_low_down_2_hist->SetMarkerStyle(2);
371 
372 ///////////////////////////////////////////////////////////////////////////
373  TVirtualPad *c2_3 = c2->cd(3);
374  c2_3->SetBorderMode(0);
375  c2_3->SetFillColor(0);
376 
377 
378  c2_3->SetGridx();
379  c2_3->SetGridy();
380  c2_3->SetBorderMode(0);
381  c2_3->SetFillColor(0);
382 
383  if (errorbars ==0) {run1_low_down_3_hist->Draw("hist p");}
384  else {run1_low_down_3_hist->Draw("E1 X0");}
385  run1_low_down_3_hist->SetMarkerColor(2);
386  run1_low_down_3_hist->SetMarkerStyle(2);
387 
388  ///////////////////////////////////////////////////////////////////////////
389  TVirtualPad *c2_4 = c2->cd(4);
390  c2_4->SetBorderMode(0);
391  c2_4->SetFillColor(0);
392 
393  c2_4->SetGridx();
394  c2_4->SetGridy();
395  c2_4->SetBorderMode(0);
396  c2_4->SetFillColor(0);
397 
398  if (errorbars ==0) {run1_low_down_4_hist->Draw("hist p");}
399  else {run1_low_down_4_hist->Draw("E1 X0");}
400  run1_low_down_4_hist->SetMarkerColor(2);
401  run1_low_down_4_hist->SetMarkerStyle(2);
402 
403 ///////////////////////////////////////////////////////////////////////////
404 
405 // sprintf(string,"bcalled_lowdown_quadavg.pdf");
406 // sprintf(string,"bcalled_%05d_lowdown.pdf",runnumber1);
407 // c2->SaveAs(string);
408 
409 //gApplication->Terminate();
410 }
411 
void Plot_BCAL_LED_Ratio_low_down_quadavg(string infilename="hd_root.root", int run=20000)
char string[256]
sprintf(text,"Post KinFit Cut")
TString filename
TF1 * f
Definition: FitGains.C:21
Double_t c2[2][NMODULES]
Definition: tw_corr.C:69
TLatex * t1
TFile * GetReferenceFile(Int_t run, TString variation="default")
void split(const std::string &s, char delim, std::vector< std::string > &elems)
printf("string=%s", string)