21 m_histSvc (
"THistSvc/THistSvc",
name),
31 ATH_CHECK(m_inputContainerLeptonKey.initialize());
32 ATH_CHECK(m_inputContainerTrackKey.initialize());
33 ATH_CHECK(m_inputContainerTrackJetKey.initialize());
34 ATH_CHECK(m_inputContainerPrimaryVerticesKey.initialize());
43 for(
const std::string &
label: m_toolRNN->getOutputLabels()) {
44 const std::string
key = m_decorationPrefixRNN +
label;
48 m_decoratorMap.insert(decoratorFloatMap_t::value_type(
key, std::make_unique<decoratorFloat_t>(
key)));
51 ATH_MSG_DEBUG(
"inputContainerMuon=\"" << m_inputContainerLeptonKey <<
"\"");
56 m_accessQuality = std::make_unique<SG::AuxElement::ConstAccessor<unsigned char> >(
"quality");
60 ATH_MSG_DEBUG(
"DecoratePromptLeptonRNN initialized successfully.");
62 return StatusCode::SUCCESS;
97 primaryVertex = vertex;
115 if(bestmatchedGSFElTrack) {
120 trackLep = findMuonTrack(muon);
123 ATH_MSG_WARNING(
"execute - failed to find electron or muon: should never happen!");
129 const xAOD::Jet *trackJet = findClosestTrackJet(trackLep, *h_trackJets);
131 if(!trackLep || !trackJet) {
132 compDummy(*lepton, m_decorationPrefixRNN);
139 std::vector<Prompt::VarHolder > select_tracks;
143 if(!prepTrackObject(lepton_obj, *trackLep, *trackLep, *trackJet, *primaryVertex, *event_handle)) {
150 select_tracks.push_back(lepton_obj);
155 ATH_MSG_WARNING(
"Prompt::DecoratePromptLeptonRNN::execute - skip null track pointer - should never happen");
161 if(!prepTrackObject(track_obj, *track, *trackLep, *trackJet, *primaryVertex, *event_handle)) {
165 if(passTrack(track_obj)) {
166 select_tracks.push_back(track_obj);
168 ATH_MSG_DEBUG(
"Prompt::DecoratePromptLeptonRNN::execute - passed track pT= " << track->pt());
180 compScore(*lepton, select_tracks, m_decorationPrefixRNN);
182 ATH_MSG_DEBUG(
"DecoratePromptLeptonRNN::CompScore - " << std::endl
183 <<
"lepton pT= " << lepton->pt()
184 <<
", number of tracks: " << select_tracks.size());
187 return StatusCode::SUCCESS;
201 ATH_MSG_INFO(
"DecoratePromptLeptonRNN - processed " << m_countEvent <<
" events.");
204 return StatusCode::SUCCESS;
217 const unsigned char quality = (*m_accessQuality)(*muon);
238 double currTrackJetDR = -1.0;
244 const double dr = particle->p4().DeltaR(
jet->p4());
246 if(currTrackJetDR < 0.0 ||
dr < currTrackJetDR) {
252 if(trackJet && currTrackJetDR < m_maxLepTrackJetDR) {
304 if(track.pt() > 0.0 && trackJet.
pt() > 0.0) {
305 PtFrac = track.pt() / trackJet.
pt();
315 double d0_significance = -99.;
318 if(track.definingParametersCovMatrixVec().size() > 0 && track.definingParametersCovMatrixVec().at(0) > 0.0) {
320 event.beamPosSigmaX(),
321 event.beamPosSigmaY(),
322 event.beamPosSigmaXY());
325 const double deltaZ0 = track.z0() + track.vz() - priVtx.
z();
346 if(
p.getVar(
Def::Pt) < m_minTrackpT)
return false;
348 if(std::fabs(
p.getVar(
Def::Z0Sin)) > m_maxTrackZ0Sin)
return false;
363 const std::vector<Prompt::VarHolder> &tracks,
364 const std::string &
prefix)
369 ATH_MSG_DEBUG(
"compScore - number of tracks: " << tracks.size());
381 const std::map<std::string, double>
results = m_toolRNN->computeRNNOutput(tracks);
383 for(
const std::pair<const std::string, double>&
v:
results) {
387 const std::string dkey =
prefix +
v.first;
389 ATH_MSG_DEBUG(
"DecoratePromptLeptonRNN compScore - " <<
v.first <<
" = " <<
v.second );
395 if(dit != m_decoratorMap.end()) {
396 (*dit->second)(particle) =
v.second;
399 ATH_MSG_WARNING(
"CompScore - unknown output label=\"" << dkey <<
"\"");
405 if(hit == m_hists.end()) {
408 StatusCode hist_status = makeHist(
h,
v.first, 100, 0.0, 1.0);
409 if (hist_status != StatusCode::SUCCESS){
410 ATH_MSG_WARNING(
"DecoratePromptLeptonRNN compScore - failed to make hist");
413 hit = m_hists.insert(std::map<std::string, TH1*>::value_type(
v.first,
h)).first;
417 hit->second->Fill(
v.second);
427 const std::string &
prefix)
432 for(
const decoratorFloatMap_t::value_type &
v: m_decoratorMap) {
436 const std::string dkey =
prefix +
v.first;
438 (*
v.second)(particle) = -1.0;
452 if(m_outputStream.empty() ||
key.empty()) {
453 return StatusCode::SUCCESS;
457 const std::string hist_key =
"/"+m_outputStream+
"/"+
hname;
462 return m_histSvc->regHist(hist_key,
h);