39 #include <TPostScript.h>
40 #include <TPavesText.h>
47 #include <TPaletteAxis.h>
60 using namespace genie;
61 using namespace genie::utils;
74 int main(
int argc,
char ** argv)
87 const unsigned int nm = 4;
88 int col [nm] = { kBlack, kRed+1, kBlue-3, kGreen+2 };
89 int sty [nm] = { kSolid, kDashed, kDashed, kDashed };
90 int mrk [nm] = { 20, 20, 20, 20 };
91 double msz [nm] = { 0.7, 0.7, 0.7, 0.7 };
92 const char * opt [nm] = {
"ap",
"l",
"l",
"l" };
93 const char * lgopt [nm] = {
"P",
"L",
"L",
"L" };
96 const unsigned int nQ2 = 20;
97 const double Q2min = 1E-1;
98 const double Q2max = 1E+3;
99 const double log10Q2min = TMath::Log10(Q2min);
100 const double log10Q2max = TMath::Log10(Q2max);
101 const double dlog10Q2 = (log10Q2max-log10Q2min)/(nQ2-1);
103 for(
unsigned int iq2 = 0; iq2 < nQ2; iq2++) {
104 double Q2 = TMath::Power(10, log10Q2min + iq2*dlog10Q2);
109 const unsigned int nx = 22;
110 double x_arr [nx] = {
111 0.0001, 0.0010, 0.0100, 0.0250, 0.0500,
112 0.0750, 0.1000, 0.1500, 0.2000, 0.2500,
113 0.3500, 0.4000, 0.4500, 0.5000, 0.5500,
114 0.6000, 0.7000, 0.7500, 0.8000, 0.8500,
119 const unsigned int nQ2_2d = 50;
120 const double Q2min_2d = 1E-1;
121 const double Q2max_2d = 1E+3;
122 const double log10Q2min_2d = TMath::Log10(Q2min_2d);
123 const double log10Q2max_2d = TMath::Log10(Q2max_2d);
124 const double dlog10Q2_2d = (log10Q2max_2d-log10Q2min_2d)/(nQ2_2d-1);
125 double Q2_bin_edges_2d [nQ2_2d];
126 for(
unsigned int iq2 = 0; iq2 < nQ2_2d; iq2++) {
127 double Q2 = TMath::Power(10, log10Q2min_2d + iq2*dlog10Q2_2d);
128 Q2_bin_edges_2d[iq2] =
Q2;
132 const unsigned int nx_2d = 50;
133 const double xmin_2d = 1E-4;
134 const double xmax_2d = 0.95;
135 const double log10xmin_2d = TMath::Log10(xmin_2d);
136 const double log10xmax_2d = TMath::Log10(xmax_2d);
137 const double dlog10x_2d = (log10xmax_2d-log10xmin_2d)/(nx_2d-1);
138 double x_bin_edges_2d [nx_2d];
139 for(
unsigned int ix = 0; ix < nx_2d; ix++) {
140 double x = TMath::Power(10, log10xmin_2d + ix*dlog10x_2d);
141 x_bin_edges_2d[ix] = x;
146 TNtuple * ntpl =
new TNtuple(
"nt",
"pdfs",
"i:uv:dv:us:ds:s:g:x:Q2");
149 TCanvas * cnv =
new TCanvas(
"c",
"",20,20,500,650);
150 cnv->SetBorderMode(0);
151 cnv->SetFillColor(0);
155 TPostScript *
ps =
new TPostScript(ps_filename.c_str(), 111);
159 cnv->Range(0,0,100,100);
160 TPavesText hdr(10,40,90,70,3,
"tr");
161 hdr.AddText(
"GENIE parton density function (pdf) comparisons");
166 hdr.AddText(
"Models used:");
168 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
169 const char * label =
gPDFAlgList[im]->Id().Key().c_str();
178 TLatex * tex =
new TLatex;
186 TGraph * gr_xuv_Q2 [nm] = { 0 };
187 TGraph * gr_xdv_Q2 [nm] = { 0 };
188 TGraph * gr_xus_Q2 [nm] = { 0 };
189 TGraph * gr_xds_Q2 [nm] = { 0 };
190 TGraph * gr_xstr_Q2 [nm] = { 0 };
191 TGraph * gr_xglu_Q2 [nm] = { 0 };
194 TH2D * h2_xuv [nm] = { 0 };
195 TH2D * h2_xdv [nm] = { 0 };
196 TH2D * h2_xus [nm] = { 0 };
197 TH2D * h2_xds [nm] = { 0 };
198 TH2D * h2_xstr[nm] = { 0 };
199 TH2D * h2_xglu[nm] = { 0 };
202 TH2D * h2_xuv_r [nm] = { 0 };
203 TH2D * h2_xdv_r [nm] = { 0 };
204 TH2D * h2_xus_r [nm] = { 0 };
205 TH2D * h2_xds_r [nm] = { 0 };
206 TH2D * h2_xstr_r[nm] = { 0 };
207 TH2D * h2_xglu_r[nm] = { 0 };
213 for(
unsigned int ix=0; ix < nx; ix++) {
214 double x = x_arr[ix];
215 double xuv_arr [nm][nQ2];
216 double xdv_arr [nm][nQ2];
217 double xus_arr [nm][nQ2];
218 double xds_arr [nm][nQ2];
219 double xstr_arr [nm][nQ2];
220 double xglu_arr [nm][nQ2];
222 double max_gr_xuv_Q2 = -9E9;
223 double max_gr_xdv_Q2 = -9E9;
224 double max_gr_xus_Q2 = -9E9;
225 double max_gr_xds_Q2 = -9E9;
226 double max_gr_xstr_Q2 = -9E9;
227 double max_gr_xglu_Q2 = -9E9;
229 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
232 for(
unsigned int iq2 = 0; iq2 < nQ2; iq2++) {
233 double Q2 = Q2_arr[iq2];
238 double xus = pdf.
UpSea();
241 double xglu = pdf.
Gluon();
242 xuv_arr [im][iq2] = x * xuv;
243 xdv_arr [im][iq2] = x * xdv;
244 xus_arr [im][iq2] = x * xus;
245 xds_arr [im][iq2] = x * xds;
246 xstr_arr [im][iq2] = x * xstr;
247 xglu_arr [im][iq2] = x * xglu;
248 ntpl->Fill(im,xuv,xdv,xus,xds,xstr,xglu,x,Q2);
251 gr_xuv_Q2 [im] =
new TGraph (nQ2, Q2_arr, xuv_arr [im]);
252 gr_xdv_Q2 [im] =
new TGraph (nQ2, Q2_arr, xdv_arr [im]);
253 gr_xus_Q2 [im] =
new TGraph (nQ2, Q2_arr, xus_arr [im]);
254 gr_xds_Q2 [im] =
new TGraph (nQ2, Q2_arr, xds_arr [im]);
255 gr_xstr_Q2 [im] =
new TGraph (nQ2, Q2_arr, xstr_arr [im]);
256 gr_xglu_Q2 [im] =
new TGraph (nQ2, Q2_arr, xglu_arr [im]);
265 gr_xuv_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
266 gr_xdv_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
267 gr_xus_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
268 gr_xds_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
269 gr_xstr_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
270 gr_xglu_Q2 [im] -> GetXaxis() -> SetTitle(
"Q^{2} (GeV^{2}/c^{2})");
272 gr_xuv_Q2 [im] -> GetYaxis() -> SetTitle(
"x*u_{val}(x,Q^{2})");
273 gr_xdv_Q2 [im] -> GetYaxis() -> SetTitle(
"x*d_{val}(x,Q^{2})");
274 gr_xus_Q2 [im] -> GetYaxis() -> SetTitle(
"x*u_{sea}(x,Q^{2})");
275 gr_xds_Q2 [im] -> GetYaxis() -> SetTitle(
"x*d_{sea}(x,Q^{2})");
276 gr_xstr_Q2 [im] -> GetYaxis() -> SetTitle(
"x*s(x,Q^{2})");
277 gr_xglu_Q2 [im] -> GetYaxis() -> SetTitle(
"x*g(x,Q^{2})");
279 double this_max_gr_xuv_Q2 = TMath::MaxElement(gr_xuv_Q2 [im]->GetN(),gr_xuv_Q2 [im]->GetY());
280 double this_max_gr_xdv_Q2 = TMath::MaxElement(gr_xdv_Q2 [im]->GetN(),gr_xdv_Q2 [im]->GetY());
281 double this_max_gr_xus_Q2 = TMath::MaxElement(gr_xus_Q2 [im]->GetN(),gr_xus_Q2 [im]->GetY());
282 double this_max_gr_xds_Q2 = TMath::MaxElement(gr_xds_Q2 [im]->GetN(),gr_xds_Q2 [im]->GetY());
283 double this_max_gr_xstr_Q2 = TMath::MaxElement(gr_xstr_Q2[im]->GetN(),gr_xstr_Q2[im]->GetY());
284 double this_max_gr_xglu_Q2 = TMath::MaxElement(gr_xglu_Q2[im]->GetN(),gr_xglu_Q2[im]->GetY());
285 max_gr_xuv_Q2 = std::max(max_gr_xuv_Q2 ,this_max_gr_xuv_Q2 );
286 max_gr_xdv_Q2 = std::max(max_gr_xdv_Q2 ,this_max_gr_xdv_Q2 );
287 max_gr_xus_Q2 = std::max(max_gr_xus_Q2 ,this_max_gr_xus_Q2 );
288 max_gr_xds_Q2 = std::max(max_gr_xds_Q2 ,this_max_gr_xds_Q2 );
289 max_gr_xstr_Q2 = std::max(max_gr_xstr_Q2,this_max_gr_xstr_Q2);
290 max_gr_xglu_Q2 = std::max(max_gr_xglu_Q2,this_max_gr_xglu_Q2);
295 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
296 gr_xuv_Q2 [im] -> SetMinimum(0.);
297 gr_xdv_Q2 [im] -> SetMinimum(0.);
298 gr_xus_Q2 [im] -> SetMinimum(0.);
299 gr_xds_Q2 [im] -> SetMinimum(0.);
300 gr_xstr_Q2 [im] -> SetMinimum(0.);
301 gr_xglu_Q2 [im] -> SetMinimum(0.);
302 gr_xuv_Q2 [im] -> SetMaximum(1.1*max_gr_xuv_Q2 );
303 gr_xdv_Q2 [im] -> SetMaximum(1.1*max_gr_xdv_Q2 );
304 gr_xus_Q2 [im] -> SetMaximum(1.1*max_gr_xus_Q2 );
305 gr_xds_Q2 [im] -> SetMaximum(1.1*max_gr_xds_Q2 );
306 gr_xstr_Q2 [im] -> SetMaximum(1.1*max_gr_xstr_Q2 );
307 gr_xglu_Q2 [im] -> SetMaximum(1.1*max_gr_xglu_Q2 );
313 lgnd =
new TLegend(0.20, 0.55, 0.50, 0.85);
315 lgnd =
new TLegend(0.60, 0.55, 0.80, 0.85);
317 lgnd -> SetFillColor(0);
318 lgnd -> SetFillStyle(0);
319 lgnd -> SetBorderSize(0);
322 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
324 lgnd->AddEntry(gr_xuv_Q2 [im], label.c_str(), lgopt[im]);
330 cnv->cd(1); gPad->SetLogx();
331 cnv->cd(2); gPad->SetLogx();
332 cnv->cd(3); gPad->SetLogx();
333 cnv->cd(4); gPad->SetLogx();
334 cnv->cd(5); gPad->SetLogx();
335 cnv->cd(6); gPad->SetLogx();
337 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
338 cnv->cd(1); gr_xuv_Q2 [im]->Draw(opt[im]);
339 cnv->cd(2); gr_xdv_Q2 [im]->Draw(opt[im]);
340 cnv->cd(3); gr_xus_Q2 [im]->Draw(opt[im]);
341 cnv->cd(4); gr_xds_Q2 [im]->Draw(opt[im]);
342 cnv->cd(5); gr_xstr_Q2[im]->Draw(opt[im]);
343 cnv->cd(6); gr_xglu_Q2[im]->Draw(opt[im]);
346 cnv->cd(1); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
347 cnv->cd(2); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
348 cnv->cd(3); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
349 cnv->cd(4); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
350 cnv->cd(5); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
351 cnv->cd(6); lgnd->Draw(); tex->DrawTextNDC(0.4, 0.95,
TString::Format(
"x = %.3e",x).Data());
360 for(
unsigned int im=0; im <
gPDFAlgList.size(); im++) {
361 h2_xuv [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
362 h2_xdv [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
363 h2_xus [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
364 h2_xds [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
365 h2_xstr[im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
366 h2_xglu[im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
370 ibinx <= h2_xuv[im]->GetXaxis()->GetNbins(); ibinx++) {
371 double x = h2_xuv[im]->GetXaxis()->GetBinCenter(ibinx);
373 ibinq2 <= h2_xuv[im]->GetYaxis()->GetNbins(); ibinq2++) {
374 double Q2 = h2_xuv[im]->GetYaxis()->GetBinCenter(ibinq2);
379 double xus = x * pdf.
UpSea();
380 double xds = x * pdf.
DownSea();
381 double xstr = x * pdf.
Strange();
382 double xglu = x * pdf.
Gluon();
383 h2_xuv [im] -> SetBinContent(ibinx, ibinq2, xuv );
384 h2_xdv [im] -> SetBinContent(ibinx, ibinq2, xdv );
385 h2_xus [im] -> SetBinContent(ibinx, ibinq2, xus );
386 h2_xds [im] -> SetBinContent(ibinx, ibinq2, xds );
387 h2_xstr[im] -> SetBinContent(ibinx, ibinq2, xstr);
388 h2_xglu[im] -> SetBinContent(ibinx, ibinq2, xglu);
394 h2_xuv [im] -> GetXaxis() -> SetTitle(
"x");
395 h2_xdv [im] -> GetXaxis() -> SetTitle(
"x");
396 h2_xus [im] -> GetXaxis() -> SetTitle(
"x");
397 h2_xds [im] -> GetXaxis() -> SetTitle(
"x");
398 h2_xstr[im] -> GetXaxis() -> SetTitle(
"x");
399 h2_xglu[im] -> GetXaxis() -> SetTitle(
"x");
401 h2_xuv [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
402 h2_xdv [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
403 h2_xus [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
404 h2_xds [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
405 h2_xstr[im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
406 h2_xglu[im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
408 h2_xuv [im] -> SetMinimum(0.);
409 h2_xdv [im] -> SetMinimum(0.);
410 h2_xus [im] -> SetMinimum(0.);
411 h2_xds [im] -> SetMinimum(0.);
412 h2_xstr[im] -> SetMinimum(0.);
413 h2_xglu[im] -> SetMinimum(0.);
419 TPaletteAxis * palette = 0;
420 tex->SetTextSize(0.03);
422 cnv->cd(1); gPad->SetLogx(); gPad->SetLogy();
423 h2_xuv [im] ->
Draw(
"colz");
425 palette = (TPaletteAxis*)h2_xuv[im]->GetListOfFunctions()->FindObject(
"palette");
427 palette->SetX1NDC(0.2);
428 palette->SetX2NDC(0.25);
429 palette->SetY1NDC(0.4);
430 palette->SetY2NDC(0.8);
434 cnv->cd(2); gPad->SetLogx(); gPad->SetLogy();
435 h2_xdv [im] ->
Draw(
"colz");
437 palette = (TPaletteAxis*)h2_xdv[im]->GetListOfFunctions()->FindObject(
"palette");
439 palette->SetX1NDC(0.2);
440 palette->SetX2NDC(0.25);
441 palette->SetY1NDC(0.4);
442 palette->SetY2NDC(0.8);
446 cnv->cd(3); gPad->SetLogx(); gPad->SetLogy();
447 h2_xus [im] ->
Draw(
"colz");
449 palette = (TPaletteAxis*)h2_xus[im]->GetListOfFunctions()->FindObject(
"palette");
451 palette->SetX1NDC(0.2);
452 palette->SetX2NDC(0.25);
453 palette->SetY1NDC(0.4);
454 palette->SetY2NDC(0.8);
458 cnv->cd(4); gPad->SetLogx(); gPad->SetLogy();
459 h2_xds [im] ->
Draw(
"colz");
461 palette = (TPaletteAxis*)h2_xds[im]->GetListOfFunctions()->FindObject(
"palette");
463 palette->SetX1NDC(0.2);
464 palette->SetX2NDC(0.25);
465 palette->SetY1NDC(0.4);
466 palette->SetY2NDC(0.8);
470 cnv->cd(5); gPad->SetLogx(); gPad->SetLogy();
471 h2_xstr[im] ->
Draw(
"colz");
473 palette = (TPaletteAxis*)h2_xstr[im]->GetListOfFunctions()->FindObject(
"palette");
475 palette->SetX1NDC(0.2);
476 palette->SetX2NDC(0.25);
477 palette->SetY1NDC(0.4);
478 palette->SetY2NDC(0.8);
482 cnv->cd(6); gPad->SetLogx(); gPad->SetLogy();
483 h2_xglu[im] ->
Draw(
"colz");
485 palette = (TPaletteAxis*)h2_xglu[im]->GetListOfFunctions()->FindObject(
"palette");
487 palette->SetX1NDC(0.2);
488 palette->SetX2NDC(0.25);
489 palette->SetY1NDC(0.4);
490 palette->SetY2NDC(0.8);
501 for(
unsigned int im=1; im <
gPDFAlgList.size(); im++) {
502 h2_xuv_r [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
503 h2_xdv_r [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
504 h2_xus_r [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
505 h2_xds_r [im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
506 h2_xstr_r[im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
507 h2_xglu_r[im] =
new TH2D(
"",
"", nx_2d-1, x_bin_edges_2d, nQ2_2d-1, Q2_bin_edges_2d);
509 ibinx <= h2_xuv[im]->GetXaxis()->GetNbins(); ibinx++) {
511 ibinq2 <= h2_xuv[im]->GetYaxis()->GetNbins(); ibinq2++) {
513 double xuv = h2_xuv [im] -> GetBinContent(ibinx, ibinq2);
514 double xdv = h2_xdv [im] -> GetBinContent(ibinx, ibinq2);
515 double xus = h2_xus [im] -> GetBinContent(ibinx, ibinq2);
516 double xds = h2_xds [im] -> GetBinContent(ibinx, ibinq2);
517 double xstr = h2_xstr[im] -> GetBinContent(ibinx, ibinq2);
518 double xglu = h2_xglu[im] -> GetBinContent(ibinx, ibinq2);
520 double xuv0 = h2_xuv [0] -> GetBinContent(ibinx, ibinq2);
521 double xdv0 = h2_xdv [0] -> GetBinContent(ibinx, ibinq2);
522 double xus0 = h2_xus [0] -> GetBinContent(ibinx, ibinq2);
523 double xds0 = h2_xds [0] -> GetBinContent(ibinx, ibinq2);
524 double xstr0 = h2_xstr[0] -> GetBinContent(ibinx, ibinq2);
525 double xglu0 = h2_xglu[0] -> GetBinContent(ibinx, ibinq2);
527 double xuv_r = ((xuv0 > 0.) ? (xuv -xuv0 )/xuv0 : 0.);
528 double xdv_r = ((xdv0 > 0.) ? (xdv -xdv0 )/xdv0 : 0.);
529 double xus_r = ((xus0 > 0.) ? (xus -xus0 )/xus0 : 0.);
530 double xds_r = ((xds0 > 0.) ? (xds -xds0 )/xds0 : 0.);
531 double xstr_r = ((xstr0 > 0.) ? (xstr-xstr0)/xstr0 : 0.);
532 double xglu_r = ((xglu0 > 0.) ? (xglu-xglu0)/xglu0 : 0.);
534 h2_xuv_r [im] -> SetBinContent(ibinx, ibinq2, xuv_r );
535 h2_xdv_r [im] -> SetBinContent(ibinx, ibinq2, xdv_r );
536 h2_xus_r [im] -> SetBinContent(ibinx, ibinq2, xus_r );
537 h2_xds_r [im] -> SetBinContent(ibinx, ibinq2, xds_r );
538 h2_xstr_r[im] -> SetBinContent(ibinx, ibinq2, xstr_r);
539 h2_xglu_r[im] -> SetBinContent(ibinx, ibinq2, xglu_r);
545 h2_xuv_r [im] -> GetXaxis() -> SetTitle(
"x");
546 h2_xdv_r [im] -> GetXaxis() -> SetTitle(
"x");
547 h2_xus_r [im] -> GetXaxis() -> SetTitle(
"x");
548 h2_xds_r [im] -> GetXaxis() -> SetTitle(
"x");
549 h2_xstr_r[im] -> GetXaxis() -> SetTitle(
"x");
550 h2_xglu_r[im] -> GetXaxis() -> SetTitle(
"x");
552 h2_xuv_r [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
553 h2_xdv_r [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
554 h2_xus_r [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
555 h2_xds_r [im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
556 h2_xstr_r[im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
557 h2_xglu_r[im] -> GetXaxis() -> SetTitle(
"Q^2 (GeV^2/c^2)");
561 TPaletteAxis * palette = 0;
563 cnv->cd(1); gPad->SetLogx(); gPad->SetLogy();
564 h2_xuv_r [im] ->
Draw(
"colz");
566 palette = (TPaletteAxis*)h2_xuv_r[im]->GetListOfFunctions()->FindObject(
"palette");
568 palette->SetX1NDC(0.2);
569 palette->SetX2NDC(0.25);
570 palette->SetY1NDC(0.4);
571 palette->SetY2NDC(0.8);
576 cnv->cd(2); gPad->SetLogx(); gPad->SetLogy();
577 h2_xdv_r [im] ->
Draw(
"colz");
579 palette = (TPaletteAxis*)h2_xdv_r[im]->GetListOfFunctions()->FindObject(
"palette");
581 palette->SetX1NDC(0.2);
582 palette->SetX2NDC(0.25);
583 palette->SetY1NDC(0.4);
584 palette->SetY2NDC(0.8);
589 cnv->cd(3); gPad->SetLogx(); gPad->SetLogy();
590 h2_xus_r [im] ->
Draw(
"colz");
592 palette = (TPaletteAxis*)h2_xus_r[im]->GetListOfFunctions()->FindObject(
"palette");
594 palette->SetX1NDC(0.2);
595 palette->SetX2NDC(0.25);
596 palette->SetY1NDC(0.4);
597 palette->SetY2NDC(0.8);
602 cnv->cd(4); gPad->SetLogx(); gPad->SetLogy();
603 h2_xds_r [im] ->
Draw(
"colz");
605 palette = (TPaletteAxis*)h2_xds_r[im]->GetListOfFunctions()->FindObject(
"palette");
607 palette->SetX1NDC(0.2);
608 palette->SetX2NDC(0.25);
609 palette->SetY1NDC(0.4);
610 palette->SetY2NDC(0.8);
615 cnv->cd(5); gPad->SetLogx(); gPad->SetLogy();
616 h2_xstr_r[im] ->
Draw(
"colz");
618 palette = (TPaletteAxis*)h2_xstr_r[im]->GetListOfFunctions()->FindObject(
"palette");
620 palette->SetX1NDC(0.2);
621 palette->SetX2NDC(0.25);
622 palette->SetY1NDC(0.4);
623 palette->SetY2NDC(0.8);
628 cnv->cd(6); gPad->SetLogx(); gPad->SetLogy();
629 h2_xglu_r[im] ->
Draw(
"colz");
631 palette = (TPaletteAxis*)h2_xglu_r[im]->GetListOfFunctions()->FindObject(
"palette");
633 palette->SetX1NDC(0.2);
634 palette->SetX2NDC(0.25);
635 palette->SetY1NDC(0.4);
636 palette->SetY2NDC(0.8);
651 TFile f(root_filename.c_str(),
"recreate");
652 ntpl->Write(
"pdflib");
657 std::cout<<
"Done."<<std::endl;
663 RunOpt::Instance()->ReadFromCommandLine(argc,argv);
667 if(parser.OptionExists(
"pdf-set")){
672 <<
"Please specify PDF sets using the --pdf-set argument";
677 if(parser.OptionExists(
'o')){
687 <<
"Number of input PDF sets: " << vpdfset.size();
688 if(vpdfset.size() == 0) {
689 LOG(
"gpdfcomp",
pFATAL) <<
"Need at least 1 PDF set!";
693 vector<string>::iterator vpdfset_iter = vpdfset.begin();
694 for( ; vpdfset_iter != vpdfset.end(); ++vpdfset_iter) {
695 vector<string> vpdf =
str::Split(*vpdfset_iter,
"/");
696 if(vpdf.size() != 2) {
698 <<
"Need to specify both a PDF algorithm name and configuration "
699 <<
"as in genie::GRV98LO/Default";
703 string pdf_alg_name = vpdf[0];
704 string pdf_alg_conf = vpdf[1];
713 <<
"Couldn't instantiate " << pdf_alg_name <<
"/" << pdf_alg_conf;
718 <<
"\n Instantiated: " << pdf_alg->
Id()
719 <<
" with the following configuration: "
double Q2(const Interaction *const i)
double DownValence(void) const
Pure abstract base class. Defines the PDFModelI interface to be implemented by wrapper classes to exi...
void SetDefaultStyle(bool black_n_white=false)
vector< const PDFModelI * > gPDFAlgList
int main(int argc, char **argv)
virtual const Registry & GetConfig(void) const
double DownSea(void) const
double Strange(void) const
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
void SetModel(const PDFModelI *model)
const Algorithm * GetAlgorithm(const AlgId &algid)
static constexpr double ps
void Draw(const char *plot, const char *title)
void Calculate(double x, double q2)
virtual const AlgId & Id(void) const
Get algorithm ID.
double UpValence(void) const
vector< string > Split(string input, string delim)
void Format(TGraph *gr, int lcol, int lsty, int lwid, int mcol, int msty, double msiz)
Command line argument parser.
void GetCommandLineArgs(int argc, char **argv)
The GENIE Algorithm Factory.