Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Plot_BCAL_LED_Ratio_high_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_high_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_high_down_1 = NULL;
84  TProfile *run1_high_down_2 = NULL;
85  TProfile *run1_high_down_3 = NULL;
86  TProfile *run1_high_down_4 = NULL;
87 
88  TProfile *run2_high_down_1 = NULL;
89  TProfile *run2_high_down_2 = NULL;
90  TProfile *run2_high_down_3 = NULL;
91  TProfile *run2_high_down_4 = NULL;
92 
93  TH1D *run1_high_down_1_hist = NULL;
94  TH1D *run1_high_down_2_hist = NULL;
95  TH1D *run1_high_down_3_hist = NULL;
96  TH1D *run1_high_down_4_hist = NULL;
97 
98  TH1D *run2_high_down_1_hist = NULL;
99  TH1D *run2_high_down_2_hist = NULL;
100  TH1D *run2_high_down_3_hist = NULL;
101  TH1D *run2_high_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_vevent4 = (TProfile*)run1in->Get("bcalLED/sector1_up_peak_vevent4");
110 // if (sector1_up_peak_vevent4->FindLastBinAbove(0,1) > 100)
111  run1_high_down_1 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_1_peak_vchannel");
112 
113 // TProfile *sector2_up_peak_vevent4 = (TProfile*)run1in->Get("bcalLED/sector2_up_peak_vevent4");
114 // if (sector2_up_peak_vevent4->FindLastBinAbove(0,1) > 100)
115  run1_high_down_2 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_2_peak_vchannel");
116 
117 // TProfile *sector3_up_peak_vevent4 = (TProfile*)run1in->Get("bcalLED/sector3_up_peak_vevent4");
118 // if (sector3_up_peak_vevent4->FindLastBinAbove(0,1) > 100)
119  run1_high_down_3 = (TProfile*)run1in->Get("bcalLED/high_bias_down_sector_3_peak_vchannel");
120 
121 // TProfile *sector4_up_peak_vevent4 = (TProfile*)run1in->Get("bcalLED/sector4_up_peak_vevent4");
122 // if (sector4_up_peak_vevent4->FindLastBinAbove(0,1) > 100)
123  run1_high_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_high_down_1 = (TProfile*)run2in->Get("bcalLED/high_bias_down_sector_1_peak_vchannel");
131  run2_high_down_2 = (TProfile*)run2in->Get("bcalLED/high_bias_down_sector_2_peak_vchannel");
132  run2_high_down_3 = (TProfile*)run2in->Get("bcalLED/high_bias_down_sector_3_peak_vchannel");
133  run2_high_down_4 = (TProfile*)run2in->Get("bcalLED/high_bias_down_sector_4_peak_vchannel");
134 
135  cout << "input profiles, projecting into histograms" << "\n";
136 
137  run1_high_down_1_hist = run1_high_down_1->ProjectionX("run1_high_down_1_projectionx");
138  run1_high_down_2_hist = run1_high_down_2->ProjectionX("run1_high_down_2_projectionx");
139  run1_high_down_3_hist = run1_high_down_3->ProjectionX("run1_high_down_3_projectionx");
140  run1_high_down_4_hist = run1_high_down_4->ProjectionX("run1_high_down_4_projectionx");
141 
142  run2_high_down_1_hist = run2_high_down_1->ProjectionX("run2_high_down_1_projectionx");
143  run2_high_down_2_hist = run2_high_down_2->ProjectionX("run2_high_down_2_projectionx");
144  run2_high_down_3_hist = run2_high_down_3->ProjectionX("run2_high_down_3_projectionx");
145  run2_high_down_4_hist = run2_high_down_4->ProjectionX("run2_high_down_4_projectionx");
146 
147 
148  cout << "profiles projected into histograms" << "\n";
149 
150  run1_high_down_1_hist->SetTitle("6.25v Downstream sector 1");
151  run1_high_down_2_hist->SetTitle("6.25v Downstream sector 2");
152  run1_high_down_3_hist->SetTitle("6.25v Downstream sector 3");
153  run1_high_down_4_hist->SetTitle("6.25v Downstream sector 4");
154 
155  cout << "Dividing over quadrant average" << "\n";
156 
157  cout << "Dividing over quadrant average" << "\n";
158 
159  double quad1sector1avgrun1 = run1_high_down_1_hist->Integral(0,191);
160  double quad2sector1avgrun1 = run1_high_down_1_hist->Integral(192,383);
161  double quad3sector1avgrun1 = run1_high_down_1_hist->Integral(384,575);
162  double quad4sector1avgrun1 = run1_high_down_1_hist->Integral(576,767);
163  double quad5sector1avgrun1 = run1_high_down_1_hist->Integral(768,959);
164  double quad6sector1avgrun1 = run1_high_down_1_hist->Integral(960,1151);
165  double quad7sector1avgrun1 = run1_high_down_1_hist->Integral(1152,1343);
166  double quad8sector1avgrun1 = run1_high_down_1_hist->Integral(1344,1535);
167 
168  double quad1sector2avgrun1 = run1_high_down_2_hist->Integral(0,191);
169  double quad2sector2avgrun1 = run1_high_down_2_hist->Integral(192,383);
170  double quad3sector2avgrun1 = run1_high_down_2_hist->Integral(384,575);
171  double quad4sector2avgrun1 = run1_high_down_2_hist->Integral(576,767);
172  double quad5sector2avgrun1 = run1_high_down_2_hist->Integral(768,959);
173  double quad6sector2avgrun1 = run1_high_down_2_hist->Integral(960,1151);
174  double quad7sector2avgrun1 = run1_high_down_2_hist->Integral(1152,1343);
175  double quad8sector2avgrun1 = run1_high_down_2_hist->Integral(1344,1535);
176 
177  double quad1sector3avgrun1 = run1_high_down_3_hist->Integral(0,191);
178  double quad2sector3avgrun1 = run1_high_down_3_hist->Integral(192,383);
179  double quad3sector3avgrun1 = run1_high_down_3_hist->Integral(384,575);
180  double quad4sector3avgrun1 = run1_high_down_3_hist->Integral(576,767);
181  double quad5sector3avgrun1 = run1_high_down_3_hist->Integral(768,959);
182  double quad6sector3avgrun1 = run1_high_down_3_hist->Integral(960,1151);
183  double quad7sector3avgrun1 = run1_high_down_3_hist->Integral(1152,1343);
184  double quad8sector3avgrun1 = run1_high_down_3_hist->Integral(1344,1535);
185 
186  double quad1sector4avgrun1 = run1_high_down_4_hist->Integral(0,191);
187  double quad2sector4avgrun1 = run1_high_down_4_hist->Integral(192,383);
188  double quad3sector4avgrun1 = run1_high_down_4_hist->Integral(384,575);
189  double quad4sector4avgrun1 = run1_high_down_4_hist->Integral(576,767);
190  double quad5sector4avgrun1 = run1_high_down_4_hist->Integral(768,959);
191  double quad6sector4avgrun1 = run1_high_down_4_hist->Integral(960,1151);
192  double quad7sector4avgrun1 = run1_high_down_4_hist->Integral(1152,1343);
193  double quad8sector4avgrun1 = run1_high_down_4_hist->Integral(1344,1535);
194 
195  double quad1avgrun1 = quad1sector1avgrun1 + quad1sector2avgrun1 + quad1sector3avgrun1 + quad1sector4avgrun1;
196  double quad2avgrun1 = quad2sector1avgrun1 + quad2sector2avgrun1 + quad2sector3avgrun1 + quad2sector4avgrun1;
197  double quad3avgrun1 = quad3sector1avgrun1 + quad3sector2avgrun1 + quad3sector3avgrun1 + quad3sector4avgrun1;
198  double quad4avgrun1 = quad4sector1avgrun1 + quad4sector2avgrun1 + quad4sector3avgrun1 + quad4sector4avgrun1;
199  double quad5avgrun1 = quad5sector1avgrun1 + quad5sector2avgrun1 + quad5sector3avgrun1 + quad5sector4avgrun1;
200  double quad6avgrun1 = quad6sector1avgrun1 + quad6sector2avgrun1 + quad6sector3avgrun1 + quad6sector4avgrun1;
201  double quad7avgrun1 = quad7sector1avgrun1 + quad7sector2avgrun1 + quad7sector3avgrun1 + quad7sector4avgrun1;
202  double quad8avgrun1 = quad8sector1avgrun1 + quad8sector2avgrun1 + quad8sector3avgrun1 + quad8sector4avgrun1;
203 
204  double quadav, bincontent1, bincontent2, bincontent3, bincontent4;
205 
206  for (int chid=0; chid < 1536 ; chid++)
207  {
208  quadav=0;
209  bincontent1=0;
210  bincontent2=0;
211  bincontent3=0;
212  bincontent4=0;
213  if (chid < 192 && chid > -1) {quadav = quad1avgrun1;}
214  if (chid < 384 && chid > 191) {quadav = quad2avgrun1;}
215  if (chid < 576 && chid > 383) {quadav = quad3avgrun1;}
216  if (chid < 768 && chid > 575) {quadav = quad4avgrun1;}
217  if (chid < 960 && chid > 767) {quadav = quad5avgrun1;}
218  if (chid < 1152 && chid > 959) {quadav = quad6avgrun1;}
219  if (chid < 1344 && chid > 1151) {quadav = quad7avgrun1;}
220  if (chid < 1536 && chid > 1343) {quadav = quad8avgrun1;}
221  bincontent1 = run1_high_down_1_hist->GetBinContent(chid);
222  bincontent2 = run1_high_down_2_hist->GetBinContent(chid);
223  bincontent3 = run1_high_down_3_hist->GetBinContent(chid);
224  bincontent4 = run1_high_down_4_hist->GetBinContent(chid);
225  run1_high_down_1_hist->SetBinContent(chid, bincontent1/quadav);
226  run1_high_down_2_hist->SetBinContent(chid, bincontent2/quadav);
227  run1_high_down_3_hist->SetBinContent(chid, bincontent3/quadav);
228  run1_high_down_4_hist->SetBinContent(chid, bincontent4/quadav);
229  }
230 
231  double quad1sector1avgrun2 = run2_high_down_1_hist->Integral(0,191);
232  double quad2sector1avgrun2 = run2_high_down_1_hist->Integral(192,383);
233  double quad3sector1avgrun2 = run2_high_down_1_hist->Integral(384,575);
234  double quad4sector1avgrun2 = run2_high_down_1_hist->Integral(576,767);
235  double quad5sector1avgrun2 = run2_high_down_1_hist->Integral(768,959);
236  double quad6sector1avgrun2 = run2_high_down_1_hist->Integral(960,1151);
237  double quad7sector1avgrun2 = run2_high_down_1_hist->Integral(1152,1343);
238  double quad8sector1avgrun2 = run2_high_down_1_hist->Integral(1344,1535);
239 
240  double quad1sector2avgrun2 = run2_high_down_2_hist->Integral(0,191);
241  double quad2sector2avgrun2 = run2_high_down_2_hist->Integral(192,383);
242  double quad3sector2avgrun2 = run2_high_down_2_hist->Integral(384,575);
243  double quad4sector2avgrun2 = run2_high_down_2_hist->Integral(576,767);
244  double quad5sector2avgrun2 = run2_high_down_2_hist->Integral(768,959);
245  double quad6sector2avgrun2 = run2_high_down_2_hist->Integral(960,1151);
246  double quad7sector2avgrun2 = run2_high_down_2_hist->Integral(1152,1343);
247  double quad8sector2avgrun2 = run2_high_down_2_hist->Integral(1344,1535);
248 
249  double quad1sector3avgrun2 = run2_high_down_3_hist->Integral(0,191);
250  double quad2sector3avgrun2 = run2_high_down_3_hist->Integral(192,383);
251  double quad3sector3avgrun2 = run2_high_down_3_hist->Integral(384,575);
252  double quad4sector3avgrun2 = run2_high_down_3_hist->Integral(576,767);
253  double quad5sector3avgrun2 = run2_high_down_3_hist->Integral(768,959);
254  double quad6sector3avgrun2 = run2_high_down_3_hist->Integral(960,1151);
255  double quad7sector3avgrun2 = run2_high_down_3_hist->Integral(1152,1343);
256  double quad8sector3avgrun2 = run2_high_down_3_hist->Integral(1344,1535);
257 
258  double quad1sector4avgrun2 = run2_high_down_4_hist->Integral(0,191);
259  double quad2sector4avgrun2 = run2_high_down_4_hist->Integral(192,383);
260  double quad3sector4avgrun2 = run2_high_down_4_hist->Integral(384,575);
261  double quad4sector4avgrun2 = run2_high_down_4_hist->Integral(576,767);
262  double quad5sector4avgrun2 = run2_high_down_4_hist->Integral(768,959);
263  double quad6sector4avgrun2 = run2_high_down_4_hist->Integral(960,1151);
264  double quad7sector4avgrun2 = run2_high_down_4_hist->Integral(1152,1343);
265  double quad8sector4avgrun2 = run2_high_down_4_hist->Integral(1344,1535);
266 
267  double quad1avgrun2 = quad1sector1avgrun2 + quad1sector2avgrun2 + quad1sector3avgrun2 + quad1sector4avgrun2;
268  double quad2avgrun2 = quad2sector1avgrun2 + quad2sector2avgrun2 + quad2sector3avgrun2 + quad2sector4avgrun2;
269  double quad3avgrun2 = quad3sector1avgrun2 + quad3sector2avgrun2 + quad3sector3avgrun2 + quad3sector4avgrun2;
270  double quad4avgrun2 = quad4sector1avgrun2 + quad4sector2avgrun2 + quad4sector3avgrun2 + quad4sector4avgrun2;
271  double quad5avgrun2 = quad5sector1avgrun2 + quad5sector2avgrun2 + quad5sector3avgrun2 + quad5sector4avgrun2;
272  double quad6avgrun2 = quad6sector1avgrun2 + quad6sector2avgrun2 + quad6sector3avgrun2 + quad6sector4avgrun2;
273  double quad7avgrun2 = quad7sector1avgrun2 + quad7sector2avgrun2 + quad7sector3avgrun2 + quad7sector4avgrun2;
274  double quad8avgrun2 = quad8sector1avgrun2 + quad8sector2avgrun2 + quad8sector3avgrun2 + quad8sector4avgrun2;
275 
276  for (int chid=0; chid < 1536 ; chid++)
277  {
278  quadav=0;
279  bincontent1=0;
280  bincontent2=0;
281  bincontent3=0;
282  bincontent4=0;
283  if (chid < 192 && chid > -1) {quadav = quad1avgrun2;}
284  if (chid < 384 && chid > 191) {quadav = quad2avgrun2;}
285  if (chid < 576 && chid > 383) {quadav = quad3avgrun2;}
286  if (chid < 768 && chid > 575) {quadav = quad4avgrun2;}
287  if (chid < 960 && chid > 767) {quadav = quad5avgrun2;}
288  if (chid < 1152 && chid > 959) {quadav = quad6avgrun2;}
289  if (chid < 1344 && chid > 1151) {quadav = quad7avgrun2;}
290  if (chid < 1536 && chid > 1343) {quadav = quad8avgrun2;}
291  bincontent1 = run2_high_down_1_hist->GetBinContent(chid);
292  bincontent2 = run2_high_down_2_hist->GetBinContent(chid);
293  bincontent3 = run2_high_down_3_hist->GetBinContent(chid);
294  bincontent4 = run2_high_down_4_hist->GetBinContent(chid);
295  run2_high_down_1_hist->SetBinContent(chid, bincontent1/quadav);
296  run2_high_down_2_hist->SetBinContent(chid, bincontent2/quadav);
297  run2_high_down_3_hist->SetBinContent(chid, bincontent3/quadav);
298  run2_high_down_4_hist->SetBinContent(chid, bincontent4/quadav);
299  }
300 
301 
302  cout << "Dividing histograms" << "\n";
303 
304  run1_high_down_1_hist->Divide(run2_high_down_1_hist);
305  run1_high_down_2_hist->Divide(run2_high_down_2_hist);
306  run1_high_down_3_hist->Divide(run2_high_down_3_hist);
307  run1_high_down_4_hist->Divide(run2_high_down_4_hist);
308 
309  cout << "Histograms divided" << "\n";
310 
311  run1_high_down_1_hist->SetMinimum(0.8);
312  run1_high_down_1_hist->SetMaximum(1.2);
313  run1_high_down_2_hist->SetMinimum(0.8);
314  run1_high_down_2_hist->SetMaximum(1.2);
315  run1_high_down_3_hist->SetMinimum(0.8);
316  run1_high_down_3_hist->SetMaximum(1.2);
317  run1_high_down_4_hist->SetMinimum(0.8);
318  run1_high_down_4_hist->SetMaximum(1.2);
319 
320 // run1_high_down_1_hist->SetMaximum(run1_high_down_1_hist->GetBinContent(run1_high_down_1_hist->GetMaximumBin())*1.05);
321 // run1_high_down_1_hist->SetMinimum(run1_high_down_1_hist->GetMinimum(0.1)*0.95);
322 //
323 // run1_high_down_2_hist->SetMaximum(run1_high_down_2_hist->GetBinContent(run1_high_down_2_hist->GetMaximumBin())*1.05);
324 // run1_high_down_2_hist->SetMinimum(run1_high_down_2_hist->GetMinimum(0.1)*0.95);
325 //
326 // run1_high_down_3_hist->SetMaximum(run1_high_down_3_hist->GetBinContent(run1_high_down_3_hist->GetMaximumBin())*1.01);
327 // run1_high_down_3_hist->SetMinimum(run1_high_down_3_hist->GetMinimum(0.1)*0.95);
328 //
329 // run1_high_down_4_hist->SetMaximum(run1_high_down_4_hist->GetBinContent(run1_high_down_4_hist->GetMaximumBin())*1.01);
330 // run1_high_down_4_hist->SetMinimum(run1_high_down_4_hist->GetMinimum(0.1)*0.95);
331 
332 
333 ///////////////////////////////////////////////////////////////////////////
334  TCanvas *c4 = new TCanvas("c4","c4 pedsubpeak ",200,10,1200,1200);
335  c4->Divide(2,2);
336 
337  TVirtualPad *c4_1 = c4->cd(1);
338  c4_1->SetBorderMode(0);
339  c4_1->SetFillColor(0);
340 
341  c4_1->SetGridx();
342  c4_1->SetGridy();
343  c4_1->SetBorderMode(0);
344  c4_1->SetFillColor(0);
345 
346 
347 
348  if (errorbars ==0) {run1_high_down_1_hist->Draw("hist p");}
349  else {run1_high_down_1_hist->Draw("E1 X0");}
350  run1_high_down_1_hist->SetMarkerColor(2);
351  run1_high_down_1_hist->SetMarkerStyle(2);
352 
353  sprintf(string,"Run ratio to reference");
354 // sprintf(string,"Run %05d ratio to reference",runnumber1);
355  TLatex *t1 = new TLatex(0.15,0.92,string);
356  t1->SetNDC();
357  t1->SetTextSize(0.03);
358  t1->Draw();
359 
360 
361 ///////////////////////////////////////////////////////////////////////////
362  TVirtualPad *c4_2 = c4->cd(2);
363  c4_2->SetBorderMode(0);
364  c4_2->SetFillColor(0);
365 
366  c4_2->SetGridx();
367  c4_2->SetGridy();
368  c4_2->SetBorderMode(0);
369  c4_2->SetFillColor(0);
370 
371 
372 
373  if (errorbars ==0) {run1_high_down_2_hist->Draw("hist p");}
374  else {run1_high_down_2_hist->Draw("E1 X0");}
375  run1_high_down_2_hist->SetMarkerColor(2);
376  run1_high_down_2_hist->SetMarkerStyle(2);
377 
378 ///////////////////////////////////////////////////////////////////////////
379  TVirtualPad *c4_3 = c4->cd(3);
380  c4_3->SetBorderMode(0);
381  c4_3->SetFillColor(0);
382 
383  c4_3->SetGridx();
384  c4_3->SetGridy();
385  c4_3->SetBorderMode(0);
386  c4_3->SetFillColor(0);
387 
388 
389 
390  if (errorbars ==0) {run1_high_down_3_hist->Draw("hist p");}
391  else {run1_high_down_3_hist->Draw("E1 X0");}
392  run1_high_down_3_hist->SetMarkerColor(2);
393  run1_high_down_3_hist->SetMarkerStyle(2);
394 
395 ///////////////////////////////////////////////////////////////////////////
396  TVirtualPad *c4_4 = c4->cd(4);
397  c4_4->SetBorderMode(0);
398  c4_4->SetFillColor(0);
399 
400 
401  c4_4->SetGridx();
402  c4_4->SetGridy();
403  c4_4->SetBorderMode(0);
404  c4_4->SetFillColor(0);
405 
406 
407 
408  if (errorbars ==0) {run1_high_down_4_hist->Draw("hist p");}
409  else {run1_high_down_4_hist->Draw("E1 X0");}
410  run1_high_down_4_hist->SetMarkerColor(2);
411  run1_high_down_4_hist->SetMarkerStyle(2);
412 
413 
414  ///////////////////////////////////////////////////////////////////////////////////////////
415 
416 
417 
418 // sprintf(string,"bcalled_highdown.pdf");
419 // sprintf(string,"bcalled_%05d_highdown.pdf",runnumber1);
420 // c4->SaveAs(string);
421 
422 //gApplication->Terminate();
423 }
424 
void Plot_BCAL_LED_Ratio_high_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
TLatex * t1
TFile * GetReferenceFile(Int_t run, TString variation="default")
void split(const std::string &s, char delim, std::vector< std::string > &elems)
TCanvas * c4
printf("string=%s", string)