nue_background_decomposition.C
Go to the documentation of this file.
1 //Program writen by Prabhjot Singh on August 25, 2016 at 11:24 am
2 //
3 //Purpose:
4 //1. Make ND data over MC histograms and their ratios for the nue selected events.
5 //2. Make the proportonal decomposition of the ratio for three major backgrounds.
6 //3. Make the FD prediction for each major background.
7 // Three major backgrounds for the nue analysis are
8 // a. beam intrisic nue: nue to nue oscillations
9 // b. numu CC: numu to numu oscillations
10 // c. NC NC to NC oscillations
11 //
12 //
13 
14 #include<Header.h>
15 #include<HistogramAttr.h>
16 
17 //root libraries
18 #include "vector.h"
19 
21 
22  //disable stat box.
23  gStyle->SetOptStat(" ");
24 
25  TString det_type[] = {"Near", };
26  TString interaction_type[] = {"NuECC", "NuMuCC", "NC" };
27  TString selection_type[] = {"NuESel" }; //replace NuMuSel by NuESel once we will have nue selected events.
28  TString file_type[] = {"Beam" };
29  TString pid[] = {"LowPID", "MidPID", "HighPID" };
30 
31  bool isMC;
32 
33  TString epoch;
34 
35  TString dir;
36  TString filename;
37  TString rootfile;
38  TString histdir;
39  TString histname_reco;
40  TString histname_true;
41  TString histname_recotrue;
42  TString MC;
43  TString Data;
44 
45  Float_t margin = 0.15;
46 
47  static const int bins = 120;
48 
49  double datasum[bins] = {0.};
50  double mcrecosum_total[bins] = {0.};
51  double mcrecosum_total_clone[bins] = {0.};
52  double mcrecosum_nue[bins] = {0.};
53  double mcrecosum_numu[bins] = {0.};
54  double mcrecosum_NC[bins] = {0.};
55  double binVal[bins] = {0.};
56  double mcrecosum_nuetototal_ratio[bins] = {0.};
57  double mcrecosum_numutototal_ratio[bins] = {0.};
58  double mcrecosum_NCtototal_ratio[bins] = {0.};
59  double mcrecosum_nuetototal_ratio_error[bins] = {0.};
60  double mcrecosum_numutototal_ratio_error[bins] = {0.};
61  double mcrecosum_NCtototal_ratio_error[bins] = {0.};
62  double datamc_ratio[bins] = {0.};
63  double correction_nue[bins] = {0.};
64  double correction_numu[bins] = {0.};
65  double correction_NC[bins] = {0.};
66 
67 
68  TH1F* h_nddata = new TH1F("h_data", "", 120, 0, 30);
69  TH1F* h_mcrecosum_total = new TH1F("h_mcrecosum_total", "", 120, 0, 30);
70  TH1F* h_mcrecosum_nue = new TH1F("h_mcrecosum_nue", "", 120, 0, 30);
71  TH1F* h_mcrecosum_numu = new TH1F("h_mcrecosum_numu", "", 120, 0, 30);
72  TH1F* h_mcrecosum_NC = new TH1F("h_mcrecosum_NC", "", 120, 0, 30);
73  TH1F* h_mcrecosum_nuetototal_ratio = new TH1F("h_mcrecosum_nuetototal_ratio", "", 120, 0, 30);
74  TH1F* h_mcrecosum_numutototal_ratio = new TH1F("h_mcrecosum_numutototal_ratio", "", 120, 0, 30);
75  TH1F* h_mcrecosum_NCtototal_ratio = new TH1F("h_mcrecosum_NCtototal_ratio", "", 120, 0, 30);
76  TH1F* h_datamc_ratio = new TH1F("h_datamc_ratio", "", 120, 0, 30);
77  TH1F* h_correction_nue = new TH1F("h_correction_nue", "", 120, 0, 30);
78  TH1F* h_correction_numu = new TH1F("h_correction_numu", "", 120, 0, 30);
79  TH1F* h_correction_NC = new TH1F("h_correction_NC", "", 120, 0, 30);
80 
81  //directoy path where the root file with histograms exists
82  dir = "/nova/ana/users/prabhjot/FNEX/nue_analysis/realdata/";
83  //name of the root file that has all the histograms
84  filename = "fnex_plotpoint_hist.root";
85 
86  rootfile = dir+filename;
87 
88  //name of the histogram directory
89  histdir = "plot/SkimmedListsConcatenatedByEpoch/";
90 
91  //initial name of the reco energy histograms
92  histname_reco = "neutrinoE";
93 
94  //combined epoch name in the histogram names
95  epoch = "Epoch0z";
96 
97  //MC histogram
98  MC = "MC";
99 
100  //Data histogram
101  Data = "Data";
102 
103  //Open root file
104  TFile* f = new TFile(rootfile, "read");
105  f->cd();
106 
107  //--------------------------------------------------------------------------//
108 
109  //ND data reco energy histogram
110  TH1F* hist_nddata_lpid_reco = (TH1F*)f->Get(histdir+histname_reco+Data+det_type[0]+selection_type[0]+pid[0]+epoch);
111  TH1F* hist_nddata_mpid_reco = (TH1F*)f->Get(histdir+histname_reco+Data+det_type[0]+selection_type[0]+pid[1]+epoch);
112  TH1F* hist_nddata_hpid_reco = (TH1F*)f->Get(histdir+histname_reco+Data+det_type[0]+selection_type[0]+pid[2]+epoch);
113 
114  //ND MC for the reco energy for Beam, nue CC, nue selection and near detector for the Low PID
115  TH1F* hist_ndMCnue_lpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[0]+det_type[0]+selection_type[0]+pid[0]+epoch);
116  TH1F* hist_ndMCnue_mpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[0]+det_type[0]+selection_type[0]+pid[1]+epoch);
117  TH1F* hist_ndMCnue_hpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[0]+det_type[0]+selection_type[0]+pid[2]+epoch);
118 
119  //ND MC for the reco energy for Beam, numu CC, nue selection and near detector for the Low PID
120  TH1F* hist_ndMCnumu_lpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[1]+det_type[0]+selection_type[0]+pid[0]+epoch);
121  TH1F* hist_ndMCnumu_mpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[1]+det_type[0]+selection_type[0]+pid[1]+epoch);
122  TH1F* hist_ndMCnumu_hpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[1]+det_type[0]+selection_type[0]+pid[2]+epoch);
123 
124  //ND MC for the reco energy for Beam, NC, nue selection and near detector for the Low PID
125  TH1F* hist_ndMCNC_lpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[2]+det_type[0]+selection_type[0]+pid[0]+epoch);
126  TH1F* hist_ndMCNC_mpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[2]+det_type[0]+selection_type[0]+pid[1]+epoch);
127  TH1F* hist_ndMCNC_hpid_reco = (TH1F*)f->Get(histdir+histname_reco+MC+file_type[0]+interaction_type[2]+det_type[0]+selection_type[0]+pid[2]+epoch);
128 
129  std::cout << " " << std::endl;
130  std::cout << "Histogram names. " << std::endl;
131  std::cout << "ND Data = " << hist_nddata_lpid_reco->GetName() << std::endl;
132  std::cout << "ND MC nue CC = " << hist_ndMCnue_lpid_reco->GetName() << std::endl;
133  std::cout << "ND MC numu CC = " << hist_ndMCnumu_lpid_reco->GetName() << std::endl;
134  std::cout << "ND MC NC = " << hist_ndMCNC_lpid_reco->GetName() << std::endl;
135 
136  //--------------LOOP 1---START--------------------------------------//
137  //loop over x axis bins to add them for all the epochs
138  //In this case I have only one epoch.
139  for(int k = 1; k < bins+1; ++k){
140  datasum[k-1] += (hist_nddata_lpid_reco->GetBinContent(k) + hist_nddata_mpid_reco->GetBinContent(k) + hist_nddata_hpid_reco->GetBinContent(k));
141  mcrecosum_nue[k-1] += (hist_ndMCnue_lpid_reco->GetBinContent(k) + hist_ndMCnue_mpid_reco->GetBinContent(k) + hist_ndMCnue_hpid_reco->GetBinContent(k));
142  mcrecosum_numu[k-1] += (hist_ndMCnumu_lpid_reco->GetBinContent(k) + hist_ndMCnumu_mpid_reco->GetBinContent(k) + hist_ndMCnumu_hpid_reco->GetBinContent(k));
143  mcrecosum_NC[k-1] += (hist_ndMCNC_lpid_reco->GetBinContent(k) + hist_ndMCNC_mpid_reco->GetBinContent(k) + hist_ndMCNC_hpid_reco->GetBinContent(k));
144  }//end of loop over x axis bins
145  //--------------LOOP 1---END---------------------------------------//
146  //--------------LOOP 2---START--------------------------------------//
147  //loop over bins of nue, numu and NC to add and fill total MC histogram
148  for(int k = 1; k < bins+1; ++k){
149  mcrecosum_total[k-1] += (mcrecosum_nue[k-1] + mcrecosum_numu[k-1] + mcrecosum_NC[k-1]);
150  }//end of loop over k bins
151  //--------------LOOP 2---END--------------------------------------//
152 
153  //--------------LOOP N---START--------------------------------------//
154  for(int k = 1; k < bins+1; ++k){
155  h_nddata->SetBinContent(k, datasum[k-1]);
156  h_mcrecosum_nue->SetBinContent(k, mcrecosum_nue[k-1]);
157  h_mcrecosum_numu->SetBinContent(k, mcrecosum_numu[k-1]);
158  h_mcrecosum_NC->SetBinContent(k, mcrecosum_NC[k-1]);
159  h_mcrecosum_total->SetBinContent(k, mcrecosum_total[k-1]);
160 
161  if(mcrecosum_total[k-1]==0){
162  mcrecosum_nuetototal_ratio[k-1] = 0.;
163  mcrecosum_numutototal_ratio[k-1] = 0.;
164  mcrecosum_NCtototal_ratio[k-1] = 0.;
165  }
166  else{
167  mcrecosum_nuetototal_ratio[k-1] = mcrecosum_nue[k-1]/mcrecosum_total[k-1];
168  mcrecosum_numutototal_ratio[k-1] = mcrecosum_numu[k-1]/mcrecosum_total[k-1];
169  mcrecosum_NCtototal_ratio[k-1] = mcrecosum_NC[k-1]/mcrecosum_total[k-1];
170  }
171  h_mcrecosum_nuetototal_ratio->SetBinContent(k,mcrecosum_nuetototal_ratio[k-1]);
172  h_mcrecosum_numutototal_ratio->SetBinContent(k,mcrecosum_numutototal_ratio[k-1]);
173  h_mcrecosum_NCtototal_ratio->SetBinContent(k,mcrecosum_NCtototal_ratio[k-1]);
174 
175  //if(mcrecosum_total[k-1]==0) continue;
176  // std::cout << "Bin = " << k-1 << ", nue = " << mcrecosum_nue[k-1] << ", numu = " << mcrecosum_numu[k-1] << " , NC = " << mcrecosum_NC[k-1] << " and total MC = " << mcrecosum_total[k-1] << std::endl;
177  // std::cout << "Bin = " << k-1 << ", nue ratio = " << h_mcrecosum_nuetototal_ratio->GetBinContent(k) << ", numu ratio = " << h_mcrecosum_numutototal_ratio->GetBinContent(k) << " and NC ratio = " << h_mcrecosum_NCtototal_ratio->GetBinContent(k) << std::endl;
178  // std::cout << " " << std::endl;
179  }//end of loop over k bins
180  //--------------LOOP N---END--------------------------------------//
181 
182  //---------------------------------------------------------------------------------------
183  //Draw Data histogram
184  new TCanvas;
185  gPad->SetLeftMargin(margin);
186  gPad->SetBottomMargin(margin);
187  h_nddata->Draw("HIST");
188  h_nddata->GetXaxis()->SetRangeUser(0, 5);
189  HistogramAttr1D(h_nddata, "E_{#nu}^{reco} (GeV)", "Events");
190  //legends
191  TLegend *leg_data = new TLegend(.57,.67,.84,.86);
192  leg_data->SetBorderSize(0);
193  leg_data->SetFillStyle(0);
194  leg_data->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
195  leg_data->AddEntry(h_nddata, "N^{Data}_{S_{e}} ( E_{#nu}^{reco})");
196  leg_data->Draw();
197  // gPad->Print("Images/nue_background_nddata_"+pid[0]+".pdf");
198  gPad->Print("Images/nue_background_nddata.pdf");
199  //---------------------------------------------------------------------------------------
200  //Draw All MC histograms in same canvas
201  new TCanvas;
202  gPad->SetLeftMargin(margin);
203  gPad->SetBottomMargin(margin);
204  h_mcrecosum_total->Draw("HIST same");
205  h_mcrecosum_nue->Draw("HIST same");
206  h_mcrecosum_numu->Draw("HIST same");
207  h_mcrecosum_NC->Draw("HIST same");
208  if(selection_type[0].CompareTo("NuESel")==0)
209  HistogramAttr1D(h_mcrecosum_total, "E_{#nu}^{reco} (GeV)", "N^{MC}_{S_{e}} Events");
210  else
211  HistogramAttr1D(h_mcrecosum_total, "E_{#nu}^{reco} (GeV)", "N^{MC} Events");
212  h_mcrecosum_total->GetXaxis()->SetRangeUser(0, 5);
213  h_mcrecosum_total->SetLineColor(28);
214  h_mcrecosum_nue->SetLineColor(kRed);
215  h_mcrecosum_numu->SetLineColor(kBlue);
216  h_mcrecosum_NC->SetLineColor(kGreen);
217  //legends
218  TLegend *leg_mc_all = new TLegend(.53,.51,.86,.89);
219  leg_mc_all->SetBorderSize(0);
220  leg_mc_all->SetFillStyle(0);
221  leg_mc_all->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
222  leg_mc_all->AddEntry(h_mcrecosum_total, "Total MC");
223  leg_mc_all->AddEntry(h_mcrecosum_nue, interaction_type[0]+", N^{MC}_{#nu_{e}, S_{e}} (E_{#nu}^{reco})");
224  leg_mc_all->AddEntry(h_mcrecosum_numu, interaction_type[1]+", N^{MC}_{#nu_{#mu}, S_{e}} (E_{#nu}^{reco})");
225  leg_mc_all->AddEntry(h_mcrecosum_NC, interaction_type[2]+", N^{MC}_{NC, S_{e}} (E_{#nu}^{reco})");
226  leg_mc_all->Draw();
227  // gPad->Print("Images/nue_background_ndMC_all_"+pid[0]+".pdf");
228  gPad->Print("Images/nue_background_ndMC_all.pdf");
229  //---------------------------------------------------------------------------------------
230  //Draw All MC ratio histograms in same canvas
231  new TCanvas;
232  gPad->SetLeftMargin(margin);
233  gPad->SetBottomMargin(margin);
234  h_mcrecosum_nuetototal_ratio->Draw("P same");
235  h_mcrecosum_numutototal_ratio->Draw("P same");
236  h_mcrecosum_NCtototal_ratio->Draw("P same");
237  h_mcrecosum_nuetototal_ratio->SetMarkerColor(kRed);
238  HistogramAttr1D(h_mcrecosum_nuetototal_ratio, "E_{#nu}^{reco} (GeV)", "Fraction");
239  h_mcrecosum_numutototal_ratio->SetMarkerColor(kBlue);
240  h_mcrecosum_NCtototal_ratio->SetMarkerColor(kGreen);
241  h_mcrecosum_nuetototal_ratio->GetXaxis()->SetRangeUser(0, 5);
242  h_mcrecosum_nuetototal_ratio->GetYaxis()->SetRangeUser(-0.2, 3.0);
243  h_mcrecosum_nuetototal_ratio->SetMarkerStyle(20);
244  h_mcrecosum_numutototal_ratio->SetMarkerStyle(20);
245  h_mcrecosum_NCtototal_ratio->SetMarkerStyle(20);
246  //legends
247  TLegend *leg_mc_all_ratio = new TLegend(.31,.42,.77,.91);
248  leg_mc_all_ratio->SetBorderSize(0);
249  leg_mc_all_ratio->SetFillStyle(0);
250  leg_mc_all_ratio->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
251  leg_mc_all_ratio->AddEntry(h_mcrecosum_nuetototal_ratio, interaction_type[0] +", N^{MC}_{#nu_{e}, S_{e}}/N^{MC}_{S_{e}} ","p");
252  leg_mc_all_ratio->AddEntry(h_mcrecosum_numutototal_ratio, interaction_type[1]+", N^{MC}_{#nu_{#mu}, S_{e}}/N^{MC}_{S_{e}} ", "p");
253  leg_mc_all_ratio->AddEntry(h_mcrecosum_NCtototal_ratio, interaction_type[2]+", N^{MC}_{NC, S_{e}}/N^{MC}_{S_{e}} ", "p");
254  leg_mc_all_ratio->Draw();
255  // gPad->Print("Images/nue_background_ndMC_all_ratio_"+pid[0]+".pdf");
256  gPad->Print("Images/nue_background_ndMC_all_ratio.pdf");
257  //---------------------------------------------------------------------------------------
258  //Normalization of MC by Data POT
259  TH1F* h_mcrecosum_total_clone = (TH1F*)h_mcrecosum_total->Clone("h_mcrecosum_total_clone");
260 
261  Double_t ratio_dataPOT_MCPOT = h_nddata->Integral()/h_mcrecosum_total_clone->Integral();
262  h_mcrecosum_total_clone->Scale(ratio_dataPOT_MCPOT);
263  //---------------------------------------------------------------------------------------
264  //Draw data and MC in same Canvas;
265  new TCanvas;
266  gPad->SetLeftMargin(margin);
267  gPad->SetBottomMargin(margin);
268  h_nddata->Draw("HIST same");
269  h_mcrecosum_total_clone->Draw("HIST same");
270  HistogramAttr1D(h_nddata, "E_{#nu}^{reco} (GeV)", "Events");
271  //legends
272  TLegend *leg_datamc = new TLegend(.49,.60,.86,.89);
273  leg_datamc->SetBorderSize(0);
274  leg_datamc->SetFillStyle(0);
275  leg_datamc->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
276  leg_datamc->AddEntry(h_nddata, Data+", N^{Data}_{S_{e}} (E_{#nu}^{reco})");
277  leg_datamc->AddEntry(h_mcrecosum_total_clone, MC+", N^{MC}_{S_{e}} (E_{#nu}^{reco})");
278  leg_datamc->Draw();
279  // gPad->Print("Images/nue_background_nddataMC_"+pid[0]+".pdf");
280  gPad->Print("Images/nue_background_nddataMC.pdf");
281  //---------------------------------------------------------------------------------------
282 
283  //Draw Data MC ratio
284  //fill the mcrecosum_total_clone[] array by using the bincontent of the h_mcrecosum_total_clone histogram
285  for(int i = 1; i < bins+1; ++i){
286  mcrecosum_total_clone[i-1] = h_mcrecosum_total_clone->GetBinContent(i);
287  }//end of loop over i bins
288  //fill the datamc_ratio[] array by taking the ratio of datasum[bins] and mcrecosum_total_clone[bins]
289  for(int k = 1; k < bins+1; ++k){
290  if(mcrecosum_total_clone[k-1]==0.)
291  datamc_ratio[k-1] = 0.;
292  else
293  datamc_ratio[k-1] = datasum[k-1]/mcrecosum_total_clone[k-1];
294  }//end of loop over k bins
295  //Fill datamc_ratio histogram
296  for(int j = 1; j<bins+1; ++j){
297  h_datamc_ratio->SetBinContent(j, datamc_ratio[j-1]);
298  }//end of loop over j bins
299  new TCanvas;
300  gPad->SetLeftMargin(margin);
301  gPad->SetBottomMargin(margin);
302  h_datamc_ratio->Draw("P");
303  h_datamc_ratio->SetMarkerStyle(20);
304  HistogramAttr1D(h_datamc_ratio, "E_{#nu}^{reco} (GeV)", "Ratio");
305  h_datamc_ratio->GetXaxis()->SetRangeUser(0, 5.);
306  //legends
307  TLegend *leg_datamc_ratio = new TLegend(.49,.60,.86,.89);
308  leg_datamc_ratio->SetBorderSize(0);
309  leg_datamc_ratio->SetFillStyle(0);
310  leg_datamc_ratio->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
311  leg_datamc_ratio->AddEntry(h_datamc_ratio, "N^{Data}_{S_{e}}/N^{MC}_{S_{e}}", "p");
312  leg_datamc_ratio->Draw();
313  // gPad->Print("Images/nue_background_nddataMC_ratio_"+pid[0]+".pdf");
314  gPad->Print("Images/nue_background_nddataMC_ratio.pdf");
315  //---------------------------------------------------------------------------------------
316  //Fill the correction_nue[], correction_numu[] and correction_NC[] arrays with the product of the Data/MC ratio and their fraction in total MC.
317  for(int i = 1; i < bins+1; ++i){
318  correction_nue[i-1] = datamc_ratio[i-1]*mcrecosum_nuetototal_ratio[i-1];
319  correction_numu[i-1] = datamc_ratio[i-1]*mcrecosum_numutototal_ratio[i-1];
320  correction_NC[i-1] = datamc_ratio[i-1]*mcrecosum_NCtototal_ratio[i-1];
321  //fill histograms.
322  h_correction_nue->SetBinContent(i, correction_nue[i-1]);
323  h_correction_numu->SetBinContent(i, correction_numu[i-1]);
324  h_correction_NC->SetBinContent(i, correction_NC[i-1]);
325  }//end of filling correction arrays
326  //Draw correction histograms for the nueCC, numu CC and NC
327  new TCanvas;
328  gPad->SetLeftMargin(margin);
329  gPad->SetBottomMargin(margin);
330  h_correction_nue->Draw("P same");
331  h_correction_numu->Draw("P same");
332  h_correction_NC->Draw("P same");
333  h_correction_nue->GetXaxis()->SetRangeUser(0, 5);
334  h_correction_nue->GetYaxis()->SetRangeUser(-0.2, 5.0);
335  h_correction_nue->SetMarkerColor(kRed);
336  h_correction_numu->SetMarkerColor(kBlue);
337  h_correction_NC->SetMarkerColor(kGreen);
338  h_correction_nue->SetMarkerStyle(20);
339  h_correction_numu->SetMarkerStyle(20);
340  h_correction_NC->SetMarkerStyle(20);
341  HistogramAttr1D(h_correction_nue, "E_{#nu}^{reco} (GeV)", "Weights");
342  //legends
343  TLegend *leg_correctios_all = new TLegend(.33,.58,.70,.87);
344  leg_correctios_all->SetBorderSize(0);
345  leg_correctios_all->SetFillStyle(0);
346  leg_correctios_all->AddEntry((TObject*)0, det_type[0]+" "+"Detector"," ");
347  leg_correctios_all->AddEntry(h_correction_nue, interaction_type[0], "p");
348  leg_correctios_all->AddEntry(h_correction_numu, interaction_type[1], "p");
349  leg_correctios_all->AddEntry(h_correction_NC, interaction_type[2], "p");
350  leg_correctios_all->Draw();
351  // gPad->Print("Images/nue_background_component_weights_"+pid[0]+".pdf");
352  gPad->Print("Images/nue_background_component_weights.pdf");
353 }//end of main program nue_background_decompositio"()
enum BeamMode kRed
string filename
Definition: shutoffs.py:106
void nue_background_decomposition()
interaction_type
Definition: Constants.h:110
const double j
Definition: BetheBloch.cxx:29
const Binning bins
OStream cout
Definition: OStream.cxx:6
det_type
Definition: Constants.h:584
TDirectory * dir
Definition: macro.C:5
file_type
Definition: Constants.h:150
HistogramAttr1D(TH1 *h, char *title_x, char *title_y, Double_t binlowx, Double_t binhighx, Double_t binlowy, Double_t binhighy, Color_t lcolor)
enum BeamMode kGreen
enum BeamMode kBlue