//macro to compare results with Geant4 hadronic models: //FTFP_BERT and QGSP_BERT_EMV //date: 02/02/2014 //author: A.Karavdina void FTFPvsQGSP_lmd(TString path = "/panda/myResults/G4_ph_lists/BOX_2_12mrad_G4_"){ // const int npmom=5; // double Pbeam[npmom]={1.5,4.06,8.9,11.91,15}; // TString Pbeam_str[npmom] = {"/mom_1_5/","/mom_4_06/","/mom_8_9/","/mom_11_91/","/mom_15/"}; // const int nsamples = 100; const int nsamples = 100; const int npmom=4; double Pbeam[npmom]={4.06,8.9,11.91,15}; TString Pbeam_str[npmom] = {"/mom_4_06/","/mom_8_9/","/mom_11_91/","/mom_15/"}; /// Get results from QGSP_BERT_EMV model ----------------------------------- TString path_QGSP = path+"QGSP_BERT_EMV_noCut/"; double ratio_sec_QGSP[npmom][nsamples];//ration secondaries/primaries double ratio_sec_QGSP_mean[npmom];//ration secondaries/primaries double ratio_sec_QGSP_rms[npmom];//ration secondaries/primaries double ratio_hit1_QGSP[npmom][nsamples];//ratio hits on 1st plane/tot.sim.trks double ratio_hit1_QGSP_mean[npmom]; double ratio_hit1_QGSP_rms[npmom]; double ratio_hit2_QGSP[npmom][nsamples];//ratio hits on 2nd plane/tot.sim.trks double ratio_hit2_QGSP_mean[npmom]; double ratio_hit2_QGSP_rms[npmom]; double ratio_badmom_QGSP[npmom][nsamples];//ratio of trks with bad mom/tot.rec.trks, bad =>diff |(Prec-Pmc)/Pmc|>0.1% double ratio_badmom_QGSP_mean[npmom]; double ratio_badmom_QGSP_rms[npmom]; for(int qb=0;qbIsZombie()) cout<<"File: "<Get("tBkg"); //Bkg data Int_t nevent_QGSP = tbkg_QGSP->GetEntries(); if(nevent_QGSP<1){ cout<GetEntries("issecond>=0");//only secondary events // cout<GetEntries("abs((pmc-prec)/pmc)*100>0.01 && issecond<0");//only primary events ratio_badmom_QGSP[qb][qs] = 100.*double(nevent_badmom_QGSP)/double(nevent_QGSP); // TString fname_QGSP2 = path_QGSP; // fname_QGSP2+=Pbeam_str[qb]; // fname_QGSP2+="sampl"; // fname_QGSP2 +=qs; // fname_QGSP2 +="/Lumi_recoMerged_0.root"; // TFile *fin_QGSP2 = new TFile(fname_QGSP2,"READ"); // TTree *thit_QGSP = (TTree *)fin_QGSP2->Get("cbmsim"); //Hits data // Int_t nevent_hit1_QGSP = thit_QGSP->GetEntries("LMDHitsMerged.fZ<1130");//only hist on 1st plane // Int_t nevent_hit2_QGSP = thit_QGSP->GetEntries("LMDHitsMerged.fZ>1130 && LMDHitsMerged.fZ<1150");//only hist on 2nd plane // ratio_hit1_QGSP[qb][qs] = 100.*double(nevent_hit1_QGSP)/1e4; // ratio_hit2_QGSP[qb][qs] = 100.*double(nevent_hit2_QGSP)/1e4; // ratio_hit1_QGSP[qb][qs] = double(nevent_hit1_QGSP); // ratio_hit2_QGSP[qb][qs] = double(nevent_hit2_QGSP); // ratio_hit1_QGSP[qb][qs] = double(nevent_hit1_QGSP)/double(nevent_hit2_QGSP); // ratio_hit2_QGSP[qb][qs] = 0; fin_QGSP->Close(); // fin_QGSP2->Close(); // ratio_hit1_QGSP[qb][qs] = 100.*double(nevent_hit1_QGSP)/double(nevent_hit2_QGSP); }//end loop over samples }//end loop over Pbeam for(int qb=0;qbSetMarkerColor(2); // gr_ratio_hit1_QGSP->SetMarkerStyle(20); // gr_ratio_hit1_QGSP->SetMarkerSize(2.5); // // gr_ratio_hit1_QGSP->Draw("AP"); // TGraphErrors *gr_ratio_hit2_QGSP = new TGraphErrors(npmom,Pbeam,ratio_hit2_QGSP_mean,0,ratio_hit2_QGSP_rms); // gr_ratio_hit2_QGSP->SetMarkerColor(2); // gr_ratio_hit2_QGSP->SetMarkerStyle(21); // gr_ratio_hit2_QGSP->SetMarkerSize(2.5); TGraphErrors *gr_ratio_badmom_QGSP = new TGraphErrors(npmom,Pbeam,ratio_badmom_QGSP_mean,0,ratio_badmom_QGSP_rms); gr_ratio_badmom_QGSP->SetMarkerColor(2); gr_ratio_badmom_QGSP->SetMarkerStyle(21); gr_ratio_badmom_QGSP->SetMarkerSize(2.5); // gr_ratio_badmom_QGSP->Draw("AP"); // gr_ratio_hit2_QGSP->Draw("AP"); ///[END] Get results from QGSP_BERT_EMV model ------------------------------ /// Get results from FTFP_BERT_EMV model ----------------------------------- TString path_FTFP = path+"FTF_BERT_noCut/"; double ratio_sec_FTFP[npmom][nsamples];//ration secondaries/primaries double ratio_sec_FTFP_mean[npmom];//ration secondaries/primaries double ratio_sec_FTFP_rms[npmom];//ration secondaries/primaries // double ratio_hit1_FTFP[npmom][nsamples];//ratio hits on 1st plane/tot.sim.trks // double ratio_hit1_FTFP_mean[npmom]; // double ratio_hit1_FTFP_rms[npmom]; // double ratio_hit2_FTFP[npmom][nsamples];//ratio hits on 2nd plane/tot.sim.trks // double ratio_hit2_FTFP_mean[npmom]; // double ratio_hit2_FTFP_rms[npmom]; double ratio_badmom_FTFP[npmom][nsamples];//ratio of trks with bad mom/tot.rec.trks, bad =>diff |(Prec-Pmc)/Pmc|>0.1% double ratio_badmom_FTFP_mean[npmom]; double ratio_badmom_FTFP_rms[npmom]; for(int qb=0;qbIsZombie()) cout<<"File: "<Get("tBkg"); //Bkg data Int_t nevent_FTFP = tbkg_FTFP->GetEntries(); if(nevent_FTFP<1) cout<<"nevent_FTFP = 0!!!"<GetEntries("issecond>=0");//only secondary events // cout<GetEntries("abs((pmc-prec)/pmc)*100>0.01 && issecond<0");//only primary events ratio_badmom_FTFP[qb][qs] = 100.*double(nevent_badmom_FTFP)/double(nevent_FTFP); // TString fname_FTFP2 = path_FTFP; // fname_FTFP2+=Pbeam_str[qb]; // fname_FTFP2+="sampl"; // fname_FTFP2 +=qs; // fname_FTFP2 +="/Lumi_recoMerged_0.root"; // TFile *fin_FTFP2 = new TFile(fname_FTFP2,"READ"); // TTree *thit_FTFP = (TTree *)fin_FTFP2->Get("cbmsim"); //Hits data // Int_t nevent_hit1_FTFP = thit_FTFP->GetEntries("LMDHitsMerged.fZ<1130");//only hist on 1st plane // Int_t nevent_hit2_FTFP = thit_FTFP->GetEntries("LMDHitsMerged.fZ>1130 && LMDHitsMerged.fZ<1150");//only hist on 2nd plane // ratio_hit1_FTFP[qb][qs] = 100.*double(nevent_hit1_FTFP)/1e4; // ratio_hit2_FTFP[qb][qs] = 100.*double(nevent_hit2_FTFP)/1e4; // // ratio_hit1_FTFP[qb][qs] = 100.*double(nevent_hit1_FTFP)/double(nevent_hit2_FTFP); // // ratio_hit1_FTFP[qb][qs] = double(nevent_hit1_FTFP); // // ratio_hit2_FTFP[qb][qs] = double(nevent_hit2_FTFP); // // ratio_hit1_FTFP[qb][qs] = double(nevent_hit1_FTFP)/double(nevent_hit2_FTFP); // // ratio_hit2_FTFP[qb][qs] = 0; fin_FTFP->Close(); // fin_FTFP2->Close(); }//end loop over samples }//end loop over Pbeam for(int qb=0;qbSetMarkerColor(4); // gr_ratio_hit1_FTFP->SetMarkerStyle(20); // gr_ratio_hit1_FTFP->SetMarkerSize(2.5); // // gr_ratio_hit1_FTFP->Draw("AP"); // TGraphErrors *gr_ratio_hit2_FTFP = new TGraphErrors(npmom,Pbeam,ratio_hit2_FTFP_mean,0,ratio_hit2_FTFP_rms); // gr_ratio_hit2_FTFP->SetMarkerColor(4); // gr_ratio_hit2_FTFP->SetMarkerStyle(21); // gr_ratio_hit2_FTFP->SetMarkerSize(2.5); // // gr_ratio_hit2_FTFP->Draw("AP"); TGraphErrors *gr_ratio_badmom_FTFP = new TGraphErrors(npmom,Pbeam,ratio_badmom_FTFP_mean,0,ratio_badmom_FTFP_rms); gr_ratio_badmom_FTFP->SetMarkerColor(4); gr_ratio_badmom_FTFP->SetMarkerStyle(20); gr_ratio_badmom_FTFP->SetMarkerSize(2.5); // gr_ratio_badmom_FTFP->Draw("AP"); ///[END] Get results from FTFP_BERT_EMV model ------------------------------ TMultiGraph *mgr_ratio_sec = new TMultiGraph(); mgr_ratio_sec->Add(gr_ratio_sec_QGSP); mgr_ratio_sec->Add(gr_ratio_sec_FTFP); mgr_ratio_sec->Draw("AP"); // mgr_ratio_sec->GetYaxis()->SetTitle("N^{REC}_{secondaries}/N^{REC}_{primaries}, %"); mgr_ratio_sec->GetYaxis()->SetTitle("N^{REC}_{secondaries}/N^{SIM}, %"); mgr_ratio_sec->GetXaxis()->SetTitle("P_{beam},GeV/c "); TLegend *leg2 = new TLegend(0.15,0.84,0.45,0.99); leg2->SetHeader("2 mrad < #theta_{MC} < 12 mrad"); leg2->SetTextAlign(12); leg2->SetTextSize(0.03); leg2->SetFillColor(0); leg2->AddEntry(gr_ratio_sec_QGSP,"QGSP_BERT_EMV","pe"); leg2->AddEntry(gr_ratio_sec_FTFP,"FTFP_BERT","pe"); leg2->Draw(); // TMultiGraph *mgr_ratio_hit = new TMultiGraph(); // mgr_ratio_hit->Add(gr_ratio_hit1_FTFP,"P"); // mgr_ratio_hit->Add(gr_ratio_hit1_QGSP,"P"); // mgr_ratio_hit->Add(gr_ratio_hit2_FTFP,"P"); // mgr_ratio_hit->Add(gr_ratio_hit2_QGSP,"P"); // mgr_ratio_hit->Draw("AP"); // mgr_ratio_hit->GetYaxis()->SetTitle("N^{i plane}_{hits}/N^{SIM}_{events}, %"); // mgr_ratio_hit->GetXaxis()->SetTitle("P_{beam},GeV/c "); // TLegend *leg2 = new TLegend(0.15,0.84,0.45,0.99); // leg2->SetHeader("2 mrad < #theta_{MC} < 12 mrad"); // leg2->SetTextAlign(12); // leg2->SetTextSize(0.03); // leg2->SetFillColor(0); // leg2->AddEntry(gr_ratio_hit1_QGSP,"QGSP_BERT_EMV (1st pl)","pe"); // leg2->AddEntry(gr_ratio_hit1_FTFP,"FTFP_BERT (1st pl)","pe"); // leg2->AddEntry(gr_ratio_hit2_QGSP,"QGSP_BERT_EMV (2nd pl)","pe"); // leg2->AddEntry(gr_ratio_hit2_FTFP,"FTFP_BERT (2nd pl)","pe"); // leg2->Draw(); // TMultiGraph *mgr_ratio_badmom = new TMultiGraph(); // mgr_ratio_badmom->Add(gr_ratio_badmom_QGSP); // mgr_ratio_badmom->Add(gr_ratio_badmom_FTFP); // mgr_ratio_badmom->Draw("AP"); // mgr_ratio_badmom->GetYaxis()->SetTitle("N_{CUT}/N_{REC}"); // mgr_ratio_badmom->GetXaxis()->SetTitle("P_{beam},GeV/c "); // TLegend *leg2 = new TLegend(0.15,0.84,0.45,0.99); // leg2->SetHeader(" |P_{REC}-P_{MC}|/P_{MC}>0.01 %, primaries"); // leg2->SetTextAlign(12); // leg2->SetTextSize(0.03); // leg2->SetFillColor(0); // leg2->AddEntry(gr_ratio_badmom_QGSP,"QGSP_BERT_EMV","pe"); // leg2->AddEntry(gr_ratio_badmom_FTFP,"FTFP_BERT","pe"); // leg2->Draw(); }