Skip to content

Instantly share code, notes, and snippets.

@jdbrice
Last active March 9, 2021 19:51
Show Gist options
  • Save jdbrice/cd7bcf5f62f4b6d1d99582d5cf1ef1d2 to your computer and use it in GitHub Desktop.
Save jdbrice/cd7bcf5f62f4b6d1d99582d5cf1ef1d2 to your computer and use it in GitHub Desktop.
Plot tracking from ttree on Pythia events
TLatex tl;
TString label = "";
TString klabel = "";
TH1* sliceFit(TH2 * h2, TString _klabel){
TF1 * fgyRes = new TF1( "fgyRes", "gaus" );
fgyRes->SetRange( -0.5, 0.5 );
h2->RebinX(4);
h2->FitSlicesY( fgyRes );
TH1 * hSigmaRes = (TH1*)gDirectory->Get( (string(h2->GetName()) + "_2").c_str() );
hSigmaRes-> SetBinContent( hSigmaRes->FindBin( 0.0 ), 0 );
hSigmaRes->GetXaxis()->SetRangeUser( 0, 5.0 );
hSigmaRes->GetYaxis()->SetRangeUser( 0, 1.1 );
hSigmaRes->Draw( "hpe" );
hSigmaRes->SetLineWidth(2);
hSigmaRes->SetLineColor(kBlue);
hSigmaRes->SetTitle( "; p_{T}^{GEN}; (p_{T}^{MC} - p_{T}^{RC}) / p_{T}^{MC}" );
hSigmaRes->GetXaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetXaxis()->SetLabelSize( 16.0 / 360 );
hSigmaRes->GetYaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetYaxis()->SetLabelSize( 16.0 / 360 );
TF1 * fpol1Res = new TF1( "fpol1Res", "[0] + [1] * (x)" );
hSigmaRes->Fit(fpol1Res, "R", "", 0, 5.0);
tl.DrawLatexNDC( 0.2, 0.7, TString::Format("#sigma_{pT} / p_{T} = %0.2f%% + %0.2f%% x pT", (100*fpol1Res->GetParameter(0)), (100*fpol1Res->GetParameter(1))) );
tl.DrawLatexNDC( 0.2, 0.65, "f(x) = [0] + [1] * x" );
tl.DrawLatexNDC( 0.2, 0.78, _klabel.Data() );
tl.DrawLatexNDC( 0.2, 0.85, label.Data() );
return hSigmaRes;
}
// 5A69 FST
// 30EEB FTT
void plot_from_tree( TString jobId = "5A69", TString _label = "PV+FTT", TString _klabel = "0.2<p_{T}<2.0 GeV/c, 2.5 < #eta < 4.0" ){
label = _label;
klabel = _klabel;
TCanvas * can = new TCanvas( "c", "", 1200, 900 );
can->SetTopMargin( 0.1 );
can->SetRightMargin( 0.1 );
can->SetBottomMargin( 0.13 );
can->SetLeftMargin( 0.13 );
tl.SetTextFont(42);
tl.SetTextSize(12.0 / 320.0);
gStyle->SetOptStat(000);
TChain * t = new TChain( "Stg", "Stg" );
t->AddFile( TString::Format( "job%s_mltree.root", jobId.Data() ).Data() );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : eta[rtid] >> hipteta( 50, 2.4, 4.1, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && rnfst == 0" );
TH2 * hipteta = (TH2*)gDirectory->Get( "hipteta" );
hipteta->Draw("colz");
hipteta->GetXaxis()->SetTitleSize( 14.0 / 320.0 );
hipteta->GetYaxis()->SetTitleSize( 14.0 / 320.0 );
hipteta->SetTitle( ";#eta_{MC}; #sigma_{1/pT} / (1/p_{T})" );
tl.DrawLatexNDC( 0.2, 0.78, klabel.Data() );
tl.DrawLatexNDC( 0.2, 0.85, label.Data() );
can->Print( TString::Format( "%s_invptreseta.pdf", jobId.Data() ) );
TF1 * fgyRes = new TF1( "fgyRes", "gaus" );
fgyRes->SetRange( -0.5, 0.5 );
hipteta->FitSlicesY( fgyRes );
TH1 * hSigmaRes = (TH1*)gDirectory->Get( "hipteta_2" );
hSigmaRes-> SetBinContent( hSigmaRes->FindBin( 0.0 ), 0 );
hSigmaRes->GetXaxis()->SetRangeUser( 0, 5.0 );
hSigmaRes->GetYaxis()->SetRangeUser( 0, 1.1 );
hSigmaRes->Draw( "hpe" );
hSigmaRes->SetLineWidth(2);
hSigmaRes->SetLineColor(kBlue);
hSigmaRes->SetTitle( "; p_{T}^{GEN}; (p_{T}^{MC} - p_{T}^{RC}) / p_{T}^{MC}" );
hSigmaRes->GetXaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetXaxis()->SetLabelSize( 16.0 / 360 );
hSigmaRes->GetYaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetYaxis()->SetLabelSize( 16.0 / 360 );
TF1 * fpol1Res = new TF1( "fpol1Res", "[0] + [1] * (x - 2.5)" );
hSigmaRes->Fit(fpol1Res, "R", "", 0, 5.0);
tl.DrawLatexNDC( 0.2, 0.7, TString::Format("#sigma_{pT} / p_{T} = %0.2f%% + %0.2f%% x pT", (100*fpol1Res->GetParameter(0)), (100*fpol1Res->GetParameter(1))) );
tl.DrawLatexNDC( 0.2, 0.65, "f(x) = [0] + [1] * (x - 2.5)" );
tl.DrawLatexNDC( 0.2, 0.78, klabel.Data() );
tl.DrawLatexNDC( 0.2, 0.85, label.Data() );
can->Print( TString::Format( "%s_ptreseta.pdf" , jobId.Data() ).Data() );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta0( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 2.5 && eta[rtid] < 2.7" );
TH2 * hipteta0 = (TH2*)gDirectory->Get( "hipteta0" );
TH1 * hipteta0_2 = sliceFit( hipteta0, "2.5 < #eta < 2.7" );
can->Print( TString::Format( "%s_invptreseta0.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta1( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 2.7 && eta[rtid] < 2.9" );
TH2 * hipteta1 = (TH2*)gDirectory->Get( "hipteta1" );
TH1 * hipteta1_2 = sliceFit( hipteta1, "2.7 < #eta < 2.9" );
can->Print( TString::Format( "%s_invptreseta1.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta2( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 2.9 && eta[rtid] < 3.1" );
TH2 * hipteta2 = (TH2*)gDirectory->Get( "hipteta2" );
TH1 * hipteta2_2 = sliceFit( hipteta2, "2.9 < #eta < 3.1" );
can->Print( TString::Format( "%s_invptreseta2.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta3( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 3.1 && eta[rtid] < 3.3" );
TH2 * hipteta3 = (TH2*)gDirectory->Get( "hipteta3" );
TH1 * hipteta3_2 = sliceFit( hipteta3, "3.1 < #eta < 3.3" );
can->Print( TString::Format( "%s_invptreseta3.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta4( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 3.3 && eta[rtid] < 3.5" );
TH2 * hipteta4 = (TH2*)gDirectory->Get( "hipteta4" );
TH1 * hipteta4_2 = sliceFit( hipteta4, "3.3 < #eta < 3.5" );
can->Print( TString::Format( "%s_invptreseta4.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta5( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 3.5 && eta[rtid] < 3.7" );
TH2 * hipteta5 = (TH2*)gDirectory->Get( "hipteta5" );
TH1 * hipteta5_2 = sliceFit( hipteta5, "3.5 < #eta < 3.7" );
can->Print( TString::Format( "%s_invptreseta5.pdf", jobId.Data() ) );
t->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta6( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && eta[rtid] > 3.7 && eta[rtid] < 4.0" );
TH2 * hipteta6 = (TH2*)gDirectory->Get( "hipteta6" );
TH1 * hipteta6_2 = sliceFit( hipteta6, "3.7 < #eta < 4.0" );
can->Print( TString::Format( "%s_invptreseta6.pdf", jobId.Data() ) );
hipteta0_2->Draw();
hipteta4_2->Draw("same");
tl.DrawLatexNDC( 0.2, 0.78, "2.5 < #eta < 2.7 vs. 3.3 < #eta < 3.5" );
tl.DrawLatexNDC( 0.2, 0.85, label.Data() );
can->Print( TString::Format( "%s_invptresetaall.pdf", jobId.Data() ) );
string ys = "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid])";
string etar = "&& eta[rtid] > 3.0 && eta[rtid] < 3.5";
string etal = "3.0 < #eta < 3.5";
// string ys = "(pt[rtid] - rpt) / (pt[rtid])";
t->Draw( TString::Format("%s: pt[rtid] >> hinvptINC( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 %s", etar.c_str() ).Data() );
TH1 * hinvptINC = sliceFit( (TH2*)gDirectory->Get( "hinvptINC" ), "" );
can->Print( TString::Format( "%s_invptINC.pdf", jobId.Data() ) );
t->Draw( TString::Format("%s: pt[rtid] >> hinvptFST( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 && rnfst>0 %s", etar.c_str() ).Data() );
TH1 * hinvptFST = sliceFit( (TH2*)gDirectory->Get( "hinvptFST" ), TString::Format("with FTT+FST, %s", etal.c_str()).Data() );
can->Print( TString::Format( "%s_invptFST.pdf", jobId.Data() ) );
t->Draw( TString::Format("%s: pt[rtid] >> hinvptFST2( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 && rnfst==2 %s", etar.c_str() ).Data() );
TH1 * hinvptFST2 = sliceFit( (TH2*)gDirectory->Get( "hinvptFST2" ), TString::Format("with FTT+FST (2), %s", etal.c_str()).Data() );
can->Print( TString::Format( "%s_invptFST2.pdf", jobId.Data() ) );
t->Draw( TString::Format("%s: pt[rtid] >> hinvptFST1( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 && rnfst==1 %s", etar.c_str() ).Data() );
TH1 * hinvptFST1 = sliceFit( (TH2*)gDirectory->Get( "hinvptFST1" ), TString::Format("with FTT+FST (1), %s", etal.c_str()).Data() );
can->Print( TString::Format( "%s_invptFST1.pdf", jobId.Data() ) );
t->Draw( TString::Format("%s: pt[rtid] >> hinvptFST3( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 && rnfst==3 %s", etar.c_str() ).Data() );
TH1 * hinvptFST3 = sliceFit( (TH2*)gDirectory->Get( "hinvptFST3" ), TString::Format("with FTT+FST (3), %s", etal.c_str()).Data() );
can->Print( TString::Format( "%s_invptFST3.pdf", jobId.Data() ) );
t->Draw( TString::Format("%s: pt[rtid] >> hinvptFTT( 100, 0, 5, 100, -2, 2 )", ys.c_str()).Data(), TString::Format("rtid>0 && pt[rtid] > 0.0 && rpt > 0.01 && rnfst == 0 %s", etar.c_str() ).Data() );
TH1 * hinvptFTT = sliceFit( (TH2*)gDirectory->Get( "hinvptFTT" ), TString::Format("with FTT, %s", etal.c_str()).Data() );
can->Print( TString::Format( "%s_invptFTT.pdf", jobId.Data() ) );
}
TLatex tl;
TH1* sliceFit(TH2 * h2, TString _klabel){
TF1 * fgyRes = new TF1( "fgyRes", "gaus" );
fgyRes->SetRange( -0.5, 0.5 );
h2->RebinX(4);
h2->FitSlicesY( fgyRes );
TH1 * hSigmaRes = (TH1*)gDirectory->Get( (string(h2->GetName()) + "_2").c_str() );
hSigmaRes-> SetBinContent( hSigmaRes->FindBin( 0.0 ), 0 );
hSigmaRes->GetXaxis()->SetRangeUser( 0, 5.0 );
hSigmaRes->GetYaxis()->SetRangeUser( 0, 1.1 );
hSigmaRes->Draw( "hpe" );
hSigmaRes->SetLineWidth(2);
hSigmaRes->SetLineColor(kBlue);
hSigmaRes->SetTitle( "; p_{T}^{MC} (GeV/c); #sigma_{pT^{-1}}" );
hSigmaRes->GetXaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetXaxis()->SetLabelSize( 16.0 / 360 );
hSigmaRes->GetYaxis()->SetTitleSize( 20.0 / 360 );
hSigmaRes->GetYaxis()->SetLabelSize( 16.0 / 360 );
hSigmaRes->Sumw2();
TF1 * fpol1Res = new TF1( "fpol1Res", "[0] + [1] * (x)" );
hSigmaRes->Fit(fpol1Res, "R", "", 0.2, 5.0);
tl.DrawLatexNDC( 0.2, 0.7, TString::Format("#sigma_{pT^{-1}} / p_{T}^{-1} = %0.2f%% + %0.2f%% x pT", (100*fpol1Res->GetParameter(0)), (100*fpol1Res->GetParameter(1))) );
tl.DrawLatexNDC( 0.2, 0.65, "f(x) = [0] + [1] * x" );
tl.DrawLatexNDC( 0.2, 0.78, _klabel.Data() );
// tl.DrawLatexNDC( 0.2, 0.85, label.Data() );
return hSigmaRes;
}
void study_pythia(){
tl.SetTextFont(42);
tl.SetTextSize(12.0 / 320.0);
TChain * c=new TChain( "Stg", "" );
c->Add("pythia_B25A_mltree.root");
gStyle->SetOptStat(000);
gStyle->SetOptFit(111);
TCanvas * can = new TCanvas( "c", "", 1200, 900 );
can->SetTopMargin( 0.1 );
can->SetRightMargin( 0.1 );
can->SetBottomMargin( 0.13 );
can->SetLeftMargin( 0.13 );
// phi slice to avoid hole
c->Draw( "pt[rtid]>>hrc_pt(75, 0, 15)", "eta[rtid]>2.5 && eta[rtid]<4.0&&rtid>=0 && phi[rtid]>0&&abs(q[rtid])==1" );
TH1 * hrc_pt = (TH1*)gDirectory->Get("hrc_pt");
c->Draw( "pt>>hmc_pt(75, 0.0, 15)", "eta>2.5 && eta<4.0 && phi > 0&&abs(q)==1" );
TH1 * hmc_pt = (TH1*)gDirectory->Get("hmc_pt");
hrc_pt->Divide(hmc_pt);
hrc_pt->SetTitle(";p_{T}^{MC} (GeV/c); efficiency X acceptance");
hrc_pt->Draw();
can->Print( "results-pythia/eff_pt.pdf" );
c->Draw( "pt[rtid]>>hrc_ptq(150, 0, 15)", "eta[rtid]>2.5 && eta[rtid]<4.0&&rtid>=0 && phi[rtid]>0 && rqual>0.75&&abs(q[rtid])==1" );
TH1 * hrc_ptq = (TH1*)gDirectory->Get("hrc_ptq");
hrc_ptq->Divide(hmc_pt);
hrc_ptq->Draw();
can->Print( "results-pythia/eff_ptq.pdf" );
// phi slice to avoid hole
c->Draw( "eta[rtid]>>hrc_eta(30, 2.0, 4.5)", "rtid>=0 && phi[rtid]>0 && pt[rtid]>0.2 &&abs(q[rtid])==1" );
TH1 * hrc_eta = (TH1*)gDirectory->Get("hrc_eta");
c->Draw( "eta>>hmc_eta(30, 2.0, 4.5)", " phi > 0 && pt>0.2&&abs(q)==1" );
TH1 * hmc_eta = (TH1*)gDirectory->Get("hmc_eta");
hrc_eta->Divide(hmc_eta);
hrc_eta->SetTitle(";#eta^{MC} (GeV/c); efficiency X acceptance");
hrc_eta->Draw();
can->Print( "results-pythia/eff_eta.pdf" );
// phi slice to avoid hole
c->Draw( "phi[rtid]>>hrc_phi(120, -3.141592, 3.1415926)", "eta[rtid]>2.6 && eta[rtid]<3.9&&rtid>=0 && pt[rtid]>1.5&&abs(q[rtid])==1" );
TH1 * hrc_phi = (TH1*)gDirectory->Get("hrc_phi");
c->Draw( "phi>>hmc_phi(120, -3.141592, 3.1415926)", "eta>2.6 && eta<3.9 && pt>1.5&&abs(q)==1" );
TH1 * hmc_phi = (TH1*)gDirectory->Get("hmc_phi");
hrc_phi->Divide(hmc_phi);
hrc_phi->SetTitle(";#phi^{MC} (GeV/c); efficiency X acceptance");
hrc_phi->Draw();
can->Print( "results-pythia/eff_phi.pdf" );
c->Draw( "pt[rtid]>>hrc_qpt(50, 0, 10)", "q[rtid]!=rq&&eta[rtid]>2.6 && eta[rtid]<3.9&&rtid>=0&&abs(q[rtid])==1" );
TH1 * hrc_qpt = (TH1*)gDirectory->Get("hrc_qpt");
c->Draw( "pt[rtid]>>hmc_qpt(50, 0, 10)", "eta[rtid]>2.6 && eta[rtid]<3.9&&rtid>=0&&abs(q[rtid])==1" );
TH1 * hmc_qpt = (TH1*)gDirectory->Get("hmc_qpt");
hrc_qpt->Sumw2();
hmc_qpt->Sumw2();
hrc_qpt->Divide(hmc_qpt);
hrc_qpt->SetTitle( ";p_{T}^{MC} (GeV/c); q^{RC} != q^{MC} rate" );
hrc_qpt->GetYaxis()->SetRangeUser(0, 0.35);
hrc_qpt->Draw("pe");
can->Print( "results-pythia/eff_qpt.pdf" );
c->Draw( "pt[rtid]>>hrc_qpt_fst(50, 0, 10)", "q[rtid]!=rq&&eta[rtid]>2.6 && eta[rtid]<3.9&&rtid>=0&&abs(q[rtid])==1&&rnfst>0" );
TH1 * hrc_qpt_fst = (TH1*)gDirectory->Get("hrc_qpt_fst");
c->Draw( "pt[rtid]>>hmc_qpt_fst(50, 0, 10)", "eta[rtid]>2.6 && eta[rtid]<3.9&&rtid>=0&&abs(q[rtid])==1&&rnfst>0" );
TH1 * hmc_qpt_fst = (TH1*)gDirectory->Get("hmc_qpt_fst");
hrc_qpt_fst->Sumw2();
hmc_qpt_fst->Sumw2();
hrc_qpt_fst->Divide(hmc_qpt);
hrc_qpt_fst->GetYaxis()->SetRangeUser(0, 0.35);
hrc_qpt_fst->SetTitle( ";p_{T}^{MC} (GeV/c); q^{RC} != q^{MC} rate (nFST>0)" );
hrc_qpt_fst->Draw("pe");
hrc_qpt_fst->Fit("pol1");
can->Print( "results-pythia/eff_qpt_fst.pdf" );
c->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : eta[rtid] >> hipteta( 50, 2.4, 4.1, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && abs(q[rtid])==1" );
sliceFit( (TH2*)gDirectory->Get("hipteta"), "" );
can->Print( "results-pythia/iptres_eta.pdf" );
c->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta0( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && abs(q[rtid])==1 && eta[rtid] > 2.5 && eta[rtid] < 3.0" );
TH2 * hipteta0 = (TH2*)gDirectory->Get( "hipteta0" );
TH1 * hipteta0_2 = sliceFit( hipteta0, "2.5 < #eta < 3.0" );
can->Print( "results-pythia/iptres_eta0.pdf" );
c->Draw( "(1.0/pt[rtid] - 1.0/rpt) / (1.0/pt[rtid]) : pt[rtid] >> hipteta0_fst( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && abs(q[rtid])==1 && eta[rtid] > 2.5 && eta[rtid] < 3.0 && rnfst>2" );
TH2 * hipteta0_fst = (TH2*)gDirectory->Get( "hipteta0_fst" );
TH1 * hipteta0_fst_2 = sliceFit( hipteta0_fst, "2.5 < #eta < 3.0, FST (3)" );
can->Print( "results-pythia/iptres_eta0_fst.pdf" );
c->Draw( "(pt[rtid] - rpt) / (pt[rtid]) : pt[rtid] >> hpteta0( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && abs(q[rtid])==1 && eta[rtid] > 2.5 && eta[rtid] < 3.0" );
TH2 * hpteta0 = (TH2*)gDirectory->Get( "hpteta0" );
TH1 * hpteta0_2 = sliceFit( hpteta0, "2.5 < #eta < 3.0" );
can->Print( "results-pythia/ptres_eta0.pdf" );
c->Draw( "(pt[rtid] - rpt) / (pt[rtid]) : pt[rtid] >> hpteta0_fst( 100, 0, 5, 100, -2, 2 )", "rtid>0 && pt[rtid] > 0 && abs(q[rtid])==1 && eta[rtid] > 2.5 && eta[rtid] < 3.0 && rnfst>2" );
TH2 * hpteta0_fst = (TH2*)gDirectory->Get( "hpteta0_fst" );
TH1 * hpteta0_fst_2 = sliceFit( hpteta0_fst, "2.5 < #eta < 3.0, FST (3)" );
can->Print( "results-pythia/ptres_eta0_fst.pdf" );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment