void photonSpectra() { TH1::SetDefaultSumw2(); const Double_t PTBINS[] = {40, 50, 60, 80, 120, 300}; const Int_t nPTBINS = 5; const TString DATA_FILE = "gammaJets_pA_Data.root"; const TString MC_FILE = "gammaJets_pA_MC_allQCDPhoton.root"; TFile *dataFile = TFile::Open(DATA_FILE); TTree *dataTree = (TTree*)dataFile->Get("photonTree"); TFile *mcFile = TFile::Open(MC_FILE); TTree *mcTree = (TTree*)mcFile->Get("photonTree"); TH1D *photonSpectra = new TH1D("photonSpectra","photonSpectra", nPTBINS, PTBINS); TH1D *correctedPhotonSpectra = (TH1D*)photonSpectra->Clone("correctedPhotonSpectra"); const TCut photonEtaCut = "abs(photonTree.eta) < 1.44"; const TCut isoCut = "ecalRecHitSumEtConeDR04 < 4.2 && hcalTowerSumEtConeDR04 < 2.2 && trkSumPtHollowConeDR04 < 2 && hadronicOverEm<0.1"; const TCut genCut = "genCalIsoDR04<5 && abs(genMomId)<=22"; const TCut sbCut = "(cc4+cr4+ct4PtCut20>10) && (cc4+cr4+ct4PtCut20<20) && hadronicOverEm<0.1"; const TCut candidateCut = "sigmaIetaIeta<0.01"; const TCut decayCut = "(sigmaIetaIeta>0.011) && (sigmaIetaIeta<0.017)"; TCut photonPtCut = "photonTree.corrPt>40 && photonTree.corrPt<300"; dataTree->Project(photonSpectra->GetName(),"corrPt",isoCut && photonEtaCut && photonPtCut && candidateCut); for(int i = 0; i<nPTBINS; ++i) { photonPtCut = Form("photonTree.corrPt>%f && photonTree.corrPt<%f", PTBINS[i], PTBINS[i+1] ); TCut dataCandidateCut = isoCut && photonEtaCut && photonPtCut; TCut sidebandCut = sbCut && photonEtaCut && photonPtCut; TCut mcSignalCut = dataCandidateCut && genCut; fitResult fitr = getPurity(dataTree, mcTree, dataCandidateCut, sidebandCut, mcSignalCut); Double_t purity = fitr.purity; correctedPhotonSpectra->SetBinContent(i+1,photonSpectra->GetBinContent(i+1)*purity); } // TCanvas *c1 = new TCanvas(); // photonSpectra->Draw(); // correctedPhotonSpectra->Draw("same"); TFile *outFile = new TFile("photonSpectra.root", "RECREATE"); outFile->cd(); photonSpectra->Write(); correctedPhotonSpectra->Write(); outFile->Close(); }
void gammaJetHistProducer_jetEnergyScaledMinus2percent(sampleType collision = kPADATA, float photonPtThr=60, float photonPtThrUp=9999, float jetPtThr=30, int icent =1) { TH1::SetDefaultSumw2(); TString stringSampleType = getSampleName(collision); ""; TDatime* date = new TDatime(); TString outName= Form("photonTrackCorr_%s_output_photonPtThr%d_to_%d_jetPtThr%d_%d.root",stringSampleType.Data(),(int)photonPtThr, (int)photonPtThrUp, (int)jetPtThr, date->GetDate()); delete date; int lowerCent(0), upperCent(0); TCut centCut = ""; if ( (collision ==kHIDATA) || (collision==kHIMC) ) { lowerCent = centBin1[icent-1]; upperCent = centBin1[icent]-1; if ( icent > 9999) { lowerCent = ((icent/100)%100)/2.5; upperCent = (icent%100)/2.5 -1; } centCut = Form("cBin >= %d && cBin<= %d",lowerCent,upperCent); } else if ( (collision ==kPPDATA) || (collision==kPPMC) ){ // if it's pp centCut = "(1==1)"; // icent = 7; // for pp, centrality is set as the smearing } else { // pPb centCut = Form( "hf4Sum > %f && hf4Sum <= %f", (float)centBinPa[icent-1], (float)centBinPa[icent]); } cout <<" centrality : " << centCut.GetTitle() << endl; ///////// Photon cut ////////////////////////////////////////////////////////////////////////////// cout <<" photon pt >" << photonPtThr << " GeV" << endl; TCut ptPhoCut = Form("photonEt>%.1f && photonEt<%.1f", (float)photonPtThr, (float)photonPtThrUp ); TCut caloIso; if ( (collision==kPPMC) || (collision==kPPDATA) ) caloIso = "(ecalIso < 4.2 && hcalIso < 2.2 && trackIso < 2) && hovere<0.1"; else if ( (collision==kHIMC) || (collision==kHIDATA) ) caloIso = "(sumIso<1) && hovere<0.1"; else { caloIso = "ecalIso < 4.2 && hcalIso < 2.2 && trackIso < 2 && hovere<0.1"; } TCut sbIso = "(sumIso>10) && (sumIso<20) && hovere<0.1"; // if ( (collision==kPPMC) || (collision==kPPDATA) || (collision==kPAMC) || (collision==kPADATA) ) // sbIso = "ecalIso < 4.2 && hcalIso < 2.2 && trackIso > 2 && trackIso < 5 && hovere<0.1"; TCut basicPhoCut = centCut && ptPhoCut && caloIso ; TCut sbPhoCut = centCut && ptPhoCut && sbIso ; TCut evtSeltCut = basicPhoCut; TCut sbSeltCut = sbPhoCut; TCut phoCandCut = "sigmaIetaIeta<0.010"; TCut phoDecayCut = "(sigmaIetaIeta>0.011) && (sigmaIetaIeta<0.017)"; if ( ( collision == kHIMC ) || (collision == kPPMC) || (collision == kPAMC)) phoCandCut = phoCandCut && "genIso<5 && abs(genMomId)<=22"; TString fname = ""; if ( collision == kHIDATA) fname = fnameHIDATA_Minus2percentScaled; else if ( collision == kPADATA) fname = fnamePADATA_Minus2percentScaled; else if ( collision == kPPDATA) { if ( icent == 7 ) fname = fnamePPDATA_Minus2percentScaled; } else fname = ""; multiTreeUtil* tgj = new multiTreeUtil(); multiTreeUtil* tgjMC = new multiTreeUtil(); if ( ( collision == kHIDATA) || ( collision==kPADATA) || ( collision == kPPDATA) ) { tgj->addFile(fname, "tgj", evtSeltCut, 1); } else if ( collision == kPPMC ) { tgj->addFile(fnamePPMC_AllQcdPho30to50, "tgj", evtSeltCut, wPPMC_AllQcdPho30to50 ); tgj->addFile(fnamePPMC_AllQcdPho50to80, "tgj", evtSeltCut, wPPMC_AllQcdPho50to80 ); tgj->addFile(fnamePPMC_AllQcdPho80to120, "tgj", evtSeltCut, wPPMC_AllQcdPho80to120 ); tgj->addFile(fnamePPMC_AllQcdPho120to9999, "tgj", evtSeltCut, wPPMC_AllQcdPho120to9999 ); } else if ( collision == kPAMC ) { tgj->addFile(fnamePAMC_AllQcdPho30to50, "tgj", evtSeltCut, wPAMC_AllQcdPho30to50 ); tgj->addFile(fnamePAMC_AllQcdPho50to80, "tgj", evtSeltCut, wPAMC_AllQcdPho50to80 ); tgj->addFile(fnamePAMC_AllQcdPho80to120, "tgj", evtSeltCut, wPAMC_AllQcdPho80to120 ); tgj->addFile(fnamePAMC_AllQcdPho120to9999, "tgj", evtSeltCut, wPAMC_AllQcdPho120to9999 ); } else { // kHIMC tgj->addFile(fnameHIMC_AllQcdPho30to50, "tgj", evtSeltCut, wHIMC_AllQcdPho30to50 ); tgj->addFile(fnameHIMC_AllQcdPho50to80, "tgj", evtSeltCut, wHIMC_AllQcdPho50to80 ); tgj->addFile(fnameHIMC_AllQcdPho80to9999, "tgj", evtSeltCut, wHIMC_AllQcdPho80to9999 ); } tgj->AddFriend("yJet"); // get purity with the current jet cut ! float purity(0); TString canvasName = Form("gifs/purity_%s_output_icent%d_photonPtThr%d-%d_jetPtThr%d", stringSampleType.Data(), (int)icent, (int)photonPtThr, (int)photonPtThrUp, (int)jetPtThr); // if ( (collision==kPPDATA) && (photonPtThr < 50 ) ) { // purity = 0.86 ; // cout << " !!!!!!!" << endl << endl << " purity is set as 0.86 for this bin because we don't have pp MC low pt sample " << endl; // cout << endl << endl << endl << " !!!!!!" << endl; // } if ( (collision==kHIDATA)||(collision==kPPDATA)||(collision==kPADATA) ) { fitResult fitr = getPurity(fname, collision, evtSeltCut, sbSeltCut, canvasName, photonPtThr, photonPtThrUp); purity = fitr.purity010; /* float originalP = purity; if (collision==kPPDATA) purity = purity - 0.05; else if (collision==kHIDATA) { if ( icent == 10030) purity = purity - 0.08; else if ( icent == 13099) purity = purity - 0.07; } cout << "====================================================================================" << endl << endl << endl; cout << "====================================================================================" << endl << endl << endl; cout << "================================ Purity modified!!! ================================" << endl << endl << endl; cout << "=============== "<<originalP<< " --> "<<purity<< "====================================" << endl << endl << endl; cout << "====================================================================================" << endl << endl << endl; */ } else { purity = 1; cout << " MC purity = 1" << endl; } GjSpectra* gSpec = new GjSpectra(); gSpec->init(Form("icent%d",(int)icent) ); tgj->Draw2(gSpec->hPtPhoCand, "photonEt", phoCandCut, "") ; tgj->Draw2(gSpec->hPtPhoDecay, "photonEt", phoDecayCut, "") ; // Obtain background subtracted spectra float candInt = gSpec->hPtPhoCand->Integral(); float candDecay = gSpec->hPtPhoDecay->Integral(); gSpec->hPtPhoSig->Reset(); gSpec->hPtPhoSig->Add(gSpec->hPtPhoCand); gSpec->hPtPhoSig->Add(gSpec->hPtPhoDecay, -(1. - purity) * candInt / candDecay); gSpec->hPtPhoSig->Scale(1./purity ) ; TFile outf = TFile(Form("ffFiles/%s",outName.Data()),"update"); gSpec->hPtPhoCand->Write(); gSpec->hPtPhoDecay->Write(); gSpec->hPtPhoSig->Write(); outf.Close(); // Objects multiTreeUtil* tObj[3]; tObj[kTrkRaw] = new multiTreeUtil(); tObj[kTrkBkg] = new multiTreeUtil(); if ( ( collision == kHIDATA) || ( collision==kPADATA) || ( collision == kPPDATA) ) { tObj[kTrkRaw]->addFile(fname, "yJet", evtSeltCut, 1); tObj[kTrkBkg]->addFile(fname, "mJet", evtSeltCut, 1); } else if ( collision == kHIMC ) { tObj[kTrkRaw]->addFile(fnameHIMC_AllQcdPho30to50, "yJet", evtSeltCut, wHIMC_AllQcdPho30to50 ) ; tObj[kTrkRaw]->addFile(fnameHIMC_AllQcdPho50to80, "yJet", evtSeltCut, wHIMC_AllQcdPho50to80 ) ; tObj[kTrkRaw]->addFile(fnameHIMC_AllQcdPho80to9999, "yJet", evtSeltCut, wHIMC_AllQcdPho80to9999 ) ; tObj[kTrkBkg]->addFile(fnameHIMC_AllQcdPho30to50, "mJet", evtSeltCut, wHIMC_AllQcdPho30to50 ) ; tObj[kTrkBkg]->addFile(fnameHIMC_AllQcdPho50to80, "mJet", evtSeltCut, wHIMC_AllQcdPho50to80 ) ; tObj[kTrkBkg]->addFile(fnameHIMC_AllQcdPho80to9999, "mJet", evtSeltCut, wHIMC_AllQcdPho80to9999 ) ; } else if ( collision == kPAMC ) { tObj[kTrkRaw]->addFile(fnamePAMC_AllQcdPho30to50, "yJet", evtSeltCut, wPAMC_AllQcdPho30to50 ) ; tObj[kTrkRaw]->addFile(fnamePAMC_AllQcdPho50to80, "yJet", evtSeltCut, wPAMC_AllQcdPho50to80 ) ; tObj[kTrkRaw]->addFile(fnamePAMC_AllQcdPho80to120, "yJet", evtSeltCut, wPAMC_AllQcdPho80to120 ) ; tObj[kTrkRaw]->addFile(fnamePAMC_AllQcdPho120to9999,"yJet", evtSeltCut, wPAMC_AllQcdPho120to9999 ) ; tObj[kTrkBkg]->addFile(fnamePAMC_AllQcdPho30to50, "mJet", evtSeltCut, wPAMC_AllQcdPho30to50 ) ; tObj[kTrkBkg]->addFile(fnamePAMC_AllQcdPho50to80, "mJet", evtSeltCut, wPAMC_AllQcdPho50to80 ) ; tObj[kTrkBkg]->addFile(fnamePAMC_AllQcdPho80to120, "mJet", evtSeltCut, wPAMC_AllQcdPho80to120 ) ; tObj[kTrkBkg]->addFile(fnamePAMC_AllQcdPho120to9999,"mJet", evtSeltCut, wPAMC_AllQcdPho120to9999 ) ; } else if ( collision == kPPMC ) { tObj[kTrkRaw]->addFile(fnamePPMC_AllQcdPho30to50, "yJet", evtSeltCut, wPPMC_AllQcdPho30to50 ); tObj[kTrkRaw]->addFile(fnamePPMC_AllQcdPho50to80, "yJet", evtSeltCut, wPPMC_AllQcdPho50to80 ); tObj[kTrkRaw]->addFile(fnamePPMC_AllQcdPho80to120, "yJet", evtSeltCut, wPPMC_AllQcdPho80to120 ); tObj[kTrkRaw]->addFile(fnamePPMC_AllQcdPho120to9999,"yJet", evtSeltCut, wPPMC_AllQcdPho120to9999 ); tObj[kTrkBkg]->addFile(fnamePPMC_AllQcdPho30to50, "mJet", evtSeltCut, wPPMC_AllQcdPho30to50 ); tObj[kTrkBkg]->addFile(fnamePPMC_AllQcdPho50to80, "mJet", evtSeltCut, wPPMC_AllQcdPho50to80 ); tObj[kTrkBkg]->addFile(fnamePPMC_AllQcdPho80to120, "mJet", evtSeltCut, wPPMC_AllQcdPho80to120 ); tObj[kTrkBkg]->addFile(fnamePPMC_AllQcdPho120to9999,"mJet", evtSeltCut, wPPMC_AllQcdPho120to9999 ); } tObj[kTrkRaw]->AddFriend("tgj"); tObj[kTrkBkg]->AddFriend("tgj"); TCut jetCut = Form("abs(eta)<%f && pt>%f", (float)cutjetEta, (float)jetPtThr ); TCut jetCutDphi = jetCut && (TCut)(Form("abs(dphi)>%f",(float)awayRange)); TCut genJetCut = Form("abs(jtEta)<%f && jtPt>%f", (float)cutjetEta, (float)jetPtThr ); TCut genJetCutDphi = jetCut && (TCut)(Form("abs(refDphi)>%f",(float)awayRange)); TCut jetCut2 = Form("abs(dphi)>%f && pt>%f", (float)awayRange, (float)jetPtThr ) ; TString jetWeight = ""; TH1D* hJetDphi = new TH1D(Form("jetDphi_icent%d",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); corrFunctionTrk* cJetDphi = new corrFunctionTrk(); TString varJetDphi = Form("dphi"); gammaTrkSingle( gSpec, tObj, cJetDphi, purity, collision, varJetDphi, jetCut, jetWeight, phoCandCut, phoDecayCut, hJetDphi, outName); TH1D* hJetPt = new TH1D(Form("jetPt_icent%d",icent),";Jet p_{T} (GeV) ;dN/dp_{T} (GeV^{-1})",280, 20,300); corrFunctionTrk* cJetPt = new corrFunctionTrk(); TString varJetPt = Form("pt"); gammaTrkSingle( gSpec, tObj, cJetPt, purity, collision, varJetPt, jetCutDphi, jetWeight, phoCandCut, phoDecayCut, hJetPt, outName); const int nJetIaaBin = 7; double jetIaaBin[nJetIaaBin+1] = {30,40,50,60,80,100,120,200}; TH1D* hJetPtForIaa = new TH1D(Form("jetPtForIaa_icent%d",icent),";Jet p_{T} (GeV) ;dN/dp_{T} (GeV^{-1})",nJetIaaBin, jetIaaBin); corrFunctionTrk* cJetIaaPt = new corrFunctionTrk(); gammaTrkSingle( gSpec, tObj, cJetIaaPt, purity, collision, varJetPt, jetCutDphi, jetWeight, phoCandCut, phoDecayCut, hJetPtForIaa, outName); // TH1D* hDjetPt = new TH1D(Form("dpt_icent%d",icent),";p_{T}^{#gamma} - p_{T}^{Jet} (GeV) ;dN/dp_{T} (GeV^{-1})",30,-150,150); // corrFunctionTrk* cDjetPt = new corrFunctionTrk(); // TString varJetDpt = Form("pt - photonEt"); // gammaTrkSingle( gSpec, tObj, cDjetPt, purity, // collision, varJetDpt, jetCutDphi, jetWeight, // phoCandCut, phoDecayCut, hDjetPt, outName); TH1D* hJetXjg = new TH1D(Form("xjg_icent%d",icent),";p_{T}^{Jet}/p_{T}^{#gamma} ; ",400,0,5); corrFunctionTrk* cJetXjg = new corrFunctionTrk(); TString varJetXjg = Form("pt/photonEt"); gammaTrkSingle( gSpec, tObj, cJetXjg, purity, collision, varJetXjg, jetCutDphi, jetWeight, phoCandCut, phoDecayCut, hJetXjg, outName); if ( (collision == kPAMC) || (collision == kPPMC) ||(collision == kHIMC) ) { TH1D* hGenJetPt = (TH1D*)hJetPt->Clone(Form("genJetPt_icent%d",icent)); corrFunctionTrk* cGenJetPt = new corrFunctionTrk(); TString varGenJetPt = Form("refPt"); gammaTrkSingle( gSpec, tObj, cJetPt, purity, collision, varGenJetPt, genJetCutDphi, jetWeight, phoCandCut, phoDecayCut, hGenJetPt, outName); TH1D* hGenJetXjg = (TH1D*)hJetXjg->Clone(Form("xjg_genJet_icent%d",icent)); corrFunctionTrk* cGenJetXjg = new corrFunctionTrk(); TString varGenJetXjg = Form("refPt/photonEt"); gammaTrkSingle( gSpec, tObj, cGenJetXjg, purity, collision, varGenJetXjg, genJetCutDphi , jetWeight, phoCandCut, phoDecayCut, hGenJetXjg, outName); TH1D* hGenPhotonXjg = (TH1D*)hJetXjg->Clone(Form("xjg_genPho_icent%d",icent)); corrFunctionTrk* cGenPhotonXjg = new corrFunctionTrk(); TString varGenPhotonXjg = Form("pt/genPhotonEt"); gammaTrkSingle( gSpec, tObj, cGenPhotonXjg, purity, collision, varGenPhotonXjg, jetCutDphi, jetWeight, phoCandCut, phoDecayCut, hGenPhotonXjg, outName); TH1D* hGenPhoGenJetXjg = (TH1D*)hJetXjg->Clone(Form("xjg_genPho_genJet_icent%d",icent)); corrFunctionTrk* cGenPhoGenJetXjg = new corrFunctionTrk(); TString varGenPhoGenJetXjg = Form("refPt/genPhotonEt"); gammaTrkSingle( gSpec, tObj, cGenPhoGenJetXjg, purity, collision, varGenPhoGenJetXjg, genJetCutDphi, jetWeight, phoCandCut, phoDecayCut, hGenPhoGenJetXjg, outName); } bool doRapidity= false; if ( doRapidity) { // Eta distribution TH1D* hEtaJg = new TH1D(Form("etaJg_icent%d",icent),";#eta_{J,#gamma} ; ",160,-3,3); corrFunctionTrk* cEtaJg = new corrFunctionTrk(); TString varEtaJg = Form("(photonEta+eta)/2."); gammaTrkSingle( gSpec, tObj, cEtaJg, purity, collision, varEtaJg, jetCut2, jetWeight, phoCandCut, phoDecayCut, hEtaJg, outName); TH1D* hEtaJet = new TH1D(Form("etaJet_icent%d",icent),";#eta_{Jet} ; ",160,-3,3); corrFunctionTrk* cEtaJet = new corrFunctionTrk(); TString varEtaJet = Form("eta"); gammaTrkSingle( gSpec, tObj, cEtaJet, purity, collision, varEtaJet, jetCut2, jetWeight, phoCandCut, phoDecayCut, hEtaJet, outName); TH1D* hEtaPhoton = new TH1D(Form("etaPhoton_icent%d",icent),";#eta_{#gamma} ; ",160,-3,3); corrFunctionTrk* cEtaPhoton = new corrFunctionTrk(); TString varEtaPhoton = Form("photonEta"); gammaTrkSingle( gSpec, tObj, cEtaPhoton, purity, collision, varEtaPhoton, jetCut2, jetWeight, phoCandCut, phoDecayCut, hEtaPhoton, outName); } }
void drawDCAcontamination(){ gStyle->SetOptStat(0); TFile * file = TFile::Open("/Users/sandrobjelogrlic/Analysis/HFCorrelations/Results/MCCE/83_12022015/10f7a/AnalysisResults.root"); TDirectoryFile * dir = (TDirectoryFile*)file->Get("PWGHF_HFCJ_SE_EffY_DEffY_vsPt_32_bins_SE_RECO_reco_2_348_sigmas"); TList * list = (TList*)dir->Get("OutputMCSE_RECO"); TH1D * isPhysPrimDCA = (TH1D*)list->FindObject("isPhysPrimDCA"); TH1D * isSecondaryDCA = (TH1D*)list->FindObject("isSecondaryDCA"); isPhysPrimDCA->GetXaxis()->SetRangeUser(0,2); isPhysPrimDCA->SetLineColor(2); isSecondaryDCA->SetLineColor(4); isPhysPrimDCA->SetTitle("; DCA_{XY} (cm); Counts"); isPhysPrimDCA->GetYaxis()->SetTitleOffset(1.2); TPaveText * PaveText = new TPaveText(0.5,0.55,0.8,0.7,"NDC"); PaveText->SetBorderSize(0); PaveText->SetFillColor(0); PaveText->SetName("pave"); // PaveText->AddText("THIS THESIS"); // PaveText->AddText(" "); PaveText->AddText("Phytia, pp #sqrt{s} = 7 TeV"); //PaveText->AddText(" "); // PaveText->AddText("Fraction of Primary tracks as funct"); TLine * cut = new TLine(0.25,0,0.25,10000000); cut->SetLineStyle(2); TLegend * legend = new TLegend(0.4,0.7,0.8,0.85); // TLegend * legend = new TLegend(0.1, 1.2*DStarPeak->GetBinContent(DStarPeak->GetMaximumBin()),0.4, 1.6*DStarPeak->GetBinContent(DStarPeak->GetMaximumBin())); legend->SetFillColor(0); legend->SetTextSize(0.03); legend->SetBorderSize(0); legend->AddEntry(isPhysPrimDCA,"Primary tracks","l"); legend->AddEntry(isSecondaryDCA,"Secondary tracks","l"); legend->AddEntry(cut,"Standard cut, DCA_{XY} < 0.25 cm","l"); //legend->AddEntry(h_Perugia2011,"Pythia, Perugia 2011 tune","lep"); TCanvas * c1 = new TCanvas("c1","c1",0,0,1000,1000); c1->cd(); c1->SetLogy(); isPhysPrimDCA->Draw(); isSecondaryDCA->Draw("same"); legend->Draw("same"); PaveText->Draw("same"); cut->Draw("same"); // cout << "Integral is " << getIntegral(DCA,isPhysPrimDCA) << endl; TLegend * legend2 = new TLegend(0.4,0.7,0.8,0.85); // TLegend * legend = new TLegend(0.1, 1.2*DStarPeak->GetBinContent(DStarPeak->GetMaximumBin()),0.4, 1.6*DStarPeak->GetBinContent(DStarPeak->GetMaximumBin())); legend2->SetFillColor(0); legend2->SetTextSize(0.03); legend2->SetBorderSize(0); legend2->AddEntry(cut,"Standard cut, DCA_{XY} < 0.25 cm","l"); TPaveText * PaveText2 = new TPaveText(0.5,0.3,0.8,0.5,"NDC"); PaveText2->SetBorderSize(0); PaveText2->SetFillColor(0); PaveText2->SetName("pave2"); // PaveText->AddText("THIS THESIS"); // PaveText->AddText(" "); PaveText2->AddText("PYTHIA, pp #sqrt{s} = 7 TeV"); TH1D * contamination = (TH1D*)isPhysPrimDCA->Clone("contamination"); contamination->Reset(); contamination->SetTitle("; DCA_{XY} (cm); Purity"); contamination->GetYaxis()->SetRangeUser(0.8,1.05); contamination->GetXaxis()->SetRangeUser(0,1); contamination->SetLineColor(1); contamination->SetLineWidth(2); contamination->GetYaxis()->SetTitleOffset(1.4); Double_t dcavalue = 0; for(Int_t k=0; k<2000; k++){ dcavalue += 0.001; contamination->SetBinContent(k+1,getPurity(dcavalue,isPhysPrimDCA,isSecondaryDCA)); } TLine * cut2 = new TLine(0.25,0.8,0.25,1.05); cut2->SetLineStyle(2); TCanvas * c2 = new TCanvas("c2","c2",0,0,1000,1000); c2->cd(); contamination->Draw(); PaveText2->Draw("same"); cut2->Draw("same"); legend2->Draw("same"); c1->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/DCADistrib.pdf"); c1->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/DCADistrib.eps"); c1->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/DCADistrib.png"); c1->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/DCADistrib.root"); c2->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/purity.pdf"); c2->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/purity.png"); c2->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/purity.eps"); c2->SaveAs("/Users/sandrobjelogrlic/PhD_Thesis/Figures/Chapter_3/purity.root"); }
void gammaTrkHistProducer(sampleType collision = kPPDATA, float photonPtThr=20, float photonPtThrUp=9999, int icent =7){ TH1::SetDefaultSumw2(); TString stringSampleType = getSampleName(collision); ""; TDatime* date = new TDatime(); TString outName= Form("photonTrackCorr_%s_output_photonPtThr%d_to_%d_%d.root",stringSampleType.Data(),(int)photonPtThr, (int)photonPtThrUp, date->GetDate()); delete date; int lowerCent(0), upperCent(0); TCut centCut = ""; if ( (collision ==kHIDATA) || (collision ==kHIMC) ) { lowerCent = ((icent/100)%100) *2 ; upperCent = (icent%100)*2 -1 ; centCut = Form("cBin >= %d && cBin<= %d",lowerCent,upperCent); } else if ( (collision ==kPPDATA) || (collision==kPPMC) ){ // if it's pp centCut = "(1==1)"; // icent = 7; // for pp, centrality is set as the smearing } else { // pPb centCut = Form( "hf4Sum > %f && hf4Sum <= %f", (float)centBinPa[icent-1], (float)centBinPa[icent]); } cout <<" centrality : " << centCut.GetTitle() << endl; ///////// Photon cut ////////////////////////////////////////////////////////////////////////////// cout <<" photon pt >" << photonPtThr << " GeV" << endl; TCut ptPhoCut = Form("photonEt>%.1f && photonEt<%.1f", (float)photonPtThr, (float)photonPtThrUp ); TCut caloIso; if ( (collision==kPPMC) || (collision==kPPDATA) ) caloIso = "(ecalIso < 4.2 && hcalIso < 2.2 && trackIso < 2) && hovere<0.1"; else if ( (collision==kHIMC) || (collision==kHIDATA) ) caloIso = "(sumIso<5) && hovere<0.1"; else { caloIso = "ecalIso < 4.2 && hcalIso < 2.2 && trackIso < 2 && hovere<0.1"; } TCut sbIso = "(sumIso>5) && (sumIso<20) && hovere<0.1"; // if ( (collision==kPPMC) || (collision==kPPDATA) || (collision==kPAMC) || (collision==kPADATA) ) // sbIso = "ecalIso < 4.2 && hcalIso < 2.2 && trackIso > 2 && trackIso < 5 && hovere<0.1"; TCut basicPhoCut = centCut && ptPhoCut && caloIso ; TCut sbPhoCut = centCut && ptPhoCut && sbIso ; TCut evtSeltCut = basicPhoCut; TCut sbSeltCut = sbPhoCut; TCut phoCandCut = "sigmaIetaIeta<0.010"; TCut phoDecayCut = "(sigmaIetaIeta>0.011) && (sigmaIetaIeta<0.017)"; if ( ( collision == kHIMC ) || (collision == kPPMC) || (collision == kPAMC)) phoCandCut = phoCandCut && "genIso<5 && abs(genMomId)<=22"; TString fname = ""; if ( collision == kHIDATA) fname = fnameHIDATA; // else if ( collision == kPADATA) fname = fnamePADATA; else if ( collision == kPPDATA) { if ( icent == 7 ) fname = fnamePPDATA; else if ( icent == 10010 ) fname = fnamePPDATA0010; else if ( icent == 11030 ) fname = fnamePPDATA1030; else if ( icent == 13050 ) fname = fnamePPDATA3050; else if ( icent == 15099 ) fname = fnamePPDATA5099; else if ( icent == 10030 ) fname = fnamePPDATA0030; else if ( icent == 13099 ) fname = fnamePPDATA30100; } else fname = ""; multiTreeUtil* tgj = new multiTreeUtil(); tgj->addFile(fname, "tgj", evtSeltCut, 1); tgj->AddFriend("yTrk"); float purity(0); TString canvasName = Form("gifs/purity_%s_output_icent%d_photonPtThr%d-%d", stringSampleType.Data(), (int)icent, (int)photonPtThr, (int)photonPtThrUp); if ( collision == kPPDATA) { purity = 0.85; } else { fitResult fitr = getPurity(fname, collision, evtSeltCut, sbSeltCut, canvasName, photonPtThr, photonPtThrUp); purity = fitr.purity010; } GjSpectra* gSpec = new GjSpectra(); gSpec->init(Form("icent%d",(int)icent) ); tgj->Draw2(gSpec->hPtPhoCand, "photonEt", phoCandCut, ""); tgj->Draw2(gSpec->hPtPhoDecay, "photonEt", phoDecayCut, ""); // Obtain background subtracted spectra float candInt = gSpec->hPtPhoCand->Integral(); float decayInt = gSpec->hPtPhoDecay->Integral(); gSpec->hPtPhoSig->Reset(); gSpec->hPtPhoSig->Add(gSpec->hPtPhoCand); gSpec->hPtPhoSig->Add(gSpec->hPtPhoDecay, -(1. - purity) * candInt / decayInt); gSpec->hPtPhoSig->Scale(1./purity ) ; TFile outf = TFile(Form("ffFiles/%s",outName.Data()),"update"); gSpec->hPtPhoCand->Write(); gSpec->hPtPhoDecay->Write(); gSpec->hPtPhoSig->Write(); outf.Close(); // Objects multiTreeUtil* tObj[3]; tObj[kTrkRaw] = new multiTreeUtil(); tObj[kTrkBkg] = new multiTreeUtil(); tObj[kTrkRaw]->addFile(fname, "yTrk", evtSeltCut, 1); tObj[kTrkBkg]->addFile(fname, "mTrk", evtSeltCut, 1); tObj[kTrkRaw]->AddFriend("tgj"); tObj[kTrkBkg]->AddFriend("tgj"); TCut trkCut = Form("abs(eta)<%f && pt>%f", (float)cuttrkEta, (float)cuttrkPt ); TString varTrkDphi = Form("dphi"); corrFunctionTrk* cTrkDphi = new corrFunctionTrk(); TH1D* hTrkDphi = new TH1D(Form("dphi_icent%d",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); gammaTrkSingle( gSpec, tObj, cTrkDphi, purity, collision, varTrkDphi, trkCut, "pt", phoCandCut, phoDecayCut, hTrkDphi, outName); TH1D* hTrkDphi1to2GeV = new TH1D(Form("dphi_icent%d_pt1to2GeV",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); corrFunctionTrk* cTrkDphi1to2GeV = new corrFunctionTrk(); gammaTrkSingle( gSpec, tObj, cTrkDphi1to2GeV, purity, collision, varTrkDphi, trkCut && "pt > 1 && pt <=2", "pt", phoCandCut, phoDecayCut, hTrkDphi, outName); TH1D* hTrkDphi2to4GeV = new TH1D(Form("dphi_icent%d_pt2to4GeV",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); corrFunctionTrk* cTrkDphi2to4GeV = new corrFunctionTrk(); gammaTrkSingle( gSpec, tObj, cTrkDphi2to4GeV, purity, collision, varTrkDphi, trkCut && "pt > 2 && pt <=4", "pt", phoCandCut, phoDecayCut, hTrkDphi, outName); TH1D* hTrkDphi4to8GeV = new TH1D(Form("dphi_icent%d_pt4to8GeV",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); corrFunctionTrk* cTrkDphi4to8GeV = new corrFunctionTrk(); gammaTrkSingle( gSpec, tObj, cTrkDphi4to8GeV, purity, collision, varTrkDphi, trkCut && "pt > 4 && pt <=8", "pt", phoCandCut, phoDecayCut, hTrkDphi, outName); TH1D* hTrkDphi8andHighGeV = new TH1D(Form("dphi_icent%d_pt8andHighGeV",icent),";#Delta#phi_{Jet,#gamma} ;dN/d#Delta#phi",20,0,3.141592); corrFunctionTrk* cTrkDphi8andHighGeV = new corrFunctionTrk(); gammaTrkSingle( gSpec, tObj, cTrkDphi8andHighGeV, purity, collision, varTrkDphi, trkCut && "pt > 8", "pt", phoCandCut, phoDecayCut, hTrkDphi, outName); }
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"); }