void analyzePFGammaJetTree(TString inpFileName, Long64_t maxEntries=-1, double extraWeightFactor=-1.) { // book histograms double cPI= 4*atan(1); int show_dPhi=0; TH1D *h1_dPhi= new TH1D("h1_dPhi","#Delta#Phi",100,-2*cPI,2*cPI); prepareHisto(h1_dPhi); int show_dPt_PF=0; TH1D *h1_dPt_PF= new TH1D("h1_dPt_PF","#Deltap_{T}^{PF}",100,-1000,1000); prepareHisto(h1_dPt_PF); int show_pho2D_pt=1; TH2D *h2_pho_pt= new TH2D("h2_pho_pt","Photon p_{T};gen p_{T};reco p_{T}", 100,0.,1000., 100,0.,1000.); prepareHisto(h2_pho_pt); int show_pho2D_ptMap=1; TH2D *h2_pho_ptMap= (TH2D*)h2_pho_pt->Clone("h2_pho_ptMap"); h2_pho_ptMap->SetTitle("Photon average quality"); TH2D *h2_pho_ptMapCount= (TH2D*)h2_pho_pt->Clone("h2_pho_ptMapCount"); prepareHisto(h2_pho_ptMap); prepareHisto(h2_pho_ptMapCount); int show_jet2D_ptPF=1; TH2D *h2_jet_ptPF= new TH2D("h2_jet_pt", "Leading jet p_{T};gen p_{T};reco p_{T}^{PF}", 100,0.,1000., 100,0.,1000.); prepareHisto(h2_jet_ptPF); int show_pho_vs_jet_genPt=1; TH2D *h2_pho_vs_jet_genPt= new TH2D("h2_pho_vs_jet_genPt", "Gen p_{T};#gamma gen p_{T};jet gen p_{T}", 100,0.,1000., 100,0.,1000.); prepareHisto(h2_pho_vs_jet_genPt); int show_pho_vs_jet_recoPtPF=1; TH2D *h2_pho_vs_jet_recoPtPF= new TH2D("h2_pho_vs_jet_recoPtPF", "Reco p_{T};#gamma p_{T};jet p_{T}^{PF}", 100,0.,1000., 100,0.,1000.); prepareHisto(h2_pho_vs_jet_recoPtPF); // process the data pf_gammajettree inpData(inpFileName); inpData.DeactivateBranches(); inpData.ActivateBranches_forFitSkim(); inpData.ActivateBranches(1,"ppfjet_pt"); inpData.ActivateBranches_genBasicSet(); GammaJetEvent_t *dt= new GammaJetEvent_t(); GammaJetEventAuxInfo_t aux; // read in the file Long64_t nEntries= inpData.fChain->GetEntries(); if (maxEntries<0) maxEntries=nEntries; Long64_t nBytes=0, passedCount=0; for (Long64_t iEntry=0; (iEntry<nEntries) && (iEntry<maxEntries); iEntry++) { if (inpData.LoadTree(iEntry) < 0) break; Long64_t nb = inpData.GetEntry(iEntry); nBytes += nb; if (iEntry%10000==0) std::cout << " ... reading entry " << iEntry << "\n"; std::cout << "ientry=" << iEntry << "\n"; if (!passCuts(inpData,0)) continue; passedCount++; double ecalE= inpData.getSumEcalE(0,1); double hcalE_noRecHits= inpData.getSumHcalE_trackDiffEcal(1); aux.SetEventNo(inpData.EventNumber); aux.SetRunNo(inpData.RunNumber); aux.SetProbeHcalENoRecHits(hcalE_noRecHits); dt->SetAuxInfo(aux); double w=inpData.EventWeight; if (extraWeightFactor>0) w*= extraWeightFactor; dt->SetWeight(w); dt->SetTagEEtaPhi(inpData.tagPho_energy, inpData.tagPho_eta, inpData.tagPho_phi); dt->SetProbeEtaPhiEn(inpData.ppfjet_eta, inpData.ppfjet_phi, ecalE+hcalE_noRecHits, inpData.getHcalEMap(1,1e-4)); h1_dPhi->Fill( dt->GetTagPhi() - dt->GetProbePhi() , w); h1_dPt_PF->Fill( inpData.tagPho_pt - inpData.ppfjet_pt , w); h2_pho_pt->Fill( inpData.tagPho_genPt, inpData.tagPho_pt, w); h2_jet_ptPF->Fill( inpData.ppfjet_genpt, inpData.ppfjet_pt, w); h2_pho_vs_jet_genPt->Fill( inpData.tagPho_genPt, inpData.ppfjet_genpt, w); h2_pho_vs_jet_recoPtPF->Fill( inpData.tagPho_pt, inpData.ppfjet_pt, w); int cathegory=0; if (inpData.tagPho_idTight) cathegory=2; else if (inpData.tagPho_idLoose) cathegory=1; h2_pho_ptMap->Fill( inpData.tagPho_genPt, inpData.tagPho_pt, cathegory); h2_pho_ptMapCount->Fill( inpData.tagPho_genPt, inpData.tagPho_pt, 1); } std::cout << "nEntries=" << nEntries << ", passedCount=" << passedCount << "\n"; if (show_dPhi) displayHisto(h1_dPhi,"dPhi","LPE"); if (show_dPt_PF) displayHisto(h1_dPt_PF, "dPt_PF","LPE"); if (show_pho2D_pt) displayHisto(h2_pho_pt,"pho2D_pt","COLZ"); if (show_jet2D_ptPF) displayHisto(h2_jet_ptPF,"jet2D_ptPF","COLZ"); if (show_pho_vs_jet_genPt) displayHisto(h2_pho_vs_jet_genPt,"pho_vs_jet_genPt","COLZ"); if (show_pho_vs_jet_recoPtPF) displayHisto(h2_pho_vs_jet_recoPtPF,"pho_vs_jet_recoPtPF","COLZ"); if (show_pho2D_ptMap) { for (int ibin=1; ibin<=h2_pho_ptMapCount->GetNbinsX(); ++ibin) { for (int jbin=1; jbin<=h2_pho_ptMapCount->GetNbinsY(); ++jbin) { double cnt= h2_pho_ptMapCount->GetBinContent(ibin,jbin); if (cnt==double(0)) continue; double sum= h2_pho_ptMap->GetBinContent(ibin,jbin); h2_pho_ptMap->SetBinContent(ibin,jbin, sum/cnt); } } displayHisto(h2_pho_ptMap,"pho_ptMap","COLZ"); } return; }
void processDYmm(Int_t maxEntries=-1) { std::cout << "DY range=" << DYtools::minMass << " .. " << DYtools::maxMass << "\n"; TVersion_t inpVersion=_verMu1; inpVersion=_verMu76X; inpVersion=_verMuApproved; if (inpVersion!=_verMu1) { if (DYtools::nMassBins!=DYtools::nMassBins43) { std::cout << "a potential DYbinning.h problem\n"; return; } } TString srcPath="/media/ssd/v20160214_1st_CovarianceMatrixInputs/"; srcPath="/mnt/sdb/andriusj/v20160214_1st_CovarianceMatrixInputs/"; TString dataFName=srcPath + "Input3/ROOTFile_ntuple_CovarianceMatrixInput.root"; if (inpVersion==_verMu76X) { srcPath="/mnt/sdb/andriusj/v20160527_1st_CovarianceMatrixInputs_76X/"; dataFName=srcPath + "Input3/ROOTFile_Input_CovarianceMatrix.root"; } else if (inpVersion==_verMuApproved) { srcPath="/mnt/sdb/andriusj/v20160915_CovInput_ApprovedResults/"; dataFName=srcPath + "ROOTFile_Input_CovarianceMatrix.root"; } DYmm13TeV_t data(dataFName); data.DeactivateBranches(); data.ActivateBranches("Momentum_postFSR_Lead Momentum_postFSR_Sub Momentum_preFSR_Lead Momentum_preFSR_Sub Weight_Norm Weight_Gen Weight_PU"); data.ActivateBranches("Flag_EventSelection"); TH1D *h1postFsrInAccSel_M= new TH1D("h1_postFsrInAccSel_M", "postFSR selected events in acceptance;M_{gen,postFSR} [GeV];count",DYtools::nMassBins,DYtools::massBinEdges); TH1D *h1postFsrInAccSel_MW= new TH1D("h1_postFsrInAccSel_MW", "postFSR selected events in acceptance (weighted);M_{gen,postFSR} [GeV];weighted count",DYtools::nMassBins,DYtools::massBinEdges); TH1D *h1postFsrInAccSel_MWPU= new TH1D("h1_postFsrInAccSel_MWPU", "postFSR selected events in acceptance (weighted wPU);M_{gen,postFSR} [GeV];weighted (wPU) count",DYtools::nMassBins,DYtools::massBinEdges); TH1D *h1postFsrInAcc_M= new TH1D("h1_postFsrInAcc_M", "postFSR in acceptace;M_{gen,postFSR} [GeV];count",DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1postFsrInAcc_MW= new TH1D("h1_postFsrInAcc_Mweighted", "postFSR in acceptance;M_{gen,postFSR} [GeV];weighted count", DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1postFsrInAcc_MWPU= new TH1D("h1_postFsrInAcc_MweightedPU", "postFSR in acceptance (weighted wPU);M_{gen,postFSR} [GeV];weighted (wPU) count", DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1postFsr_M= new TH1D("h1_postFsr_M", "postFSR;M_{gen,postFSR} [GeV];count",DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1postFsr_MW= new TH1D("h1_postFsr_Mweighted", "postFSR;M_{gen,postFSR} [GeV];weighted count", DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1preFsr_M= new TH1D("h1_preFsr_M", "preFSR;M_{gen,preFSR} [GeV];count",DYtools::nMassBins, DYtools::massBinEdges); TH1D *h1preFsr_MW= new TH1D("h1_preFsr_Mweighted", "preFSR;M_{gen,preFSR} [GeV];weighted count", DYtools::nMassBins, DYtools::massBinEdges); prepareHisto(h1postFsrInAccSel_M); prepareHisto(h1postFsrInAccSel_MW); prepareHisto(h1postFsrInAccSel_MWPU); prepareHisto(h1postFsrInAcc_M); prepareHisto(h1postFsrInAcc_MW); prepareHisto(h1postFsrInAcc_MWPU); prepareHisto(h1postFsr_M); prepareHisto(h1postFsr_MW); prepareHisto(h1preFsr_M); prepareHisto(h1preFsr_MW); TH2D* h2FSRmig= new TH2D("h2FSRmig","FSR migration", DYtools::nMassBins, DYtools::massBinEdges, DYtools::nMassBins, DYtools::massBinEdges); h2FSRmig->Sumw2(); RooUnfoldResponse fsrResp(h1postFsr_MW,h1preFsr_MW,h2FSRmig,"rooUnf_fsrResp","fsrResp;M_{#mu#mu} [GeV];FSR unfolded yield"); fsrResp.UseOverflow(); TH2D* h2effAccFSRmig= new TH2D("h2effAccFSRmig","eff x Acc x FSR migration", DYtools::nMassBins, DYtools::massBinEdges, DYtools::nMassBins, DYtools::massBinEdges); h2effAccFSRmig->Sumw2(); RooUnfoldResponse effAccFsrResp(h1postFsrInAccSel_MW,h1preFsr_MW,h2effAccFSRmig,"rooUnf_effAccFsrResp","effAccFsrResp;M_{#mu#mu} [GeV];eff Acc FSR unfolded yield"); effAccFsrResp.UseOverflow(); UInt_t nEvents= data.GetEntries(); std::cout << "process data\n"; for (UInt_t iEntry=0; iEntry<nEvents; iEntry++) { if (data.GetEntry(iEntry)<0) break; if (iEntry%100000==0) std::cout << "iEntry=" << iEntry << Form("(%4.2lf%%)\n",iEntry*100/double(nEvents)); if ((maxEntries>0) && (iEntry>UInt_t(maxEntries))) { std::cout << "debug run\n"; break; } double w= data.Weight_Norm * data.Weight_Gen; if (iEntry<100) std::cout << "w=" << w << ": weight_norm=" << data.Weight_Norm << ", gen=" << data.Weight_Gen << "\n"; double mPostFsr= (*data.Momentum_postFSR_Lead + *data.Momentum_postFSR_Sub).M(); double mPreFsr= (*data.Momentum_preFSR_Lead + *data.Momentum_preFSR_Sub).M(); if (DYtools::InAcceptance_mm(data.Momentum_postFSR_Lead,data.Momentum_postFSR_Sub)) { if (data.Flag_EventSelection) { h1postFsrInAccSel_M->Fill( mPostFsr, 1. ); h1postFsrInAccSel_MW->Fill( mPostFsr, w ); h1postFsrInAccSel_MWPU->Fill( mPostFsr, w * data.Weight_PU ); } h1postFsrInAcc_M->Fill( mPostFsr, 1. ); h1postFsrInAcc_MW->Fill( mPostFsr, w ); h1postFsrInAcc_MWPU->Fill( mPostFsr, w * data.Weight_PU ); } h1postFsr_M->Fill( mPostFsr, 1. ); h1postFsr_MW->Fill( mPostFsr, w ); h1preFsr_M->Fill( mPreFsr, 1. ); h1preFsr_MW->Fill( mPreFsr, w ); h2FSRmig->Fill( mPostFsr, mPreFsr, w ); if (0) { if ( ! DYtools::InsideMassRange(mPreFsr) ) std::cout << "preFSR mass " << mPreFsr << ", postFSR mass " << mPostFsr << "\n"; } if ( ! DYtools::InsideMassRange(mPreFsr) && DYtools::InsideMassRange(mPostFsr) ) { std::cout << "fake detected\n"; fsrResp.Fake(mPostFsr,w); } else if ( DYtools::InsideMassRange(mPreFsr) && ! DYtools::InsideMassRange(mPostFsr) ) { fsrResp.Miss(mPreFsr,w); } else { fsrResp.Fill(mPostFsr,mPreFsr,w); } int sel=(DYtools::InAcceptance_mm(data.Momentum_postFSR_Lead,data.Momentum_postFSR_Sub) && data.Flag_EventSelection && DYtools::InsideMassRange(mPostFsr)) ? 1:0; if (sel) h2effAccFSRmig->Fill(mPostFsr,mPreFsr,w); if ( ! DYtools::InsideMassRange(mPreFsr) && sel ) { effAccFsrResp.Fake(mPostFsr,w); } else if ( DYtools::InsideMassRange(mPreFsr) && ! sel ) { effAccFsrResp.Miss(mPreFsr,w); } else { effAccFsrResp.Fill(mPostFsr,mPreFsr,w); } } RooUnfoldBayes bayesFSR( &fsrResp, h1postFsr_MW, 4 ); TH1D *h1preFsrUnf= (TH1D*) bayesFSR.Hreco()->Clone("h1preFsrUnf"); h1preFsrUnf->SetTitle("unfolded postFSR->preFSR"); h1preFsrUnf->SetDirectory(0); histoStyle(h1preFsrUnf,kRed,24); h1preFsrUnf->GetXaxis()->SetMoreLogLabels(); h1preFsrUnf->GetXaxis()->SetNoExponent(); TCanvas *cFSRTest=plotHisto(h1preFsrUnf,"cFSRTest",1,1,"LPE1"); plotHistoSame(h1preFsr_MW,"cFSRTest","LPE"); RooUnfoldBayes bayesEffAccFsr( &effAccFsrResp, h1postFsrInAccSel_MW, 4 ); TH1D *h1EffAccFsrUnf= (TH1D*) bayesEffAccFsr.Hreco()->Clone("h1EffAccFsrUnf"); h1EffAccFsrUnf->SetTitle("unfolded postFsrInAccSel -> preFSR"); h1EffAccFsrUnf->SetDirectory(0); histoStyle(h1EffAccFsrUnf,kRed,24); h1EffAccFsrUnf->GetXaxis()->SetMoreLogLabels(); h1EffAccFsrUnf->GetXaxis()->SetNoExponent(); TCanvas *cScaleToPreFsrTest= plotHisto(h1EffAccFsrUnf,"cScaleToPreFsrTest",1,1,"LPE1"); histoStyle(h1preFsr_MW,kBlue,5); plotHistoSame(h1preFsr_MW,"cScaleToPreFsrTest","LPE"); TH1D* h1Eff=(TH1D*)h1postFsrInAccSel_MW->Clone("h1Eff"); h1Eff->SetDirectory(0); if (!h1Eff->GetSumw2()) h1Eff->Sumw2(); h1Eff->SetTitle("Efficiency;M_{#mu#mu,GEN postFSR} [GeV];postFSR_inAcc_Sel/postFSR_inAcc"); h1Eff->Divide(h1postFsrInAccSel_MW,h1postFsrInAcc_MW,1,1,"B"); TH1D* h1EffPU=(TH1D*)h1postFsrInAccSel_MWPU->Clone("h1EffPU"); h1EffPU->SetDirectory(0); if (!h1EffPU->GetSumw2()) h1EffPU->Sumw2(); h1EffPU->SetTitle("Efficiency (wPU);M_{#mu#mu,GEN postFSR} [GeV];postFSR_inAcc_Sel(wPU)/postFSR_inAcc(wPU)"); h1EffPU->Divide(h1postFsrInAccSel_MWPU,h1postFsrInAcc_MWPU,1,1,"B"); histoStyle(h1EffPU,kBlue,24); TCanvas *cEffCmp=plotHisto(h1Eff,"cEff_noPU_vs_wPU",1,0,"LPE1"); plotHistoSame(h1EffPU,"cEff_noPU_vs_wPU","LPE"); TH1D* h1Acc=(TH1D*)h1postFsrInAcc_MW->Clone("h1Acc"); h1Acc->SetDirectory(0); if (!h1Acc->GetSumw2()) h1Acc->Sumw2(); h1Acc->SetTitle("Acceptance;M_{#mu#mu,GEN postFSR} [GeV];postFSR_inAcc/postFSR"); h1Acc->Divide(h1postFsrInAcc_MW,h1postFsr_MW,1,1,"B"); TH1D* h1EffPUAcc=(TH1D*)h1postFsrInAccSel_MWPU->Clone("h1EffPUAcc"); h1EffPUAcc->SetDirectory(0); if (!h1EffPUAcc->GetSumw2()) h1EffPUAcc->Sumw2(); h1EffPUAcc->SetTitle("Efficiency(wPU) x Acc;M_{#mu#mu,GEN postFSR} [GeV];postFSR_inAccSel(wPU)/h1postFsr_MW(noPU)"); h1EffPUAcc->Divide(h1postFsrInAccSel_MWPU,h1postFsr_MW,1,1,"B"); TH1D *h1FSRCorr_binByBin=(TH1D*)h1preFsr_MW->Clone("h1FSRCorr_binByBin"); h1FSRCorr_binByBin->SetDirectory(0); if (!h1FSRCorr_binByBin->GetSumw2()) h1FSRCorr_binByBin->Sumw2(); h1FSRCorr_binByBin->SetTitle("FSR correction bin-by-bin;M_{#mu#mu} [GeV];preFSR/postFSR"); h1FSRCorr_binByBin->Divide(h1preFsr_MW,h1postFsr_MW,1.,1.,"B"); TString fname="dymm_test_" + versionName(inpVersion) + TString(".root"); if (maxEntries>0) fname.ReplaceAll(".root","_debug.root"); TFile fout(fname,"RECREATE"); h1Eff->Write(); h1EffPU->Write(); h1Acc->Write(); h1EffPUAcc->Write(); h1FSRCorr_binByBin->Write(); fsrResp.Write(); effAccFsrResp.Write(); h1postFsrInAccSel_M->Write(); h1postFsrInAccSel_MW->Write(); h1postFsrInAcc_M->Write(); h1postFsrInAcc_MW->Write(); h1postFsr_M->Write(); h1postFsr_MW->Write(); h1preFsr_M->Write(); h1preFsr_MW->Write(); h1preFsrUnf->Write(); h2FSRmig->Write(); h1EffAccFsrUnf->Write(); h2effAccFSRmig->Write(); cEffCmp->Write(); cFSRTest->Write(); cScaleToPreFsrTest->Write(); TObjString timeTag(DayAndTimeTag(0)); timeTag.Write("timeTag"); fout.Close(); std::cout << "file <" << fout.GetName() << "> created\n"; }
void analyzeQCD_PFGammaJetTree(TString inpFileName, int flatQCD=0, Long64_t maxEntries=-1, double extraWeightFactor=-1., TString plotOutDir_user="", int saveCollection_user=-1) { std::cout << "inpFileName=<" << inpFileName << ">\n"; #ifdef helper_HH if (plotOutDir_user.Length()>0) plotOutDir= plotOutDir_user; #endif if (saveCollection_user>=0) saveCollection=saveCollection_user; double flat_ptMin=0, flat_ptMax=0; if (flatQCD==1) { flat_ptMin=80; flat_ptMax=120; } else if (flatQCD==2) { flat_ptMin=120; flat_ptMax=170; } else if (flatQCD==3) { flat_ptMin=170; flat_ptMax=300; } if (flatQCD && (extraWeightFactor<0)) { std::cout << "flatQCD requires extraWeightFactor\n"; return; } collector.Clear(); // book histograms //double cPI= 4*atan(1); int show_evweight=1; TH1D *h1_evWeight= new TH1D("h1_evWeight","Event weight;w;count",1000,0,10); TH1D *h1_evPtHat= new TH1D("h1_evPtHat","Event #hat p_{T};#hat p_{T};count",100,0,500); TH1D *h1_evPtHatEvWeighted= new TH1D("h1_evPtHatEvWeighted","Event #hat p_{T};#hat p_{T};gen-weighted count",100,0,500); TH1D *h1_evPtHatWeighted= new TH1D("h1_evPtHatWeighted","Event #hat p_{T};#hat p_{T};weighted count",100,0,500); prepareHisto(h1_evWeight); prepareHisto(h1_evPtHat); prepareHisto(h1_evPtHatEvWeighted); prepareHisto(h1_evPtHatWeighted); double c_pt_max=500; double c_energy_max=1500; int show_jet_energy=1; TH1D* h1_jet_energyGen= new TH1D("h1_jet_energyGen", "jet energy Gen;E_{gen};count", 100,0.,c_energy_max); TH1D* h1_jet_energyPF = new TH1D("h1_jet_energyPF", "jet energy PF;E_{PF};count", 100,0.,c_energy_max); prepareHisto(h1_jet_energyGen,1); prepareHisto(h1_jet_energyPF,1); int show_jet_pT=1; TH1D* h1_jet_pTGen= new TH1D("h1_jet_pTGen", "jet pT Gen;p_{T,gen};count", 100,0.,c_pt_max); TH1D* h1_jet_pTPF = new TH1D("h1_jet_pTPF", "jet pT PF;p_{T,PF};count", 100,0.,c_pt_max); prepareHisto(h1_jet_pTGen,1); prepareHisto(h1_jet_pTPF,1); int show_jet_pT_window=(1 && flatQCD) ? 1:0; TH1D* h1_jet_pTGen_window= new TH1D("h1_jet_pTGen_window", Form("jet pT Gen window %2.0lf-%2.0lf;p_{T,gen};count", flat_ptMin,flat_ptMax), 100,0.,c_pt_max); TH1D* h1_jet_pTPF_window= new TH1D("h1_jet_pTPF_window", Form("jet pT PFreco window %2.0lf-%2.0lf;p_{T,PF};count", flat_ptMin,flat_ptMax), 100,0.,c_pt_max); prepareHisto(h1_jet_pTGen_window,1); prepareHisto(h1_jet_pTPF_window,1); int show_jet_energy_PF_over_Gen=1; TH1D *h1_jet_energy_PFoverGen= new TH1D("h1_jet_energy_PFoverGen", "Jet energy ratio (PF div gen);E_{PF}/E_{gen};count", 100,0.,2.5); prepareHisto(h1_jet_energy_PFoverGen,1); int show_jet_pT_PF_over_Gen=1; TH1D *h1_jet_pT_PFoverGen= new TH1D("h1_jet_pT_PFoverGen", "Jet p_{T} ratio (PF div gen);p_{T}^{PF}/p_{T}^{gen};count", 100,0.,2.5); prepareHisto(h1_jet_pT_PFoverGen,1); int show_jet2D_ptPF=1; TH2D *h2_jet_ptPF= new TH2D("h2_jet_ptPF", "Leading jet p_{T};gen p_{T};reco p_{T}^{PF}", 100,0.,c_pt_max, 100,0.,c_pt_max); prepareHisto(h2_jet_ptPF); int show_photon_pt=1; TH1D* h1_photon_pTreco = new TH1D("h1_photon_pTreco", "photon pT;p_{T}^{#gamma};count", 100,0.,c_pt_max); prepareHisto(h1_photon_pTreco,1); // process the data pf_gammajettree inpData(inpFileName); inpData.DeactivateBranches(); //inpData.ActivateBranches_forFitSkim(); inpData.ActivateBranches(2,"EventWeight","EventPtHat"); inpData.ActivateBranches(2,"ppfjet_pt","ppfjet_E"); inpData.ActivateBranches(2,"ppfjet_genpt","ppfjet_genE"); inpData.ActivateBranches(1,"tagPho_pt"); //inpData.ActivateBranches_genBasicSet(); // read in the file Long64_t nEntries= inpData.fChain->GetEntries(); std::cout << "nEntries=" << nEntries << "\n"; if (nEntries==0) return; if (maxEntries<0) maxEntries=nEntries; Long64_t nBytes=0, passedCount=0; Double_t sum_evWeight_window=0; Double_t sum_finalW_window=0; for (Long64_t iEntry=0; (iEntry<nEntries) && (iEntry<maxEntries); iEntry++) { if (inpData.LoadTree(iEntry) < 0) break; Long64_t nb = inpData.GetEntry(iEntry); nBytes += nb; if (iEntry%10000==0) std::cout << " ... reading entry " << iEntry << "\n"; //std::cout << "ientry=" << iEntry << "\n"; //if (!inpData.passCuts(1,2)) continue; // recommended use passedCount++; double w=inpData.EventWeight; if (0 && flatQCD) { // It seems this factor is already included in the gen.event weight //w /= pow(inpData.EventPtHat/double(15.), double(4.5)); } if (extraWeightFactor>0) w*= extraWeightFactor; h1_evWeight->Fill( w, 1. ); h1_evPtHat->Fill( inpData.EventPtHat, 1. ); h1_evPtHatEvWeighted->Fill( inpData.EventPtHat, inpData.EventWeight ); h1_evPtHatWeighted->Fill( inpData.EventPtHat, w ); h1_jet_energyGen->Fill( inpData.ppfjet_genE, w); h1_jet_energyPF->Fill( inpData.ppfjet_E, w); h1_jet_energy_PFoverGen->Fill( inpData.ppfjet_E/inpData.ppfjet_genE, w); h1_jet_pTGen->Fill( inpData.ppfjet_genpt, w); h1_jet_pTPF->Fill( inpData.ppfjet_pt, w); if ((inpData.EventPtHat>flat_ptMin) && (inpData.EventPtHat<flat_ptMax)) { sum_evWeight_window+= inpData.EventWeight; sum_finalW_window+= w; h1_jet_pTGen_window->Fill( inpData.ppfjet_genpt, w); h1_jet_pTPF_window->Fill( inpData.ppfjet_pt, w); } h1_jet_pT_PFoverGen->Fill( inpData.ppfjet_pt/inpData.ppfjet_genpt, w); h2_jet_ptPF->Fill( inpData.ppfjet_genpt, inpData.ppfjet_pt, w); h1_photon_pTreco->Fill( inpData.tagPho_pt, w ); int gen_debug=0; if (gen_debug==1) { std::cout << "iEntry=" << iEntry << ", leading jet genE=" << inpData.ppfjet_genE << ", pfE=" << inpData.ppfjet_E << "\n"; /* std::cout << " ppfjet_twr_ieta " << (inpData.ppfjet_twr_ieta) << "\n"; std::cout << " ppfjet_twr_hade " << (inpData.ppfjet_twr_hade) << "\n"; std::cout << " ppfjet_twr_frac " << (inpData.ppfjet_twr_frac) << "\n"; std::cout << " ppfjet_twr_clusterind " << (inpData.ppfjet_twr_clusterind) << "\n"; std::cout << " ppfjet_cluster_dR " << (inpData.ppfjet_cluster_dR) << "\n"; */ } else if (gen_debug==2) { std::cout << "genE=" << inpData.ppfjet_genE << ", pfE=" << inpData.ppfjet_E << "\n"; } } std::cout << "nEntries=" << nEntries << ", passedCount=" << passedCount << "\n"; displayHisto(show_evweight, h1_evWeight,"evWeight","LPE"); displayHisto(show_evweight, h1_evPtHat, "evPtHat", "LPE"); displayHisto(show_evweight, h1_evPtHatEvWeighted,"evPtHatEvWeighted", "LPE"); displayHisto(show_evweight, h1_evPtHatWeighted, "evPtHatWeighted", "LPE"); displayHisto(show_jet_energy, h1_jet_energyGen, "jet_E_gen","LPE"); displayHisto(show_jet_energy, h1_jet_energyPF, "jet_E_recoPF","LPE"); displayHisto(show_jet_energy_PF_over_Gen, h1_jet_energy_PFoverGen,"e_PFoverGen","hist"); displayHisto(show_jet_pT, h1_jet_pTGen, "jet_pT_gen","LPE"); displayHisto(show_jet_pT, h1_jet_pTPF, "jet_pT_recoPF","LPE"); displayHisto(show_jet_pT_PF_over_Gen, h1_jet_pT_PFoverGen,"pT_PFoverGen","hist"); //if (sum_window!=Double_t(0)) h1_jet_pTGen_window->Scale(1/sum_window); displayHisto(show_jet_pT_window, h1_jet_pTGen_window, "jet_pT_gen_window","LPE"); displayHisto(show_jet_pT_window, h1_jet_pTPF_window, "jet_pT_reco_window","LPE"); displayHisto(show_jet2D_ptPF, h2_jet_ptPF, "jet2D_ptPF","COLZ"); displayHisto(show_photon_pt, h1_photon_pTreco, "photon_pTreco","LPE"); if (saveCollection) { TString outFName=TString("saved_") + plotOutDir + TString(".root"); collector.Add("producedBy_analyzePFGammaJetTree"); collector.SaveToFile(outFName); } if (flatQCD) { std::cout << "flatQCD pt window : " << flat_ptMin << " .. " << flat_ptMax << "\n"; std::cout << "sum_window. evWeight=" << sum_evWeight_window << ", finalW=" << sum_finalW_window << "\n"; } return; }