void compare() { const int NFILES = 2; const char *infile[] = { "eff_files/muid_hvgroup_eff_MinJung.dat", "eff_files/muid_hvgroup_eff_MuidSurvey.dat" }; float eff, eff_err; int id; int nagleplane; int iarm, iplane, ipanel, iorient, ihvg, roads_hit, roads_tot; const int MAXHVGROUPS = 360; float store_eff[NFILES][MAXHVGROUPS] = {{0}}; float store_eff_err[NFILES][MAXHVGROUPS] = {{0}}; for (int ifile=0; ifile> iarm >> nagleplane >> ipanel >> ihvg >> roads_hit >> roads_tot >> eff; if (!myfile.good()) break; if (roads_tot == 0) { } // do nothing else { iplane = nagleplane/2; iorient = nagleplane%2; eff_err = sqrt(eff*(1-eff)/roads_tot); id = iarm*180 + nagleplane*18 + ipanel*3 + ihvg; eff *= 100; eff_err *= 100; cout << " id " << id << " eff " << eff << " eff_err " << eff_err << endl; store_eff[ifile][id] = eff; store_eff_err[ifile][id] = eff_err; } } myfile.close(); } const float maximum_err = 0.05*100; float min = 0; float max = 120; int nbins = 120; int nbin_diff = 50; float min_diff = -5; float max_diff = 5; TH2F *corr_all = new TH2F("corr_all","Asymm = MuidSurvey_eff - MinJung_eff vs MuidSurvey_eff : All", nbins, min, max, nbin_diff, min_diff, max_diff); TH2F *corr = new TH2F("corr","Asymm = MuidSurvey_eff - MinJung_eff vs MuidSurvey_eff ", nbins, min, max, nbin_diff, min_diff, max_diff); TH1F *h1corr = new TH1F("h1corr","Asymm = MuidSurvey_eff - MinJung_eff", nbin_diff, min_diff, max_diff); TH1F *h1corr_all = new TH1F("h1corr_all","Asymm = MuidSurvey_eff - MinJung_eff : All", nbin_diff, min_diff, max_diff); //creating histograms for plane by plane plot //=========================================== TH1F *h1eff1[2][5]; TH1F *h1eff2[2][5]; TH1F *h1subs[2][5]; TH1F *h1tot[2]; char hname[100]; for (int mm=0; mm<2; mm++){ // arm for (int nn=0; nn<5; nn++){ // gap sprintf(hname,"effi_1%d%d",mm,nn); h1eff1[mm][nn] = new TH1F(hname,hname, nbins, min, max); sprintf(hname,"effi_2%d%d",mm,nn); h1eff2[mm][nn] = new TH1F(hname,hname, nbins, min, max); sprintf(hname,"arm%d_gap%d",mm,nn); h1subs[mm][nn] = new TH1F(hname,hname,nbin_diff, min_diff, max_diff); } sprintf(hname,"arm%d_allgaps",mm); h1tot[mm] = new TH1F(hname,hname,nbin_diff, min_diff, max_diff); } // fill histograms //=========================================== int armid, planeid, gapid; for (ihvg=0; ihvgFill(store_eff[1][ihvg], store_eff[1][ihvg] - store_eff[0][ihvg]); h1corr_all->Fill(store_eff[1][ihvg] - store_eff[0][ihvg]); if ( store_eff_err[0][ihvg] < maximum_err && store_eff_err[0][ihvg]>0 ) { corr->Fill(store_eff[1][ihvg], store_eff[1][ihvg] - store_eff[0][ihvg]); h1corr->Fill(store_eff[1][ihvg] - store_eff[0][ihvg]); armid = ihvg/180; planeid = (ihvg%180)/18; gapid = planeid/2; h1eff1[armid][gapid]->Fill(store_eff[1][ihvg]); h1eff2[armid][gapid]->Fill(store_eff[0][ihvg]); h1subs[armid][gapid]->Fill(store_eff[1][ihvg] - store_eff[0][ihvg]); h1tot[armid]->Fill(store_eff[1][ihvg] - store_eff[0][ihvg]); } } TCanvas *cSouth = new TCanvas("cSouth","cSouth",10,10,800,600); cSouth->Divide(3,2); TCanvas *cNorth = new TCanvas("cNorth","cNorth",10,10,800,600); cNorth->Divide(3,2); gStyle->SetOptStat(1001110); gStyle->SetStatH(0.22); gStyle->SetStatW(0.40); for (int m=0; m<2; m++){ for (int n=0; n<5; n++){ if(m==0) cSouth->cd(n+1); if(m==1) cNorth->cd(n+1); h1subs[m][n]->SetLabelSize(0.05,"X"); h1subs[m][n]->SetLabelSize(0.05,"Y"); h1subs[m][n]->SetXTitle("(MuidSurvey_eff) - (MinJung/DB_eff)"); h1subs[m][n]->SetTitleSize(0.05,"X"); h1subs[m][n]->Draw(); } if(m==0) { cSouth->cd(6); h1tot[0]->SetXTitle("(MuidSurvey_eff) - (MinJung/DB_eff)"); h1tot[0]->SetTitleSize(0.05,"X"); h1tot[0]->Draw(); }else if(m==1){ cNorth->cd(6); h1tot[1]->Draw(); h1tot[1]->SetXTitle("(MuidSurvey_eff) - (MinJung/DB_eff)"); h1tot[1]->SetTitleSize(0.05,"X"); } } cSouth->SaveAs("compare_south.gif"); cNorth->SaveAs("compare_north.gif"); }