void drawVarAllCent (double, double highPt, TH1D* hvar, TString var,TString varName, TCut addCut, bool doLog, TString subName,bool onleMC, float maxY ) { TCanvas* c2 = new TCanvas(Form("c2_%s%s",var.Data(),subName.Data()),"",1000,400); makeMultiPanelCanvas(c2,3,1,0.0,0.0,0.2,0.15,0.02); for ( int icent = 1 ; icent<=3 ; icent++) { int lowCent = centBin_std[icent-1]; int highCent = centBin_std[icent]-1; c2->cd(4-icent); drawVariable(lowCent,highCent,60,10000,hvar, var, addCut,doLog,onleMC, maxY); if (doLog ) gPad->SetLogy(); drawText(Form("%.0f %% - %.0f %%", float((float)lowCent*2.5), float((float)(highCent+1)*2.5)),0.6580963,0.9069118,1,16); // drawText("Photon E_{T} > 60GeV",0.3680963,0.6569118,1,15); if ( icent == 1 ) { if (!onleMC) drawCMS2011(0.338,0.906,84,16); } if (icent==2) { TH1D* data = new TH1D("data11","",1,0,1); data->Sumw2(); TH1D* mcSig = new TH1D("mcSig11","",1,0,1); mcStyle(mcSig); TH1D* mcBkg = new TH1D("mcBkg11","",1,0,1); dijetStyle(mcBkg); TLegend* leg1 = new TLegend(0.1586395,0.7137837,0.9992263,0.9626509,NULL,"brNDC"); easyLeg(leg1,varName.Data()); if( !onleMC) leg1->AddEntry(data,"Data","pl"); leg1->AddEntry(mcSig,"MC #gamma-jet + HYDJET","fl"); leg1->AddEntry(mcBkg,"MC dijet Background","fl"); leg1->Draw(); } drawPatch(0,0,0.05,0.14,0,1001,"NDC"); drawPatch(0.93,0.05,1.01,0.14,0,1001,"NDC"); } if (subName ==""){ c2->SaveAs(Form("%s_MCvsDATA_allCent.pdf",var.Data())); c2->SaveAs(Form("%s_MCvsDATA_allCent.gif",var.Data())); } else { c2->SaveAs(Form("%s_MCvsDATA_allCent.pdf",subName.Data())); c2->SaveAs(Form("%s_MCvsDATA_allCent.gif",subName.Data())); } }
void quickPhotonPurity_yj_multiTreeUtil(const TString configFile, const TString inputData, const TString inputMC, const TString outputName, const TString coll="pbpb") { TH1::SetDefaultSumw2(); CutConfiguration config = CutConfigurationParser::Parse(configFile.Data()); TTree *configTree = setupConfigurationTreeForWriting(config); const char* photreeSt=""; const char* hitreeSt=""; if(coll=="pbpb") { photreeSt="EventTree"; hitreeSt="HiTree"; } else { photreeSt="ggHiNtuplizer/EventTree"; hitreeSt="hiEvtAnalyzer/HiTree"; } TFile *dataFile = TFile::Open(pbpbDatafname); //TFile *dataFile = TFile::Open(inputData); TTree *dataTree = (TTree*)dataFile->Get(photreeSt); TTree *dataEvtTree = (TTree*)dataFile->Get(hitreeSt); // TTree *dataTree = (TTree*)dataFile->Get("ggHiNtuplizer/EventTree"); // TTree *dataEvtTree = (TTree*)dataFile->Get("hiEvtAnalyzer/HiTree"); //TTree *dataTree = (TTree*)dataFile->Get("photonSkimTree"); dataTree->AddFriend(dataEvtTree); TFile *mcFile = TFile::Open(pbpbMCfname); //TFile *mcFile = TFile::Open(inputMC); TTree *mcTree = (TTree*)mcFile->Get("ggHiNtuplizer/EventTree"); TTree *mcEvtTree = (TTree*)mcFile->Get("hiEvtAnalyzer/HiTree"); //TTree *mcTree = (TTree*)mcFile->Get("photonSkimTree"); mcTree->AddFriend(mcEvtTree); TFile *outFile = new TFile(outputName,"RECREATE"); const TCut sidebandIsolation = "((pho_ecalClusterIsoR4 + pho_hcalRechitIsoR4 + pho_trackIsoR4PtCut20)>10) && ((pho_ecalClusterIsoR4 + pho_hcalRechitIsoR4 + pho_trackIsoR4PtCut20)<20) && phoHoverE<0.1"; const TCut mcIsolation = "(pho_genMatchedIndex!= -1) && mcCalIsoDR04[pho_genMatchedIndex]<5 && abs(mcPID[pho_genMatchedIndex])<=22"; cout << "JJ" << endl; //TCanvas *cPurity[nPTBINS]; //TCanvas *cPurity = new TCanvas("c1","c1",337*nPTBINS,300*nCENTBINS/**2*/); TCanvas *cPurity = new TCanvas("c1","c1",400*nPTBINS,400*nCENTBINS); //cPurity->Divide(nPTBINS,2*nCENTBINS,0,0); //cPurity->Divide(nPTBINS,nCENTBINS,0,0); makeMultiPanelCanvas(cPurity, nPTBINS, nCENTBINS, 0.0, 0.0 , 0.2, 0.15, 0.005); cout << "nPTBINS = " << nPTBINS << ", nCENTBINS = " << nCENTBINS << ", nETABINS = " << nETABINS << endl; for(Int_t i = 0; i < nPTBINS; ++i) { cout << "i : " << i << endl; //cPurity[i] = new TCanvas(Form("c1_%d",i),"",1920,1000); //cPurity[i]->Divide(nETABINS,2,0,0); for(Int_t j = 0; j < nCENTBINS; ++j) { cout << "j : " << j << endl; for(Int_t k = 0; k< nETABINS; ++k) { cout << "k : " << k << endl; TString ptCut = Form("(phoEt >= %f) && (phoEt < %f)", PTBINS[i], PTBINS[i+1]); TString centCut = Form("((hiBin) >= %i) && ((hiBin) < %i)", CENTBINS[j], CENTBINS[j+1]); TString etaCut = Form("(phoEta >= %f) && (phoEta < %f)", ETABINS[k], ETABINS[k+1]); //TString pPbflipetaCut = Form("(eta*((run>211257)*-1+(run<211257)) >=%f) && (eta*((run>211257)*-1+(run<211257)) <%f)", // ETABINS[k], ETABINS[k+1]); TCut dataCandidateCut = sampleIsolation && etaCut && ptCut && centCut; TCut sidebandCut = sidebandIsolation && etaCut && ptCut && centCut; TCut mcSignalCut = dataCandidateCut && mcIsolation; // if(nETABINS != 1) // { // dataCandidateCut = sampleIsolation && pPbflipetaCut && ptCut && centCut; // sidebandCut = sidebandIsolation && pPbflipetaCut && ptCut && centCut; // mcSignalCut = sampleIsolation && etaCut && ptCut && centCut && mcIsolation; // } PhotonPurity fitr = getPurity(config, dataTree, mcTree, dataCandidateCut, sidebandCut, mcSignalCut); //cPurity[i*nCENTBINS+j] = new TCanvas(Form("cpurity%d",i*nCENTBINS+j), // "",500,500); cout << "centBin = " << centCut << ", ptBin : " << ptCut << ",,,, canvas # : "<<2*(k+j)*nPTBINS+i+1 << endl; cout << "k = " << k << ", j = " << j << ", i = " << i << endl; //cPurity->cd(2*(k+j)*nPTBINS+i+1); cPurity->cd((k+j)*nPTBINS+i+1); //cPurity[i]->cd(k+1); TH1F *hSigPdf = fitr.sigPdf; TH1F *hBckPdf = fitr.bckPdf; TH1D *hData1 = fitr.data; hSigPdf->Add(hBckPdf); TString name = "mcfit_total_ptbin"; name += i; // outFile->cd(); // hSigPdf->SetName(name); // hSigPdf->Write(); // TH1D *err = (TH1D*)hSigPdf->Clone("error"); // TH1D *tempErr[4]; // err->Reset(); // for(int s = 0; s < 4; s++) // { // if(s == 0) // tempErr[s] = (TH1D*)TFile::Open("photonPurity_sys_loose.root")->Get(name); // else if(s ==1) // tempErr[s] = (TH1D*)TFile::Open("photonPurity_sys_tight.root")->Get(name); // else if(s ==2) // tempErr[s] = (TH1D*)TFile::Open("photonPurity_sys_sigshift.root")->Get(name); // else if(s ==3) // tempErr[s] = (TH1D*)TFile::Open("photonPurity_sys_bkgshift.root")->Get(name); // tempErr[s]->Divide(hSigPdf); // for (Int_t l=1; l<=tempErr[s]->GetNbinsX();l++) // { // tempErr[s]->SetBinContent(l, TMath::Abs(tempErr[s]->GetBinContent(l))-1); // } // } // for (Int_t l=1; l<=err->GetNbinsX();l++) // { // Double_t errVal = TMath::Sqrt(tempErr[0]->GetBinContent(l)*tempErr[0]->GetBinContent(l) + // tempErr[1]->GetBinContent(l)*tempErr[1]->GetBinContent(l) + // tempErr[2]->GetBinContent(l)*tempErr[2]->GetBinContent(l) + // tempErr[3]->GetBinContent(l)*tempErr[3]->GetBinContent(l) // ); // err->SetBinContent(l, errVal); // } // plot stacked histos handsomeTH1(hSigPdf); mcStyle(hSigPdf); sbStyle(hBckPdf); cleverRange(hSigPdf,1.5); hSigPdf->SetAxisRange(0.001,0.024,"X"); hSigPdf->SetNdivisions(505); hSigPdf->GetYaxis()->SetTitleOffset(1.75); hSigPdf->SetYTitle("Entries"); hSigPdf->SetXTitle("#sigma_{#eta #eta}"); hSigPdf->DrawCopy("hist"); //drawSys(hSigPdf, err, kRed, -1, 0.001); hBckPdf->DrawCopy("same hist"); hData1->DrawCopy("same"); Float_t xpos = 0.44; if(2*(k+j)*nPTBINS+i+1 == 1) xpos = 0.54; TLegend *t3=new TLegend(xpos, 0.45, 0.92, 0.71); t3->AddEntry(hData1,LABEL,"pl"); t3->AddEntry(hSigPdf,"Signal","lf"); t3->AddEntry(hBckPdf,"Background","lf"); t3->SetFillColor(0); t3->SetBorderSize(0); t3->SetFillStyle(0); t3->SetTextFont(43); t3->SetTextSize(20); //if(i == 0) // TH1D *dummyHist = new TH1D("dummyHist","",10,0,10); // dummyHist->Fill(1); // dummyHist->SetFillColor(kRed); // dummyHist->SetLineColor(kRed); // dummyHist->SetFillStyle(1001); // t3->AddEntry(dummyHist,"MC Sys. Error","f"); // if(i == 0) // t3->Draw(); if(i == 3) { drawText("CMS Preliminary", xpos, 0.68,1,20); drawText("PbPb #sqrt{s}_{_{NN}}=5.02 TeV", xpos, 0.60,1,20); drawText("#intL = 404 #ub^{-1}", xpos, 0.50,1,20); } //drawText("|#eta_{#gamma}| < 1.479",0.5680963,0.9); //drawText(Form("%f shift",fitr.sigMeanShift),0.57,0.82); //drawText("Background Correction",0.57,0.82); //drawText("bkg Tighter",0.57,0.82); //if(nPTBINS != 1) drawText(Form("%.0f GeV < p_{T}^{#gamma} < %.0f GeV", PTBINS[i], PTBINS[i+1]), xpos, 0.90,1,20); // if(/*nCENTBINS != 1 && */i ==0) drawText(Form("%.0f - %.0f%c", CENTBINS[j]/2., CENTBINS[j+1]/2.,'%'), xpos, 0.82,1,20); // if(nETABINS != 1) // drawText(Form("%.3f < #eta_{#gamma} < %.3f", // ETABINS[k], ETABINS[k+1]), // xpos, 0.82,1,20); drawText(Form("Purity (#sigma_{#eta#eta} < 0.01) : %.2f", (Float_t)fitr.purity), xpos, 0.76,1,20); drawText(Form("#chi^{2}/ndf : %.2f", (Float_t)fitr.chisq), xpos, 0.45,1,20); // //plot ratio // cPurity->cd((2*(j+k)+1)*nPTBINS+i+1); // //cPurity[i]->cd(nETABINS + k+ 1); // TH1D* ratio = (TH1D*)hData1->Clone("ratio"); // ratio->Divide(hData1, hSigPdf, 1, 1); // ratio->SetMinimum(0); // ratio->SetMaximum(3); // ratio->SetXTitle("#sigma_{#eta #eta}"); // ratio->GetXaxis()->CenterTitle(); // ratio->SetYTitle("Data/Fit"); // ratio->GetYaxis()->CenterTitle(); // ratio->DrawCopy("E"); // TLine *line = new TLine(0,1,maxSIGMA,1); // line->SetLineStyle(2); // line->Draw("same"); // TString savename = Form("purity_pA_barrel_pt%.0f_hf%.0f_plot", // PTBINS[i], CENTBINS[j]); // cPurity[i*nCENTBINS+j]->SaveAs(savename+".C"); // cPurity[i*nCENTBINS+j]->SaveAs(savename+".pdf"); // cPurity[i*nCENTBINS+j]->SaveAs(savename+".png"); } } //cPurity[i]->SaveAs(Form("pPb_purity_etadep_wshift_ptbin%.0f.png",PTBINS[i])); //cPurity[i]->SaveAs(Form("pPb_purity_etadep_noshift_inclusive.png")); } outFile->cd(); configTree->Write(); cPurity->Write(); outFile->Close(); //cPurity->SaveAs(SAVENAME+".C"); //cPurity->SaveAs(SAVENAME+".png"); //cPurity->SaveAs(SAVENAME+".pdf"); }
void drawVariable(int lowCent, int highCent, double lowPt, double highPt, TH1D* hvar, TString var, TCut addCut, bool doLog ,bool onleMC, float maxY ) { TCut ptCut = Form("pt>%.f && pt <%.f",lowPt,highPt); TString ptCutS = Form("E_{T} : %.0f - %.0f GeV",lowPt,highPt); if ( highPt > 200 ) ptCutS = Form("E_{T} > %.0f GeV",lowPt); char* fnamePho50 = "forest/barrelHiForestPhoton_MCphoton50_37k.root"; float csPho50 = 6.663e-7; float nEvtPho50 = 51200; float weightPho50 = csPho50/nEvtPho50; char* fnamePho80 = "forest/barrelHiForestPhoton_MCphoton80_25k.root"; float csPho80 = 8.731e-8; float nEvtPho80 = 26000; float weightPho80 = csPho80/nEvtPho80; char* fnameEmj80 = "forest/barrelHiForestPhoton_MCemJet80_41007events.root"; double csDij80 = 9.869e-5; float nEvtEmj80 = 60000; float effEmj80 = 0.204; float weightEmj80 = csDij80*effEmj80/nEvtEmj80; char* fnameEmj120 = "forest/barrelHiForestPhoton_MCemJet120_25308events.root";; float nEvtEmj120 = 14000; double csDij120 = 1.127e-5; float effEmj120 = 0.54; float weightEmj120 = csDij120*effEmj120/nEvtEmj120; TString fname1 = "forest/barrelHiForestPhotonV6.root"; TFile *f1 =new TFile(fname1.Data()); TTree *tdata = (TTree*)f1->Get("yongsunPhotonTree"); tdata->AddFriend("yEvt=yongsunHiEvt" ,fname1.Data()); tdata->AddFriend("yskim=yongsunSkimTree" ,fname1.Data()); tdata->AddFriend("yhlt=yongsunHltTree" ,fname1.Data()); tdata->AddFriend("tgj" ,fname1.Data()); multiTreeUtil* photon1 = new multiTreeUtil(); photon1->addFile( fnamePho50, "yongsunPhotonTree", "" , weightPho50); photon1->addFile( fnamePho80, "yongsunPhotonTree", "" , weightPho80); photon1->AddFriend("yEvt=yongsunHiEvt"); photon1->AddFriend("tgj"); multiTreeUtil* bkgs1 = new multiTreeUtil(); bkgs1->addFile( fnameEmj80, "yongsunPhotonTree", "" , weightEmj80); bkgs1->addFile( fnameEmj120, "yongsunPhotonTree", "" , weightEmj120); bkgs1->AddFriend("yEvt=yongsunHiEvt"); bkgs1->AddFriend("tgj"); TCut evtSelCut = "tgj.anaEvtSel"; TCut centCut = Form("(yEvt.hiBin >= %d) && (yEvt.hiBin<= %d)",lowCent,highCent); TCut photonJetCut = "tgj.photonEt>60 && tgj.jetEt>30"; TCut dphiCut= "acos(cos(tgj.photonPhi-tgj.jetPhi))>2.0944"; TCut lPhotCut= "leading==1"; TCut generalCutMC = photonJetCut && dphiCut && lPhotCut && centCut && addCut; TCut generalCutData = generalCutMC && evtSelCut; // TCut srIsoCut = FisherCut && "sigmaIetaIeta <0.010"; TCut finalCutData = generalCutData;// && srIsoCut ; TCut finalCutPho = generalCutMC;// && srIsoCut ; TCut finalCutEmj = generalCutMC;// && srIsoCut ; TH1D* tempHist = (TH1D*)hvar->Clone(Form("%s_data",hvar->GetName())); TH1D* tempHistMC1 = (TH1D*)hvar->Clone(Form("%s_MC1",hvar->GetName())); TH1D* tempHistMC2 = (TH1D*)hvar->Clone(Form("%s_MC2",hvar->GetName())); tdata->Draw(Form("%s>>%s",var.Data(),tempHist->GetName()), finalCutData); photon1->Draw2(tempHistMC1, var.Data(), finalCutPho,"ncoll"); bkgs1->Draw2 (tempHistMC2, var.Data(), finalCutPho,"ncoll"); tempHist->Sumw2(); tempHistMC1->Sumw2(); tempHistMC2->Sumw2(); handsomeTH1(tempHist); handsomeTH1(tempHistMC1); handsomeTH1(tempHistMC2); mcStyle(tempHistMC1); dijetStyle(tempHistMC2); if (!onleMC) tempHistMC1->Add(tempHistMC2); float theNorm = tempHistMC1->Integral(); tempHistMC1->Scale(1./theNorm); if (onleMC) tempHistMC2->Scale(1./tempHistMC2->Integral()); else tempHistMC2->Scale(1./theNorm); tempHist->Scale(1./tempHist->Integral()); if ( doLog) cleverRangeLog(tempHistMC1,10,1.e-5); else cleverRange(tempHistMC1,2); tempHistMC1->SetAxisRange(0.0005,maxY,"Y"); tempHistMC1->DrawCopy("hist");//hist"); TH1D* tempHistMC1Err = (TH1D*)tempHistMC1->Clone("temptemp"); tempHistMC1Err->SetLineColor(2); tempHistMC1Err->SetMarkerColor(2); tempHistMC1Err->SetMarkerSize(0); tempHistMC1Err->Draw("same"); tempHistMC2->DrawCopy("hist same");//hist"); if ( !onleMC) tempHist->DrawCopy("same");//hist"); }