diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py index 2c74d33e274a193deb20681d96e5295bcea80369..9dddcfb1025dfeea27bc9b622c7be1e5f1f4e4ea 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitCategory.py @@ -2,8 +2,27 @@ monitoring_singleTau = 'tau25_medium1_tracktwo' - monitoring_tau = [ + 'tau0_perf_ptonly_L1TAU12', + 'tau0_perf_ptonly_L1TAU60', + 'tau25_idperf_track', + 'tau25_idperf_tracktwo', + 'tau25_perf_tracktwo', + 'tau25_medium1_tracktwo', + 'tau35_perf_tracktwo_tau25_perf_tracktwo', + 'tau35_medium1_tracktwo_tau25_medium1_tracktwo', + 'mu14_iloose_tau25_perf_tracktwo', + 'tau160_idperf_track', + 'tau160_idperf_tracktwo', + 'tau160_perf_tracktwo', + 'tau160_medium1_tracktwo', + 'tau1_cosmic_track_L1MU4_EMPTY', + 'tau1_cosmic_ptonly_L1MU4_EMPTY', + 'tau8_cosmic_ptonly', + 'tau8_cosmic_track' + ] + +monitoring_tau_pp = [ 'tau0_perf_ptonly_L1TAU12', 'tau0_perf_ptonly_L1TAU60', 'tau25_idperf_track', @@ -11,5 +30,35 @@ monitoring_tau = [ 'tau25_perf_tracktwo', 'tau25_medium1_tracktwo', 'tau35_perf_tracktwo_tau25_perf_tracktwo', - 'mu14_iloose_tau25_perf_tracktwo' + 'tau35_medium1_tracktwo_tau25_medium1_tracktwo', + 'mu14_iloose_tau25_perf_tracktwo', + 'tau160_idperf_track', + 'tau160_idperf_tracktwo', + 'tau160_perf_tracktwo', + 'tau160_medium1_tracktwo' ] + +monitoring_tau_cosmic = [ + 'tau1_cosmic_track_L1MU4_EMPTY', + 'tau1_cosmic_ptonly_L1MU4_EMPTY', + 'tau8_cosmic_ptonly', + 'tau8_cosmic_track' +] + + + + + + + + + + + + + + + + + + diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py index 07ec1a9a3a8dcd1ec873ccd67a52a72f2911a8f1..ecd2330e5ffb75fc723d8fdfbc0b9158e0f40871 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/python/TrigTauMonitoringConfig.py @@ -1,6 +1,5 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - def TrigTauMonitoringTool(): full_tau = [ @@ -94,7 +93,7 @@ def TrigTauMonitoringTool(): # High-threshold 'e17_medium_tau80_medium1_tracktwo', 'e17_lhmedium_tau80_medium1_tracktwo', - 'e17_medium_tau80_medium1_tracktwo_L1EM15-TAU40', + 'e17_medium_tau80_medium1_tracktwo_L1EM15-TAU40', 'e17_lhmedium_tau80_medium1_tracktwo_L1EM15-TAU40', # Tau + Muon @@ -130,20 +129,24 @@ def TrigTauMonitoringTool(): # Tau + mu + MET 'mu14_tau25_medium1_tracktwo_xe50', 'mu14_iloose_tau25_medium1_tracktwo_xe50' - + ] # Setup emulation emul_l1_tau = [ - 'L1_TAU60', - 'L1_EM15HI_2TAU12IM_J25_3J12', - 'L1_TAU20IM_2TAU12IM', - 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12', - 'L1_MU10_TAU12IM_J25_2J12', - 'L1_TAU20_2TAU12_XE35', - 'L1_TAU20_2J20_XE45' + 'L1_EM15HI_2TAU12IM', + 'L1_EM15HI_2TAU12IM_J25_3J12', + 'L1_EM15HI_2TAU12IM_XE35', + 'L1_MU10_TAU12IM', + 'L1_MU10_TAU12IM_J25_2J12', + 'L1_MU10_TAU12IM_XE35', + 'L1_TAU20IM_2J20_XE45', + 'L1_TAU20IM_2TAU12IM', + 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12', + 'L1_TAU20IM_2TAU12IM_XE35', + 'L1_TAU60' ] emul_hlt_tau = [ @@ -162,15 +165,25 @@ def TrigTauMonitoringTool(): 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12' ] - tau_track_test = [ - 'tau25_perf_track_emulate', - 'tau25_perf_tracktwo_emulate', - 'tau25_perf_track_ptmin_emulate', - 'tau25_perf_tracktwo_ptmin_emulate', - 'tau25_medium1_track_ptmin_emulate', - 'tau25_medium1_tracktwo_ptmin_emulate', - 'tau25_perf_tracktwo_ptmin_no0reject_emulate', - 'tau25_medium1_tracktwo_ptmin_no0reject_emulate' +# tau_track_test = [ +# 'tau25_perf_track_emulate', +# 'tau25_perf_tracktwo_emulate', +# 'tau25_perf_track_ptmin_emulate', +# 'tau25_perf_tracktwo_ptmin_emulate', +# 'tau25_medium1_track_ptmin_emulate', +# 'tau25_medium1_tracktwo_ptmin_emulate', +# 'tau25_perf_tracktwo_ptmin_no0reject_emulate', +# 'tau25_medium1_tracktwo_ptmin_no0reject_emulate' +# ] + + highpt_tau = [ + 'tau80_medium1_tracktwo', + 'tau80_medium1_tracktwo_L1TAU60', + 'tau80_medium1_tracktwo_L1TAU60_tau50_medium1_tracktwo_L1TAU12', + 'tau125_medium1_tracktwo', + 'tau125_medium1_tracktwo_tau50_medium1_tracktwo_L1TAU12', + 'tau125_perf_ptonly', + 'tau125_perf_tracktwo', ] # get the Level1 Emulation tool from the emulation python config @@ -196,18 +209,21 @@ def TrigTauMonitoringTool(): primary_tau = [], #full_tau, #[] prescaled_tau = [], #tau_track_test, #[], LowestSingleTau = hltmonList.monitoring_singleTau, #"tau25_medium1_tracktwo", + highpt_tau = highpt_tau, EffOffTauPtCut = 20000., #MeV TurnOnCurves = True, TurnOnCurvesDenom = "RecoID", # combined string with combination of "Truth", "Reco", "ID" and "Presel". For Truth doTruth=True! doTruth = False, doRealZtautauEff = False, + dodijetFakeTausEff = False, doBootstrap = False, - doEmulation = False, + doEmulation = True, emulation_l1_tau = emul_l1_tau, emulation_hlt_tau = emul_hlt_tau, L1EmulationTool = Level1Emulator, # HltEmulationTool = HltEmulator, - doTestTracking = False, + doTrackCurves = False, +# doTestTracking = False, topo_chains = tau_topo_chains, topo_support_chains = tau_topo_support_chains, doTopoValidation = False, diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx index 02ea19ce7812417bf5ef6153ad842b79abc6e632..97271dce46d533a4048a9ec91c65e339203f4713 100755 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx @@ -108,18 +108,21 @@ HLTTauMonTool::HLTTauMonTool(const std::string & type, const std::string & n, co declareProperty("primary_tau", m_primary_tau); declareProperty("monitoring_tau", m_monitoring_tau); declareProperty("prescaled_tau", m_prescaled_tau); + declareProperty("highpt_tau", m_highpt_tau); declareProperty("EffOffTauPtCut", m_effOffTauPtCut=20000.); declareProperty("TurnOnCurves", m_turnOnCurves=true); declareProperty("TurnOnCurvesDenom", m_turnOnCurvesDenom="RecoID"); declareProperty("doTruth", m_truth=false); declareProperty("doRealZtautauEff", m_RealZtautauEff=false); + declareProperty("dodijetFakeTausEff", m_dijetFakeTausEff=false); declareProperty("doBootstrap", m_bootstrap=true); declareProperty("doEmulation", m_emulation=false, "boolean to switch on emulation"); declareProperty("emulation_l1_tau", m_emulation_l1_tau, "List of L1 chains to emulate"); declareProperty("emulation_hlt_tau", m_emulation_hlt_tau, "List of HLT chains to emulate"); declareProperty("L1EmulationTool", m_l1emulationTool, "Handle to the L1 emulation tool"); //declareProperty("HltEmulationTool", m_hltemulationTool, "Handle to the HLT emulation tool"); - declareProperty("doTestTracking", m_doTestTracking=false); + declareProperty("doTrackCurves", m_doTrackCurves=false, "Efficiency plots of track distributions"); + //declareProperty("doTestTracking", m_doTestTracking=false); declareProperty("doTopoValidation", m_doTopoValidation=false); declareProperty("topo_chains", m_topo_chains); declareProperty("topo_support_chains", m_topo_support_chains); @@ -160,6 +163,9 @@ StatusCode HLTTauMonTool::init() { for(std::vector<std::string>::iterator it = m_prescaled_tau.begin(); it != m_prescaled_tau.end(); ++it) { m_trigItems.push_back(*it); } + for(std::vector<std::string>::iterator it = m_highpt_tau.begin(); it != m_highpt_tau.end(); ++it) { + m_trigItemsHighPt.push_back(*it); + } // ATH_MSG_WARNING("Retrieving HLT tau chains"); // const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup(".*"); @@ -206,20 +212,20 @@ StatusCode HLTTauMonTool::fill() { ATH_MSG_DEBUG(" ====== Begin fillHists() ====== "); StatusCode sc; - if(!m_trigItemsAll.size()){ - ATH_MSG_DEBUG("Retrieving HLT tau chains"); - const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup("HLT_.*tau.*"); - m_trigItemsAll = m_allHLTTauItems->getListOfTriggers(); - ATH_MSG_DEBUG("Retrieved "<< m_trigItemsAll.size() << " chains"); - for(unsigned int i=0;i<m_trigItemsAll.size();++i){ - ATH_MSG_DEBUG("ChainGroup "<< m_trigItemsAll.at(i).c_str()); - } +// if(!m_trigItemsAll.size()){ +// ATH_MSG_DEBUG("Retrieving HLT tau chains"); +// const Trig::ChainGroup* m_allHLTTauItems = getTDT()->getChainGroup("HLT_.*tau.*"); +// m_trigItemsAll = m_allHLTTauItems->getListOfTriggers(); +// ATH_MSG_DEBUG("Retrieved "<< m_trigItemsAll.size() << " chains"); +// for(unsigned int i=0;i<m_trigItemsAll.size();++i){ +// ATH_MSG_DEBUG("ChainGroup "<< m_trigItemsAll.at(i).c_str()); +// } // for(unsigned int j=0;j<m_trigItems.size();++j){ // bool activeChain(false); // for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true; // if(!activeChain && m_trigItems.at(j)!="Dump") ATH_MSG_WARNING("trigger chain " << m_trigItems.at(j) << " not active! skipping"); // } - } +// } for(unsigned int j=0;j<m_trigItems.size();++j) @@ -231,21 +237,42 @@ StatusCode HLTTauMonTool::fill() { const unsigned int TBP_bit = getTDT()->isPassedBits(trig_item_L1); if(TBP_bit & TrigDefs::L1_isPassedBeforePrescale) hist("hL1TBPCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.); - bool activeChain(false); - for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true; - if(m_trigItems.at(j).find("emulate")!=std::string::npos) activeChain = true; - if(!activeChain && m_trigItems.at(j)!="Dump"){ATH_MSG_DEBUG("trigger chain " << m_trigItems.at(j) << " not active! skipping");} - else { - std::string trig_item_EF = "HLT_"+m_trigItems.at(j); - std::string trig_item_L1(LowerChain( trig_item_EF ) ); +// bool activeChain(false); +// for(unsigned int i=0;i<m_trigItemsAll.size();++i) if("HLT_"+m_trigItems.at(j) == m_trigItemsAll.at(i)) activeChain = true; +// if(!activeChain && m_trigItems.at(j)!="Dump"){ATH_MSG_DEBUG("trigger chain " << m_trigItems.at(j) << " not active! skipping");} +// else { +// std::string trig_item_EF = "HLT_"+m_trigItems.at(j); +// std::string trig_item_L1(LowerChain( trig_item_EF ) ); - if ( getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition) ) hist("hL1Counts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.); - if ( getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition) ) hist("hHLTCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.); + if ( getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition) ) hist("hL1Counts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.); + if ( getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition) ) hist("hHLTCounts","HLT/TauMon/Expert")->Fill(m_trigItems.at(j).c_str(),1.); //testL1TopoNavigation(m_trigItems[j]); //testPrescaleRetrieval(m_trigItems[j]); - sc = fillHistogramsForItem(m_trigItems[j]); - if(sc.isFailure()){ ATH_MSG_WARNING("Failed at fillHistogramsForItem. Exiting!"); return StatusCode::FAILURE;} - } + sc = fillHistogramsForItem(m_trigItems[j]); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed at fillHistogramsForItem. Exiting!"); return StatusCode::FAILURE;} + if(m_doTrackCurves){ + sc = trackCurves (m_trigItems[j]); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed trackCurves(). Exiting!"); return StatusCode::FAILURE;} + } +// } + +// if(trig_item_L1=="L1_TAU20IM_2TAU12IM_J25_2J20_3J12"){ +// +// const xAOD::JetContainer * jet_cont = 0; +// if(evtStore()->retrieve(jet_cont, "AntiKt4EMTopoJets").isFailure()) +// { +// ATH_MSG_WARNING("Failed to retrieve AntiKt4EMTopoJets container. Exiting."); +// return StatusCode::FAILURE; +// } +// float maxPt=0; +// xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end(); +// for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr){ +// if((*jetItr)->pt()>maxPt) maxPt=(*jetItr)->pt(); +// } +// setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); +// if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM_J25_2J20_3J12",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,1); +// else if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,0); +// } } if(m_doTopoValidation){ @@ -266,10 +293,16 @@ StatusCode HLTTauMonTool::fill() { sc = RealZTauTauEfficiency(); if(sc.isFailure()){ ATH_MSG_WARNING("Failed RealZTauTauEfficiency(). Exiting!"); return StatusCode::FAILURE;} } - - if(m_doTestTracking){ sc = test2StepTracking(); - if(sc.isFailure()){ ATH_MSG_WARNING("Failed at test2Steptracking. Exiting!"); return StatusCode::FAILURE;} - } + + if(m_dijetFakeTausEff) + { + sc = dijetFakeTausEfficiency(); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed dijetFakeTausEfficiency(). Exiting!"); return StatusCode::FAILURE;} + } + + //if(m_doTestTracking){ sc = test2StepTracking(); + // if(sc.isFailure()){ ATH_MSG_WARNING("Failed at test2Steptracking. Exiting!"); return StatusCode::FAILURE;} + //} return sc; //ATH_MSG_DEBUG(" ====== End fillHists() ====== "); @@ -376,11 +409,19 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){ ATH_MSG_DEBUG("No features for chain " << trig_item_L1); hist("hL1CountsDebug","HLT/TauMon/Expert")->Fill(trigItem.c_str(),1.); } + else ATH_MSG_DEBUG("The chain " << trig_item_L1 << " has " << f.getCombinations().size() << " combinations"); + + + std::vector< uint32_t > tau_roIWord; + std::vector< float > tau_roi_eta; + std::vector< float > tau_roi_phi; + std::vector< uint32_t > jet_roIWord; for(;comb!=combEnd;++comb){ const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition); std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi_e = vec_roi.end(); - + ATH_MSG_DEBUG("Combination with " << vec_roi.size() << "RoIs"); + const xAOD::EmTauRoIContainer* l1Tau_cont = 0; if ( m_storeGate->retrieve( l1Tau_cont, "LVL1EmTauRoIs").isFailure() ){ // retrieve arguments: container type, container key ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoI container. Exiting."); @@ -394,14 +435,23 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){ for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){ for(itEMTau = l1Tau_cont->begin(); itEMTau!=itEMTau_e; ++itEMTau){ - if(roi->cptr()->roiWord()!=(*itEMTau)->roiWord()) continue; - if(!Selection(*itEMTau)) continue; - setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI"); - sc = fillL1Tau(*itEMTau); - if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI histo. Exiting!"); return StatusCode::FAILURE;} - setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1VsOffline"); - sc = fillL1TauVsOffline(*itEMTau); - if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1VsOffline histo. Exiting!"); return StatusCode::FAILURE;} + if(roi->cptr()->roiWord()==(*itEMTau)->roiWord()){ + if(!Selection(*itEMTau)) continue; + bool newRoI=true; + for(unsigned int l1tau=0;l1tau<tau_roIWord.size();l1tau++) if(roi->cptr()->roiWord()==tau_roIWord.at(l1tau)) newRoI=false; + if(!newRoI) break; + tau_roIWord.push_back(roi->cptr()->roiWord()); + tau_roi_eta.push_back((*itEMTau)->eta()); + tau_roi_phi.push_back((*itEMTau)->phi()); + ATH_MSG_DEBUG("Found RoI in (" << (*itEMTau)->eta() << "," << (*itEMTau)->phi() <<")"); + setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI"); + sc = fillL1Tau(*itEMTau); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI histo. Exiting!"); return StatusCode::FAILURE;} + setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1VsOffline"); + sc = fillL1TauVsOffline(*itEMTau); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1VsOffline histo. Exiting!"); return StatusCode::FAILURE;} + break; + } } } @@ -420,22 +470,23 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){ for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){ for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){ - if(roi->cptr()->roiWord()!=(*itJetRoI)->roiWord()) continue; - bool isAlsoEMTauRoI = false; - for(roi1 = vec_roi.begin(); roi1 != roi1_e; ++roi1) if(roi1->cptr()){ - for(itEMTau = l1Tau_cont->begin(); itEMTau!=itEMTau_e; ++itEMTau){ - if(roi1->cptr()->roiWord()!=(*itEMTau)->roiWord()) continue; - if(deltaR((*itEMTau)->eta(), (*itJetRoI)->eta(), (*itEMTau)->phi(), (*itJetRoI)->phi())<0.3 ) isAlsoEMTauRoI = true; - } + if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord()){ // found jet RoI + bool isAlsoEMTauRoI = false; + for(unsigned int l1tau = 0; l1tau<tau_roIWord.size();l1tau++) if(roi->cptr()->roiWord()==tau_roIWord.at(l1tau)) {isAlsoEMTauRoI = true; break;} + if(isAlsoEMTauRoI) break; // skip, it's a tau RoI + bool newRoI=true; + for(unsigned int l1jet=0;l1jet<jet_roIWord.size();l1jet++) if(roi->cptr()->roiWord()==jet_roIWord.at(l1jet)) newRoI=false; + if(!newRoI) break; + jet_roIWord.push_back(roi->cptr()->roiWord()); + ATH_MSG_DEBUG("Found L1 Jet RoI in chain " << trig_item_L1); + setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI"); + sc = fillL1Jet(*itJetRoI); + if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI Jet histo. Exiting!"); return StatusCode::FAILURE;} + break; } - if(isAlsoEMTauRoI) continue; - ATH_MSG_DEBUG("Found L1 Jet RoI in chain " << trig_item_L1); - setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/L1RoI"); - sc = fillL1Jet(*itJetRoI); - if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill L1RoI Jet histo. Exiting!"); return StatusCode::FAILURE;} } } - + } // if(trig_item_L1=="L1_TAU20IM_2TAU12IM_J25_2J20_3J12"){ // ATH_MSG_WARNING("fired L1_TAU20IM_2TAU12IM_J25_2J20_3J12"); // for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){ @@ -449,7 +500,29 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){ // } // } - } + if(trig_item_L1=="L1_TAU20IM_2TAU12IM" && getTDT()->isPassed(trig_item_L1,m_L1TriggerCondition)){ + + const xAOD::JetContainer * jet_cont = 0; + if(evtStore()->retrieve(jet_cont, "AntiKt4LCTopoJets").isFailure()) + { + ATH_MSG_WARNING("Failed to retrieve AntiKt4EMTopoJets container. Exiting."); + return StatusCode::FAILURE; + } + float maxPt=0; + xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end(); + for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr){ + if(fabs((*jetItr)->eta())>3.2) continue; + bool tauRoi = false; + for(unsigned int l1tau = 0; l1tau<tau_roIWord.size();l1tau++){ + if(deltaR((*jetItr)->eta(), tau_roi_eta.at(l1tau), (*jetItr)->phi(), tau_roi_phi.at(l1tau)) < 0.3) tauRoi = true; + } + if(tauRoi) continue; + if((*jetItr)->pt()>maxPt) maxPt=(*jetItr)->pt(); + } + setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); + if(getTDT()->isPassed("L1_TAU20IM_2TAU12IM_J25_2J20_3J12",m_L1TriggerCondition)) profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,1); + else profile("TProfRecoL1_J25PtEfficiency")->Fill(maxPt/1000.,0); + } }// end L1 histos @@ -544,7 +617,7 @@ StatusCode HLTTauMonTool::fillHistogramsForItem(const std::string & trigItem){ // if(m_truth) sc = TauEfficiencyCombo(trigItem); // if(sc.isFailure()){ ATH_MSG_WARNING("Failed to fill combo eff curves. Exiting!"); return StatusCode::FAILURE;} } - + if (!sc.isSuccess()) { ATH_MSG_WARNING("Could not fill histograms for given item."); } @@ -638,8 +711,8 @@ StatusCode HLTTauMonTool::fillPreselTau(const xAOD::TauJet *aEFTau){ hist("hFTFnTrack")->Fill(EFnTrack); hist("hEta")->Fill(aEFTau->eta()); hist("hPhi")->Fill(aEFTau->phi()); - float dRMax=-1; - if(aEFTau->detail(xAOD::TauJetParameters::dRmax, dRMax)) hist("hdRmax")->Fill(dRMax); + //float dRMax=-1; + //if(aEFTau->detail(xAOD::TauJetParameters::dRmax, dRMax)) hist("hdRmax")->Fill(dRMax); hist2("hEFEtaVsPhi")->Fill(aEFTau->eta(),aEFTau->phi()); hist2("hEtVsEta")->Fill(aEFTau->eta(),aEFTau->pt()/CLHEP::GeV); hist2("hEtVsPhi")->Fill(aEFTau->phi(),aEFTau->pt()/CLHEP::GeV); @@ -703,12 +776,17 @@ StatusCode HLTTauMonTool::fillEFTau(const xAOD::TauJet *aEFTau, const std::strin if(EFnTrack>1) isMP = true; //Pileup mu = Pileup(); - + if(BDTinput_type == "basicVars") { setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFTau"); hist("hEFEt")->Fill(aEFTau->pt()/CLHEP::GeV); hist("hEFEta")->Fill(aEFTau->eta()); + int num_vxt(0); + try {num_vxt = aEFTau->auxdata< int >("NUMVERTICES");} + catch(std::exception e) {ATH_MSG_DEBUG("HLTTauMonTool: NUMVERTICES decoration not found");} + hist("hEFNUM")->Fill(num_vxt); + hist2("hEFNUMvsmu")->Fill(num_vxt,mu); hist("hEFPhi")->Fill(aEFTau->phi()); hist("hEFnTrack")->Fill(EFnTrack); hist("hEFnWideTrack")->Fill(aEFTau->nWideTracks()); @@ -1236,7 +1314,6 @@ StatusCode HLTTauMonTool::fillEFTauVsOffline(const xAOD::TauJet *aEFTau, const s if(BDTinput_type == "basicVars") { setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFVsOffline"); - //Basic Vars hist2("hEFvsOffnTrks")->Fill(aOfflineTau->nTracks(), aEFTau->nTracks()); hist2("hEFvsOffnWideTrks")->Fill(aOfflineTau->nWideTracks(), aEFTau->nWideTracks()); @@ -1459,85 +1536,6 @@ StatusCode HLTTauMonTool::fillEFTauVsOffline(const xAOD::TauJet *aEFTau, const s return StatusCode::SUCCESS; } - -StatusCode HLTTauMonTool::fillTopoValidation(const std::string & trigItem_topo, const std::string & trigItem_support){ - -// if(!getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)) return StatusCode::SUCCESS; - - const xAOD::JetRoIContainer *l1jets = 0; -// const xAOD::EmTauRoIContainer *l1taus = 0; - - if ( m_storeGate->retrieve( l1jets, "LVL1JetRoIs").isFailure() ){ - ATH_MSG_WARNING("Failed to retrieve LVL1JetRoIs container. Exiting."); - //return StatusCode::FAILURE; - } -// if ( m_storeGate->retrieve( l1taus, "LVL1EmTauRoIs").isFailure() ){ -// ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoIs container. Exiting."); -// //return StatusCode::FAILURE; -// } - - xAOD::JetRoIContainer::const_iterator itJetRoI; - xAOD::JetRoIContainer::const_iterator itJetRoI_e = l1jets->end(); -// xAOD::EmTauRoIContainer::const_iterator itEMTau = l1taus->begin(); -// xAOD::EmTauRoIContainer::const_iterator itEMTau_e = l1taus->end(); - - if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition) && !getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)){ - setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation"); - hist("hSupportMismatch")->Fill(trigItem_topo.c_str(),1.); - return StatusCode::SUCCESS; - } - if(!getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)) return StatusCode::SUCCESS; - - setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+trigItem_topo); - Trig::FeatureContainer f = ( getTDT()->features(trigItem_support,m_L1TriggerCondition) ); - Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end()); - - float min_dR(100.); - float min_dR_nojets(100.); - float min_dR_jets(100.); - for(;comb!=combEnd;++comb){ - const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition); - std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi1 = vec_roi.begin(), roi_e = vec_roi.end(); - - std::vector<bool> jet_roi; - std::vector<float> phi_roi; - std::vector<float> eta_roi; - for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){ - jet_roi.push_back(false); - phi_roi.push_back(roi->cptr()->phi()); - eta_roi.push_back(roi->cptr()->eta()); - for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){ - if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord()) jet_roi.back()=true; - } - } - - for(unsigned int i = 0; i < phi_roi.size(); ++i){ - for(unsigned int j = i+1; j < phi_roi.size(); ++j){ - float dR = deltaR(eta_roi.at(i),eta_roi.at(j),phi_roi.at(i),phi_roi.at(j)); - if(dR<0.3) continue; - if(dR<min_dR) min_dR = dR; - if(!jet_roi.at(i) && !jet_roi.at(j)) if(dR<min_dR_nojets) min_dR_nojets = dR; - if(jet_roi.at(i) || jet_roi.at(j)) if(dR<min_dR_jets) min_dR_jets = dR; - } - } - - } - - if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)){ - hist("hDR")->Fill(min_dR); - hist("hDRnoJets")->Fill(min_dR_nojets); - hist("hDRjets")->Fill(min_dR_jets); - } - else { - hist("hDR_noTopo")->Fill(min_dR); - hist("hDRnoJets_noTopo")->Fill(min_dR_nojets); - hist("hDRjets_noTopo")->Fill(min_dR_jets); - } - - return StatusCode::SUCCESS; - -} - //------------------------------------------------------------------------------------ // Testing methods //------------------------------------------------------------------------------------ @@ -2058,62 +2056,66 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std: int ntracks = ntrk_TauDenom.at(i); if(m_L1StringCondition=="allowResurrectedDecision" || m_HLTStringCondition=="allowResurrectedDecision"){ if(tlv_TauDenom.at(i).DeltaR(Muon_TLV)<0.4) continue; - } + } double pt = tlv_TauDenom.at(i).Pt(); double eta = tlv_TauDenom.at(i).Eta(); double phi = tlv_TauDenom.at(i).Phi(); - if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue; - if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue; - if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue; - if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue; - if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue; - if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue; - if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue; - if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue; + if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue; + if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue; + if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue; + if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue; + if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue; + if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue; + if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue; + if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue; - - - hist("hRecoTauPtDenom")->Fill(pt/1000.); - if(ntracks == 1) hist("hRecoTauPt1PDenom")->Fill(pt/1000.); - if(ntracks > 1) hist("hRecoTauPt3PDenom")->Fill(pt/1000.); - hist("hRecoTauEtaDenom")->Fill(eta); - hist("hRecoTauPhiDenom")->Fill(phi); - hist("hRecoTauNTrackDenom")->Fill(ntracks); - hist("hRecoTauNVtxDenom")->Fill(nvtx); - hist("hRecoTauMuDenom")->Fill(mu); - hist2("hRecoTauEtaVsPhiDenom")->Fill(eta,phi); - + // hist("hRecoTauPtDenom")->Fill(pt/1000.); + // if(ntracks == 1) hist("hRecoTauPt1PDenom")->Fill(pt/1000.); + // if(ntracks > 1) hist("hRecoTauPt3PDenom")->Fill(pt/1000.); + // hist("hRecoTauEtaDenom")->Fill(eta); + // hist("hRecoTauPhiDenom")->Fill(phi); + // hist("hRecoTauNTrackDenom")->Fill(ntracks); + // hist("hRecoTauNVtxDenom")->Fill(nvtx); + // hist("hRecoTauMuDenom")->Fill(mu); + hist2("hRecoTauEtaVsPhiDenom")->Fill(eta,phi); // get prescale wait: //float L1_PS = PrescaleRetrieval(trigItem,"L1"); //float Tot_PS = PrescaleRetrieval(trigItem,"TOT"); //ATH_MSG_WARNING(trigItem << " " << L1_PS << " " << Tot_PS); - if(m_bootstrap && !getTDT()->isPassed("L1_TAU12")) continue; - + if(m_bootstrap && !getTDT()->isPassed("L1_TAU12")) continue; //const unsigned int HLT_bits = getTDT()->isPassedBits("HLT_"+trigItem); //if( !(HLT_bits & TrigDefs::EF_resurrected) ) continue; - if( HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2) ){ - hist("hRecoHLTPtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} - hist("hRecoHLTEtaNum")->Fill(eta); - hist("hRecoHLTPhiNum")->Fill(phi); - hist("hRecoHLTNTrackNum")->Fill(ntracks); - hist("hRecoHLTNVtxNum")->Fill(nvtx); - hist("hRecoHLTMuNum")->Fill(mu); - hist2("hRecoHLTEtaVsPhiNum")->Fill(eta,phi); - profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,1); - profile("TProfRecoHLTEtaEfficiency")->Fill(eta,1); - profile("TProfRecoHLTPhiEfficiency")->Fill(phi,1); - profile("TProfRecoHLTNTrackEfficiency")->Fill(ntracks,1); - profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,1); - profile("TProfRecoHLTMuEfficiency")->Fill(mu,1); - } - - if( !HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2) ){ + if( HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2) ){ + // hist("hRecoHLTPtNum")->Fill(pt/1000.); + // if(ntracks == 1) {hist("hRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) {profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} + profile("TProfRecoHLTHighPtEfficiency")->Fill(pt/1000.,1); + if(ntracks == 1) {profile("TProfRecoHLTHighPt1pEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) {profile("TProfRecoHLTHighPt3pEfficiency")->Fill(pt/1000.,1);} + // hist("hRecoHLTEtaNum")->Fill(eta); + // hist("hRecoHLTPhiNum")->Fill(phi); + // hist("hRecoHLTNTrackNum")->Fill(ntracks); + // hist("hRecoHLTNVtxNum")->Fill(nvtx); + // hist("hRecoHLTMuNum")->Fill(mu); + hist2("hRecoHLTEtaVsPhiNum")->Fill(eta,phi); + profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,1); + profile("TProfRecoHLTEtaEfficiency")->Fill(eta,1); + profile("TProfRecoHLTPhiEfficiency")->Fill(phi,1); + profile("TProfRecoHLTNTrackEfficiency")->Fill(ntracks,1); + profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,1); + profile("TProfRecoHLTMuEfficiency")->Fill(mu,1); + } + + if( !HLTTauMatching(trigItem, tlv_TauDenom.at(i), 0.2) ){ if(ntracks == 1) profile("TProfRecoHLTPt1PEfficiency")->Fill(pt/1000.,0); if(ntracks > 1) profile("TProfRecoHLTPt3PEfficiency")->Fill(pt/1000.,0); + profile("TProfRecoHLTHighPtEfficiency")->Fill(pt/1000.,0); + if(ntracks == 1) {profile("TProfRecoHLTHighPt1pEfficiency")->Fill(pt/1000.,0);} + if(ntracks > 1) {profile("TProfRecoHLTHighPt3pEfficiency")->Fill(pt/1000.,0);} profile("TProfRecoHLTPtEfficiency")->Fill(pt/1000.,0); profile("TProfRecoHLTEtaEfficiency")->Fill(eta,0); profile("TProfRecoHLTPhiEfficiency")->Fill(phi,0); @@ -2121,36 +2123,44 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std: profile("TProfRecoHLTNVtxEfficiency")->Fill(nvtx,0); profile("TProfRecoHLTMuEfficiency")->Fill(mu,0); - } + } - if( L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3) ){ - hist("hRecoL1PtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} - hist("hRecoL1EtaNum")->Fill(eta); - hist("hRecoL1PhiNum")->Fill(phi); - hist("hRecoL1NTrackNum")->Fill(ntracks); - hist("hRecoL1NVtxNum")->Fill(nvtx); - hist("hRecoL1MuNum")->Fill(mu); - hist2("hRecoL1EtaVsPhiNum")->Fill(eta,phi); + if( L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3) ){ + // hist("hRecoL1PtNum")->Fill(pt/1000.); + // if(ntracks == 1) {hist("hRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) {profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfRecoL1HighPt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) {profile("TProfRecoL1HighPt3PEfficiency")->Fill(pt/1000.,1);} + // hist("hRecoL1EtaNum")->Fill(eta); + // hist("hRecoL1PhiNum")->Fill(phi); + // hist("hRecoL1NTrackNum")->Fill(ntracks); + // hist("hRecoL1NVtxNum")->Fill(nvtx); + // hist("hRecoL1MuNum")->Fill(mu); + hist2("hRecoL1EtaVsPhiNum")->Fill(eta,phi); profile("TProfRecoL1PtEfficiency")->Fill(pt/1000.,1); + profile("TProfRecoL1HighPtEfficiency")->Fill(pt/1000.,1); profile("TProfRecoL1EtaEfficiency")->Fill(eta,1); profile("TProfRecoL1PhiEfficiency")->Fill(phi,1); profile("TProfRecoL1NTrackEfficiency")->Fill(ntracks,1); profile("TProfRecoL1NVtxEfficiency")->Fill(nvtx,1); profile("TProfRecoL1MuEfficiency")->Fill(mu,1); - } + } - if( !L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3) ){ + if( !L1TauMatching(l1_chain, tlv_TauDenom.at(i), 0.3) ){ if(ntracks == 1) profile("TProfRecoL1Pt1PEfficiency")->Fill(pt/1000.,0); if(ntracks > 1) profile("TProfRecoL1Pt3PEfficiency")->Fill(pt/1000.,0); + if(ntracks == 1) {profile("TProfRecoL1HighPt1PEfficiency")->Fill(pt/1000.,0);} + if(ntracks > 1) {profile("TProfRecoL1HighPt3PEfficiency")->Fill(pt/1000.,0);} profile("TProfRecoL1PtEfficiency")->Fill(pt/1000.,0); + profile("TProfRecoL1HighPtEfficiency")->Fill(pt/1000.,0); profile("TProfRecoL1EtaEfficiency")->Fill(eta,0); profile("TProfRecoL1PhiEfficiency")->Fill(phi,0); profile("TProfRecoL1NTrackEfficiency")->Fill(ntracks,0); profile("TProfRecoL1NVtxEfficiency")->Fill(nvtx,0); profile("TProfRecoL1MuEfficiency")->Fill(mu,0); - } + } } @@ -2173,29 +2183,40 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std: if(ntracks!=1 && ntracks!=3 ) continue; bool good_tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium); if(good_tau){ + + // std::cout<<"HLT"<<trigItem<<std::endl; + if(trigItem=="tau160_idperf_tracktwo"){ + setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); + if( HLTTauMatching("tau160_perf_tracktwo", TauTLV, 0.2) ){ + profile("TProfRecoHLT160PtEfficiency")->Fill(pt/1000.,1);} + else if( HLTTauMatching("tau160_idperf_tracktwo", TauTLV, 0.2) ){ + profile("TProfRecoHLT160PtEfficiency")->Fill(pt/1000.,0);} + } + + if(trigItem=="tau25_idperf_track"){ setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); if( HLTTauMatching("tau25_idperf_tracktwo", TauTLV, 0.2) ){ - hist("hRecoTau25PtDenom")->Fill(pt/1000.); - if(ntracks == 1) hist("hRecoTau25Pt1PDenom")->Fill(pt/1000.); - if(ntracks > 1) hist("hRecoTau25Pt3PDenom")->Fill(pt/1000.); - hist("hRecoTau25EtaDenom")->Fill(eta); - hist("hRecoTau25PhiDenom")->Fill(phi); - hist("hRecoTau25NTrackDenom")->Fill(ntracks); - hist("hRecoTau25NVtxDenom")->Fill(nvtx); - hist("hRecoTau25MuDenom")->Fill(mu); + // hist("hRecoTau25PtDenom")->Fill(pt/1000.); + // if(ntracks == 1) hist("hRecoTau25Pt1PDenom")->Fill(pt/1000.); + // if(ntracks > 1) hist("hRecoTau25Pt3PDenom")->Fill(pt/1000.); + // hist("hRecoTau25EtaDenom")->Fill(eta); + // hist("hRecoTau25PhiDenom")->Fill(phi); + // hist("hRecoTau25NTrackDenom")->Fill(ntracks); + // hist("hRecoTau25NVtxDenom")->Fill(nvtx); + // hist("hRecoTau25MuDenom")->Fill(mu); hist2("hRecoTau25EtaVsPhiDenom")->Fill(eta,phi); } if( HLTTauMatching("tau25_perf_tracktwo", TauTLV, 0.2) ) { - hist("hRecoHLT25PtNum")->Fill(pt/1000.); - if(ntracks == 1) hist("hRecoHLT25Pt1PNum")->Fill(pt/1000.); - if(ntracks > 1) hist("hRecoHLT25Pt3PNum")->Fill(pt/1000.); - hist("hRecoHLT25EtaNum")->Fill(eta); - hist("hRecoHLT25PhiNum")->Fill(phi); - hist("hRecoHLT25NTrackNum")->Fill(ntracks); - hist("hRecoHLT25NVtxNum")->Fill(nvtx); - hist("hRecoHLT25MuNum")->Fill(mu); + // hist("hRecoHLT25PtNum")->Fill(pt/1000.); + // if(ntracks == 1) hist("hRecoHLT25Pt1PNum")->Fill(pt/1000.); + // if(ntracks > 1) hist("hRecoHLT25Pt3PNum")->Fill(pt/1000.); + // hist("hRecoHLT25EtaNum")->Fill(eta); + // hist("hRecoHLT25PhiNum")->Fill(phi); + // hist("hRecoHLT25NTrackNum")->Fill(ntracks); + // hist("hRecoHLT25NVtxNum")->Fill(nvtx); + // hist("hRecoHLT25MuNum")->Fill(mu); hist2("hRecoHLT25EtaVsPhiNum")->Fill(eta,phi); profile("TProfRecoHLT25PtEfficiency")->Fill(pt/1000.,1); if(ntracks==1) profile("TProfRecoHLT25Pt1PEfficiency")->Fill(pt/1000.,1); @@ -2218,34 +2239,42 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std: } } + + if(trigItem=="tau160_perf_tracktwo"){ + setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); + if( HLTTauMatching("tau160_medium1_tracktwo", TauTLV, 0.2) ){ + profile("TProfRecoHLT160PtEfficiency_2")->Fill(pt/1000.,1);} + else if( HLTTauMatching("tau160_perf_tracktwo", TauTLV, 0.2) ){ + profile("TProfRecoHLT160PtEfficiency_2")->Fill(pt/1000.,0);} + } if(trigItem=="tau25_perf_tracktwo"){ setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); if( HLTTauMatching("tau25_perf_tracktwo", TauTLV, 0.2) ){ - hist("hRecoTau25PtDenom_2")->Fill(pt/1000.); - if(ntracks == 1) hist("hRecoTau25Pt1PDenom_2")->Fill(pt/1000.); - if(ntracks > 1) hist("hRecoTau25Pt3PDenom_2")->Fill(pt/1000.); - hist("hRecoTau25EtaDenom_2")->Fill(eta); - hist("hRecoTau25PhiDenom_2")->Fill(phi); - hist("hRecoTau25NTrackDenom_2")->Fill(ntracks); - hist("hRecoTau25NVtxDenom_2")->Fill(nvtx); - hist("hRecoTau25MuDenom_2")->Fill(mu); + // hist("hRecoTau25PtDenom_2")->Fill(pt/1000.); + // if(ntracks == 1) hist("hRecoTau25Pt1PDenom_2")->Fill(pt/1000.); + // if(ntracks > 1) hist("hRecoTau25Pt3PDenom_2")->Fill(pt/1000.); + // hist("hRecoTau25EtaDenom_2")->Fill(eta); + // hist("hRecoTau25PhiDenom_2")->Fill(phi); + // hist("hRecoTau25NTrackDenom_2")->Fill(ntracks); + // hist("hRecoTau25NVtxDenom_2")->Fill(nvtx); + // hist("hRecoTau25MuDenom_2")->Fill(mu); hist2("hRecoTau25EtaVsPhiDenom_2")->Fill(eta,phi); } if( HLTTauMatching("tau25_medium1_tracktwo", TauTLV, 0.2) ){ - hist("hRecoHLT25PtNum_2")->Fill(pt/1000.); + // hist("hRecoHLT25PtNum_2")->Fill(pt/1000.); if(ntracks == 1) { - hist("hRecoHLT25Pt1PNum_2")->Fill(pt/1000.); + // hist("hRecoHLT25Pt1PNum_2")->Fill(pt/1000.); profile("TProfRecoHLT25Pt1PEfficiency_2")->Fill(pt/1000.,1);} if(ntracks > 1) { - hist("hRecoHLT25Pt3PNum_2")->Fill(pt/1000.); + // hist("hRecoHLT25Pt3PNum_2")->Fill(pt/1000.); profile("TProfRecoHLT25Pt3PEfficiency_2")->Fill(pt/1000.,1);} - hist("hRecoHLT25EtaNum_2")->Fill(eta); - hist("hRecoHLT25PhiNum_2")->Fill(phi); - hist("hRecoHLT25NTrackNum_2")->Fill(ntracks); - hist("hRecoHLT25NVtxNum_2")->Fill(nvtx); - hist("hRecoHLT25MuNum_2")->Fill(mu); + // hist("hRecoHLT25EtaNum_2")->Fill(eta); + // hist("hRecoHLT25PhiNum_2")->Fill(phi); + // hist("hRecoHLT25NTrackNum_2")->Fill(ntracks); + // hist("hRecoHLT25NVtxNum_2")->Fill(nvtx); + // hist("hRecoHLT25MuNum_2")->Fill(mu); hist2("hRecoHLT25EtaVsPhiNum_2")->Fill(eta,phi); profile("TProfRecoHLT25PtEfficiency_2")->Fill(pt/1000.,1); profile("TProfRecoHLT25EtaEfficiency_2")->Fill(eta,1); @@ -2262,13 +2291,12 @@ StatusCode HLTTauMonTool::TauEfficiency(const std::string & trigItem, const std: profile("TProfRecoHLT25NTrackEfficiency_2")->Fill(ntracks,0); profile("TProfRecoHLT25NVtxEfficiency_2")->Fill(nvtx,0); profile("TProfRecoHLT25MuEfficiency_2")->Fill(mu,0); - - } - } - } + } + } } + } - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } @@ -2721,26 +2749,28 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const { setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency"); - hist("hTrueTauPtDenom")->Fill(pt/1000.); - if(ntracks == 1) hist("hTrueTauPt1PDenom")->Fill(pt/1000.); - if(ntracks > 1) hist("hTrueTauPt3PDenom")->Fill(pt/1000.); - hist("hTrueTauEtaDenom")->Fill(eta); - hist("hTrueTauPhiDenom")->Fill(phi); - hist("hTrueTauNTrackDenom")->Fill(ntracks); - hist("hTrueTauNVtxDenom")->Fill(nvtx); - hist("hTrueTauMuDenom")->Fill(mu); + // hist("hTrueTauPtDenom")->Fill(pt/1000.); + // if(ntracks == 1) hist("hTrueTauPt1PDenom")->Fill(pt/1000.); + // if(ntracks > 1) hist("hTrueTauPt3PDenom")->Fill(pt/1000.); + // hist("hTrueTauEtaDenom")->Fill(eta); + // hist("hTrueTauPhiDenom")->Fill(phi); + // hist("hTrueTauNTrackDenom")->Fill(ntracks); + // hist("hTrueTauNVtxDenom")->Fill(nvtx); + // hist("hTrueTauMuDenom")->Fill(mu); hist2("hTrueTauEtaVsPhiDenom")->Fill(eta,phi); if(truth_matched_to_L1.back()) { - hist("hTrueL1PtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hTrueL1Pt1PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hTrueL1Pt3PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);} - hist("hTrueL1EtaNum")->Fill(eta); - hist("hTrueL1PhiNum")->Fill(phi); - hist("hTrueL1NTrackNum")->Fill(ntracks); - hist("hTrueL1NVtxNum")->Fill(nvtx); - hist("hTrueL1MuNum")->Fill(mu); + // hist("hTrueL1PtNum")->Fill(pt/1000.); + // if(ntracks == 1) {hist("hTrueL1Pt1PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfTrueL1Pt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hTrueL1Pt3PNum")->Fill(pt/1000.);profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) { profile("TProfTrueL1Pt3PEfficiency")->Fill(pt/1000.,1);} + // hist("hTrueL1EtaNum")->Fill(eta); + // hist("hTrueL1PhiNum")->Fill(phi); + // hist("hTrueL1NTrackNum")->Fill(ntracks); + // hist("hTrueL1NVtxNum")->Fill(nvtx); + // hist("hTrueL1MuNum")->Fill(mu); hist2("hTrueL1EtaVsPhiNum")->Fill(eta,phi); profile("TProfTrueL1PtEfficiency")->Fill(pt/1000.,1); profile("TProfTrueL1EtaEfficiency")->Fill(eta,1); @@ -2764,14 +2794,16 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const if(truth_matched_to_hlt.back()) { - hist("hTrueHLTPtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hTrueHLTPt1PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hTrueHLTPt3PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);} - hist("hTrueHLTEtaNum")->Fill(eta); - hist("hTrueHLTPhiNum")->Fill(phi); - hist("hTrueHLTNTrackNum")->Fill(ntracks); - hist("hTrueHLTNVtxNum")->Fill(nvtx); - hist("hTrueHLTMuNum")->Fill(mu); + // hist("hTrueHLTPtNum")->Fill(pt/1000.); + // if(ntracks == 1) {hist("hTrueHLTPt1PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hTrueHLTPt3PNum")->Fill(pt/1000.);profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfTrueHLTPt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) { profile("TProfTrueHLTPt3PEfficiency")->Fill(pt/1000.,1);} + // hist("hTrueHLTEtaNum")->Fill(eta); + // hist("hTrueHLTPhiNum")->Fill(phi); + // hist("hTrueHLTNTrackNum")->Fill(ntracks); + // hist("hTrueHLTNVtxNum")->Fill(nvtx); + // hist("hTrueHLTMuNum")->Fill(mu); hist2("hTrueHLTEtaVsPhiNum")->Fill(eta,phi); profile("TProfTrueHLTPtEfficiency")->Fill(pt/1000.,1); profile("TProfTrueHLTEtaEfficiency")->Fill(eta,1); @@ -2802,26 +2834,28 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const if(truth_matched_to_reco.back()) { - hist("hTruthRecoTauPtDenom")->Fill(pt/1000.); - if(ntracks == 1) hist("hTruthRecoTauPt1PDenom")->Fill(pt/1000.); - if(ntracks > 1) hist("hTruthRecoTauPt3PDenom")->Fill(pt/1000.); - hist("hTruthRecoTauEtaDenom")->Fill(eta); - hist("hTruthRecoTauPhiDenom")->Fill(phi); - hist("hTruthRecoTauNTrackDenom")->Fill(ntracks); - hist("hTruthRecoTauNVtxDenom")->Fill(nvtx); - hist("hTruthRecoTauMuDenom")->Fill(mu); + // hist("hTruthRecoTauPtDenom")->Fill(pt/1000.); + // if(ntracks == 1) hist("hTruthRecoTauPt1PDenom")->Fill(pt/1000.); + // if(ntracks > 1) hist("hTruthRecoTauPt3PDenom")->Fill(pt/1000.); + // hist("hTruthRecoTauEtaDenom")->Fill(eta); + // hist("hTruthRecoTauPhiDenom")->Fill(phi); + // hist("hTruthRecoTauNTrackDenom")->Fill(ntracks); + // hist("hTruthRecoTauNVtxDenom")->Fill(nvtx); + // hist("hTruthRecoTauMuDenom")->Fill(mu); hist2("hTruthRecoTauEtaVsPhiDenom")->Fill(eta,phi); if(truthReco_matched_to_L1.back()) { - hist("hTruthRecoL1PtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hTruthRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hTruthRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} - hist("hTruthRecoL1EtaNum")->Fill(eta); - hist("hTruthRecoL1PhiNum")->Fill(phi); - hist("hTruthRecoL1NTrackNum")->Fill(ntracks); - hist("hTruthRecoL1NVtxNum")->Fill(nvtx); - hist("hTruthRecoL1MuNum")->Fill(mu); + // hist("hTruthRecoL1PtNum")->Fill(pt/1000.); + // if(ntracks == 1) {hist("hTruthRecoL1Pt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hTruthRecoL1Pt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) { profile("TProfTruthRecoL1Pt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) { profile("TProfTruthRecoL1Pt3PEfficiency")->Fill(pt/1000.,1);} + // hist("hTruthRecoL1EtaNum")->Fill(eta); + // hist("hTruthRecoL1PhiNum")->Fill(phi); + // hist("hTruthRecoL1NTrackNum")->Fill(ntracks); + // hist("hTruthRecoL1NVtxNum")->Fill(nvtx); + // hist("hTruthRecoL1MuNum")->Fill(mu); hist2("hTruthRecoL1EtaVsPhiNum")->Fill(eta,phi); profile("TProfTruthRecoL1PtEfficiency")->Fill(pt/1000.,1); profile("TProfTruthRecoL1EtaEfficiency")->Fill(eta,1); @@ -2848,13 +2882,15 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const if(truthReco_matched_to_hlt.back()) { hist("hTruthRecoHLTPtNum")->Fill(pt/1000.); - if(ntracks == 1) {hist("hTruthRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} - if(ntracks > 1) {hist("hTruthRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} - hist("hTruthRecoHLTEtaNum")->Fill(eta); - hist("hTruthRecoHLTPhiNum")->Fill(phi); - hist("hTruthRecoHLTNTrackNum")->Fill(ntracks); - hist("hTruthRecoHLTNVtxNum")->Fill(nvtx); - hist("hTruthRecoHLTMuNum")->Fill(mu); + // if(ntracks == 1) {hist("hTruthRecoHLTPt1PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} + // if(ntracks > 1) {hist("hTruthRecoHLTPt3PNum")->Fill(pt/1000.);profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} + if(ntracks == 1) {profile("TProfTruthRecoHLTPt1PEfficiency")->Fill(pt/1000.,1);} + if(ntracks > 1) { profile("TProfTruthRecoHLTPt3PEfficiency")->Fill(pt/1000.,1);} + // hist("hTruthRecoHLTEtaNum")->Fill(eta); + // hist("hTruthRecoHLTPhiNum")->Fill(phi); + // hist("hTruthRecoHLTNTrackNum")->Fill(ntracks); + // hist("hTruthRecoHLTNVtxNum")->Fill(nvtx); + // hist("hTruthRecoHLTMuNum")->Fill(mu); hist2("hTruthRecoHLTEtaVsPhiNum")->Fill(eta,phi); profile("TProfTruthRecoHLTPtEfficiency")->Fill(pt/1000.,1); profile("TProfTruthRecoHLTEtaEfficiency")->Fill(eta,1); @@ -2891,6 +2927,33 @@ StatusCode HLTTauMonTool::TruthTauEfficiency(const std::string & trigItem, const return StatusCode::SUCCESS; } +bool HLTTauMonTool::PresTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR){ + std::string trig_item_EF= "HLT_"+trigItem; + if (getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition)) { + + Trig::FeatureContainer f = ( getTDT()->features(trig_item_EF,m_HLTTriggerCondition) ); + Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end()); + + for(;comb!=combEnd;++comb){ + + const std::vector< Trig::Feature<xAOD::TauJetContainer> > vec_preseltau = comb -> get<xAOD::TauJetContainer>("HLT_xAOD__TauJetContainer_TrigTauRecPreselection", m_HLTTriggerCondition); + std::vector<Trig::Feature<xAOD::TauJetContainer> >::const_iterator preselCI = vec_preseltau.begin(), preselCI_e = vec_preseltau.end(); + + for(; preselCI != preselCI_e; ++preselCI){ + if(preselCI->cptr()){ + xAOD::TauJetContainer::const_iterator tauItr = preselCI->cptr()->begin(); + xAOD::TauJetContainer::const_iterator tauEnd = preselCI->cptr()->end(); + for(; tauItr != tauEnd; ++tauItr) { + double delR = (*tauItr)->p4().DeltaR(TLV); + if(delR <= DR) return true; + } + } + } + } + } + return true; +} + bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR) { @@ -2903,7 +2966,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV std::string trig_item_EF= "HLT_"+trigItem; //std::string l1_chain(LowerChain("HLT_"+trigItem)); - std::string testing_chain(trig_item_EF); +/* std::string testing_chain(trig_item_EF); if(testing_chain.find("emulate")!=std::string::npos){ ATH_MSG_DEBUG("Emulating "<<testing_chain); // emulate new trk preselection @@ -2912,7 +2975,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV // same for track if(testing_chain.find("track")!=std::string::npos) trig_item_EF = "HLT_tau25_idperf_track"; if(testing_chain.find("tracktwo")!=std::string::npos) trig_item_EF = "HLT_tau25_idperf_tracktwo"; - } + }*/ if(getTDT()->isPassed(trig_item_EF,TrigDefs::Physics | TrigDefs::allowResurrectedDecision) ) { @@ -2949,7 +3012,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV { ATH_MSG_DEBUG("HLT tau: pt " << (*Itr_tauEFjet)->pt() << ", #trk " << (*Itr_tauEFjet)->nTracks()); - if(testing_chain.find("emulate")!=std::string::npos){ + /*if(testing_chain.find("emulate")!=std::string::npos){ bool pass = false; bool do2step = false; bool doReject0trk = true; @@ -2957,10 +3020,10 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV if(testing_chain.find("tracktwo")!=std::string::npos) do2step = true; if(testing_chain.find("ptmin")!=std::string::npos) track_pt_min = 1000.; if(testing_chain.find("no0reject")!=std::string::npos) doReject0trk = false; - float RoI_eta = (*Itr_tauEFjet)->etaJetSeed(); - float RoI_phi = (*Itr_tauEFjet)->phiJetSeed(); - ATH_MSG_DEBUG("Emulating "<<testing_chain<<" with do2step "<<do2step<<", doReject0trk "<<doReject0trk<<", track_pt_min "<<track_pt_min); - pass = emulate2StepTracking(RoI_eta, RoI_phi, do2step, doReject0trk, track_pt_min); + // float RoI_eta = (*Itr_tauEFjet)->etaJetSeed(); + // float RoI_phi = (*Itr_tauEFjet)->phiJetSeed(); + // ATH_MSG_DEBUG("Emulating "<<testing_chain<<" with do2step "<<do2step<<", doReject0trk "<<doReject0trk<<", track_pt_min "<<track_pt_min); + // pass = emulate2StepTracking(RoI_eta, RoI_phi, do2step, doReject0trk, track_pt_min); if(!pass) return false; ATH_MSG_DEBUG("Passed emulated trk preselection"); pass = L1TauMatching("L1_TAU12IM", TLV, 0.3); @@ -2969,7 +3032,7 @@ bool HLTTauMonTool::HLTTauMatching(const std::string & trigItem, const TLorentzV if(testing_chain.find("medium")!=std::string::npos) pass = HLTTauMatching("HLT_tau25_medium1_mvonly", (*Itr_tauEFjet)->p4(), 0.2); if(!pass) return false; ATH_MSG_DEBUG("Passed medium1"); - } + }*/ double delR = (*Itr_tauEFjet)->p4().DeltaR(TLV); if(delR <= DR) return true; diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h index 91b3d95a2c822cf6255ac099d5ded3a097d4e7b7..ea5e4e8790ffb27bac55af2ddf331261c5f32a69 100755 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.h @@ -101,12 +101,16 @@ class HLTTauMonTool : public IHLTMonTool { // StatusCode TauEfficiencyCombo(const std::string & trigItem); StatusCode RealZTauTauEfficiency(); + StatusCode dijetFakeTausEfficiency(); + StatusCode FTKtest(const std::string & trigItem); + StatusCode trackCurves(const std::string & trigItem); //Methods for HLT and L1 Matching bool HLTTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR); + bool PresTauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR); bool L1TauMatching(const std::string & trigItem, const TLorentzVector & TLV, double DR); - bool emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min); - StatusCode test2StepTracking(); + // bool emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min); + //StatusCode test2StepTracking(); void testClusterNavigation(const xAOD::TauJet *aEFTau); void testL1TopoNavigation(const std::string & trigItem); float PrescaleRetrieval(const std::string & trigItem, const std::string & level); @@ -117,6 +121,8 @@ class HLTTauMonTool : public IHLTMonTool { float m_selection_absEtaMax, m_selection_absEtaMin; float m_selection_absPhiMax, m_selection_absPhiMin; + bool TruthMatched( const xAOD::TauJet * tau); + StatusCode Emulation(); std::string LowerChain(std::string hlt_item); /// Method for managing the histogram divisions @@ -145,9 +151,12 @@ class HLTTauMonTool : public IHLTMonTool { bool m_turnOnCurves; std::string m_turnOnCurvesDenom; bool m_truth; - bool m_doTestTracking; + //bool m_doTestTracking; bool m_emulation; bool m_RealZtautauEff; + bool m_dijetFakeTausEff; + bool m_doFTKtest; + bool m_doTrackCurves; bool m_doTopoValidation; std::vector<std::string> CutItems; std::vector<std::string> TauCutFlow; @@ -170,6 +179,8 @@ class HLTTauMonTool : public IHLTMonTool { ///Set by job options std::vector<std::string> m_trigItems; std::vector<std::string> m_trigItemsAll; + std::vector<std::string> m_trigItemsHighPt; + std::vector<std::string> m_highpt_tau; std::vector<std::string> m_primary_tau; std::vector<std::string> m_monitoring_tau; std::vector<std::string> m_prescaled_tau; diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx new file mode 100755 index 0000000000000000000000000000000000000000..fa5c299a386e0f99e0493016d354353cea26923b --- /dev/null +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_L1Topo.cxx @@ -0,0 +1,287 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** @file HLTTauMonTool.cxx + * + * Artur Kalinowski (Artur.Kalinowski@cern.ch) + * Based on HLTMonTool example by Christiane Risler and Martin zur Nedden + * Maintained by ccuenca, jengbou + */ + +#include "GaudiKernel/IJobOptionsSvc.h" +#include "AthenaMonitoring/AthenaMonManager.h" +#include "AthenaMonitoring/ManagedMonitorToolTest.h" +#include "AnalysisUtils/AnalysisMisc.h" + +#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/StatusCode.h" +#include "GaudiKernel/ITHistSvc.h" +#include "GaudiKernel/PropertyMgr.h" +#include "GaudiKernel/IToolSvc.h" +#include "StoreGate/StoreGateSvc.h" +#include "EventInfo/TriggerInfo.h" +#include "TrigSteeringEvent/HLTResult.h" +#include "EventInfo/EventInfo.h" +#include <EventInfo/EventID.h> +#include "xAODEventInfo/EventInfo.h" + +#include "TrigDecisionTool/FeatureContainer.h" +#include "TrigDecisionTool/Feature.h" +#include "TrigSteeringEvent/TrigOperationalInfo.h" +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" +#include "TrigSteeringEvent/TrigRoiDescriptor.h" +#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" + +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" + +#include "TrigConfL1Data/PrescaleSet.h" + +#include "TrigTauEmulation/Level1EmulationTool.h" +#include "TrigTauEmulation/HltEmulationTool.h" + +#include "xAODTau/TauJet.h" +#include "xAODTau/TauJetContainer.h" +#include "xAODTau/TauJetAuxContainer.h" +#include "xAODTau/TauDefs.h" + +#include "xAODTrigger/EmTauRoI.h" +#include "xAODTrigger/EmTauRoIContainer.h" + +#include "xAODTruth/TruthParticleContainer.h" +#include "xAODTruth/TruthParticle.h" +#include "xAODTruth/TruthVertex.h" +#include "xAODTruth/TruthVertexContainer.h" + +#include "xAODTracking/TrackParticle.h" +#include "xAODTracking/TrackParticleContainer.h" + +#include "xAODMissingET/MissingET.h" +#include "xAODMissingET/MissingETContainer.h" + +#include "xAODMuon/Muon.h" +#include "xAODMuon/MuonContainer.h" + +#include "xAODEgamma/Electron.h" +#include "xAODEgamma/ElectronContainer.h" + +#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" + +#include "VxVertex/VxContainer.h" + +#include "TROOT.h" +#include "TH1I.h" +#include "TH1F.h" +#include "TH2I.h" +#include "TH2F.h" +#include "TEfficiency.h" +#include "TProfile.h" + +#include <vector> +#include <iostream> +#include <fstream> +//#define _USE_MATH_DEFINES +#include <math.h> + + +#include "TrigHLTMonitoring/IHLTMonTool.h" + +#include "HLTTauMonTool.h" + + +using namespace std; +using namespace AnalysisUtils; + +const float PI=2.0*acos(0.); +const float TWOPI=2.0*PI; + +StatusCode HLTTauMonTool::fillTopoValidation(const std::string & trigItem_topo, const std::string & trigItem_support){ + +// if(!getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)) return StatusCode::SUCCESS; + + const xAOD::JetRoIContainer *l1jets = 0; + const xAOD::EmTauRoIContainer *l1taus = 0; + + if ( m_storeGate->retrieve( l1jets, "LVL1JetRoIs").isFailure() ){ + ATH_MSG_WARNING("Failed to retrieve LVL1JetRoIs container. Exiting."); + //return StatusCode::FAILURE; + } + if ( m_storeGate->retrieve( l1taus, "LVL1EmTauRoIs").isFailure() ){ + ATH_MSG_WARNING("Failed to retrieve LVL1EmTauRoIs container. Exiting."); + //return StatusCode::FAILURE; + } + + xAOD::JetRoIContainer::const_iterator itJetRoI; + xAOD::JetRoIContainer::const_iterator itJetRoI_e = l1jets->end(); + xAOD::EmTauRoIContainer::const_iterator itEMTau = l1taus->begin(); + xAOD::EmTauRoIContainer::const_iterator itEMTau_e = l1taus->end(); + + if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition) && !getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)){ + setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation"); + hist("hSupportMismatch")->Fill(trigItem_topo.c_str(),1.); + return StatusCode::SUCCESS; + } + if(!getTDT()->isPassed(trigItem_support,m_L1TriggerCondition)) return StatusCode::SUCCESS; + + setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+trigItem_topo); + Trig::FeatureContainer f = ( getTDT()->features(trigItem_support,m_L1TriggerCondition) ); + Trig::FeatureContainer::combination_const_iterator comb(f.getCombinations().begin()), combEnd(f.getCombinations().end()); + + float min_dR(100.); + // float min_dR_nojets(100.); + // float min_dR_jets(100.); + // float min_dR_Bothjets(100.); + // float min_dR_Mixjets(100.); + // float min_dR_notaus(100.); + // float min_dR_taus(100.); + float min_dR_Bothtaus(100.); + float min_dR_BothtausJet(100.); + float min_dR_BothtausJetN(100.); + // float min_dR_Mixtaus(100.); + // float min_dR_tauJets(100.); + // float min_dR_NotauJets(100.); + // float min_dR_tauNoJets(100.); + // float min_dR_NotauNoJets(100.); + bool disambiguation = false; + int MultiJets = 0; + int MultiTaus =0; + std::vector<float> tau_val_roi; + std::vector<float> pt_jet_roi; + std::vector<float> eta_roi; + std::vector<float> phi_roi; + + std::vector<bool> jet_roi; + + int index_tau12 = -100, index_tau20 = -100; + int indexJet_tau12= -100, indexJet_tau20 = -100; + + double roi_pt_max_jet = -1000.; + double roi_pt_max = -1000.; + for(;comb!=combEnd;++comb){ + const std::vector< Trig::Feature<TrigRoiDescriptor> > vec_roi = comb->get<TrigRoiDescriptor>("initialRoI",m_L1TriggerCondition); + std::vector< Trig::Feature<TrigRoiDescriptor> >::const_iterator roi = vec_roi.begin(), roi1 = vec_roi.begin(), roi_e = vec_roi.end(); + + for(roi = vec_roi.begin(); roi != roi_e; ++roi) if(roi->cptr()){ + jet_roi.push_back(false); + tau_val_roi.push_back(0.0); + phi_roi.push_back(roi->cptr()->phi()); + eta_roi.push_back(roi->cptr()->eta()); + pt_jet_roi.push_back(-1000.); + + roi_pt_max = -1000.; + roi_pt_max_jet = -1000.; + bool isJet = false; + for(itJetRoI = l1jets->begin(); itJetRoI!=itJetRoI_e; ++itJetRoI){ + double roi_pt = (*itJetRoI)->etLarge(); + if(roi->cptr()->roiWord()==(*itJetRoI)->roiWord() && roi_pt > 25000.) {isJet=true;jet_roi.back()=true; if (roi_pt>roi_pt_max_jet) roi_pt_max_jet=roi_pt;pt_jet_roi.back()=roi_pt_max_jet;} + } + if (isJet) MultiJets++; + bool isTau = false; + for(itEMTau = l1taus->begin(); itEMTau!=itEMTau_e; ++itEMTau){ + double roi_pt = (*itEMTau)->tauClus(); + float m_iso_offset = 2000.; + float m_iso_slope = 0.1; + float isolation_cut = m_iso_offset + m_iso_slope * roi_pt; + double roi_isol = (*itEMTau)->emIsol(); + if(roi->cptr()->roiWord()==(*itEMTau)->roiWord() && + roi_pt > 12000. && + roi_isol <= isolation_cut) { + isTau = true; + if (roi_pt>roi_pt_max) roi_pt_max=roi_pt; + tau_val_roi.back()=roi_pt_max; + } + } + if (isTau) MultiTaus++; + } + + } + + for (unsigned int i = 0; i < phi_roi.size(); ++i) { + for (unsigned int j = i + 1; j < phi_roi.size(); ++j) { + if ((tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) || + (tau_val_roi.at(i) > 20000.0 && tau_val_roi.at(j) > 12000.0)) { + float dR = deltaR(eta_roi.at(i),eta_roi.at(j),phi_roi.at(i),phi_roi.at(j)); + if (dR >= 0.3) { + if (dR < min_dR) min_dR = dR; + if (dR < min_dR_Bothtaus) { + min_dR_Bothtaus = dR; + if (tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) { + index_tau12 = i; + index_tau20 = j; + } else { + index_tau12 = j; + index_tau20 = i; + } + } + + bool triggerJet = false; + for (unsigned int k = 0; k < phi_roi.size(); ++k) { + if (jet_roi.at(k)) { + float dR1 = deltaR(eta_roi.at(i),eta_roi.at(k),phi_roi.at(i),phi_roi.at(k)); + float dR2 = deltaR(eta_roi.at(j),eta_roi.at(k),phi_roi.at(j),phi_roi.at(k)); + if (dR > 0.1 && dR1 > 0.1 && dR2 > 0.1 ) disambiguation = true; + triggerJet = true; + } + } + + if (triggerJet) { + if (dR < min_dR_BothtausJet) { + min_dR_BothtausJet = dR; + if (tau_val_roi.at(i) > 12000.0 && tau_val_roi.at(j) > 20000.0) { + indexJet_tau12 = i; + indexJet_tau20 = j; + } else { + indexJet_tau12 = j; + indexJet_tau20 = i; + } + } + } else { + if (dR < min_dR_BothtausJetN) { + min_dR_BothtausJetN = dR; + } + } + } + } + } + } + hist("hDisambiguation")->Fill(1.); + if(getTDT()->isPassed(trigItem_topo,m_L1TriggerCondition)){ + hist("hDRBothtaus")->Fill(min_dR_Bothtaus); + hist("hDRBothtausJet")->Fill(min_dR_BothtausJet); + hist("hDRBothtausJetN")->Fill(min_dR_BothtausJetN); + + if (phi_roi.size() >= 1 &&min_dR_Bothtaus>2.8 && min_dR_Bothtaus < 50.) { + if (index_tau20 > 0) hist("hPTLeading")->Fill(tau_val_roi.at(index_tau20)/1000.); + if (index_tau12 > 0) hist("hPTSubLeading")->Fill(tau_val_roi.at(index_tau12)/1000.); + if (index_tau20 > 0) hist("hEtaLeading")->Fill(eta_roi.at(index_tau20)); + if (index_tau12 > 0) hist("hEtaSubLeading")->Fill(eta_roi.at(index_tau12)); + if (index_tau20 > 0) hist("hPhiLeading")->Fill(phi_roi.at(index_tau20)); + if (index_tau12 > 0) hist("hPhiSubLeading")->Fill(phi_roi.at(index_tau12)); + hist("hMultiTaus")->Fill(MultiTaus); + hist("hMultiJets")->Fill(MultiJets); + } + if (phi_roi.size() >= 1 &&min_dR_BothtausJet>2.8 && min_dR_BothtausJet < 50.) { + if (indexJet_tau20 > 0) hist("hPTLeadingJet")->Fill(tau_val_roi.at(indexJet_tau20)/1000.); + if (indexJet_tau12 > 0) hist("hPTSubLeadingJet")->Fill(tau_val_roi.at(indexJet_tau12)/1000.); + if (indexJet_tau20 > 0) hist("hEtaLeadingJet")->Fill(eta_roi.at(indexJet_tau20)); + if (indexJet_tau12 > 0) hist("hEtaSubLeadingJet")->Fill(eta_roi.at(indexJet_tau12)); + if (indexJet_tau20 > 0) hist("hPhiLeadingJet")->Fill(phi_roi.at(indexJet_tau20)); + if (indexJet_tau12 > 0) hist("hPhiSubLeadingJet")->Fill(phi_roi.at(indexJet_tau12)); + hist("hMultiTausJet")->Fill(MultiTaus); + hist("hMultiJetsJet")->Fill(MultiJets); + } + + if (disambiguation) hist("hDisambiguation")->Fill(2.); + if (!disambiguation) hist("hDisambiguation")->Fill(3.); + } else { + hist("hDRBothtaus_noTopo")->Fill(min_dR_Bothtaus); + hist("hDRBothtausJet_noTopo")->Fill(min_dR_BothtausJet); + hist("hDRBothtausJetN_noTopo")->Fill(min_dR_BothtausJetN); + if (disambiguation) hist("hDisambiguation")->Fill(4.); + if (!disambiguation) hist("hDisambiguation")->Fill(5.); + } + return StatusCode::SUCCESS; + +} + diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx index 46bb866f8db591937d608b5a844035f178c8baef..79af4821d13ddeefbd703b38701c1b122a63b84b 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_Ztautau.cxx @@ -2,7 +2,7 @@ Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration */ -/* @file HLTTauMonTool_Ztautauemulation.cxx +/* @file HLTTauMonTool_Ztautau.cxx * * Real Ztauau L1 & HLT trigger efficiency * created by Babar Ali (babar.ali@cern.ch) @@ -69,6 +69,7 @@ #include "TH2I.h" #include "TH2F.h" #include "TEfficiency.h" +#include "TProfile.h" #include <vector> #include <iostream> @@ -87,13 +88,11 @@ using namespace std; StatusCode HLTTauMonTool::RealZTauTauEfficiency() { ATH_MSG_DEBUG("Real ZTauTau Efficiency"); - setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff"); - - const xAOD::TauJetContainer * reco_cont = 0; - const xAOD::MuonContainer * muon_cont = 0; - const xAOD::MissingETContainer *m_off_met_cont = 0; - const xAOD::TruthParticleContainer* truth_cont = 0; - + + const xAOD::TauJetContainer * reco_cont = 0; + const xAOD::MuonContainer * muon_cont = 0; + const xAOD::MissingETContainer * m_off_met_cont = 0; + if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() ) { ATH_MSG_WARNING("Failed to retrieve TauJets container. Exiting."); @@ -110,224 +109,171 @@ StatusCode HLTTauMonTool::RealZTauTauEfficiency() ATH_MSG_WARNING("Could not retrieve Reconstructed MET term with Key MET_Reference_AntiKt4LCTopo : m_off_met_cont = 0"); } - if(evtStore()->retrieve(truth_cont, "TruthParticles" ).isFailure()) - { - ATH_MSG_WARNING("Failed to retrieve TruthParticle container. Exiting."); - return StatusCode::FAILURE; - } - - hist("hCutFlow")->Fill(CutItems.at(0).c_str(),1.); - hist("hTauCutFlow")->Fill(TauCutFlow.at(0).c_str(),1.); - hist("hMuCutFlow")->Fill(MuCutFlow.at(0).c_str(),1.); - - TLorentzVector Tau_TLV(0.,0.,0.,0.); + TLorentzVector Tau_TLV (0.,0.,0.,0.); TLorentzVector Muon_TLV(0.,0.,0.,0.); - TLorentzVector MET_TLV(0.,0.,0.,0.); - - double tauPt_dum = -1., muPt_dum = -1.; - float Tau_charge = -99.0, Muon_charge = -99.0; - bool selected_tau = false, selected_mu = false; - int Tau_ntrack = -1, count_selected_tau = 0, count_selected_mu = 0, count_cand_tau = 0, count_cand_mu = 0; - - xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end(); - for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr) - { - TLorentzVector TauTLV = (*recoItr)->p4(); - double pt_Tau = TauTLV.Pt(); - double eta_Tau = TauTLV.Eta(); - double phi_Tau = TauTLV.Phi(); - int ntrack_Tau = (*recoItr)->nTracks(); - bool good_Tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium); - float charge_Tau = (*recoItr)->charge(); + TLorentzVector MET_TLV (0.,0.,0.,0.); - hist("hRealBSTauPt")->Fill(pt_Tau/1000.); - hist("hRealBSTauEta")->Fill(eta_Tau); - hist("hRealBSTauPhi")->Fill(phi_Tau); - hist("hRealBSTauNTrack")->Fill(ntrack_Tau); + double tauPt_dum = -1. , muPt_dum = -1.; + float Tau_charge = -99.0, Muon_charge = -99.0; + bool lead_tau = false, single_mu = false; - count_cand_tau++; - if(pt_Tau<20000.) continue; - hist("hTauCutFlow")->Fill(TauCutFlow.at(1).c_str(),1.); - if(fabs(eta_Tau) > 2.47) continue; - hist("hTauCutFlow")->Fill(TauCutFlow.at(2).c_str(),1.); - if(fabs(charge_Tau) != 1.0) continue; - hist("hTauCutFlow")->Fill(TauCutFlow.at(3).c_str(),1.); - if(ntrack_Tau!=1 && ntrack_Tau!=3) continue; - hist("hTauCutFlow")->Fill(TauCutFlow.at(4).c_str(),1.); - if(!good_Tau) continue; - hist("hTauCutFlow")->Fill(TauCutFlow.at(5).c_str(),1.); - count_selected_tau++; - if(tauPt_dum < pt_Tau) - { - tauPt_dum = pt_Tau; - Tau_TLV.SetPtEtaPhiM(pt_Tau,eta_Tau,TauTLV.Phi(),TauTLV.M()); - Tau_charge = charge_Tau; - Tau_ntrack = ntrack_Tau; - selected_tau = true; - } - } - - hist("hRealSelectedTau")->Fill(count_selected_tau); - hist("hRealCandTau")->Fill(count_cand_tau); - hist("hRealASTauPt")->Fill(Tau_TLV.Pt()/1000.); - hist("hRealASTauEta")->Fill(Tau_TLV.Eta()); - hist("hRealASTauPhi")->Fill(Tau_TLV.Phi()); - hist("hRealASTauNTrack")->Fill(Tau_ntrack); - + //Muon Selection xAOD::MuonContainer::const_iterator muonItr, muon_cont_end = muon_cont->end(); for(muonItr=muon_cont->begin(); muonItr!=muon_cont_end; ++muonItr) { const xAOD::Muon& muon = **muonItr; TLorentzVector MuonTLV = (*muonItr)->p4(); - double pt_mu = MuonTLV.Pt(); - double eta_mu = MuonTLV.Eta(); - double phi_mu = MuonTLV.Phi(); - - ATH_MSG_DEBUG("Muon Type " << (*muonItr)->muonType()); - ATH_MSG_DEBUG("Muon quality " << (*muonItr)->quality()); - ATH_MSG_DEBUG("MuonAuthor " << (*muonItr)->author()); - hist("hRealBSMuPt")->Fill(pt_mu/1000.); - hist("hRealBSMuEta")->Fill(eta_mu); - hist("hRealBSMuPhi")->Fill(phi_mu); + double pt_mu = MuonTLV.Pt(); + double eta_mu = MuonTLV.Eta(); + float etcone = 0.0, ptcone = 0.0, etcone40Rel = 0.0, ptcone40Rel = 0.0; - float etcone = 0.0, ptcone = 0.0, etcone20Rel = 0.0, ptcone20Rel = 0.0; - if (!muon.isolation(etcone,xAOD::Iso::etcone20)) + if (!muon.isolation(etcone,xAOD::Iso::etcone40)) { ATH_MSG_WARNING("No EtCone defined for muon."); } else { - etcone20Rel = etcone/pt_mu; + etcone40Rel = etcone/pt_mu; } - if (!muon.isolation(ptcone,xAOD::Iso::ptcone20)) + if (!muon.isolation(ptcone,xAOD::Iso::ptcone40)) { ATH_MSG_WARNING("No ptCone defined for muon."); } else { - ptcone20Rel = ptcone/pt_mu; + ptcone40Rel = ptcone/pt_mu; } - count_cand_mu++; - if(pt_mu<22000.) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(1).c_str(),1.); - if(fabs(eta_mu)>2.4) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(2).c_str(),1.); + if(pt_mu<27000. || pt_mu>1450000.) continue; + if(fabs(eta_mu)>2.5) continue; if((*muonItr)->author() != xAOD::Muon::MuidCo) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(3).c_str(),1.); - if(! muon.passesIDCuts() ) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(4).c_str(),1.); - if(etcone20Rel > 0.2) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(5).c_str(),1.); - if(ptcone20Rel > 0.06) continue; - hist("hMuCutFlow")->Fill(MuCutFlow.at(6).c_str(),1.); - count_selected_mu++; - if(selected_mu) + if(! muon.passesIDCuts() ) continue; + if(etcone40Rel > 0.1) continue; + if(ptcone40Rel > 0.2) continue; + + if(single_mu) { - selected_mu = false; - count_selected_mu = 0; + single_mu = false; Muon_TLV.Clear(); Muon_charge = -99; break; - cout << " Found 2nd MUON : " << endl; } if(muPt_dum < pt_mu) { muPt_dum = pt_mu; Muon_TLV.SetPtEtaPhiM(pt_mu, eta_mu, MuonTLV.Phi(), MuonTLV.M()); Muon_charge = (*muonItr)->charge(); - selected_mu = true; + single_mu = true; } } - hist("hRealSelectedMu")->Fill(count_selected_mu); - hist("hRealCandMu")->Fill(count_cand_mu); - hist("hRealASMuPt")->Fill(Muon_TLV.Pt()/1000.); - hist("hRealASMuEta")->Fill(Muon_TLV.Eta()); - hist("hRealASMuPhi")->Fill(Muon_TLV.Phi()); + //Tau Selection + xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end(); + for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr) + { + TLorentzVector TauTLV = (*recoItr)->p4(); + double pt_Tau = TauTLV.Pt(); + double eta_Tau = TauTLV.Eta(); + int ntrack_Tau = (*recoItr)->nTracks(); + bool good_Tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium); + float charge_Tau = (*recoItr)->charge(); + + if(pt_Tau<20000.) continue; + if(fabs(eta_Tau) > 2.47) continue; + if(fabs(charge_Tau) != 1.0) continue; + if(ntrack_Tau!=1 && ntrack_Tau!=3) continue; + if(!good_Tau) continue; + + //Over lap removal between Muon and Tau. Keep Muon remove Tau!! + if(single_mu) + { + if(Muon_TLV.DeltaR(TauTLV) < 0.3) continue; + } + else + { + break; + } + + if(tauPt_dum < pt_Tau) //Check for lead Tau after OLR + { + tauPt_dum = pt_Tau; + Tau_TLV.SetPtEtaPhiM(pt_Tau,eta_Tau,TauTLV.Phi(),TauTLV.M()); + Tau_charge = charge_Tau; + lead_tau = true; + } + } + + //Offline MET const xAOD::MissingET *m_off_met = 0; - float off_met = -9e9; - //float off_met_phi = -9e9; + float off_ex = -9e9; + float off_ey = -9e9; + float off_met = -9e9; + //float off_sumet = -9e9; + //float off_phi = -9e9; if (m_off_met_cont && m_off_met_cont->size()) { - m_off_met = m_off_met_cont->at(0); - float off_ex = (m_off_met_cont->at(0)->mpx()); - float off_ey = (m_off_met_cont->at(0)->mpy()); - //off_met_phi = (m_off_met_cont->at(0)->phi()); + m_off_met = (*m_off_met_cont)["FinalClus"]; + + off_ex = ((*m_off_met_cont)["FinalClus"]->mpx()); + off_ey = ((*m_off_met_cont)["FinalClus"]->mpy()); off_met = sqrt(off_ex*off_ex+off_ey+off_ey); - ATH_MSG_DEBUG("m_off_met:" << m_off_met ); MET_TLV.SetPxPyPzE(off_ex,off_ey,0,off_met); + //off_sumet = ((*m_off_met_cont)["FinalClus"]->sumet()); + //off_phi = atan2(off_ey, off_ex); + ATH_MSG_DEBUG("m_off_met:" << m_off_met ); } - //MET - hist("hRealMET")->Fill(off_met/1000.); + + float ltau_charge = -99.0; + double ltau_vismass = -99.0; + double cos_dphi = -99.0; + double mt = -99.0; + double ltau_deta = 99.0; + double ltau_dR = 99.0; - float ltau_charge = -99.0; - double mltau_vis = -99.0; - double cos_dphi = -99.0; - double mt = -99.0; - double ltau_dphi = -99.0; - - if(selected_tau) - { - hist("hRealMuTau")->Fill(count_selected_mu); - hist("hCutFlow")->Fill(CutItems.at(1).c_str(),1.); - } - if(selected_mu) - { - hist("hRealTauMu")->Fill(count_selected_tau); - hist("hCutFlow")->Fill(CutItems.at(2).c_str(),1.); - } - if(selected_tau && selected_mu) + //Events variables with Lead Tau and Single Muon + if(lead_tau && single_mu) { - hist("hCutFlow")->Fill(CutItems.at(3).c_str(),1.); - - ltau_charge = Tau_charge + Muon_charge; - mltau_vis = (Tau_TLV + Muon_TLV).M(); - cos_dphi = cos(Muon_TLV.DeltaPhi(MET_TLV)) + cos(Tau_TLV.DeltaPhi(MET_TLV)) ; - mt = sqrt(2 * Muon_TLV.Pt() * off_met * (1 - cos(Muon_TLV.DeltaPhi(MET_TLV)) ) ); - ltau_dphi = Tau_TLV.DeltaPhi(Muon_TLV); - - //Tau vars - hist("hRealTauPt")->Fill(Tau_TLV.Pt()/1000.); - hist("hRealTauEta")->Fill(Tau_TLV.Eta()); - hist("hRealTauPhi")->Fill(Tau_TLV.Phi()); - hist("hRealTauNTrack")->Fill(Tau_ntrack); - hist("hRealTauCharge")->Fill(Tau_charge); - //Muon vars - hist("hRealMuPt")->Fill(Muon_TLV.Pt()/1000.); - hist("hRealMuEta")->Fill(Muon_TLV.Eta()); - hist("hRealMuPhi")->Fill(Muon_TLV.Phi()); - hist("hRealMuCharge")->Fill(Muon_charge); - //Cut vars - hist("hRealTauMuCosdPhi")->Fill(cos_dphi); - hist("hRealMETMuTransMass")->Fill(mt/1000.); - hist("hRealTauMuVisMass")->Fill(mltau_vis/1000.); - hist("hRealTauMuDPhi")->Fill(ltau_dphi); - hist("hRealTauMuCharge")->Fill(ltau_charge); + ltau_charge = Tau_charge + Muon_charge; + ltau_vismass = (Tau_TLV + Muon_TLV).M(); + cos_dphi = cos(Muon_TLV.DeltaPhi(MET_TLV)) + cos(Tau_TLV.DeltaPhi(MET_TLV)) ; + mt = sqrt(2 * Muon_TLV.Pt() * off_met * (1 - cos(Muon_TLV.DeltaPhi(MET_TLV)) ) ); + ltau_deta = deltaEta(Tau_TLV.Eta(), Muon_TLV.Eta()); + ltau_dR = Tau_TLV.DeltaR(Muon_TLV); } - - if(ltau_charge == 0) hist("hCutFlow")->Fill(CutItems.at(4).c_str(),1.); - if(mltau_vis > 42000 && mltau_vis < 82000) hist("hCutFlow")->Fill(CutItems.at(5).c_str(),1.); - if(ltau_dphi > 2.4) hist("hCutFlow")->Fill(CutItems.at(6).c_str(),1.); - - //selection - if(ltau_charge == 0. && - mltau_vis > 42000. && mltau_vis < 82000. && - cos_dphi > -0.15 && - mt < 50000. && - ltau_dphi > 2.4) + + //Event Selection + if(ltau_charge == 0. && + mt < 50000. && + cos_dphi > -0.5 && + fabs(ltau_deta) < 1.5 && + ltau_dR > 2.9 && + ltau_vismass > 45000. && ltau_vismass < 85000.) { for(unsigned int i=0;i<m_trigItems.size();++i) { std::string l1_chain(LowerChain("HLT_"+m_trigItems[i])); std::string hlt_chain = "HLT_"+m_trigItems[i]; + setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]); hist("hRealZttPtDenom")->Fill(Tau_TLV.Pt()/1000.); - if(getTDT()->isPassed(l1_chain)) hist("hRealZttL1PtNum")->Fill(Tau_TLV.Pt()/1000.); - if(getTDT()->isPassed(hlt_chain)) hist("hRealZttHLTPtNum")->Fill(Tau_TLV.Pt()/1000.); + + //L1 + if(getTDT()->isPassed(l1_chain , TrigDefs::Physics | TrigDefs::allowResurrectedDecision)) + { + hist("hRealZttL1PtNum")->Fill(Tau_TLV.Pt()/1000.); + profile("TProfRealZttL1PtEfficiency")->Fill(Tau_TLV.Pt()/1000.,1); + } + else profile("TProfRealZttL1PtEfficiency")->Fill(Tau_TLV.Pt()/1000.,0); + + //HLT + if(getTDT()->isPassed(hlt_chain, TrigDefs::Physics | TrigDefs::allowResurrectedDecision)) + { + hist("hRealZttHLTPtNum")->Fill(Tau_TLV.Pt()/1000.); + profile("TProfRealZttHLTPtEfficiency")->Fill(Tau_TLV.Pt()/1000.,1); + } + else profile("TProfRealZttHLTPtEfficiency")->Fill(Tau_TLV.Pt()/1000.,0); } } - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx index eb47fe6636f781aabef870b43d549263d090cfe0..cc7796727da39f830da03fdb573d35f8e3dc8758 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_bookHistograms.cxx @@ -92,14 +92,18 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ const int nbin_pt = 13; double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.}; + + // const int nbin_leppt = 32; // double bins_leppt[nbin_leppt] = {10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24.,25.,26.,27.,28.,29.,30.,32.,34.,36.,38.,40.,45.,50.,60.,70.,80.,100.}; const int nbin_eta = 9; double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47}; const int nbin_nvtx = 6; double bins_nvtx[nbin_nvtx] = {0.,5.,10.,15.,20.,25.}; - const int nbin_mu = 21; - float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.}; + const int nbin_mu = 33; + float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40., 42., 44., 44., 46., 48., 50., 52., 54., 56., 58., 60., 62}; + + // const int nbin_met = 14; // double bins_met[nbin_met] = {0.,5.,10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.}; // const int nbin_dr = 18; @@ -127,12 +131,12 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH2F("hL1EtVsPhi","L1 RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,100,-3.2,3.2)); addHistogram(new TH2F("hL1EtVsEta","L1 RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,100,-2.6,2.6)); - addHistogram(new TH1F("hL1JetRoIEta","L1 Jet RoI Eta ; #eta; N RoI",100,-3.2,3.2)); - addHistogram(new TH1F("hL1JetRoIPhi","L1 Jet RoI Phi ; #phi; N RoI",100,-3.2,3.2)); - addHistogram(new TH2F("hL1JetEtaVsPhi","L1 Jet RoI Eta vs Phi; #eta; #phi",100,-3.2,3.2,100,-3.2,3.2)); + addHistogram(new TH1F("hL1JetRoIEta","L1 Jet RoI Eta ; #eta; N RoI",32,-3.2,3.2)); + addHistogram(new TH1F("hL1JetRoIPhi","L1 Jet RoI Phi ; #phi; N RoI",32,-3.2,3.2)); + addHistogram(new TH2F("hL1JetEtaVsPhi","L1 Jet RoI Eta vs Phi; #eta; #phi",32,-3.2,3.2,32,-3.2,3.2)); addHistogram(new TH1F("hL1JetRoIeT","L1 Jet RoI Energy; E_{T}[GeV]; N RoI",200,0.,100.)); - addHistogram(new TH2F("hL1JetEtVsPhi","L1 Jet RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,100,-3.2,3.2)); - addHistogram(new TH2F("hL1JetEtVsEta","L1 Jet RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,100,-3.2,3.2)); + addHistogram(new TH2F("hL1JetEtVsPhi","L1 Jet RoI Et vs Phi; E_{T}[GeV]; #phi",100,0.,100.,32,-3.2,3.2)); + addHistogram(new TH2F("hL1JetEtVsEta","L1 Jet RoI Et vs Eta; E_{T}[GeV]; #eta",100,0.,100.,32,-3.2,3.2)); //-------------------- //Pre-selection Tau @@ -145,7 +149,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hFTFnTrack","EF number of tracks;number of tracks;Nevents",10,0,10)); addHistogram(new TH1F("hEta","EF TrigCaloCluster Eta; #eta ; Nevents",26,-2.6,2.6)); addHistogram(new TH1F("hPhi","EF TrigCaloCluster Phi; #phi ; Nevents",32,-3.2,3.2)); - addHistogram(new TH1F("hdRmax","EF deltaR max; dRmax ; Nevents",52,-0.02,0.5)); + //addHistogram(new TH1F("hdRmax","EF deltaR max; dRmax ; Nevents",52,-0.02,0.5)); addHistogram(new TH2F("hEFEtaVsPhi","EF TrigCaloCluster Eta vs Phi; #eta ; #phi ; Nevents", 26,-2.6,2.6,32,-3.2,3.2)); addHistogram(new TH2F("hEtVsEta","Et from tau Jet vs #eta; #eta^{EF}; Raw E_{T}[GeV]", @@ -162,6 +166,8 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ //Basic kinematic variables addHistogram(new TH1F("hEFEt","EF Et;E_{T}[GeV];Nevents",50,0.0,100.0)); addHistogram(new TH1F("hEFEta","EF TrigCaloCluster Eta; #eta ; Nevents",26,-2.6,2.6)); + addHistogram(new TH1F("hEFNUM","EF Number of vertex; N_(vertex) ; Nevents",50,15,65)); + addHistogram(new TH2F("hEFNUMvsmu","Number of vertex vs offline mu; N_(vertex) ; #mu", 50,15,65,50,15,65)); addHistogram(new TH1F("hEFPhi","EF TrigCaloCluster Phi; #phi ; Nevents",16,-3.2,3.2)); addHistogram(new TH1F("hEFnTrack","EF number of tracks;number of tracks;Nevents",10,0,10)); addHistogram(new TH2F("hEFEtaVsPhi","EF TrigCaloCluster Eta vs Phi; #eta ; #phi ; Nevents",26,-2.6,2.6,16,-3.2,3.2)); @@ -294,7 +300,8 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addProfile(new TProfile("hEtRatiovsmu","Relative difference in Et (EF-Truth)/Truth vs mu;Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); } //------------------- - //EF vs Offline + +//EF vs Offline //------------------- addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/"+trigItem+"/EFVsOffline",run)); setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/EFVsOffline"); @@ -326,7 +333,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ //addProfile(new TProfile("hEMRadiusRatiovspt","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau pT;Offline Tau pT;",nbin_pt-1,bins_pt)); //addProfile(new TProfile("hEMRadiusRatiovseta","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau eta;Offline Tau #eta;",nbin_eta-1,bins_eta)); - //addProfile(new TProfile("hEMRadiusRatiovsphi","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau phi;Offline Tau #phi;",40,-3.2,3.2)); +//addProfile(new TProfile("hEMRadiusRatiovsphi","Relative difference in EMRadius (EF-Offline)/Offline vs Offline Tau phi;Offline Tau #phi;",40,-3.2,3.2)); //addProfile(new TProfile("hEMRadiusRatiovsmu","Relative difference in EMRadius (EF-Offline)/Offline vs mu;Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); //addProfile(new TProfile("hHADRadiusRatiovspt","Relative difference in HADRadius (EF-Offline)/Offline vs Offline Tau pT;Offline Tau pT;",nbin_pt-1,bins_pt)); @@ -432,16 +439,17 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ //Truth addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency",run) ); setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/TruthEfficiency"); - addHistogram(new TH1F("hTrueTauPtDenom",";Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); + /* addHistogram(new TH1F("hTrueTauPtDenom",";Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueTauPt1PDenom",";Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueTauPt3PDenom",";Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueTauEtaDenom",";#eta;",nbin_eta-1,bins_eta)); addHistogram(new TH1F("hTrueTauPhiDenom",";#phi;",16,-3.2,3.2)); addHistogram(new TH1F("hTrueTauNTrackDenom",";Number of tracks;",10,0,10)); addHistogram(new TH1F("hTrueTauNVtxDenom",";Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); - addHistogram(new TH1F("hTrueTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + addHistogram(new TH1F("hTrueTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu));*/ addHistogram(new TH2F("hTrueTauEtaVsPhiDenom",";#eta; #phi;",nbin_eta-1,bins_eta,16,-3.2,3.2)); + /* addHistogram(new TH1F("hTrueL1PtNum","L1 vs Truth;Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueL1Pt1PNum","L1 vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueL1Pt3PNum","L1 vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); @@ -450,8 +458,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTrueL1NTrackNum","L1 vs Truth;Number of tracks;",10,0,10)); addHistogram(new TH1F("hTrueL1NVtxNum","L1 vs Truth;Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTrueL1MuNum","L1 vs Truth;Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTrueL1EtaVsPhiNum","L1 vs Truth;#eta;#phi;",nbin_eta-1,bins_eta,16,-3.2,3.2)); + /* addHistogram(new TH1F("hTrueHLTPtNum","HLT vs Truth;Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueHLTPt1PNum","HLT vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueHLTPt3PNum","HLT vs Truth;Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); @@ -460,9 +470,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTrueHLTNTrackNum","HLT vs Truth;Number of tracks;",10,0,10)); addHistogram(new TH1F("hTrueHLTNVtxNum","HLT vs Truth;Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTrueHLTMuNum","HLT vs Truth;Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTrueHLTEtaVsPhiNum","HLT vs Truth;#eta;#phi;",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + /* addHistogram(new TH1F("hTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueL1Pt1PEfficiency","L1 vs Truth Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueL1Pt3PEfficiency","L1 vs Truth Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueL1EtaEfficiency","L1 vs Truth Efficiency; Truth #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -470,8 +481,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTrueL1NTrackEfficiency","L1 vs Truth Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hTrueL1NVtxEfficiency","L1 vs Truth Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTrueL1MuEfficiency","L1 vs Truth Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTrueL1EtaVsPhiEfficiency","L1 vs Truth in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - + /* addHistogram(new TH1F("hTrueHLTPtEfficiency","HLT vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueHLTPt1PEfficiency","HLT vs Truth Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTrueHLTPt3PEfficiency","HLT vs Truth Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -480,6 +492,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTrueHLTNTrackEfficiency","HLT vs Truth Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hTrueHLTNVtxEfficiency","HLT vs Truth Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTrueHLTMuEfficiency","HLT vs Truth Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTrueHLTEtaVsPhiEfficiency","HLT vs truth in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); addProfile(new TProfile("TProfTrueL1PtEfficiency","L1 vs Truth Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -504,7 +517,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ //Truth+Reco addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/Truth+RecoEfficiency",run) ); setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/Truth+RecoEfficiency"); - addHistogram(new TH1F("hTruthRecoTauPtDenom","Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); + /* addHistogram(new TH1F("hTruthRecoTauPtDenom","Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoTauPt1PDenom",";Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoTauPt3PDenom",";Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoTauEtaDenom",";#eta;",nbin_eta-1,bins_eta)); @@ -512,8 +525,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTruthRecoTauNTrackDenom",";Number of tracks;",10,0,10)); addHistogram(new TH1F("hTruthRecoTauNVtxDenom",";Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTruthRecoTauMuDenom",";Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTruthRecoTauEtaVsPhiDenom",";#eta;#phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - + /* addHistogram(new TH1F("hTruthRecoL1PtNum","L1 vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoL1Pt1PNum","L1 vs Truth+Reco; Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoL1Pt3PNum","L1 vs Truth+Reco; Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); @@ -522,9 +536,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTruthRecoL1NTrackNum","L1 vs Truth+Reco; Number of tracks;",10,0,10)); addHistogram(new TH1F("hTruthRecoL1NVtxNum","L1 vs Truth+Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTruthRecoL1MuNum","L1 vs Truth+Reco;Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTruthRecoL1EtaVsPhiNum","L1 vs Truth+Reco;#eta;#phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hTruthRecoHLTPtNum","HLT vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); + /* addHistogram(new TH1F("hTruthRecoHLTPtNum","HLT vs Truth+Reco; Truth p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTPt1PNum","HLT vs Truth+Reco; Truth 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTPt3PNum","HLT vs Truth+Reco; Truth 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTEtaNum","HLT vs Truth+Reco; #eta;",nbin_eta-1,bins_eta)); @@ -532,8 +547,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTruthRecoHLTNTrackNum","HLT vs Truth+Reco; Number of tracks;",10,0,10)); addHistogram(new TH1F("hTruthRecoHLTNVtxNum","HLT vs Truth+Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTruthRecoHLTMuNum","HLT vs Truth+Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTruthRecoHLTEtaVsPhiNum","HLT vs Truth+Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); + /* addHistogram(new TH1F("hTruthRecoL1PtEfficiency","L1 vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoL1Pt1PEfficiency","L1 vs Truth+Reco Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoL1Pt3PEfficiency","L1 vs Truth+Reco Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -542,9 +559,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTruthRecoL1NTrackEfficiency","L1 vs Truth+Reco Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hTruthRecoL1NVtxEfficiency","L1 vs Truth+Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTruthRecoL1MuEfficiency","L1 vs Truth+Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTruthRecoL1EtaVsPhiEfficiency","L1 vs Truth+Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hTruthRecoHLTPtEfficiency","HLT vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + /*addHistogram(new TH1F("hTruthRecoHLTPtEfficiency","HLT vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTPt1PEfficiency","HLT vs Truth+Reco Efficiency; Truth 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTPt3PEfficiency","HLT vs Truth+Reco Efficiency; Truth 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hTruthRecoHLTEtaEfficiency","HLT vs Truth+Reco Efficiency; Truth #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -552,6 +570,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hTruthRecoHLTNTrackEfficiency","HLT vs Truth+Reco Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hTruthRecoHLTNVtxEfficiency","HLT vs Truth+Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hTruthRecoHLTMuEfficiency","HLT vs Truth+Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hTruthRecoHLTEtaVsPhiEfficiency","HLT vs Truth+Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); addProfile(new TProfile("TProfTruthRecoL1PtEfficiency","L1 vs Truth+Reco Efficiency; Truth p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -648,7 +667,7 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ //Reco addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/RecoEfficiency",run) ); setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/TurnOnCurves/RecoEfficiency"); - addHistogram(new TH1F("hRecoTauPtDenom",";Reco p_{T} [GeV];",nbin_pt-1,bins_pt)); + /* addHistogram(new TH1F("hRecoTauPtDenom",";Reco p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTauPt1PDenom",";Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTauPt3PDenom",";Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTauEtaDenom","; #eta;",nbin_eta-1,bins_eta)); @@ -656,9 +675,11 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hRecoTauNTrackDenom","; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoTauNVtxDenom","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoTauMuDenom","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hRecoTauEtaVsPhiDenom","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hRecoL1PtNum","L1 vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt)); + /* + addHistogram(new TH1F("hRecoL1PtNum","L1 vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoL1Pt1PNum","L1 vs Reco; Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoL1Pt3PNum","L1 vs Reco; Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoL1EtaNum","L1 vs Reco; #eta;",nbin_eta-1,bins_eta)); @@ -666,8 +687,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hRecoL1NTrackNum","L1 vs Reco Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoL1NVtxNum","L1 vs Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoL1MuNum","L1 vs Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hRecoL1EtaVsPhiNum","L1 vs Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - + /* addHistogram(new TH1F("hRecoHLTPtNum","HLT vs Reco; Reco p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLTPt1PNum","HLT vs Reco; Reco 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLTPt3PNum","HLT vs Reco; Reco 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); @@ -676,8 +698,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hRecoHLTNTrackNum","HLT vs Reco; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoHLTNVtxNum","HLT vs Reco; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLTMuNum","HLT vs Reco; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hRecoHLTEtaVsPhiNum","HLT vs Reco; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); + /* addHistogram(new TH1F("hRecoL1PtEfficiency","L1 vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoL1Pt1PEfficiency","L1 vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoL1Pt3PEfficiency","L1 vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -686,8 +710,9 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hRecoL1NTrackEfficiency","L1 vs Reco Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hRecoL1NVtxEfficiency","L1 vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoL1MuEfficiency","L1 vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hRecoL1EtaVsPhiEfficiency","L1 vs Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - + /* addHistogram(new TH1F("hRecoHLTPtEfficiency","HLT vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLTPt1PEfficiency","HLT vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLTPt3PEfficiency","HLT vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); @@ -696,9 +721,10 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addHistogram(new TH1F("hRecoHLTNTrackEfficiency","HLT vs Reco Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hRecoHLTNVtxEfficiency","HLT vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLTMuEfficiency","HLT vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + */ addHistogram(new TH2F("hRecoHLTEtaVsPhiEfficiency","HLT vs Reco in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - - addProfile(new TProfile("TProfRecoL1PtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + + addProfile(new TProfile("TProfRecoL1PtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoL1Pt1PEfficiency", "L1 Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoL1Pt3PEfficiency", "L1 Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoL1EtaEfficiency", "L1 Vs Reco Efficiency; Reco #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -707,7 +733,17 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addProfile(new TProfile("TProfRecoL1NVtxEfficiency", "L1 Vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addProfile(new TProfile("TProfRecoL1MuEfficiency", "L1 Vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); + + + double hbins_pt[nbin_pt] = {10.,25.,35.,65.,70.,100.,200., 250., 300., 350., 400., 500., 600.}; + addProfile(new TProfile("TProfRecoL1HighPtEfficiency", "L1 Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); + addProfile(new TProfile("TProfRecoL1HighPt1PEfficiency", "L1 Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); + addProfile(new TProfile("TProfRecoL1HighPt3PEfficiency", "L1 Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); + addProfile(new TProfile("TProfRecoHLTPtEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + addProfile(new TProfile("TProfRecoHLTHighPtEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); + addProfile(new TProfile("TProfRecoHLTHighPt1pEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); + addProfile(new TProfile("TProfRecoHLTHighPt3pEfficiency", "HLT Vs Reco Efficiency; Reco p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); addProfile(new TProfile("TProfRecoHLTPt1PEfficiency", "HLT Vs Reco Efficiency; Reco 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLTPt3PEfficiency", "HLT Vs Reco Efficiency; Reco 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLTEtaEfficiency", "HLT Vs Reco Efficiency; Reco #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -716,9 +752,62 @@ void HLTTauMonTool::bookHistogramsForItem(const std::string & trigItem){ addProfile(new TProfile("TProfRecoHLTNVtxEfficiency", "HLT Vs Reco Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addProfile(new TProfile("TProfRecoHLTMuEfficiency", "HLT Vs Reco Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); - //Reco } + + if(m_doTrackCurves) + { + addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/"+trigItem+"/trackCurves", run)); + setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/trackCurves"); + addHistogram(new TH2I("hreco_vs_pres_coreTracks","Reco vs preselection tau multiplicity;Number of core tracks of reco tau; Number of core tracks of preselection tau",10,0,10,10,0,10)); + addHistogram(new TH2I("hreco_vs_pres_isoTracks","Reco vs preselection tau multiplicity;Number of isolation tracks of reco tau; Number of isolation tracks of preselection tau",10,0,10,10,0,10)); + addHistogram(new TH1F("hpstau_trk_pt","Preselection tau matched to reco+truth; track p_{T} [GeV]; Nevents",20,0.,100.)); + addHistogram(new TH1F("hpstau_trk_eta","Preselection tau matched to reco+truth; track #eta; Nevents",26,-2.6,2.6)); + addHistogram(new TH1F("hpstau_trk_phi","Preselection tau matched to reco+truth; track #phi; Nevents",32,-3.2,3.2)); + addHistogram(new TH1F("hpstau_trk_d0","Preselection tau matched to reco+truth; track d0[mm]",20,-5.,5.)); + addHistogram(new TH1F("hpstau_trk_z0","Preselection tau matched to reco+truth; track z0[mm]",15,-200.,200.)); + addHistogram(new TH2F("hpstau_trk_etaphi","Preselection tau matched to reco+truth; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2)); + + addHistogram(new TH1F("hrecotau_trk_pt","Reco tau matched to truth; reco track p_{T} [GeV]; Nevents",20,0.,100.)); + addHistogram(new TH1F("hrecotau_trk_eta","Reco tau matched to truth; reco track #eta; Nevents",26,-2.6,2.6)); + addHistogram(new TH1F("hrecotau_trk_phi","Reco tau matched to truth; reco track #phi; Nevents",32,-3.2,3.2)); + addHistogram(new TH1F("hrecotau_trk_d0","Reco tau matched to truth; reco track d0[mm]",20,-5.,5.)); + addHistogram(new TH1F("hrecotau_trk_z0","Reco tau matched to truth; reco track z0[mm]",15,-200.,200.)); + addHistogram(new TH2F("hrecotau_trk_etaphi","Reco tau matched to truth; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2)); + + addHistogram(new TH1F("hrecotauNum_trk_pt","Reco+Truth tau matched to preselection; p_{T} [GeV]; Nevents",20,0.,100.)); + addHistogram(new TH1F("hrecotauNum_trk_eta","Reco+Truth tau matched to preselection; #eta; Nevents",26,-2.6,2.6)); + addHistogram(new TH1F("hrecotauNum_trk_phi","Reco+Truth tau matched to preselection; #phi; Nevents",32,-3.2,3.2)); + addHistogram(new TH1F("hrecotauNum_trk_d0","Reco+Truth tau matched to preselection; d0[mm]",20,-5.,5.)); + addHistogram(new TH1F("hrecotauNum_trk_z0","Reco+Truth tau matched to preselection; z0[mm]",15,-200.,200.)); + addHistogram(new TH2F("hrecotauNum_trk_etaphi","Reco+Truth tau matched to preselection; #eta ; #phi",26,-2.6,2.6,32,-3.2,3.2)); + + addHistogram(new TH1F("hpstau_trkres_pt","Preselection track Resolution wrt reco;track pt resolution;Nevents",40,-0.4,0.4)); + addHistogram(new TH1F("hpstau_trkres_eta","Preselection track Resolution wrt reco;track #eta resolution;Nevents",40,-0.4,0.4)); + addHistogram(new TH1F("hpstau_trkres_phi","Preselection track Resolution wrt reco;track #phi resolution;Nevents",40,-0.4,0.4)); + addHistogram(new TH1F("hpstau_trkres_d0","Preselection track Resolution wrt reco;track d0 resolution;Nevents",40,-0.4,0.4)); + addHistogram(new TH1F("hpstau_trkres_z0","Preselection track Resolution wrt reco;track z0 resolution;Nevents",40,-0.4,0.4)); + + addHistogram(new TH2F("hpstautrk_vs_recotrk_pt","Preselection Vs Reco tracks; Preselection track p_{T} [GeV]; Reco track p_{T}",20,0.,100.,20,0.,100.)); + addHistogram(new TH2F("hpstautrk_vs_recotrk_eta","Preselection Vs Reco tracks; Preselection track #eta; Reco track #eta",26,-2.6,2.6,26,-2.6,2.6)); + addHistogram(new TH2F("hpstautrk_vs_recotrk_phi","Preselection Vs Reco tracks; Preselection track #phi; Reco track #phi",32,-3.2,3.2,26,-2.6,2.6)); + addHistogram(new TH2F("hpstautrk_vs_recotrk_d0","Preselection Vs Reco tracks; Preselection track d0[mm]; Reco track",20,-5.,5.,20,-5.,5.)); + addHistogram(new TH2F("hpstautrk_vs_recotrk_z0","Preselection Vs Reco tracks; Preselection track z0[mm]; Reco track",15,-200.,200.,15,-200.,200.)); + + addHistogram(new TH1F("hpstau_trkeff_pt","Preselection Vs Reco Track Efficiency; Reco track p_{T} [GeV]; Efficiency",20,0.,100.)); + addHistogram(new TH1F("hpstau_trkeff_eta","Preselection Vs Reco Track Efficiency; Reco track #eta; Efficiency",26,-2.6,2.6)); + addHistogram(new TH1F("hpstau_trkeff_phi","Preselection Vs Reco Track Efficiency; Reco track #phi; Efficiency",32,-3.2,3.2)); + addHistogram(new TH1F("hpstau_trkeff_d0","Preselection Vs Reco Track Efficiency; Reco track d0[mm]; Efficiency",20,-5.,5.)); + addHistogram(new TH1F("hpstau_trkeff_z0","Preselection Vs Reco Track Efficiency; Reco track z0[mm]; Efficiency",15,-200.,200.)); + + addProfile(new TProfile("TProfPresVsRecoPtEfficiency","Preselection Vs Reco Track Efficiency; Reco track p_{T} [GeV]; Efficiency",20,0.,100.)); + addProfile(new TProfile("TProfPresVsRecoEtaEfficiency","Preselection Vs Reco Track Efficiency; Reco track #eta; Efficiency",26,-2.6,2.6)); + addProfile(new TProfile("TProfPresVsRecoPhiEfficiency","Preselection Vs Reco Track Efficiency; Reco track #phi; Efficiency",32,-3.2,3.2)); + addProfile(new TProfile("TProfPresVsRecod0Efficiency","Preselection Vs Reco Track Efficiency; Reco track d0[mm]; Efficiency",20,-5.,5.)); + addProfile(new TProfile("TProfPresVsRecoz0Efficiency","Preselection Vs Reco Track Efficiency; Reco track z0[mm]; Efficiency",15,-200.,200.)); + } + + } @@ -726,100 +815,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){ if(m_RealZtautauEff) { - const int nbin_pt = 13; - double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.}; - const int nbin_eta = 9; - double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47}; - - addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/RealZtautauEff",run) ); - setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff"); - addHistogram(new TH1F("hRealBSTauPt",";Before selection Offline #tau p_{T} [GeV];",100,0,200)); - addHistogram(new TH1F("hRealBSTauEta",";Before selection Offline #tau #eta;",12,-2.5,2.5)); - addHistogram(new TH1F("hRealBSTauPhi",";Before selection Offline #tau #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealBSTauNTrack",";Before selection Number of #tau tracks;",10,0,10)); - addHistogram(new TH1F("hRealCandTau",";Before selection Total Number of Offline #taus;",10,0,10)); - addHistogram(new TH1F("hRealASTauPt",";After selection Offline #tau p_{T} [GeV];",100,0,200)); - addHistogram(new TH1F("hRealASTauEta"," ;After selection Offline #tau #eta;",12,-2.5,2.5)); - addHistogram(new TH1F("hRealASTauPhi",";After selection Offline #tau #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealASTauNTrack",";After selection Number of #tau tracks;",10,0,10)); - addHistogram(new TH1F("hRealSelectedTau",";After selection Number of Offline #taus;",10,0,10)); - - addHistogram(new TH1F("hRealTauMu",";Number of Selected taus for selected muon;",10,0,10)); - addHistogram(new TH1F("hRealMuTau",";Number of Selected muons for selected tau;",10,0,10)); - - addHistogram(new TH1F("hRealBSMuPt",";Before selection Offline #mu p_{T} [GeV];",100,0,200)); - addHistogram(new TH1F("hRealBSMuEta",";Before selection Offline #mu #eta;",12,-2.5,2.5)); - addHistogram(new TH1F("hRealBSMuPhi",";Before selection Offline #mu #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealCandMu",";Before selection Total Number of Offline #mu;",10,0,10)); - addHistogram(new TH1F("hRealASMuPt",";After selection Offline #mu p_{T} [GeV];",100,0,200)); - addHistogram(new TH1F("hRealASMuEta",";After selection Offline #mu #eta;",12,-2.5,2.5)); - addHistogram(new TH1F("hRealASMuPhi",";After selection Offline #mu #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealSelectedMu",";After selection Number of Offline #mu;",10,0,10)); - - //MET - addHistogram(new TH1F("hRealMET",";E^{Miss}_{T} [GeV];",50,0,120)); - - //tau >=1, mu == 1 Vars - addHistogram(new TH1F("hRealTauPt",";Offline #tau p_{T} [GeV];",nbin_pt-1,bins_pt)); - addHistogram(new TH1F("hRealTauEta",";Offline #tau #eta;",nbin_eta-1,bins_eta)); - addHistogram(new TH1F("hRealTauPhi",";Offline #tau #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealTauNTrack",";Number of #tau tracks;",10,0,10)); - addHistogram(new TH1F("hRealTauCharge",";Offline #tau Charge;",11,-5.5,5.5)); - addHistogram(new TH1F("hRealMuPt",";Offline #mu p_{T} [GeV];",nbin_pt-1,bins_pt)); - addHistogram(new TH1F("hRealMuEta",";Offline #mu #eta;",nbin_eta-1,bins_eta)); - addHistogram(new TH1F("hRealMuPhi",";Offline #mu #phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealMuCharge",";Offline #mu Charge;",11,-5.5,5.5)); - addHistogram(new TH1F("hRealTauMuCosdPhi",";Cos#Delta#phi;",16,-2,2)); - addHistogram(new TH1F("hRealMETMuTransMass",";m_{T}(#mu, E^{miss}_{T}) [GeV];",100,0,140)); - addHistogram(new TH1F("hRealTauMuVisMass",";m_{vis}(#mu, #tau_{h}) [GeV];",100,0,140)); - addHistogram(new TH1F("hRealTauMuDPhi",";#mu #tau #Delta#phi;",16,-3.2,3.2)); - addHistogram(new TH1F("hRealTauMuCharge",";Offline #tau+#mu Charge;",11,-5.5,5.5)); - - CutItems.clear(); - TauCutFlow.clear(); - MuCutFlow.clear(); - - TauCutFlow.push_back("No Cut"); - TauCutFlow.push_back("Tau Pt"); - TauCutFlow.push_back("Tau Eta"); - TauCutFlow.push_back("Tau Ntrack"); - TauCutFlow.push_back("Tau Charge"); - TauCutFlow.push_back("Tau JetBDTSigMedium"); - - MuCutFlow.push_back("No Cut"); - MuCutFlow.push_back("Mu Pt"); - MuCutFlow.push_back("Mu Eta"); - MuCutFlow.push_back("Author MuIdCo"); - MuCutFlow.push_back("Quality cuts on CB #mu tracks"); - MuCutFlow.push_back("EtCone20Rel"); - MuCutFlow.push_back("PtCone20Rel"); - - CutItems.push_back("No Cut"); - CutItems.push_back("Selected Tau"); - CutItems.push_back("Selected Mu"); - CutItems.push_back("Selected #tau+#mu"); - CutItems.push_back("#tau+#mu Charge"); - CutItems.push_back("#tau+#mu Vis Mass"); - CutItems.push_back("#tau #mu #Delta#phi"); - - addHistogram(new TH1F("hCutFlow","; ;Events",CutItems.size(),0,CutItems.size())); - addHistogram(new TH1F("hTauCutFlow","; ;Events",TauCutFlow.size(),0,TauCutFlow.size())); - addHistogram(new TH1F("hMuCutFlow","; ;Events",MuCutFlow.size(),0,MuCutFlow.size())); - - for(unsigned int i=0;i<CutItems.size(); ++i) - { - hist("hCutFlow")->GetXaxis()->SetBinLabel(i+1,CutItems.at(i).c_str()); - } - for(unsigned int i=0;i<TauCutFlow.size(); ++i) - { - hist("hTauCutFlow")->GetXaxis()->SetBinLabel(i+1,TauCutFlow.at(i).c_str()); - } - for(unsigned int i=0;i<MuCutFlow.size(); ++i) - { - hist("hMuCutFlow")->GetXaxis()->SetBinLabel(i+1,MuCutFlow.at(i).c_str()); - } + const int nbin_pt = 11; + double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.}; - for(unsigned int i=0;i<m_trigItems.size();++i){ + for(unsigned int i=0;i<m_trigItems.size();++i) + { addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i],run) ); setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]); addHistogram(new TH1F("hRealZttPtDenom","Offline Real Tau;Offline Tau p_{T} [GeV];",nbin_pt-1,bins_pt)); @@ -827,7 +827,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRealZttHLTPtNum","HLT vs Offline Real Tau; Offline Tau p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRealZttL1PtEfficiency","L1 vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRealZttHLTPtEfficiency","HLT vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); - } + addProfile(new TProfile("TProfRealZttL1PtEfficiency", "L1 Vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + addProfile(new TProfile("TProfRealZttHLTPtEfficiency", "HLT Vs Offline Real Tau Efficiency; Offline Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + } } addMonGroup(new MonGroup(this,"HLT/TauMon/Expert",run)); @@ -845,15 +847,30 @@ void HLTTauMonTool::bookHistogramsAllItem(){ hist("hHLTCountsDebug")->GetXaxis()->SetBinLabel(i+1,m_trigItems.at(i).c_str()); } - if(m_doTestTracking){ + /*if(m_doTestTracking){ addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/FTF_track_comparison",run)); setCurrentMonGroup("HLT/TauMon/Expert/FTF_track_comparison"); addHistogram(new TH1F("hFTFnTrack_1step","FTF number of tracks;number of tracks;Nevents",10,0,10)); addHistogram(new TH1F("hFTFnTrack_2steps","FTF number of tracks;number of tracks;Nevents",10,0,10)); addHistogram(new TH1F("hFTFnWideTrack_1step","FTF number of tracks;number of tracks;Nevents",10,0,10)); addHistogram(new TH1F("hFTFnWideTrack_2steps","FTF number of tracks;number of tracks;Nevents",10,0,10)); - } - + }*/ + if(m_dijetFakeTausEff) + { + const int nbin_pt = 17; + double bins_pt[nbin_pt] = {380, 385, 390, 395, 400, 405, 410, 415, 420, 430, 440, 450, 460, 470, 480, 490, 500}; + + for(unsigned int i=0;i<m_trigItemsHighPt.size();++i){ + addMonGroup( new MonGroup(this, "HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i],run) ); + setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]); + addHistogram(new TH1F("hdijetFakeTausPtDenom","Offline Fake Tau;Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt)); + addHistogram(new TH1F("hdijetFakeTausL1PtNum","L1 vs Offline Fake Tau; Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt)); + addHistogram(new TH1F("hdijetFakeTausHLTPtNum","HLT vs Offline Fake Tau; Offline Fake Tau p_{T} [GeV];",nbin_pt-1,bins_pt)); + addHistogram(new TH1F("hdijetFakeTausL1PtEfficiency","L1 vs Offline Fake Tau Efficiency; Offline Fake Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + addHistogram(new TH1F("hdijetFakeTausHLTPtEfficiency","HLT vs Offline Fake Tau Efficiency; Offline Fake Tau p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + } + } + std::vector<string> lowest_names; lowest_names.push_back("lowest_singletau"); // lowest_names.push_back("lowest_ditau"); @@ -865,6 +882,7 @@ void HLTTauMonTool::bookHistogramsAllItem(){ for(unsigned int i=0;i<lowest_names.size();++i){ addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/L1RoI",run)); + addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/Emulation",run)); addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/L1VsOffline",run)); addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionTau",run)); addMonGroup(new MonGroup(this,"HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionVsOffline",run)); @@ -890,47 +908,85 @@ void HLTTauMonTool::bookHistogramsAllItem(){ for(unsigned int i=0;i<m_topo_chains.size(); ++i){ addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/TopoValidation/"+m_topo_chains.at(i),run)); setCurrentMonGroup("HLT/TauMon/Expert/TopoValidation/"+m_topo_chains.at(i)); - addHistogram(new TH1F("hDR","dR between all RoIs; DR;",32,0.,3.2)); - addHistogram(new TH1F("hDRjets","dR between jet and other RoIs; DR;",32,0.,3.2)); - addHistogram(new TH1F("hDRnoJets","dR between non-jet RoIs; DR;",32,0.,3.2)); - addHistogram(new TH1F("hDR_noTopo","dR between all RoIs; DR;",32,0.,3.2)); + addHistogram(new TH1F("hDR","dR between all RoIs; DR;",32,0.,3.2)); + addHistogram(new TH1F("hDRjets","dR between jet and other RoIs; DR;",32,0.,3.2)); + addHistogram(new TH1F("hDRnoJets","dR between non-jet RoIs; DR;",32,0.,3.2)); + addHistogram(new TH1F("hDR_noTopo","dR between all RoIs; DR;",32,0.,3.2)); addHistogram(new TH1F("hDRjets_noTopo","dR between jet and other RoIs; DR;",32,0.,3.2)); - addHistogram(new TH1F("hDRnoJets_noTopo","dR between non-jet RoIs; DR;",32,0.,3.2)); + addHistogram(new TH1F("hDRnoJets_noTopo","dR between non-jet RoIs; DR;",32,0.,3.2)); + + addHistogram(new TH1F("hDRBothtaus","dR when both RoIs are taus; DR;",35,0.,3.5)); + addHistogram(new TH1F("hPTLeading","PT Leading Tau",50,0.,50.)); + addHistogram(new TH1F("hPTSubLeading","PT SubLeading Tau",50,0.,50.)); + addHistogram(new TH1F("hEtaLeading","Eta Leading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hEtaSubLeading","Eta SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hPhiLeading","Eta SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hPhiSubLeading","Phi SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hMultiTaus","Multiplicity Taus above 12 GeV",20,0.,20)); + addHistogram(new TH1F("hMultiJets","Multiplicity Jets above 25 GeV",100,0.,100)); + addHistogram(new TH1F("hPTLeadingJet","PT Leading Tau",50,0.,50.)); + addHistogram(new TH1F("hPTSubLeadingJet","PT SubLeading Tau",50,0.,50.)); + addHistogram(new TH1F("hEtaLeadingJet","Eta Leading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hEtaSubLeadingJet","Eta SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hPhiLeadingJet","Eta SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hPhiSubLeadingJet","Phi SubLeading Tau",70,-3.5,3.5)); + addHistogram(new TH1F("hMultiTausJet","Multiplicity Taus above 12 GeV",20,0.,20)); + addHistogram(new TH1F("hMultiJetsJet","Multiplicity Jets above 25 GeV",100,0.,100)); + + addHistogram(new TH1F("hDRBothtausJet","dR when both RoIs are taus; DR;",35,0.,3.5)); + addHistogram(new TH1F("hDRBothtausJetN","dR when both RoIs are taus; DR;",35,0.,3.5)); + + addHistogram(new TH1F("hDisambiguation","Flag Disambiguation",6,0.,6.)); + + addHistogram(new TH1F("hDRBothtaus_noTopo","dR when both RoIs are taus; DR;",35,0.,3.5)); + addHistogram(new TH1F("hDRBothtausJet_noTopo","dR when both RoIs are taus; DR;",35,0.,3.5)); + addHistogram(new TH1F("hDRBothtausJetN_noTopo","dR when both RoIs are taus; DR;",35,0.,3.5)); } } if(m_emulation){ addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/Emulation",run)); setCurrentMonGroup("HLT/TauMon/Expert/Emulation"); - addHistogram(new TH1F("hL1EmulationPassTDT","; TDT passed events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5)); - addHistogram(new TH1F("hHLTEmulationPassTDT"," TDT passed events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5)); - addHistogram(new TH1F("hL1EmulationPassEmul"," Emualtion passed events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5)); - addHistogram(new TH1F("hHLTEmulationPassEmul"," Emulation passed events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5)); - addHistogram(new TH1F("hL1Emulation"," Mismatched events;",m_emulation_l1_tau.size(),-0.5,m_emulation_l1_tau.size()-0.5)); - addHistogram(new TH1F("hHLTEmulation"," Mismatched events;",m_emulation_hlt_tau.size(),-0.5,m_emulation_hlt_tau.size()-0.5)); - for(unsigned int i=0;i<m_emulation_l1_tau.size(); ++i){ - hist("hL1Emulation")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str()); - hist("hL1EmulationPassTDT")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str()); - hist("hL1EmulationPassEmul")->GetXaxis()->SetBinLabel(i+1,m_emulation_l1_tau.at(i).c_str()); + if(m_emulation_l1_tau.size() > 0) { + addHistogram(new TH1F("hL1EmulationPassTDT", " TDT L1 passed events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5)); + addHistogram(new TH1F("hL1EmulationPassEmul", " Emulation L1 passed events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5)); + addHistogram(new TH1F("hL1Emulation", " L1 Emulation-TDT Mismatched events;", m_emulation_l1_tau.size(), -0.5, m_emulation_l1_tau.size()-0.5)); } - for(unsigned int i=0;i<m_emulation_hlt_tau.size(); ++i){ - hist("hHLTEmulation")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str()); - hist("hHLTEmulationPassTDT")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str()); - hist("hHLTEmulationPassEmul")->GetXaxis()->SetBinLabel(i+1,m_emulation_hlt_tau.at(i).c_str()); + + if(m_emulation_hlt_tau.size() > 0) { + addHistogram(new TH1F("hHLTEmulationPassTDT", " TDT HLT passed events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5)); + addHistogram(new TH1F("hHLTEmulationPassEmul", " Emulation HLT passed events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5)); + addHistogram(new TH1F("hHLTEmulation", " HLT Emulation-TDT Mismatched events;", m_emulation_hlt_tau.size(), -0.5, m_emulation_hlt_tau.size()-0.5)); + } + + for(unsigned int i=0; i < m_emulation_l1_tau.size(); ++i){ + hist("hL1Emulation")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str()); + hist("hL1EmulationPassTDT")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str()); + hist("hL1EmulationPassEmul")->GetXaxis()->SetBinLabel(i+1, m_emulation_l1_tau.at(i).c_str()); + } + + for(unsigned int i=0; i < m_emulation_hlt_tau.size(); ++i){ + hist("hHLTEmulation")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str()); + hist("hHLTEmulationPassTDT")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str()); + hist("hHLTEmulationPassEmul")->GetXaxis()->SetBinLabel(i+1, m_emulation_hlt_tau.at(i).c_str()); } } const int nbin_pt = 13; double bins_pt[nbin_pt] = {10.,20.,25.,30.,35.,40.,45.,50.,60.,70.,100.,150.,200.}; + double hbins_pt[nbin_pt] = {10.,25.,35.,65.,70.,100.,200., 250., 300., 350., 400., 500., 600.}; const int nbin_eta = 9; double bins_eta[nbin_eta] = {-2.47,-1.52,-1.37,-0.69,0.,0.69,1.37,1.52,2.47}; const int nbin_nvtx = 6; double bins_nvtx[nbin_nvtx] = {0.,5.,10.,15.,20.,25.}; - const int nbin_mu = 21; - float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.}; + const int nbin_mu = 33; + float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40., 42., 44., 44., 46., 48., 50., 52., 54., 56., 58., 60., 62}; + // const int nbin_mu = 21; + // float bins_mu[nbin_mu] = {0.,2.,4.,6.,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.,28.,30.,32.,34.,36.,38.,40.}; addMonGroup(new MonGroup(this,"HLT/TauMon/Expert/HLTefficiency",run)); setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); addProfile(new TProfile("TProfRecoHLT25PtEfficiency", "idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + addProfile(new TProfile("TProfRecoHLT160PtEfficiency", "idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); addProfile(new TProfile("TProfRecoHLT25Pt1PEfficiency", "idperf_tracktwo Vs perf_tracktwo; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLT25Pt3PEfficiency", "idperf_tracktwo Vs perf_tracktwo; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLT25EtaEfficiency", "idperf_tracktwo Vs perf_tracktwo; #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -940,6 +996,7 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addProfile(new TProfile("TProfRecoHLT25MuEfficiency", "idperf_tracktwo Vs perf_tracktwo; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); addProfile(new TProfile("TProfRecoHLT25PtEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + addProfile(new TProfile("TProfRecoHLT160PtEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV]; Efficiency",nbin_pt-1,hbins_pt)); addProfile(new TProfile("TProfRecoHLT25Pt1PEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLT25Pt3PEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addProfile(new TProfile("TProfRecoHLT25EtaEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -947,9 +1004,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addProfile(new TProfile("TProfRecoHLT25NTrackEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Number of tracks; Efficiency",10,0,10)); addProfile(new TProfile("TProfRecoHLT25NVtxEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addProfile(new TProfile("TProfRecoHLT25MuEfficiency_2", "perf_tracktwo Vs medium1_tracktwo; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); - - - addHistogram(new TH1F("hRecoHLT25PtNum","idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt)); + + + addProfile(new TProfile("TProfRecoL1_J25PtEfficiency", "TAU20IM_2TAU12IM_3J25_2J20_3J12 vs TAU20IM_2TAU12IM ; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); + +/* addHistogram(new TH1F("hRecoHLT25PtNum","idperf_tracktwo Vs perf_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt1PNum","idperf_tracktwo Vs perf_tracktwo; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt3PNum","idperf_tracktwo Vs perf_tracktwo; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25EtaNum","idperf_tracktwo Vs perf_tracktwo; #eta;",nbin_eta-1,bins_eta)); @@ -957,8 +1016,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoHLT25NTrackNum","idperf_tracktwo Vs perf_tracktwo; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoHLT25NVtxNum","idperf_tracktwo Vs perf_tracktwo; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLT25MuNum","idperf_tracktwo Vs perf_tracktwo; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoHLT25EtaVsPhiNum","idperf_tracktwo Vs perf_tracktwo; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hRecoTau25PtDenom","; p_{T} [GeV];",nbin_pt-1,bins_pt)); +/* addHistogram(new TH1F("hRecoTau25PtDenom","; p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25Pt1PDenom","; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25Pt3PDenom","; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25EtaDenom","; #eta;",nbin_eta-1,bins_eta)); @@ -966,8 +1026,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoTau25NTrackDenom","; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoTau25NVtxDenom","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoTau25MuDenom","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoTau25EtaVsPhiDenom","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hRecoHLT25PtEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); +/* addHistogram(new TH1F("hRecoHLT25PtEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt1PEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt3PEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25EtaEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -975,12 +1036,11 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoHLT25NTrackEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hRecoHLT25NVtxEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLT25MuEfficiency","idperf_tracktwo Vs perf_tracktwo Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoHLT25EtaVsPhiEfficiency","idperf_tracktwo Vs perf_tracktwo in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - - - addHistogram(new TH1F("hRecoHLT25PtNum_2","perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt)); +/* addHistogram(new TH1F("hRecoHLT25PtNum_2","perf_tracktwo Vs medium1_tracktwo; p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt1PNum_2","perf_tracktwo Vs medium1_tracktwo; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt3PNum_2","perf_tracktwo Vs medium1_tracktwo; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25EtaNum_2","perf_tracktwo Vs medium1_tracktwo; #eta;",nbin_eta-1,bins_eta)); @@ -988,8 +1048,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoHLT25NTrackNum_2","perf_tracktwo Vs medium1_tracktwo; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoHLT25NVtxNum_2","perf_tracktwo Vs medium1_tracktwo; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLT25MuNum_2","perf_tracktwo Vs medium1_tracktwo; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoHLT25EtaVsPhiNum_2","perf_tracktwo Vs medium1_tracktwo; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hRecoTau25PtDenom_2","; p_{T} [GeV];",nbin_pt-1,bins_pt)); +/* addHistogram(new TH1F("hRecoTau25PtDenom_2","; p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25Pt1PDenom_2","; 1 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25Pt3PDenom_2","; 3 prong p_{T} [GeV];",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoTau25EtaDenom_2","; #eta;",nbin_eta-1,bins_eta)); @@ -997,8 +1058,9 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoTau25NTrackDenom_2","; Number of tracks;",10,0,10)); addHistogram(new TH1F("hRecoTau25NVtxDenom_2","; Number of primary vertices;",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoTau25MuDenom_2","; Average interactions per bunch crossing;",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoTau25EtaVsPhiDenom_2","; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - addHistogram(new TH1F("hRecoHLT25PtEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); +/* addHistogram(new TH1F("hRecoHLT25PtEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt1PEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; 1 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25Pt3PEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; 3 prong p_{T} [GeV]; Efficiency",nbin_pt-1,bins_pt)); addHistogram(new TH1F("hRecoHLT25EtaEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; #eta; Efficiency",nbin_eta-1,bins_eta)); @@ -1006,6 +1068,6 @@ void HLTTauMonTool::bookHistogramsAllItem(){ addHistogram(new TH1F("hRecoHLT25NTrackEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Number of tracks; Efficiency",10,0,10)); addHistogram(new TH1F("hRecoHLT25NVtxEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Number of primary vertices; Efficiency",nbin_nvtx-1,bins_nvtx)); addHistogram(new TH1F("hRecoHLT25MuEfficiency_2","perf_tracktwo Vs medium1_tracktwo Efficiency; Average interactions per bunch crossing; Efficiency",nbin_mu-1,bins_mu)); +*/ addHistogram(new TH2F("hRecoHLT25EtaVsPhiEfficiency_2","perf_tracktwo Vs medium1_tracktwo in Eta-Phi; #eta; #phi",nbin_eta-1,bins_eta,16,-3.2,3.2)); - } diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx new file mode 100644 index 0000000000000000000000000000000000000000..aee822b0a434d8aea576e87f2cd94e3dd2a50e25 --- /dev/null +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_dijet.cxx @@ -0,0 +1,222 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "GaudiKernel/IJobOptionsSvc.h" +#include "AthenaMonitoring/AthenaMonManager.h" +#include "AthenaMonitoring/ManagedMonitorToolTest.h" + +#include "AnalysisUtils/AnalysisMisc.h" + +#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/StatusCode.h" +#include "GaudiKernel/ITHistSvc.h" +#include "GaudiKernel/PropertyMgr.h" +#include "GaudiKernel/IToolSvc.h" +#include "StoreGate/StoreGateSvc.h" +#include "EventInfo/TriggerInfo.h" +#include "TrigSteeringEvent/HLTResult.h" +#include "EventInfo/EventInfo.h" +#include <EventInfo/EventID.h> +#include "xAODEventInfo/EventInfo.h" + +#include "TrigDecisionTool/FeatureContainer.h" +#include "TrigDecisionTool/Feature.h" +#include "TrigDecisionTool/ChainGroup.h" +#include "TrigSteeringEvent/TrigOperationalInfo.h" +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" +#include "TrigSteeringEvent/TrigRoiDescriptor.h" +#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" + +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" + +#include "xAODTau/TauJet.h" +#include "xAODTau/TauJetContainer.h" +#include "xAODTau/TauJetAuxContainer.h" +#include "xAODTau/TauDefs.h" + +#include "xAODTrigger/EmTauRoI.h" +#include "xAODTrigger/EmTauRoIContainer.h" +#include "xAODTrigger/JetRoIContainer.h" +#include "xAODTrigger/MuonRoIContainer.h" +#include "xAODTrigger/EnergySumRoI.h" + +#include "xAODTruth/TruthParticleContainer.h" +#include "xAODTruth/TruthParticle.h" +#include "xAODTruth/TruthVertex.h" +#include "xAODTruth/TruthVertexContainer.h" + +#include "xAODTracking/TrackParticle.h" +#include "xAODTracking/TrackParticleContainer.h" + +#include "xAODMuon/Muon.h" +#include "xAODMuon/MuonContainer.h" + +#include "xAODMissingET/MissingET.h" +#include "xAODMissingET/MissingETContainer.h" + +#include "xAODJet/JetContainer.h" +#include "xAODJet/JetConstituentVector.h" + +#include "VxVertex/VxContainer.h" + +#include "TROOT.h" +#include "TH1I.h" +#include "TH1F.h" +#include "TH2I.h" +#include "TH2F.h" +#include "TEfficiency.h" + +#include <vector> +#include <iostream> +#include <fstream> +//#define _USE_MATH_DEFINES +#include <math.h> + + +#include "TrigHLTMonitoring/IHLTMonTool.h" +#include "TrigConfHLTData/HLTChain.h" +#include "HLTTauMonTool.h" + +using namespace std; + +//-------------------------------------------------------------------------------------- +StatusCode HLTTauMonTool::dijetFakeTausEfficiency() +{ + ATH_MSG_DEBUG("dijet Fake Taus Efficiency"); + setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff"); + + + const xAOD::JetContainer* jet_cont = 0; + if(evtStore()->retrieve(jet_cont, "AntiKt4EMTopoJets" ).isFailure()) + { + ATH_MSG_WARNING("Failed to retrieve offline Jet container. Exiting."); + return StatusCode::FAILURE; + } + + const xAOD::JetContainer* HLTjet_cont = 0; + if(evtStore()->retrieve(HLTjet_cont, "HLT_xAOD__JetContainer_a4tcemsubjesFS" ).isFailure()) + { + ATH_MSG_WARNING("Failed to retrieve HLT Jet container. Exiting."); + return StatusCode::FAILURE; + } + + const xAOD::TauJetContainer * reco_cont = 0; + if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() ) + { + ATH_MSG_WARNING("Failed to retrieve TauJets container. Exiting."); + return StatusCode::FAILURE; + } + + + double pt_lead = -1; + double pt_sub = -1; + double pt_cut = 380000.; + bool off_match = false; + // bool tau_matching = false; + TLorentzVector LeadJetTLV(0.,0.,0.,0.); + TLorentzVector SubLeadJetTLV(0.,0.,0.,0.); + const std::string theChain = "j360"; + const std::string theContainer = "a4tcemsubjesFS"; + bool leadjet = false; + bool subleadjet = false; + + if(!getTDT()->isPassed(Form("HLT_%s",theChain.c_str()))) + { + ATH_MSG_WARNING("Failed to pass single jet trigger. Exiting."); + return StatusCode::FAILURE; + } + + if(getTDT()->isPassed(Form("HLT_%s",theChain.c_str()))){ //events fired by single jet trigger + auto cg = getTDT()->getChainGroup(Form("HLT_%s",theChain.c_str())); + auto fc = cg->features(); + + auto JetFeatureContainers = fc.get<xAOD::JetContainer>(theContainer.c_str()); //get features container + + for(auto jcont : JetFeatureContainers) { + for (auto j : *jcont.cptr()) { + // selection of leading and sub leading jet + double pt_jet = j->pt(); + double eta_jet = j->eta(); + double phi_jet = j->phi(); + + if(pt_jet < pt_cut) continue; + if(fabs(eta_jet) > 2.5) continue; + + if (pt_jet > pt_lead) + { + pt_sub = pt_lead; + SubLeadJetTLV = LeadJetTLV; + pt_lead = pt_jet; + LeadJetTLV.SetPtEtaPhiE(pt_lead,eta_jet,phi_jet,j->e()); + leadjet = true; + + } + if(pt_jet < pt_lead && pt_jet > pt_sub) + { + pt_sub = pt_jet; + SubLeadJetTLV.SetPtEtaPhiE(pt_sub,eta_jet,phi_jet,j->e()); + subleadjet = true; + } + } + }//jet features + + // check if leading and sub leading jets exist + are back to back + pt balanced + if(leadjet && subleadjet && deltaPhi(LeadJetTLV.Phi(),SubLeadJetTLV.Phi()) >= 2.5 && (LeadJetTLV.Pt()-SubLeadJetTLV.Pt())/(LeadJetTLV.Pt()+SubLeadJetTLV.Pt()) < 0.3) { + + xAOD::JetContainer::const_iterator jetItr, jet_cont_end = jet_cont->end(); + + double dr_lim = 0.2; + + // to check if leading jet matches offline jet + for(jetItr=jet_cont->begin(); jetItr!=jet_cont_end; ++jetItr) + { + if ((*jetItr)->pt() < 20000 || TMath::Abs((*jetItr)->eta()) > 2.5) continue; + double dr_hlt = deltaR((*jetItr)->eta(),LeadJetTLV.Eta(),(*jetItr)->phi(),LeadJetTLV.Phi()); + if(dr_hlt>dr_lim) continue; + off_match = true; + } + + if(off_match) + { + + /* xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end(); + //to check if leading jets matches an offline tau + for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr) + { + TLorentzVector TauTLV = (*recoItr)->p4(); + double pt_Tau = TauTLV.Pt(); + double eta_Tau = TauTLV.Eta(); + double phi_Tau = TauTLV.Phi(); + int ntrack_Tau = (*recoItr)->nTracks(); + bool good_Tau = (*recoItr)->isTau(xAOD::TauJetParameters::JetBDTSigMedium); + float charge_Tau = (*recoItr)->charge(); + if(pt_Tau<20000.) continue; + if(fabs(eta_Tau) > 2.5) continue; + if(fabs(charge_Tau) != 1.0) continue; + if(ntrack_Tau!=1 && ntrack_Tau!=3) continue; + if(!good_Tau) continue; + double dR = deltaR(LeadJetTLV.Eta(),eta_Tau,LeadJetTLV.Phi(),phi_Tau); + if(dR > dr_lim) continue; + tau_matching = true; + } + + if(tau_matching){ + */ + for(unsigned int i=0;i<m_trigItemsHighPt.size();++i) + { + std::string l1_chain(LowerChain("HLT_"+m_trigItemsHighPt[i])); + setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]); + hist("hdijetFakeTausPtDenom")->Fill(SubLeadJetTLV.Pt()/1000.); + if(L1TauMatching(l1_chain, SubLeadJetTLV, 0.3)) hist("hdijetFakeTausL1PtNum")->Fill(SubLeadJetTLV.Pt()/1000.); + if(HLTTauMatching(m_trigItemsHighPt[i], SubLeadJetTLV, 0.2)) hist("hdijetFakeTausHLTPtNum")->Fill(SubLeadJetTLV.Pt()/1000.); + } + } + //} + } + + } + + return StatusCode::SUCCESS; + +} diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx index e97c4080e6b287ce14d0c764050f801aee5251fb..5d1fa4b37224a3990bdd89551756e209d90d9174 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_proc.cxx @@ -100,104 +100,80 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo if(m_RealZtautauEff) { setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff"); - plotUnderOverFlow(hist("hRealBSTauPt")); - plotUnderOverFlow(hist("hRealBSTauEta")); - plotUnderOverFlow(hist("hRealBSTauPhi")); - plotUnderOverFlow(hist("hRealBSTauNTrack")); - plotUnderOverFlow(hist("hRealCandTau")); - plotUnderOverFlow(hist("hRealASTauPt")); - plotUnderOverFlow(hist("hRealASTauEta")); - plotUnderOverFlow(hist("hRealASTauPhi")); - plotUnderOverFlow(hist("hRealASTauNTrack")); - plotUnderOverFlow(hist("hRealSelectedTau")); - plotUnderOverFlow(hist("hRealTauMu")); - plotUnderOverFlow(hist("hRealMuTau")); - plotUnderOverFlow(hist("hRealBSMuPt")); - plotUnderOverFlow(hist("hRealBSMuEta")); - plotUnderOverFlow(hist("hRealBSMuPhi")); - plotUnderOverFlow(hist("hRealCandMu")); - plotUnderOverFlow(hist("hRealASMuPt")); - plotUnderOverFlow(hist("hRealASMuEta")); - plotUnderOverFlow(hist("hRealASMuPhi")); - plotUnderOverFlow(hist("hRealSelectedMu")); - plotUnderOverFlow(hist("hRealMET")); - plotUnderOverFlow(hist("hRealTauPt")); - plotUnderOverFlow(hist("hRealTauEta")); - plotUnderOverFlow(hist("hRealTauPhi")); - plotUnderOverFlow(hist("hRealTauNTrack")); - plotUnderOverFlow(hist("hRealTauCharge")); - plotUnderOverFlow(hist("hRealMuPt")); - plotUnderOverFlow(hist("hRealMuEta")); - plotUnderOverFlow(hist("hRealMuPhi")); - plotUnderOverFlow(hist("hRealMuCharge")); - plotUnderOverFlow(hist("hRealTauMuCosdPhi")); - plotUnderOverFlow(hist("hRealMETMuTransMass")); - plotUnderOverFlow(hist("hRealTauMuVisMass")); - plotUnderOverFlow(hist("hRealTauMuDPhi")); - plotUnderOverFlow(hist("hRealTauMuCharge")); - - for(unsigned int i=0;i<m_trigItems.size();++i){ + for(unsigned int i=0;i<m_trigItems.size();++i) + { setCurrentMonGroup("HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]); plotUnderOverFlow(hist("hRealZttPtDenom")); plotUnderOverFlow(hist("hRealZttL1PtNum")); plotUnderOverFlow(hist("hRealZttHLTPtNum")); - } + } } - + + if(m_dijetFakeTausEff) + { + for(unsigned int i=0;i<m_trigItemsHighPt.size();++i){ + setCurrentMonGroup("HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]); + plotUnderOverFlow(hist("hdijetFakeTausPtDenom")); + plotUnderOverFlow(hist("hdijetFakeTausL1PtNum")); + plotUnderOverFlow(hist("hdijetFakeTausHLTPtNum")); + } + + } + for(unsigned int i=0;i<m_trigItems.size();++i) - { + { if(m_truth && m_turnOnCurves) - { - setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - plotUnderOverFlow(hist("hTrueTauPtDenom")); - plotUnderOverFlow(hist("hTrueTauPt1PDenom")); - plotUnderOverFlow(hist("hTrueTauPt3PDenom")); - plotUnderOverFlow(hist("hTrueTauEtaDenom")); - plotUnderOverFlow(hist("hTrueTauPhiDenom")); - plotUnderOverFlow(hist("hTrueTauNTrackDenom")); - plotUnderOverFlow(hist("hTrueTauNVtxDenom")); - plotUnderOverFlow(hist("hTrueTauMuDenom")); - plotUnderOverFlow(hist("hTrueL1PtNum")); - plotUnderOverFlow(hist("hTrueL1Pt1PNum")); - plotUnderOverFlow(hist("hTrueL1Pt3PNum")); - plotUnderOverFlow(hist("hTrueL1EtaNum")); - plotUnderOverFlow(hist("hTrueL1PhiNum")); - plotUnderOverFlow(hist("hTrueL1NTrackNum")); - plotUnderOverFlow(hist("hTrueL1NVtxNum")); - plotUnderOverFlow(hist("hTrueL1MuNum")); - plotUnderOverFlow(hist("hTrueHLTPtNum")); - plotUnderOverFlow(hist("hTrueHLTPt1PNum")); - plotUnderOverFlow(hist("hTrueHLTPt3PNum")); - plotUnderOverFlow(hist("hTrueHLTEtaNum")); - plotUnderOverFlow(hist("hTrueHLTPhiNum")); - plotUnderOverFlow(hist("hTrueHLTNTrackNum")); - plotUnderOverFlow(hist("hTrueHLTNVtxNum")); - plotUnderOverFlow(hist("hTrueHLTMuNum")); - setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - plotUnderOverFlow(hist("hTruthRecoTauPtDenom")); - plotUnderOverFlow(hist("hTruthRecoTauPt1PDenom")); - plotUnderOverFlow(hist("hTruthRecoTauPt3PDenom")); - plotUnderOverFlow(hist("hTruthRecoTauEtaDenom")); - plotUnderOverFlow(hist("hTruthRecoTauPhiDenom")); - plotUnderOverFlow(hist("hTruthRecoTauNTrackDenom")); - plotUnderOverFlow(hist("hTruthRecoTauNVtxDenom")); - plotUnderOverFlow(hist("hTruthRecoTauMuDenom")); - plotUnderOverFlow(hist("hTruthRecoL1PtNum")); - plotUnderOverFlow(hist("hTruthRecoL1Pt1PNum")); - plotUnderOverFlow(hist("hTruthRecoL1Pt3PNum")); - plotUnderOverFlow(hist("hTruthRecoL1EtaNum")); - plotUnderOverFlow(hist("hTruthRecoL1PhiNum")); - plotUnderOverFlow(hist("hTruthRecoL1NTrackNum")); - plotUnderOverFlow(hist("hTruthRecoL1NVtxNum")); - plotUnderOverFlow(hist("hTruthRecoL1MuNum")); - plotUnderOverFlow(hist("hTruthRecoHLTPtNum")); - plotUnderOverFlow(hist("hTruthRecoHLTPt1PNum")); - plotUnderOverFlow(hist("hTruthRecoHLTPt3PNum")); - plotUnderOverFlow(hist("hTruthRecoHLTEtaNum")); - plotUnderOverFlow(hist("hTruthRecoHLTPhiNum")); - plotUnderOverFlow(hist("hTruthRecoHLTNTrackNum")); - plotUnderOverFlow(hist("hTruthRecoHLTNVtxNum")); - plotUnderOverFlow(hist("hTruthRecoHLTMuNum")); + { + // setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // plotUnderOverFlow(hist("hTrueTauPtDenom")); + // plotUnderOverFlow(hist("hTrueTauPt1PDenom")); + // plotUnderOverFlow(hist("hTrueTauPt3PDenom")); + // plotUnderOverFlow(hist("hTrueTauEtaDenom")); + // plotUnderOverFlow(hist("hTrueTauPhiDenom")); + // plotUnderOverFlow(hist("hTrueTauNTrackDenom")); + // plotUnderOverFlow(hist("hTrueTauNVtxDenom")); + // plotUnderOverFlow(hist("hTrueTauMuDenom")); + // plotUnderOverFlow(hist("hTrueL1PtNum")); + // plotUnderOverFlow(hist("hTrueL1Pt1PNum")); + // plotUnderOverFlow(hist("hTrueL1Pt3PNum")); + // plotUnderOverFlow(hist("hTrueL1EtaNum")); + // plotUnderOverFlow(hist("hTrueL1PhiNum")); + // plotUnderOverFlow(hist("hTrueL1NTrackNum")); + // plotUnderOverFlow(hist("hTrueL1NVtxNum")); + // plotUnderOverFlow(hist("hTrueL1MuNum")); + // plotUnderOverFlow(hist("hTrueHLTPtNum")); + // plotUnderOverFlow(hist("hTrueHLTPt1PNum")); + // plotUnderOverFlow(hist("hTrueHLTPt3PNum")); + // plotUnderOverFlow(hist("hTrueHLTEtaNum")); + // plotUnderOverFlow(hist("hTrueHLTPhiNum")); + // plotUnderOverFlow(hist("hTrueHLTNTrackNum")); + // plotUnderOverFlow(hist("hTrueHLTNVtxNum")); + // plotUnderOverFlow(hist("hTrueHLTMuNum")); + // setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // plotUnderOverFlow(hist("hTruthRecoTauPtDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauPt1PDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauPt3PDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauEtaDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauPhiDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauNTrackDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauNVtxDenom")); + // plotUnderOverFlow(hist("hTruthRecoTauMuDenom")); + // plotUnderOverFlow(hist("hTruthRecoL1PtNum")); + // plotUnderOverFlow(hist("hTruthRecoL1Pt1PNum")); + // plotUnderOverFlow(hist("hTruthRecoL1Pt3PNum")); + // plotUnderOverFlow(hist("hTruthRecoL1EtaNum")); + // plotUnderOverFlow(hist("hTruthRecoL1PhiNum")); + // plotUnderOverFlow(hist("hTruthRecoL1NTrackNum")); + // plotUnderOverFlow(hist("hTruthRecoL1NVtxNum")); + // plotUnderOverFlow(hist("hTruthRecoL1MuNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTPtNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTPt1PNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTPt3PNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTEtaNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTPhiNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTNTrackNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTNVtxNum")); + // plotUnderOverFlow(hist("hTruthRecoHLTMuNum")); // setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); // plotUnderOverFlow(hist("hCombTauPtDenom")); // plotUnderOverFlow(hist("hCombL1TauPtNum")); @@ -227,32 +203,59 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo if(m_turnOnCurves) { setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - plotUnderOverFlow(hist("hRecoTauPtDenom")); - plotUnderOverFlow(hist("hRecoTauPt1PDenom")); - plotUnderOverFlow(hist("hRecoTauPt3PDenom")); - plotUnderOverFlow(hist("hRecoTauEtaDenom")); - plotUnderOverFlow(hist("hRecoTauPhiDenom")); - plotUnderOverFlow(hist("hRecoTauNTrackDenom")); - plotUnderOverFlow(hist("hRecoTauNVtxDenom")); - plotUnderOverFlow(hist("hRecoTauMuDenom")); - plotUnderOverFlow(hist("hRecoL1PtNum")); - plotUnderOverFlow(hist("hRecoL1Pt1PNum")); - plotUnderOverFlow(hist("hRecoL1Pt3PNum")); - plotUnderOverFlow(hist("hRecoL1EtaNum")); - plotUnderOverFlow(hist("hRecoL1PhiNum")); - plotUnderOverFlow(hist("hRecoL1NTrackNum")); - plotUnderOverFlow(hist("hRecoL1NVtxNum")); - plotUnderOverFlow(hist("hRecoL1MuNum")); - plotUnderOverFlow(hist("hRecoHLTPtNum")); - plotUnderOverFlow(hist("hRecoHLTPt1PNum")); - plotUnderOverFlow(hist("hRecoHLTPt3PNum")); - plotUnderOverFlow(hist("hRecoHLTEtaNum")); - plotUnderOverFlow(hist("hRecoHLTPhiNum")); - plotUnderOverFlow(hist("hRecoHLTNTrackNum")); - plotUnderOverFlow(hist("hRecoHLTNVtxNum")); - plotUnderOverFlow(hist("hRecoHLTMuNum")); + // plotUnderOverFlow(hist("hRecoTauPtDenom")); + // plotUnderOverFlow(hist("hRecoTauPt1PDenom")); + // plotUnderOverFlow(hist("hRecoTauPt3PDenom")); + // plotUnderOverFlow(hist("hRecoTauEtaDenom")); + // plotUnderOverFlow(hist("hRecoTauPhiDenom")); + // plotUnderOverFlow(hist("hRecoTauNTrackDenom")); + // plotUnderOverFlow(hist("hRecoTauNVtxDenom")); + // plotUnderOverFlow(hist("hRecoTauMuDenom")); + // plotUnderOverFlow(hist("hRecoL1PtNum")); + // plotUnderOverFlow(hist("hRecoL1Pt1PNum")); + // plotUnderOverFlow(hist("hRecoL1Pt3PNum")); + // plotUnderOverFlow(hist("hRecoL1EtaNum")); + // plotUnderOverFlow(hist("hRecoL1PhiNum")); + // plotUnderOverFlow(hist("hRecoL1NTrackNum")); + // plotUnderOverFlow(hist("hRecoL1NVtxNum")); + // plotUnderOverFlow(hist("hRecoL1MuNum")); + // plotUnderOverFlow(hist("hRecoHLTPtNum")); + // plotUnderOverFlow(hist("hRecoHLTPt1PNum")); + // plotUnderOverFlow(hist("hRecoHLTPt3PNum")); + // plotUnderOverFlow(hist("hRecoHLTEtaNum")); + // plotUnderOverFlow(hist("hRecoHLTPhiNum")); + // plotUnderOverFlow(hist("hRecoHLTNTrackNum")); + // plotUnderOverFlow(hist("hRecoHLTNVtxNum")); + // plotUnderOverFlow(hist("hRecoHLTMuNum")); } + + if (m_doTrackCurves) + { + setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + + plotUnderOverFlow(hist("hpstau_trk_pt")); + plotUnderOverFlow(hist("hpstau_trk_eta")); + plotUnderOverFlow(hist("hpstau_trk_phi")); + plotUnderOverFlow(hist("hpstau_trk_d0")); + plotUnderOverFlow(hist("hpstau_trk_z0")); + plotUnderOverFlow(hist("hrecotau_trk_pt")); + plotUnderOverFlow(hist("hrecotau_trk_eta")); + plotUnderOverFlow(hist("hrecotau_trk_phi")); + plotUnderOverFlow(hist("hrecotau_trk_d0")); + plotUnderOverFlow(hist("hrecotau_trk_z0")); + plotUnderOverFlow(hist("hrecotauNum_trk_pt")); + plotUnderOverFlow(hist("hrecotauNum_trk_eta")); + plotUnderOverFlow(hist("hrecotauNum_trk_phi")); + plotUnderOverFlow(hist("hrecotauNum_trk_d0")); + plotUnderOverFlow(hist("hrecotauNum_trk_z0")); + plotUnderOverFlow(hist("hpstau_trkres_pt")); + plotUnderOverFlow(hist("hpstau_trkres_eta")); + plotUnderOverFlow(hist("hpstau_trkres_phi")); + plotUnderOverFlow(hist("hpstau_trkres_d0")); + plotUnderOverFlow(hist("hpstau_trkres_z0")); + } + setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/L1RoI"); plotUnderOverFlow(hist("hL1RoIEta")); @@ -275,7 +278,7 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo plotUnderOverFlow(hist("hEta")); plotUnderOverFlow(hist("hPhi")); plotUnderOverFlow(hist("hFTFnWideTrack")); - plotUnderOverFlow(hist("hdRmax")); + //plotUnderOverFlow(hist("hdRmax")); setCurrentMonGroup("HLT/TauMon/Expert/"+m_trigItems[i]+"/EFTau"); plotUnderOverFlow(hist("hEFEt")); @@ -385,46 +388,46 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo if(m_truth && m_turnOnCurves) { //Truth - divide("hTrueL1PtNum","hTrueTauPtDenom","hTrueL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1Pt1PNum","hTrueTauPt1PDenom","hTrueL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1Pt3PNum","hTrueTauPt3PDenom","hTrueL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1EtaNum","hTrueTauEtaDenom","hTrueL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1PhiNum","hTrueTauPhiDenom","hTrueL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1NTrackNum","hTrueTauNTrackDenom","hTrueL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1NVtxNum","hTrueTauNVtxDenom","hTrueL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueL1MuNum","hTrueTauMuDenom","hTrueL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide2("hTrueL1EtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTPtNum","hTrueTauPtDenom","hTrueHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTPt1PNum","hTrueTauPt1PDenom","hTrueHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTPt3PNum","hTrueTauPt3PDenom","hTrueHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTEtaNum","hTrueTauEtaDenom","hTrueHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTPhiNum","hTrueTauPhiDenom","hTrueHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTNTrackNum","hTrueTauNTrackDenom","hTrueHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTNVtxNum","hTrueTauNVtxDenom","hTrueHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide("hTrueHLTMuNum","hTrueTauMuDenom","hTrueHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); - divide2("hTrueHLTEtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + //divide("hTrueL1PtNum","hTrueTauPtDenom","hTrueL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1Pt1PNum","hTrueTauPt1PDenom","hTrueL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1Pt3PNum","hTrueTauPt3PDenom","hTrueL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1EtaNum","hTrueTauEtaDenom","hTrueL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1PhiNum","hTrueTauPhiDenom","hTrueL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1NTrackNum","hTrueTauNTrackDenom","hTrueL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1NVtxNum","hTrueTauNVtxDenom","hTrueL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueL1MuNum","hTrueTauMuDenom","hTrueL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + divide2("hTrueL1EtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTPtNum","hTrueTauPtDenom","hTrueHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTPt1PNum","hTrueTauPt1PDenom","hTrueHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTPt3PNum","hTrueTauPt3PDenom","hTrueHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTEtaNum","hTrueTauEtaDenom","hTrueHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTPhiNum","hTrueTauPhiDenom","hTrueHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTNTrackNum","hTrueTauNTrackDenom","hTrueHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTNVtxNum","hTrueTauNVtxDenom","hTrueHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + // divide("hTrueHLTMuNum","hTrueTauMuDenom","hTrueHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); + divide2("hTrueHLTEtaVsPhiNum","hTrueTauEtaVsPhiDenom","hTrueHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TruthEfficiency"); //Truth+Reco - divide("hTruthRecoL1PtNum","hTruthRecoTauPtDenom","hTruthRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1Pt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1Pt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1EtaNum","hTruthRecoTauEtaDenom","hTruthRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1PhiNum","hTruthRecoTauPhiDenom","hTruthRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1NTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1NVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoL1MuNum","hTruthRecoTauMuDenom","hTruthRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide2("hTruthRecoL1EtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTPtNum","hTruthRecoTauPtDenom","hTruthRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTPt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTPt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTEtaNum","hTruthRecoTauEtaDenom","hTruthRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTPhiNum","hTruthRecoTauPhiDenom","hTruthRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTNTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTNVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide("hTruthRecoHLTMuNum","hTruthRecoTauMuDenom","hTruthRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); - divide2("hTruthRecoHLTEtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1PtNum","hTruthRecoTauPtDenom","hTruthRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1Pt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1Pt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1EtaNum","hTruthRecoTauEtaDenom","hTruthRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1PhiNum","hTruthRecoTauPhiDenom","hTruthRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1NTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1NVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoL1MuNum","hTruthRecoTauMuDenom","hTruthRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + divide2("hTruthRecoL1EtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTPtNum","hTruthRecoTauPtDenom","hTruthRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTPt1PNum","hTruthRecoTauPt1PDenom","hTruthRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTPt3PNum","hTruthRecoTauPt3PDenom","hTruthRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTEtaNum","hTruthRecoTauEtaDenom","hTruthRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTPhiNum","hTruthRecoTauPhiDenom","hTruthRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTNTrackNum","hTruthRecoTauNTrackDenom","hTruthRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTNVtxNum","hTruthRecoTauNVtxDenom","hTruthRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + // divide("hTruthRecoHLTMuNum","hTruthRecoTauMuDenom","hTruthRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); + divide2("hTruthRecoHLTEtaVsPhiNum","hTruthRecoTauEtaVsPhiDenom","hTruthRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/Truth+RecoEfficiency"); //Combined trig eff - divide("hCombL1TauPtNum","hCombTauPtDenom","hCombL1TauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); + /*divide("hCombL1TauPtNum","hCombTauPtDenom","hCombL1TauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); divide("hCombHLTTauPtNum","hCombTauPtDenom","hCombHLTTauPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); divide("hCombL1elPtNum","hCombelPtDenom","hCombL1elPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); divide("hCombHLTelPtNum","hCombelPtDenom","hCombHLTelPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); @@ -439,29 +442,29 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo divide("hCombL1dEtaNum","hCombdEtaDenom","hCombL1dEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); divide("hCombHLTdEtaNum","hCombdEtaDenom","hCombHLTdEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); divide("hCombL1dPhiNum","hCombdPhiDenom","hCombL1dPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); - divide("hCombHLTdPhiNum","hCombdPhiDenom","hCombHLTdPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency"); + divide("hCombHLTdPhiNum","hCombdPhiDenom","hCombHLTdPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/TauComboEfficiency");*/ } if(m_turnOnCurves) { //Reco Only - divide("hRecoL1PtNum","hRecoTauPtDenom","hRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1Pt1PNum","hRecoTauPt1PDenom","hRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1Pt3PNum","hRecoTauPt3PDenom","hRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1EtaNum","hRecoTauEtaDenom","hRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1PhiNum","hRecoTauPhiDenom","hRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1NTrackNum","hRecoTauNTrackDenom","hRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1NVtxNum","hRecoTauNVtxDenom","hRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoL1MuNum","hRecoTauMuDenom","hRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide2("hRecoL1EtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTPtNum","hRecoTauPtDenom","hRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTPt1PNum","hRecoTauPt1PDenom","hRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTPt3PNum","hRecoTauPt3PDenom","hRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTEtaNum","hRecoTauEtaDenom","hRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTPhiNum","hRecoTauPhiDenom","hRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTNTrackNum","hRecoTauNTrackDenom","hRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTNVtxNum","hRecoTauNVtxDenom","hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide("hRecoHLTMuNum","hRecoTauMuDenom","hRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); - divide2("hRecoHLTEtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1PtNum","hRecoTauPtDenom","hRecoL1PtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1Pt1PNum","hRecoTauPt1PDenom","hRecoL1Pt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1Pt3PNum","hRecoTauPt3PDenom","hRecoL1Pt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1EtaNum","hRecoTauEtaDenom","hRecoL1EtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1PhiNum","hRecoTauPhiDenom","hRecoL1PhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1NTrackNum","hRecoTauNTrackDenom","hRecoL1NTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1NVtxNum","hRecoTauNVtxDenom","hRecoL1NVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoL1MuNum","hRecoTauMuDenom","hRecoL1MuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + divide2("hRecoL1EtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoL1EtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTPtNum","hRecoTauPtDenom","hRecoHLTPtEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTPt1PNum","hRecoTauPt1PDenom","hRecoHLTPt1PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTPt3PNum","hRecoTauPt3PDenom","hRecoHLTPt3PEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTEtaNum","hRecoTauEtaDenom","hRecoHLTEtaEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTPhiNum","hRecoTauPhiDenom","hRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTNTrackNum","hRecoTauNTrackDenom","hRecoHLTNTrackEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTNVtxNum","hRecoTauNVtxDenom","hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + // divide("hRecoHLTMuNum","hRecoTauMuDenom","hRecoHLTMuEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); + divide2("hRecoHLTEtaVsPhiNum","hRecoTauEtaVsPhiDenom","hRecoHLTEtaVsPhiEfficiency","HLT/TauMon/Expert/"+m_trigItems[i]+"/TurnOnCurves/RecoEfficiency"); } if(m_RealZtautauEff) @@ -469,11 +472,31 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo divide("hRealZttL1PtNum","hRealZttPtDenom","hRealZttL1PtEfficiency","HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]); divide("hRealZttHLTPtNum","hRealZttPtDenom","hRealZttHLTPtEfficiency","HLT/TauMon/Expert/RealZtautauEff/"+m_trigItems[i]); } + + if (m_doTrackCurves) + { divide("hrecotauNum_trk_pt","hrecotau_trk_pt","hpstau_trkeff_pt","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + divide("hrecotauNum_trk_eta","hrecotau_trk_eta","hpstau_trkeff_eta","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + divide("hrecotauNum_trk_phi","hrecotau_trk_phi","hpstau_trkeff_phi","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + divide("hrecotauNum_trk_d0","hrecotau_trk_d0","hpstau_trkeff_d0","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + divide("hrecotauNum_trk_z0","hrecotau_trk_z0","hpstau_trkeff_z0","HLT/TauMon/Expert/"+m_trigItems[i]+"/trackCurves"); + } + + }//End of trigItem loop - + + if(m_dijetFakeTausEff) + { + for(unsigned int i=0;i<m_trigItemsHighPt.size();++i) + { - if(m_turnOnCurves){ + divide("hdijetFakeTausL1PtNum","hdijetFakeTausPtDenom","hdijetFakeTausL1PtEfficiency","HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]); + divide("hdijetFakeTausHLTPtNum","hdijetFakeTausPtDenom","hdijetFakeTausHLTPtEfficiency","HLT/TauMon/Expert/dijetFakeTausEff/"+m_trigItemsHighPt[i]); + } + } + + if(m_turnOnCurves){ + /* setCurrentMonGroup("HLT/TauMon/Expert/HLTefficiency"); plotUnderOverFlow(hist("hRecoHLT25PtNum")); @@ -551,7 +574,7 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo divide("hRecoHLT25NVtxNum_2","hRecoTau25NVtxDenom_2","hRecoHLT25NVtxEfficiency_2","HLT/TauMon/Expert/HLTefficiency"); divide("hRecoHLT25MuNum_2","hRecoTau25MuDenom_2","hRecoHLT25MuEfficiency_2","HLT/TauMon/Expert/HLTefficiency"); - +*/ } if(m_doTopoValidation){ @@ -566,9 +589,10 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo } } - if(m_doTestTracking){ + /*if(m_doTestTracking){ setCurrentMonGroup("HLT/TauMon/Expert/FTF_track_comparison"); - } + }*/ + // clone shifter histograms std::vector<string> lowest_names, lowest_trigger_names; @@ -599,14 +623,19 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo cloneHistogram("hL1RoIHadIsol","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI"); cloneHistogram2("hL1EtaVsPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI"); cloneHistogram2("hL1RoITauClusEMIso","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/L1RoI"); - + + if(m_emulation){ + setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/Emulation"); + cloneHistogram("hL1Emulation","HLT/TauMon/Expert/Emulation"); + } + setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionTau"); cloneHistogram("hEFEt","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); cloneHistogram("hFTFnTrack","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); cloneHistogram("hFTFnWideTrack","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); cloneHistogram("hEta","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); cloneHistogram("hPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); - cloneHistogram("hdRmax","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); + //cloneHistogram("hdRmax","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); cloneHistogram2("hEFEtaVsPhi","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/PreselectionTau"); setCurrentMonGroup("HLT/TauMon/Shifter/"+lowest_names.at(i)+"/PreselectionVsOffline"); @@ -723,6 +752,8 @@ StatusCode HLTTauMonTool::proc(bool endOfEventsBlock, bool endOfLumiBlock, boo // cloneHistogram("hRecoHLTNVtxEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); cloneProfile("TProfRecoL1PtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); + cloneProfile("TProfRecoL1HighPt1PEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); + cloneProfile("TProfRecoHLTHighPtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); cloneProfile("TProfRecoHLTPtEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); cloneProfile("TProfRecoL1PhiEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); cloneProfile("TProfRecoHLTPhiEfficiency","HLT/TauMon/Expert/"+lowest_trigger_names.at(i)+"/TurnOnCurves/RecoEfficiency"); diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx index bc2bb9e69d7a210c2b2632cbdd090cd61847ba36..7a12ecef29e79464e8b21600c0590dc3ee50d29c 100755 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_testTracking.cxx @@ -96,6 +96,7 @@ using namespace AnalysisUtils; const float PI=2.0*acos(0.); const float TWOPI=2.0*PI; +/* StatusCode HLTTauMonTool::test2StepTracking(){ ATH_MSG_DEBUG("Executing HLTTauMonTool::test2StepTracking()"); @@ -664,9 +665,9 @@ StatusCode HLTTauMonTool::test2StepTracking(){ return StatusCode::SUCCESS; } +*/ - -bool HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min=0.){ +/*bool HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2step, bool doReject0trk, float track_pt_min=0.){ bool pass(false); @@ -860,3 +861,5 @@ bool HLTTauMonTool::emulate2StepTracking(float RoI_eta, float RoI_phi, bool do2 ATH_MSG_DEBUG("nCore "<<nCore_track<<", nWide "<<nWide_track<<", pass "<<pass); return pass; } + +*/ diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx new file mode 100644 index 0000000000000000000000000000000000000000..8aa4993a734c4e8d97b6346bc96bc68c739eccda --- /dev/null +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_trackCurves.cxx @@ -0,0 +1,287 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// @file HLTTauMonTool_trackCurves.cxx +// created by Milena Bajic <milena.bajic@cern.ch> + + + +#include "GaudiKernel/IJobOptionsSvc.h" +#include "AthenaMonitoring/AthenaMonManager.h" +#include "AthenaMonitoring/ManagedMonitorToolTest.h" +#include "AnalysisUtils/AnalysisMisc.h" + +#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/StatusCode.h" +#include "GaudiKernel/ITHistSvc.h" +#include "GaudiKernel/PropertyMgr.h" +#include "GaudiKernel/IToolSvc.h" +#include "StoreGate/StoreGateSvc.h" +#include "EventInfo/TriggerInfo.h" +#include "TrigSteeringEvent/HLTResult.h" +#include "EventInfo/EventInfo.h" +#include <EventInfo/EventID.h> +#include "xAODEventInfo/EventInfo.h" + +#include "TrigDecisionTool/FeatureContainer.h" +#include "TrigDecisionTool/Feature.h" +#include "TrigSteeringEvent/TrigOperationalInfo.h" +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" +#include "TrigSteeringEvent/TrigRoiDescriptor.h" +#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" + +#include "TrigSteeringEvent/TrigOperationalInfoCollection.h" + +#include "TrigConfL1Data/PrescaleSet.h" + +#include "TrigTauEmulation/Level1EmulationTool.h" +#include "TrigTauEmulation/HltEmulationTool.h" + +#include "xAODTau/TauJet.h" +#include "xAODTau/TauJetContainer.h" +#include "xAODTau/TauJetAuxContainer.h" +#include "xAODTau/TauDefs.h" + +#include "xAODTrigger/EmTauRoI.h" +#include "xAODTrigger/EmTauRoIContainer.h" + +#include "xAODTruth/TruthParticleContainer.h" +#include "xAODTruth/TruthParticle.h" +#include "xAODTruth/TruthVertex.h" +#include "xAODTruth/TruthVertexContainer.h" + +#include "xAODTracking/TrackParticle.h" +#include "xAODTracking/TrackParticleContainer.h" + +#include "xAODMissingET/MissingET.h" +#include "xAODMissingET/MissingETContainer.h" + +#include "xAODMuon/Muon.h" +#include "xAODMuon/MuonContainer.h" + +#include "xAODEgamma/Electron.h" +#include "xAODEgamma/ElectronContainer.h" + +#include "xAODJet/Jet.h" +#include "xAODJet/JetContainer.h" + +#include "VxVertex/VxContainer.h" + +#include "TROOT.h" +#include "TH1I.h" +#include "TH1F.h" +#include "TH2I.h" +#include "TH2F.h" +#include "TEfficiency.h" +#include "TProfile.h" + +#include <vector> +#include <iostream> +#include <fstream> +//#define _USE_MATH_DEFINES +#include <math.h> + + +#include "TrigHLTMonitoring/IHLTMonTool.h" + +#include "HLTTauMonTool.h" + +using namespace std; + + +StatusCode HLTTauMonTool::trackCurves(const std::string & trigItem){ + + ATH_MSG_DEBUG ("HLTTauMonTool::doTrackCurves"); + setCurrentMonGroup("HLT/TauMon/Expert/"+trigItem+"/trackCurves"); + + std::string trig_item_EF = "HLT_"+trigItem; + std::string trig_item_L1(LowerChain( trig_item_EF ) ); + + const xAOD::TauJetContainer* reco_cont = 0; + if( evtStore()->retrieve(reco_cont, "TauJets").isFailure() ){ + ATH_MSG_WARNING("Failed to retrieve TauJets container. Exiting!"); + return StatusCode::FAILURE; + } + + xAOD::TauJetContainer::const_iterator recoItr, reco_cont_end = reco_cont->end(); + for(recoItr=reco_cont->begin(); recoItr!=reco_cont_end; ++recoItr) { + if(!Selection(*recoItr)) { continue; } + if(!TruthMatched(*recoItr)) { continue; } + + bool presmatch = false; //true if reco+truth is matched to preselection + const xAOD::TauJet* matchedTau = 0 ; + + if (not getTDT()->isPassed(trig_item_EF,m_HLTTriggerCondition)) { + continue; //presmatch will never be true otherwise anyway + } + + Trig::FeatureContainer f = ( getTDT()->features(trig_item_EF,m_HLTTriggerCondition) ); + + for(const auto& comb: f.getCombinations()) { + + const std::vector< Trig::Feature<xAOD::TauJetContainer> > vec_preseltau = comb.get<xAOD::TauJetContainer>("TrigTauRecPreselection", m_HLTTriggerCondition); + + for(const auto& preselTau : vec_preseltau) { + const auto *preselTauJetVec = preselTau.cptr(); + if(not preselTauJetVec) { + continue; + } + for (unsigned int tauit = 0; tauit< (*preselTauJetVec).size();++tauit){ + const auto *preselTauJet = (*preselTauJetVec)[tauit]; + double dR_recopres = deltaR( preselTauJet->eta(), (*recoItr)->eta(), preselTauJet->phi(), preselTauJet->phi() ); + if (dR_recopres < 0.2) { + presmatch = true; + matchedTau = preselTauJet; + break; + } + } + } + } + + // If reco is not matched to preselection tau,skip this tau and skip the filling of all of the next plots + if (!presmatch) { // skip this reco tau and all the rest if it is not matched to preselection + continue; + } + + if(matchedTau->nTracks() == 0) { + continue; + } + + hist2("hreco_vs_pres_coreTracks")->Fill((*recoItr)->nTracks(), matchedTau->nTracks()); + hist2("hreco_vs_pres_isoTracks")->Fill( (*recoItr)->nWideTracks(), (*recoItr)->nWideTracks() ); + + for (unsigned int recoTrack = 0; recoTrack < (*recoItr)->nTracks(); ++recoTrack){ + const xAOD::TrackParticle* recotau_trk = (*recoItr)->track(recoTrack); + float recotau_trk_pt = recotau_trk->pt()/1000.; + float recotau_trk_eta = recotau_trk->eta(); + float recotau_trk_phi = recotau_trk->phi(); + float recotau_trk_d0 = recotau_trk->d0(); + float recotau_trk_z0 = recotau_trk->z0(); + + //Those plots are used in the efficiency plots, as denominator + hist("hrecotau_trk_pt")->Fill(recotau_trk_pt); + hist("hrecotau_trk_eta")->Fill(recotau_trk_eta); + hist("hrecotau_trk_phi")->Fill(recotau_trk_phi); + hist("hrecotau_trk_d0")->Fill(recotau_trk_d0); + hist("hrecotau_trk_z0")->Fill(recotau_trk_z0); + hist2("hrecotau_trk_etaphi")->Fill(recotau_trk_eta, recotau_trk_phi); + + //Now find the closest track + double dRtracksmin = 9999; + const xAOD::TrackParticle* pstau_trk_clos = 0; + + for (unsigned int i = 0; i < matchedTau->nTracks(); ++i){ + const xAOD::TrackParticle* pstau_trk = matchedTau->track(i); + double dRtracks = deltaR (pstau_trk->eta(), recotau_trk_eta, pstau_trk->phi(), recotau_trk_phi); + if (dRtracks < dRtracksmin) { + dRtracksmin = dRtracks; + pstau_trk_clos = pstau_trk; + } + } + + double dRtracks_min = deltaR (pstau_trk_clos->eta(), recotau_trk_eta, pstau_trk_clos->phi(), recotau_trk_phi); //equal to dRtracksmin + bool tracksMatched = false; + if ( dRtracks_min< 0.1 ) {tracksMatched = true;} + + if (tracksMatched == false) { + //Fill TProfile + std::cout<<" Track curves: filling TProfile, starting pt, line 185 "<<std::endl; + profile("TProfPresVsRecoPtEfficiency")->Fill(recotau_trk_pt, 0); + profile("TProfPresVsRecoEtaEfficiency")->Fill(recotau_trk_eta, 0); + profile("TProfPresVsRecoPhiEfficiency")->Fill(recotau_trk_phi, 0); + profile("TProfPresVsRecod0Efficiency")->Fill(recotau_trk_d0, 0); + profile("TProfPresVsRecoz0Efficiency")->Fill(recotau_trk_z0, 0); + std::cout<<" Track curves: finishing Profile, line 192 "<<std::endl; + continue; // skip the filling of the next plots if the tracks are not matched + } + + if (tracksMatched == true){ + // All the next plots are not filled if the tracks are not matched + hist("hrecotauNum_trk_pt")->Fill(recotau_trk_pt); //Num plots are taken in the efficency plots, as numenator + hist("hrecotauNum_trk_eta")->Fill(recotau_trk_eta); + hist("hrecotauNum_trk_phi")->Fill(recotau_trk_phi); + hist("hrecotauNum_trk_d0")->Fill(recotau_trk_d0); + hist("hrecotauNum_trk_z0")->Fill(recotau_trk_z0); + hist2("hrecotauNum_trk_etaphi")->Fill(recotau_trk_eta, recotau_trk_phi); + + float pstau_trk_pt = pstau_trk_clos->pt()/1000.; + float pstau_trk_eta = pstau_trk_clos->eta(); + float pstau_trk_phi = pstau_trk_clos->phi(); + float pstau_trk_d0 = pstau_trk_clos->d0(); + float pstau_trk_z0 = pstau_trk_clos->z0(); + + hist("hpstau_trk_pt")->Fill(pstau_trk_pt); + hist("hpstau_trk_eta")->Fill(pstau_trk_eta); + hist("hpstau_trk_phi")->Fill(pstau_trk_phi); + hist("hpstau_trk_d0")->Fill(pstau_trk_d0); + hist("hpstau_trk_z0")->Fill(pstau_trk_z0); + hist2("hpstau_trk_etaphi")->Fill(pstau_trk_eta, pstau_trk_phi); + + hist("hpstau_trkres_pt")->Fill((pstau_trk_pt - recotau_trk_pt)/recotau_trk_pt); //this is not filled if the tracks are not matched + hist("hpstau_trkres_eta")->Fill((pstau_trk_eta - recotau_trk_eta)/recotau_trk_eta); + hist("hpstau_trkres_phi")->Fill((pstau_trk_phi - recotau_trk_phi)/recotau_trk_phi); + hist("hpstau_trkres_d0")->Fill((pstau_trk_d0 - recotau_trk_d0)/recotau_trk_d0); + hist("hpstau_trkres_z0")->Fill((pstau_trk_z0 - recotau_trk_z0)/recotau_trk_z0); + + //2d plots of Reco vs preselection tracks + hist2("hpstautrk_vs_recotrk_pt")->Fill(pstau_trk_pt,recotau_trk_pt); + hist2("hpstautrk_vs_recotrk_eta")->Fill(pstau_trk_eta,recotau_trk_eta); + hist2("hpstautrk_vs_recotrk_phi")->Fill(pstau_trk_phi,recotau_trk_phi); + hist2("hpstautrk_vs_recotrk_d0")->Fill(pstau_trk_d0,recotau_trk_d0); + hist2("hpstautrk_vs_recotrk_z0")->Fill(pstau_trk_z0,recotau_trk_z0); + + profile("TProfPresVsRecoPtEfficiency")->Fill(recotau_trk_pt, 1); + profile("TProfPresVsRecoEtaEfficiency")->Fill(recotau_trk_eta, 1); + profile("TProfPresVsRecoPhiEfficiency")->Fill(recotau_trk_phi, 1); + profile("TProfPresVsRecod0Efficiency")->Fill(recotau_trk_d0, 1); + profile("TProfPresVsRecoz0Efficiency")->Fill(recotau_trk_z0, 1); + } + } + } //end of the reco loop + + return StatusCode::SUCCESS; +} + + +bool HLTTauMonTool::TruthMatched( const xAOD::TauJet * tau){ + // the function returns true if tau is matched to truth tau + bool truthmatch = false; + + const xAOD::TruthParticleContainer* truth_cont = 0; + + if( evtStore()->retrieve(truth_cont, "TruthParticles" ).isFailure() ){ + ATH_MSG_WARNING("Failed to retrieve TruthParticle container. Exiting."); + return StatusCode::FAILURE; + } + + xAOD::TruthParticleContainer::const_iterator truthItr,truth_cont_end = truth_cont->end(); + for (truthItr=truth_cont->begin(); truthItr != truth_cont_end; ++truthItr){ + if (abs((*truthItr)->pdgId()) == 15 && (*truthItr)->status() == 2) { + examineTruthTau(**truthItr); + double pt = (*truthItr)->auxdata<double>("pt_vis"); + double eta = (*truthItr)->auxdata<double>("eta_vis"); + double phi = (*truthItr)->auxdata<double>("phi_vis"); + //double m = (*truthItr)->auxdata<double>("m_vis"); + bool lep = (*truthItr)->auxdata<bool>("IsLeptonicTau"); + int ntracks = (*truthItr)->auxdata<int>("nTracks"); + if(pt < m_effOffTauPtCut || lep || fabs(eta) > 2.47 ) continue; + if(m_selection_nTrkMax>-1 && ntracks>m_selection_nTrkMax) continue; + if(m_selection_nTrkMin>-1 && ntracks<m_selection_nTrkMin) continue; + if(m_selection_ptMax>-1 && pt>m_selection_ptMax) continue; + if(m_selection_ptMin>-1 && pt<m_selection_ptMin) continue; + if(m_selection_absEtaMax>-1 && fabs(eta)>m_selection_absEtaMax) continue; + if(m_selection_absEtaMin>-1 && fabs(eta)<m_selection_absEtaMin) continue; + if(m_selection_absPhiMax>-1 && fabs(phi)>m_selection_absPhiMax) continue; + if(m_selection_absPhiMin>-1 && fabs(phi)<m_selection_absPhiMin) continue; + float dR = deltaR(eta, tau->eta(), phi, tau->phi()); + if ( dR<0.2 ) truthmatch = true; + }} + return truthmatch; +} + + + + + +