Loading [MathJax]/extensions/tex2jax.js
|
ATLAS Offline Software
|
Go to the documentation of this file.
19 return StatusCode::SUCCESS;
24 constexpr
float threshold_offset = 10.0;
33 const std::vector<const xAOD::eFexTauRoI*> xtob_etau_rois =
getL1xTOBeTAUs();
38 if(!
info.isL1TauOnly()) {
39 ATH_MSG_WARNING(
"Chain \"" << trigger <<
"\" is not an L1 tau trigger. Skipping...");
45 std::vector<const xAOD::TauJet*> offline_taus_1p = offline_taus.first;
46 std::vector<const xAOD::TauJet*> offline_taus_3p = offline_taus.second;
48 if(
info.getL1TauType() ==
"eTAU") {
57 }
else if(
info.getL1TauType() ==
"jTAU") {
66 }
else if(
info.getL1TauType() ==
"cTAU") {
67 std::vector<std::pair<const xAOD::eFexTauRoI*, const xAOD::jFexTauRoI*>>
rois =
getL1cTAUs(ctx,
info.getL1TauItem());
69 std::vector<const xAOD::eFexTauRoI*> eTau_rois;
70 eTau_rois.reserve(
rois.size());
71 for(
const auto& [eTau_roi, jTau_roi] :
rois) eTau_rois.push_back(eTau_roi);
90 return StatusCode::SUCCESS;
106 fill(
monGroup, L1RoIEt, L1RoIEta, L1RoIPhi, L1RoIRCore, L1RoIRHad, L1RoIBDTScore);
123 fill(
monGroup, L1RoIEt, L1RoIEta, L1RoIPhi, L1jFexRoIIso);
139 auto L1eFexRoIRCore =
Monitored::Collection(
"L1eFexRoIRCore",
rois, [](
const auto L1roi){
return L1roi.first->rCore(); });
143 std::vector<bool> jFex_isMatched;
144 std::vector<float> jFex_eFex_et_ratio;
145 std::vector<float> jFex_isolation;
146 std::vector<float> cTau_isolation;
147 for(
const auto& [eFexRoI, jFexRoI] :
rois) {
149 jFex_isMatched.push_back(
false);
153 jFex_isMatched.push_back(
true);
154 jFex_eFex_et_ratio.push_back(jFexRoI->et()/eFexRoI->et());
156 cTau_isolation.push_back(jFexRoI->iso()/eFexRoI->et());
163 fill(
monGroup, L1RoIEt, L1RoIEta, L1RoIPhi, L1eFexRoIRCore, L1eFexRoIRHad, L1cTauRoITopoMatch, L1jFexRoIIso, L1cTauRoIIso, L1RoIcTauEtRatio, L1RoIBDTScore );
183 fill(
monGroup, L1RoIEt, L1RoIEta, L1RoIPhi, L1RoITauClus, L1RoIEMIsol, L1RoIHadCore, L1RoIHadIsol);
191 std::vector<const xAOD::eFexTauRoI*> roi_vec;
196 if(!
rois.isValid()) {
197 ATH_MSG_WARNING(
"The L1_eTauxRoI container is not available! No e/cTAU BDT score will be retrieved");
207 if(xtob_rois.empty())
return 0;
210 if(xroi->eta() == roi->
eta() && xroi->phi() == roi->
phi())
return xroi->bdtScore();
212 ATH_MSG_DEBUG(
"Unmatched RoI! et=" << roi->
et() <<
", eta=" << roi->
eta() <<
", phi=" << roi->
phi());
214 ATH_MSG_DEBUG(
" - xRoI et=" << xroi->et() <<
", eta=" << xroi->eta() <<
", phi=" << xroi->phi());
Class describing properties of a LVL1 jFEX global Trigger Object (TOB) in the xAOD format.
float et() const
TOB ET (decoded from TOB, stored for convenience)
float phi() const
The azimuthal angle ( ) of the em/tau candidate.
float eta() const
setter for the above
virtual StatusCode initialize() override
initialize
std::vector< const xAOD::eFexTauRoI * > getL1xTOBeTAUs() const
void fillL1LegacyVars(const std::string &trigger, const std::vector< const xAOD::EmTauRoI * > &rois) const
std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * > > getL1cTAUs(const EventContext &ctx, const std::string &l1_item) const
float rCore() const
Jet Discriminants Derived floating point values (not used in actual algorithm)
unsigned int getBDTScore(const xAOD::eFexTauRoI *roi, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
std::vector< const xAOD::eFexTauRoI * > getL1eTAUs(const EventContext &ctx, const std::string &l1_item) const
unsigned int et() const
Methods that require combining results or applying scales.
Gaudi::Property< bool > m_do_variable_plots
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOfflineTaus(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
TrigTauMonitorL1Algorithm(const std::string &name, ISvcLocator *pSvcLocator)
Class describing a LVL1 em/tau region of interest.
Class describing a LVL1 eFEX tau region of interest.
float emIsol() const
The EM calorimeter isolation (outer ring of EM towers)
void fillL1eTauVars(const std::string &trigger, const std::vector< const xAOD::eFexTauRoI * > &rois, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
::StatusCode StatusCode
StatusCode definition for legacy code.
float hadCore() const
The ET deposited in the inner hadronic isolation region (2x2 core)
virtual StatusCode processEvent(const EventContext &ctx) const override
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
void fillL1cTauVars(const std::string &trigger, const std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * >> &rois, const std::vector< const xAOD::eFexTauRoI * > &xtob_rois) const
void fillL1Efficiencies(const EventContext &ctx, const std::vector< const xAOD::TauJet * > &offline_tau_vec, const std::string &nProng, const std::string &trigger, const std::vector< const T * > &rois) const
float phi() const
Seed supercell index within central tower (0 -> 3)
float hadIsol() const
The hadron calorimeter isolation (outer ring of had towers)
Gaudi::Property< bool > m_do_efficiency_plots
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauxRoIKey
Gaudi::Property< bool > m_requireOfflineTaus
virtual StatusCode initialize() override
initialize
unsigned int iso() const
Iso on TOB scale.
float eta() const
The pseudorapidity ( ) of the em/tau candidate.
void fillL1jTauVars(const std::string &trigger, const std::vector< const xAOD::jFexTauRoI * > &rois) const
std::vector< const xAOD::jFexTauRoI * > getL1jTAUs(const EventContext &ctx, const std::string &l1_item) const
#define ATH_MSG_WARNING(x)
std::vector< const xAOD::EmTauRoI * > getL1LegacyTAUs(const EventContext &ctx, const std::string &l1_item) const
float eT() const
The ET of the cluster (from RoI word)
Gaudi::Property< std::vector< std::string > > m_triggers
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
std::vector< const xAOD::TauJet * > getOfflineTausAll(const EventContext &ctx, const float threshold=20.0) const
float tauClus() const
The deposited ET from the "tau cluster".