///use Eklog_R plot and trigger curve to make trigger cut and get trigger rate void trigger_EC_SIDIS_MIP(char *region) { gROOT->Reset(); gStyle->SetPalette(1); gStyle->SetOptStat(0); gStyle->SetPadRightMargin(0.32); int region_index; if (region=="SIDIS_FA") region_index=0; // else if (region=="SIDIS_LA") region_index=1; else if (region=="SIDIS_LA") {cout << "trigger only for FA" << endl; exit(-1);} else {cout << "need option for FA or LA region" << endl; exit(-1);} // int det[2]={8,12}; //detecor ID // double Rmin[2]={90,80}; // double Rmax[2]={230,140}; int det[2]={8,12}; //detecor ID double Rmin[2]={105,80}; double Rmax[2]={235,140}; // int det[2]={18,12}; //detecor ID // double Rmin[2]={58,80}; // double Rmax[2]={127,140}; double factor=1.; //only PVDIS need this factor as 2 because high and low area only takes half of full azimuthal int rebin_factor=1; const int m=5; char* input_filename[m]={ // "background_solid_CLEO_SIDIS_He3_other_eDIS_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_other_pim_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_other_pip_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_other_pi0_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_other_p_1e6_output.root" // "background_solid_CLEO_SIDIS_He3_other_eDIS_1e6_output.root_Q21", // "background_solid_CLEO_SIDIS_He3_sum_actual_pi0_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_window_downstream_other_eDIS_1e6_output.root", "background_solid_CLEO_SIDIS_He3_window_upstream_other_eDIS_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_other_eDIS_1e6_output.root", "background_solid_CLEO_SIDIS_He3_sum_actual_pim_1e6_output.root", "background_solid_CLEO_SIDIS_He3_sum_actual_pip_1e6_output.root", "background_solid_CLEO_SIDIS_He3_sum_actual_pi0_1e6_output.root", "background_solid_CLEO_SIDIS_He3_sum_actual_p_1e6_output.root" // "background_solid_CLEO_SIDIS_He3_window_upstream_actual_pi0_1e6_output.root", // // "background_solid_CLEO_SIDIS_He3_other_eDIS_1e6_output.root", // // "background_solid_CLEO_SIDIS_He3_other_eDIS_1e6_output.root_Q21", // "background_solid_CLEO_SIDIS_He3_sum_actual_pim_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_pip_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_window_upstream_actual_pi0_1e6_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_p_1e6_output.root" // "background_solid_CLEO_SIDIS_He3_sum_actual_all_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_all_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_all_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_all_output.root", // "background_solid_CLEO_SIDIS_He3_sum_actual_all_output.root" // "background_solid_CLEO_SIDIS_He3_1e8_output.root", // "background_solid_CLEO_SIDIS_He3_1e8_output.root", // "background_solid_CLEO_SIDIS_He3_1e8_output.root", // "background_solid_CLEO_SIDIS_He3_1e8_output.root", // "background_solid_CLEO_SIDIS_He3_1e8_output.root" // "a.root","a.root","a.root","a.root","a.root" }; const int Ntrigline=1,Ntriglinebin=30; TFile *file_trig_cut[1][Ntrigline][4]; double trig_cut_range_R[Ntrigline+1]={0,300}; ///Forward MIP trigger, rough estimate // file_trig_cut[0][0][0]=new TFile("triggerfile/cut1GeV_innerbackground/Lead2X0PbBlock_Hex.1.SIDIS_Forward_RunElectron_GetEfficiencies_TrigMIP2.root"); // file_trig_cut[0][0][1]=new TFile("triggerfile/cut1GeV_innerbackground/Lead2X0PbBlock_Hex.1.SIDIS_Forward_RunPion_GetEfficiencies_TrigMIP2.root"); // // file_trig_cut[0][1][0]=new TFile("triggerfile/cut1GeV_innerbackground/Lead2X0PbBlock_Hex.1.SIDIS_Forward_RunElectron_GetEfficiencies_TrigMIP2.root"); // file_trig_cut[0][1][1]=new TFile("triggerfile/cut1GeV_innerbackground/Lead2X0PbBlock_Hex.1.SIDIS_Forward_RunPion_GetEfficiencies_TrigMIP2.root"); ///MIP trigger 100% pion eff at 1GeV, 30 points per curve file_trig_cut[0][0][0]=new TFile("triggerfile/MIPTrigger/Elec.run10xGetEfficiencies__NO_bgd_TrigMIP2.root"); file_trig_cut[0][0][1]=new TFile("triggerfile/MIPTrigger/Pion.run10xGetEfficiencies__NO_bgd_TrigMIP2.root"); file_trig_cut[0][0][2]=new TFile("triggerfile/MIPTrigger/Gamma.run10xGetEfficiencies__NO_bgd_TrigMIP2.root"); file_trig_cut[0][0][3]=new TFile("triggerfile/MIPTrigger/Proton.run10xGetEfficiencies__NO_bgd_TrigMIP2.root"); ///MIP trigger 95% pion eff at 1GeV, 60 points per curve // file_trig_cut[0][0][0]=new TFile("triggerfile/MIPTrigger_95Perc/Elec.run10xGetEfficiencies__NO_bgd_TrigMIP95Perc.root"); // file_trig_cut[0][0][1]=new TFile("triggerfile/MIPTrigger_95Perc/Pion.run10xGetEfficiencies__NO_bgd_TrigMIP95Perc.root"); // file_trig_cut[0][0][2]=new TFile("triggerfile/MIPTrigger_95Perc/Gamma.run10xGetEfficiencies__NO_bgd_TrigMIP95Perc.root"); // file_trig_cut[0][0][3]=new TFile("triggerfile/MIPTrigger_95Perc/Proton.run10xGetEfficiencies__NO_bgd_TrigMIP95Perc.root"); double trig_cut[1][Ntrigline][Ntriglinebin+2][8]; TGraphErrors *gr_trig_cut[1][Ntrigline][4]; for (int j=0;j<1;j++){ for (int i=0;iGet("Graph"); binwidth=gr_trig_cut[j][i][l]->GetX()[1]-gr_trig_cut[j][i][l]->GetX()[0]; for (int k=0;kGetY()[k]<0.01) gr_trig_cut[j][i][l]->SetPoint(k,gr_trig_cut[j][i][l]->GetX()[k],0.); } } trig_cut[j][i][0][0]=trig_cut_range_R[i]; trig_cut[j][i][0][1]=trig_cut_range_R[i+1]; trig_cut[j][i][0][2]=0.; trig_cut[j][i][0][3]=gr_trig_cut[j][i][0]->GetX()[0]-binwidth/2; trig_cut[j][i][0][4]=0.; trig_cut[j][i][0][5]=0.; trig_cut[j][i][0][6]=0.; trig_cut[j][i][0][7]=0.; for (int k=0;kGetX()[k]-binwidth/2; trig_cut[j][i][k+1][3]=gr_trig_cut[j][i][0]->GetX()[k]+binwidth/2; trig_cut[j][i][k+1][4]=gr_trig_cut[j][i][0]->GetY()[k]; trig_cut[j][i][k+1][5]=gr_trig_cut[j][i][1]->GetY()[k]; trig_cut[j][i][k+1][6]=gr_trig_cut[j][i][2]->GetY()[k]; trig_cut[j][i][k+1][7]=gr_trig_cut[j][i][3]->GetY()[k]; } trig_cut[j][i][Ntriglinebin+1][0]=trig_cut_range_R[i]; trig_cut[j][i][Ntriglinebin+1][1]=trig_cut_range_R[i+1]; trig_cut[j][i][Ntriglinebin+1][2]=gr_trig_cut[j][i][0]->GetX()[Ntriglinebin-1]+binwidth/2; trig_cut[j][i][Ntriglinebin+1][3]=11.; trig_cut[j][i][Ntriglinebin+1][4]=gr_trig_cut[j][i][0]->GetY()[Ntriglinebin-1]; trig_cut[j][i][Ntriglinebin+1][5]=gr_trig_cut[j][i][1]->GetY()[Ntriglinebin-1]; trig_cut[j][i][Ntriglinebin+1][6]=gr_trig_cut[j][i][2]->GetY()[Ntriglinebin-1]; trig_cut[j][i][Ntriglinebin+1][7]=gr_trig_cut[j][i][3]->GetY()[Ntriglinebin-1]; } } cout << "here is the trig value" << endl; for (int j=0;j<1;j++){ for (int i=0;iGet(gr_trig_cut_ele_name[j][i]); gr_trig_cut_pi[j][i]=(TGraphErrors*) file_trig_cut[j][i][1]->Get(gr_trig_cut_pi_name[j][i]); double binwidth=gr_trig_cut_ele[j][i]->GetX()[1]-gr_trig_cut_ele[j][i]->GetX()[0]; if (j==1) { //add one more point for LA to become 21 points like FA gr_trig_cut_ele[j][i]->SetPoint(20,gr_trig_cut_ele[j][i]->GetX()[19]+binwidth,gr_trig_cut_ele[j][i]->GetY()[19]); gr_trig_cut_pi[j][i]->SetPoint(20,gr_trig_cut_pi[j][i]->GetX()[19]+binwidth,gr_trig_cut_pi[j][i]->GetY()[19]); } for (int k=0;kGetY()[k]<0.01) gr_trig_cut_ele[j][i]->SetPoint(k,gr_trig_cut_ele[j][i]->GetX()[k],0.); if (gr_trig_cut_pi[j][i]->GetY()[k]<0.01) gr_trig_cut_pi[j][i]->SetPoint(k,gr_trig_cut_pi[j][i]->GetX()[k],0.); } trig_cut[j][i][0][0]=trig_cut_range_R[i]; trig_cut[j][i][0][1]=trig_cut_range_R[i+1]; // trig_cut[j][i][0][2]=0.22; // trig_cut[j][i][0][3]=gr_trig_cut_ele[j][i]->GetX()[0]-binwidth/2; // trig_cut[j][i][0][4]=0.8*gr_trig_cut_ele[j][i]->GetY()[0]; // trig_cut[j][i][0][5]=0.8*gr_trig_cut_pi[j][i]->GetY()[0]; trig_cut[j][i][0][2]=0.; trig_cut[j][i][0][3]=gr_trig_cut_ele[j][i]->GetX()[0]-binwidth/2; trig_cut[j][i][0][4]=0.; trig_cut[j][i][0][5]=0.; cout << j << " " << i << " " << 0 << " " << gr_trig_cut_ele_name[j][i] << "\t" << gr_trig_cut_ele[j][i]->GetX()[0] << "\t" << gr_trig_cut_ele[j][i]->GetY()[0] << "\t" << gr_trig_cut_pi_name[j][i] << "\t" << gr_trig_cut_pi[j][i]->GetX()[0] << "\t" << gr_trig_cut_pi[j][i]->GetY()[0] << endl; for (int k=0;kGetX()[k]-binwidth/2; trig_cut[j][i][k+1][3]=gr_trig_cut_ele[j][i]->GetX()[k]+binwidth/2; trig_cut[j][i][k+1][4]=gr_trig_cut_ele[j][i]->GetY()[k]; trig_cut[j][i][k+1][5]=gr_trig_cut_pi[j][i]->GetY()[k]; cout << j << " " << i << " " << k << " " << gr_trig_cut_ele_name[j][i] << "\t" << gr_trig_cut_ele[j][i]->GetX()[k] << "\t" << gr_trig_cut_ele[j][i]->GetY()[k] << "\t" << gr_trig_cut_pi_name[j][i] << "\t" << gr_trig_cut_pi[j][i]->GetX()[k] << "\t" << gr_trig_cut_pi[j][i]->GetY()[k] << endl; } trig_cut[j][i][Ntriglinebin+1][0]=trig_cut_range_R[i]; trig_cut[j][i][Ntriglinebin+1][1]=trig_cut_range_R[i+1]; trig_cut[j][i][Ntriglinebin+1][2]=gr_trig_cut_ele[j][i]->GetX()[Ntriglinebin-1]+binwidth/2; trig_cut[j][i][Ntriglinebin+1][3]=11.; trig_cut[j][i][Ntriglinebin+1][4]=gr_trig_cut_ele[j][i]->GetY()[Ntriglinebin-1]; trig_cut[j][i][Ntriglinebin+1][5]=gr_trig_cut_pi[j][i]->GetY()[Ntriglinebin-1]; cout << j << " " << i << " " << Ntriglinebin+1 << " " << gr_trig_cut_ele_name[j][i] << "\t" << gr_trig_cut_ele[j][i]->GetX()[Ntriglinebin-1] << "\t" << gr_trig_cut_ele[j][i]->GetY()[Ntriglinebin-1] << "\t" << gr_trig_cut_pi_name[j][i] << "\t" << gr_trig_cut_pi[j][i]->GetX()[Ntriglinebin-1] << "\t" << gr_trig_cut_pi[j][i]->GetY()[Ntriglinebin-1] << endl; } } cout << "here is the trig value" << endl; for (int j=0;j<2;j++){ for (int i=0;iDivide(m,n); TCanvas *c_Eklog_R_ec_trig = new TCanvas("Eklog_R_ec_trig","Eklog_R_ec_trig",1800,n*400); c_Eklog_R_ec_trig->Divide(m,n); TCanvas *c_fluxR_ec = new TCanvas("fluxR_ec","fluxR_ec",n*900,800); c_fluxR_ec->Divide(n,1); TCanvas *c_fluxR_ec_proj = new TCanvas("fluxR_ec_proj","fluxR_ec_proj",n*900,800); c_fluxR_ec_proj->Divide(n,1); TH2F *hEklog_R[n][m],*hEklog_R_trig[n][m]; TH1F *hfluxR[n][m]; TH1F *hfluxR_proj[n][m],*hfluxR_trig[n][m]; for(int i=0;iIsZombie()) { cout << "Error opening ratefile" << input_filename[i] << endl; exit(-1); } else cout << "open file " << input_filename[i] << endl; for(int j=0;jGet(hstname); c_fluxR_ec->cd(j+1); gPad->SetLogy(1); hfluxR[j][i]->SetLineColor(color[i]); hfluxR[j][i]->SetMinimum(1e-7); hfluxR[j][i]->SetMaximum(1e2); if (i==0) hfluxR[j][i]->Draw(); else hfluxR[j][i]->Draw("same"); sprintf(hstname,"%s_%i_%i","Eklog_R",det[region_index],pid[i]); cout << hstname << endl; hEklog_R[j][i]=(TH2F*) input->Get(hstname); c_Eklog_R_ec->cd(j*m+i+1); gPad->SetLogz(1); if (i!=3) hEklog_R[j][i]->SetAxisRange(-3,1.1,"Y"); hEklog_R[j][i]->Draw("colz"); // hfluxR_proj[j][i]= (TH1F*) hEklog_R[j][i]->ProjectionX(); hfluxR_proj[j][i]= (TH1F*) hEklog_R[j][i]->ProjectionX("_px",1,hEklog_R[j][i]->GetNbinsY()); hfluxR_proj[j][i]->Scale(1./rebin_factor); hfluxR_proj[j][i]->Rebin(rebin_factor); c_fluxR_ec_proj->cd(j+1); gPad->SetLogy(1); hfluxR_proj[j][i]->SetLineColor(color[i]); hfluxR_proj[j][i]->SetMinimum(1e-7); hfluxR_proj[j][i]->SetMaximum(1e2); hfluxR_proj[j][i]->SetTitle(";R (cm);flux (kHz/mm2)"); if (i==0) hfluxR_proj[j][i]->Draw(); else hfluxR_proj[j][i]->Draw("same"); sprintf(hstname,"%s_trig_%i_%i","Eklog_R",j,i); hEklog_R_trig[j][i]=(TH2F*) hEklog_R[j][i]->Clone(hstname); hEklog_R_trig[j][i]->Reset(); cout << "bin" << hEklog_R[j][i]->GetNbinsY() << endl; for(int k=1;k<=hEklog_R[j][i]->GetNbinsX();k++){ for(int l=1;l<=hEklog_R[j][i]->GetNbinsY();l++){ double x=hEklog_R[j][i]->GetXaxis()->GetBinCenter(k); double y=hEklog_R[j][i]->GetYaxis()->GetBinCenter(l); double Ek=pow(10,y); // double mom=sqrt(pow(10,y)*(pow(10,y)+2*mass[i])); //from Ek to P // double mom=pow(10,y); double new_value=0.; // if (pow(10,y) > 2) new_value=hEklog_R[j][i]->GetBinContent(k,l); // else new_value=0; // for(int a=0;a<4;a++){ // for(int b=0;b<10;b++){ for(int a=0;aGetBinContent(k,l); // // if (mom>1) new_value=trig_cut[region_index][a][b][4]*hEklog_R[j][i]->GetBinContent(k,l); // // else new_value=(trig_cut[region_index][a][1][4]-(1-mom)*fabs(trig_cut[region_index][a][3][4]-trig_cut[region_index][a][1][4])/0.5)*hEklog_R[j][i]->GetBinContent(k,l); // } // else if (i==1 || i==2 ) { //pip and pim use same cut // new_value=trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); // // if(mom>1) new_value=trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); // // else new_value=(trig_cut[region_index][a][1][5]-(1-mom)*fabs(trig_cut[region_index][a][3][5]-trig_cut[region_index][a][1][5])/0.5)*hEklog_R[j][i]->GetBinContent(k,l); // } // // else if (i==1 || i==2 ) { // // if (mom>2) new_value=trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); // // else new_value=0; // // } // else if (i==4) { //proton use half pion trig rate // new_value=0.5*trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); // // new_value=trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); // } // else new_value=0.; // } if (trig_cut[region_index][a][b][0] <= x && x < trig_cut[region_index][a][b][1] && trig_cut[region_index][a][b][2] <= Ek && Ek < trig_cut[region_index][a][b][3]){ if(i==0) { //electron cut new_value=trig_cut[region_index][a][b][4]*hEklog_R[j][i]->GetBinContent(k,l); } else if (i==1 || i==2 ) { //pip and pim use same cut new_value=trig_cut[region_index][a][b][5]*hEklog_R[j][i]->GetBinContent(k,l); } else if (i==3) { //gamma cut new_value=trig_cut[region_index][a][b][6]*hEklog_R[j][i]->GetBinContent(k,l); } else if (i==4) { //proton cut new_value=trig_cut[region_index][a][b][7]*hEklog_R[j][i]->GetBinContent(k,l); } else new_value=0.; } } } hEklog_R_trig[j][i]->SetBinContent(k,l,new_value); } } c_Eklog_R_ec_trig->cd(j*m+i+1); gPad->SetLogz(1); if (i!=3) hEklog_R_trig[j][i]->SetAxisRange(-3,1.1,"Y"); hEklog_R_trig[j][i]->Draw("colz"); c_fluxR_ec_proj->cd(j+1); gPad->SetLogy(1); // hfluxR_trig[j][i]= (TH1F*) hEklog_R_trig[j][i]->ProjectionX(); hfluxR_trig[j][i]= (TH1F*) hEklog_R_trig[j][i]->ProjectionX("_px",1,hEklog_R_trig[j][i]->GetNbinsY()); // do this to remove underflow and overflow bin content hfluxR_trig[j][i]->Scale(1./rebin_factor); //change from 1cm to 5cm bin hfluxR_trig[j][i]->Rebin(rebin_factor); //change from 1cm to 5cm bin hfluxR_trig[j][i]->SetLineStyle(7); hfluxR_trig[j][i]->SetLineColor(color[i]); hfluxR_trig[j][i]->SetMinimum(1e-7); hfluxR_trig[j][i]->SetMaximum(1e2); // if (i==0) hfluxR_trig[j][i]->Draw(); // else hfluxR_trig[j][i]->Draw("same"); // if (i==0) hfluxR_trig[j][i]->Draw(); // else if (i==1 || i==2) hfluxR_trig[j][i]->Draw("same"); hfluxR_trig[j][i]->Draw("same"); } // input.Close(); } double rate_total[n][m],rate_total_trig[n][m]; double rate_R[n][m][Ntrigline],rate_R_trig[n][m][Ntrigline]; for(int j=0;j6) continue; int nbins=hfluxR_proj[j][i]->GetNbinsX(); double binwidth=hfluxR_proj[j][i]->GetBinWidth(1); // cout << nbins << " " << binwidth << endl; double sum=0,sum_trig=0; double sum_R[Ntrigline],sum_R_trig[Ntrigline]; for (int l=0;lGetBinCenter(k); if (r < Rmin[region_index] || Rmax[region_index]< r) continue; double thisrate=2*3.1415926*hfluxR_proj[j][i]->GetBinCenter(k)*binwidth*100*hfluxR_proj[j][i]->GetBinContent(k); // factor 100 is from mm2 to cm2 double thisrate_trig=2*3.1415926*hfluxR_trig[j][i]->GetBinCenter(k)*binwidth*100*hfluxR_trig[j][i]->GetBinContent(k); // factor 100 is from mm2 to cm2 sum += thisrate; sum_trig += thisrate_trig; for (int l=0;lSetPaintTextFormat("2.1f"); for(int j=0;jcd(j+1); { TPaveText *pt1 = new TPaveText(0.65,0.99-m*0.05,0.99,0.99,"brNDC"); // TPaveLabel *pt1 = new TPaveLabel(0.7,0.5,0.95,0.95,"a \n b \r sdfhdfghdsfkghdkfghdshgh","brNDC"); pt1->SetFillColor(19); pt1->SetTextAlign(12); pt1->Draw(); for(int i=0;i6) continue; char content[500]; sprintf(content,"%s \t\t %.3g %s",label[i],rate_total[j][i],"kHz"); TText *text1=pt1->AddText(content); text1->SetTextColor(color[i]); text1->SetTextSize(0.035); } } // c_fluxR_ec_trig->cd(j+1); { TPaveText *pt1 = new TPaveText(0.65,0.70-m*0.05,0.99,0.70,"brNDC"); // TPaveLabel *pt1 = new TPaveLabel(0.7,0.5,0.95,0.95,"a \n b \r sdfhdfghdsfkghdkfghdshgh","brNDC"); pt1->SetFillColor(19); pt1->SetTextAlign(12); pt1->Draw(); for(int i=0;i6) continue; char content[500]; sprintf(content,"%s \t\t %.3g %s",label[i],rate_total_trig[j][i],"kHz"); TText *text1=pt1->AddText(content); text1->SetTextColor(color[i]); text1->SetTextSize(0.035); } } // char *pic_name[2][3]={ // "Eklog_R_high_ec_lead.png", // "Eklog_R_high_ec_trig_lead.png", // "fluxR_high_ec_lead.png", // // "Eklog_R_low_ec_lead.png", // "Eklog_R_low_ec_trig_lead.png", // "fluxR_low_ec_lead.png" // }; char *pic_name[2][3]={ "Eklog_R_FAEC.png", "Eklog_R_FAEC_trig.png", "fluxR_FAEC.png", "Eklog_R_LAEC.png", "Eklog_R_LAEC_trig.png", "fluxR_LAEC.png", }; c_Eklog_R_ec->SaveAs(pic_name[region_index][0]); c_Eklog_R_ec_trig->SaveAs(pic_name[region_index][1]); c_fluxR_ec_proj->SaveAs(pic_name[region_index][2]); } }