39 #include <TPostScript.h> 40 #include <TPavesText.h> 47 #include <TPaletteAxis.h> 60 using namespace genie;
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 = 1
E-1;
98 const double Q2max = 1
E+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 = 1
E-1;
121 const double Q2max_2d = 1
E+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 = 1
E-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.);
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);
432 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*uv: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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);
444 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*dv: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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);
456 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*us: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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);
468 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*ds: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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);
480 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*str: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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);
492 tex->DrawTextNDC(0.30, 0.95,
TString::Format(
"x*glu: %s", gPDFAlgList[im]->Id().Key().c_str()).
Data() );
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)");
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);
574 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
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);
587 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
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);
600 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
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);
613 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
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);
626 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
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);
639 gPDFAlgList[
im]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str(), gPDFAlgList[0]->Id().Key().c_str()).
Data() );
651 TFile
f(root_filename.c_str(),
"recreate");
652 ntpl->Write(
"pdflib");
663 RunOpt::Instance()->ReadFromCommandLine(argc,argv);
672 <<
"Please specify PDF sets using the --pdf-set argument";
687 <<
"Number of input PDF sets: " << vpdfset.size();
688 if(vpdfset.size() == 0) {
689 LOG(
"gpdfcomp",
pFATAL) <<
"Need at least 1 PDF set!";
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: " 722 gPDFAlgList.push_back(pdf_alg);
THE MAIN GENIE PROJECT NAMESPACE
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
virtual const Registry & GetConfig(void) const
int main(int argc, char **argv)
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)
void GetCommandLineArgs(int argc, char **argv)
static int max(int a, int b)
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.
The GENIE Algorithm Factory.
bool OptionExists(char opt)
was option set?
Root of GENIE utility namespaces.
QTextStream & endl(QTextStream &s)
char * Arg(char opt)
return argument following -`opt'