|
ATLAS Offline Software
|
#include <DecoratePLIT.h>
|
| DecoratePLIT (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &) const override |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | initializeAccessors () |
|
StatusCode | predictElec (const xAOD::Electron &electron, const xAOD::JetContainer &trackjets, const xAOD::TrackParticleContainer &tracks, const xAOD::CaloClusterContainer &caloclusters, std::vector< SG::WriteDecorHandle< xAOD::ElectronContainer, float >> &dec_el_plit_output, const EventContext &ctx) const |
|
StatusCode | predictMuon (const xAOD::Muon &muon, const xAOD::JetContainer &trackjets, const xAOD::TrackParticleContainer &tracks, std::vector< SG::WriteDecorHandle< xAOD::MuonContainer, float >> &dec_mu_plit_output, const EventContext &ctx) const |
|
const xAOD::Jet * | findClosestTrackJet (const xAOD::IParticle &part, const xAOD::JetContainer &jets) const |
|
bool | passed_r22tracking_cuts (const xAOD::TrackParticle &tp, const EventContext &ctx) const |
|
StatusCode | decorateTrack (const xAOD::TrackParticle &track, float dr_lepton, bool isUsedForElectron, bool isUsedForMuon, const xAOD::Jet *trackJet, const xAOD::TrackParticle *trackLep) const |
|
StatusCode | fillParticles (std::vector< const xAOD::IParticle * > &parts, const xAOD::IParticle &lepton, const xAOD::TrackParticle *trackLep, const xAOD::Jet *trackJet, const xAOD::TrackParticleContainer &trackContainer, const EventContext &ctx) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
std::shared_ptr< const FlavorTagDiscriminants::OnnxUtil > | m_onnxUtil {} |
|
std::shared_ptr< const FlavorTagDiscriminants::OnnxUtil > | m_onnxUtil_endcap {} |
|
int | m_num_lepton_features |
|
int | m_num_track_features |
|
Gaudi::Property< std::string > | m_leptonsName |
|
Gaudi::Property< std::string > | m_configPath {this, "ConfigPath", "", "Path of the directory containing the onnx files"} |
|
Gaudi::Property< std::string > | m_configFileVersion {this, "ConfigFileVersion", "", "Vector of tagger score files"} |
|
Gaudi::Property< std::string > | m_configFileVersion_endcap {this, "ConfigFileVersion_endcap", "", "Vector of tagger score files for endcap"} |
|
Gaudi::Property< std::string > | m_TaggerName {this, "TaggerName", "", "Tagger name"} |
|
Gaudi::Property< float > | m_maxLepTrackJetdR |
|
Gaudi::Property< float > | m_maxLepTrackdR |
|
Gaudi::Property< float > | m_lepCalErelConeSize |
|
Gaudi::Property< std::string > | m_btagIp_prefix |
|
SG::ReadHandleKey< xAOD::ElectronContainer > | m_electronsKey |
|
SG::ReadHandleKey< xAOD::MuonContainer > | m_muonsKey |
|
SG::ReadHandleKey< xAOD::JetContainer > | m_trackjetsKey |
|
SG::ReadHandleKey< xAOD::TrackParticleContainer > | m_tracksKey |
|
SG::ReadHandleKey< xAOD::CaloClusterContainer > | m_caloclustersKey |
|
SG::ReadDecorHandleKey< xAOD::MuonContainer > | m_acc_mu_ptvarcone30TTVA {this, "acc_mu_ptvarcone30TTVA",m_muonsKey, "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500"} |
|
SG::ReadDecorHandleKey< xAOD::MuonContainer > | m_acc_mu_topoetcone30 {this, "acc_mu_topoetcone30",m_muonsKey, "topoetcone30"} |
|
SG::ReadDecorHandleKey< xAOD::ElectronContainer > | m_acc_el_ptvarcone30 {this,"acc_el_ptvarcone30",m_electronsKey, "ptvarcone30"} |
|
SG::ReadDecorHandleKey< xAOD::ElectronContainer > | m_acc_el_topoetcone30 {this,"acc_el_topoetcone30",m_electronsKey, "topoetcone30"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_ptfrac {this,"acc_trk_ptfrac",m_tracksKey, "ptfrac"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_dr_trackjet {this,"acc_trk_dr_trackjet", m_tracksKey, "dr_trackjet"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_dr_lepton {this, "acc_trk_dr_lepton",m_tracksKey, "dr_lepton"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_d0 {this,"acc_trk_d0", m_tracksKey, m_btagIp_prefix + "d0"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_z0SinTheta {this, "acc_trk_z0SinTheta", m_tracksKey, m_btagIp_prefix + "z0SinTheta"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_d0Uncertainty {this, "acc_trk_d0Uncertainty", m_tracksKey, m_btagIp_prefix + "d0Uncertainty"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_z0SinThetaUncertainty {this, "acc_trk_z0SinThetaUncertainty", m_tracksKey, m_btagIp_prefix + "z0SinThetaUncertainty"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_muon_track {this, "acc_trk_muon_track", m_tracksKey, "muon_track"} |
|
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > | m_acc_trk_electron_track {this,"acc_trk_electron_track", m_tracksKey, "electron_track"} |
|
SG::WriteDecorHandleKeyArray< xAOD::ElectronContainer > | m_dec_el_plit_output {this, "PLITelOutput", {}} |
|
SG::WriteDecorHandleKeyArray< xAOD::MuonContainer > | m_dec_mu_plit_output {this, "PLITmuOutput", {}} |
|
DataObjIDColl | m_extendedExtraObjects |
| Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 33 of file DecoratePLIT.h.
◆ StoreGateSvc_t
◆ DecoratePLIT()
Prompt::DecoratePLIT::DecoratePLIT |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ decorateTrack()
Definition at line 837 of file DecoratePLIT.cxx.
854 dec_trk_dr_lepton(
track) = dr_lepton;
855 dec_trk_electron_track(
track) =
static_cast<char>(isUsedForElectron);
856 dec_trk_muon_track(
track) =
static_cast<char>(isUsedForMuon);
860 float dr_trackjet = -99;
861 float dr_leptontrack = -99;
865 if (trackJet->
pt() > 0.) {
866 ptfrac =
track.pt() / trackJet->
pt();
867 dr_trackjet =
track.p4().DeltaR(trackJet->
p4());
873 if (trackLep->
pt() > 0.) {
874 dr_leptontrack =
track.p4().DeltaR(trackLep->
p4());
879 dec_trk_ptfrac(
track) = ptfrac;
880 dec_trk_dr_trackjet(
track) = dr_trackjet;
881 dec_trk_dr_leptontrack(
track) = dr_leptontrack;
883 return StatusCode::SUCCESS;
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode Prompt::DecoratePLIT::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
Definition at line 104 of file DecoratePLIT.cxx.
112 std::vector<SG::WriteDecorHandle<xAOD::ElectronContainer, float>> dec_el_plit_output;
114 dec_el_plit_output.emplace_back(wdhk, ctx);
118 if (!
predictElec(*elec, *trackjets, *tracks, *caloclusters, dec_el_plit_output, ctx)) {
119 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to predict electron");
120 return StatusCode::FAILURE;
126 std::vector<SG::WriteDecorHandle<xAOD::MuonContainer, float>> dec_mu_plit_output;
128 dec_mu_plit_output.emplace_back(wdhk, ctx);
132 if (!
predictMuon(*
muon, *trackjets, *tracks, dec_mu_plit_output, ctx)) {
133 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to predict muon");
134 return StatusCode::FAILURE;
139 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ fillParticles()
Definition at line 783 of file DecoratePLIT.cxx.
795 std::set<const xAOD::TrackParticle*> tracksUsedForElectron;
796 std::set<const xAOD::TrackParticle*> tracksUsedForMuon;
797 if (
const auto* elec =
dynamic_cast<const xAOD::Electron*
>(&lepton)) {
799 }
else if (
const auto*
muon =
dynamic_cast<const xAOD::Muon*
>(&lepton)) {
801 tracksUsedForMuon.insert(
muon->primaryTrackParticle());
808 ATH_MSG_ERROR(
"DecoratePLIT::fillParticles - null track pointer");
814 float dr_lepton = (lepton.
p4().Pt() > 0.) ?
track->p4().DeltaR(lepton.
p4()) : -99;
815 bool isUsedForElectron = tracksUsedForElectron.count(
track);
816 bool isUsedForMuon = tracksUsedForMuon.count(
track);
818 if (!
decorateTrack(*
track, dr_lepton, isUsedForElectron, isUsedForMuon, trackJet, trackLep)) {
819 ATH_MSG_ERROR(
"DecoratePLIT::fillParticles - failed to decorate track");
820 return StatusCode::FAILURE;
830 return a->p4().DeltaR(lepton_p4) <
b->p4().DeltaR(lepton_p4);
834 return StatusCode::SUCCESS;
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ findClosestTrackJet()
◆ initialize()
StatusCode Prompt::DecoratePLIT::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 19 of file DecoratePLIT.cxx.
41 m_onnxUtil = std::make_shared<FlavorTagDiscriminants::OnnxUtil>(fullPathToOnnxFile);
44 m_onnxUtil_endcap = std::make_shared<FlavorTagDiscriminants::OnnxUtil>(fullPathToOnnxFile_endcap);
50 std::map<std::string, FlavorTagDiscriminants::Inputs> gnn_input;
52 std::vector<int64_t> elec_feat_dim = {1,
static_cast<int64_t
>(elec_feat.size())};
54 gnn_input.insert({
"jet_features", elec_info});
58 gnn_input.insert({
"track_features", track_info});
59 auto [out_f, out_vc, out_vf] =
m_onnxUtil->runInference(gnn_input);
61 std::vector<std::string> output_names;
62 for (
auto& singlefloat : out_f){
70 m_onnxUtil = std::make_shared<FlavorTagDiscriminants::OnnxUtil>(fullPathToOnnxFile);
76 std::map<std::string, FlavorTagDiscriminants::Inputs> gnn_input;
78 std::vector<int64_t> muon_feat_dim = {1,
static_cast<int64_t
>(muon_feat.size())};
80 gnn_input.insert({
"jet_features", muon_info});
84 gnn_input.insert({
"track_features", track_info});
85 auto [out_f, out_vc, out_vf] =
m_onnxUtil->runInference(gnn_input);
87 std::vector<std::string> output_names;
88 for (
auto& singlefloat : out_f){
96 return StatusCode::FAILURE;
101 return StatusCode::SUCCESS;
◆ initializeAccessors()
StatusCode Prompt::DecoratePLIT::initializeAccessors |
( |
| ) |
|
|
private |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, InDet::SiSPGNNTrackMaker, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ passed_r22tracking_cuts()
Definition at line 703 of file DecoratePLIT.cxx.
706 constexpr
float pt_minimum = 500;
707 constexpr
float abs_eta_maximum = 2.5;
708 constexpr
float d0_maximum = 3.5;
709 constexpr
float z0_maximum= 5.0;
710 constexpr
unsigned char si_hits_minimum = 8;
711 constexpr
unsigned char si_shared_maximum = 1;
712 constexpr
unsigned char si_holes_maximum = 2;
713 constexpr
unsigned char pix_holes_maximum = 1;
722 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfPixelSharedHits");
727 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfSCTSharedHits");
732 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfPixelHits");
737 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfSCTHits");
742 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfPixelDeadSensors");
747 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfSCTDeadSensors");
752 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfPixelHoles");
757 ATH_MSG_ERROR(
"DecoratePLIT::passed_r22tracking_cuts - failed to retrieve xAOD::numberOfSCTHoles");
761 if (std::abs(
tp.eta()) > abs_eta_maximum)
763 double n_module_shared = (pix_shared + sct_shared / 2);
764 if (n_module_shared > si_shared_maximum)
766 if (
tp.pt() <= pt_minimum)
768 if (std::isfinite(d0_maximum) &&
769 std::abs(acc_d0(
tp)) >= d0_maximum)
771 if (std::isfinite(z0_maximum) &&
772 std::abs(acc_z0SinTheta(
tp)) >= z0_maximum)
774 if (pix_hits + pix_dead + sct_hits + sct_dead < si_hits_minimum)
776 if ((pix_holes + sct_holes) > si_holes_maximum)
778 if (pix_holes > pix_holes_maximum)
◆ predictElec()
Definition at line 397 of file DecoratePLIT.cxx.
406 std::map<std::string, FlavorTagDiscriminants::Inputs> gnn_input;
426 float elec_ntracks =
static_cast<float>(
electron.nTrackParticles());
427 float elec_ptvarcone30Rel = acc_ptvarcone30(
electron) / elec_pt;
428 float elec_topoetcone30Rel = acc_topoetcone30(
electron) / elec_pt;
431 float elec_caloClusterSumEtRel = 0.0;
432 float sumCoreEt_large = 0.0;
434 float elec_calEta =
electron.caloCluster()->eta();
435 float elec_calPhi =
electron.caloCluster()->phi();
438 float deta = elec_calEta - cluster->eta();
440 float dr = std::sqrt(deta*deta + dphi*dphi);
443 sumCoreEt_large += cluster->pt();
447 elec_caloClusterSumEtRel = sumCoreEt_large / elec_pt;
451 float elec_ptfrac_lepton = -99;
452 float elec_ptrel_lepton = -99;
453 float elec_dRtrackjet_lepton = -99;
454 float elec_nTracksTrackjet = -99;
459 elec_ptfrac_lepton = elec_pt / trackjet->
pt();
464 elec_dRtrackjet_lepton =
electron.p4().DeltaR(trackjet->
p4());
470 if (bestmatchedGSFElTrack) {
473 float elec_d0sig = -99;
474 float elec_qd0 = -99;
475 float elec_z0sinTheta = -99;
477 float d0 = electronTrack->
d0();
480 float d0sigma = std::sqrt(vard0);
481 if (std::abs(d0sigma) > 0)
482 elec_d0sig = std::abs(
d0 / d0sigma);
485 elec_z0sinTheta = electronTrack->
z0() *
std::sin(electronTrack->
theta());
489 float elec_SCTWeightedCharge{0.f},
charge{0.f};
491 for (
unsigned TPit = 0; TPit <
electron.nTrackParticles(); TPit++) {
495 SCT += temp_NSCTHits;
505 std::vector<float> electron_feat = {elec_pt, elec_eta, elec_phi, elec_ptvarcone30Rel, elec_topoetcone30Rel, elec_caloClusterSumEtRel, elec_ptfrac_lepton, elec_ptrel_lepton, elec_dRtrackjet_lepton, elec_d0sig, elec_z0sinTheta, elec_SCTWeightedCharge, elec_qd0, elec_ntracks, elec_nTracksTrackjet};
506 std::vector<int64_t> electron_feat_dim = {1,
static_cast<int64_t
>(electron_feat.size())};
510 gnn_input.insert({
"jet_features", electron_info});
513 std::vector<const xAOD::IParticle *>
parts;
515 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to fill particles");
516 return StatusCode::FAILURE;
520 std::vector<float> track_feat;
521 track_feat.reserve(
parts.size() *
static_cast<int64_t
>(electron_feat.size()));
528 float ptfrac = acc_ptfrac(*
track);
529 track_feat.push_back(ptfrac);
531 float dr_trackjet = acc_dr_trackjet(*
track);
532 track_feat.push_back(dr_trackjet);
534 float dr_lepton = acc_dr_lepton(*
track);
535 track_feat.push_back(dr_lepton);
537 float qoverp =
track->qOverP();
538 track_feat.push_back(qoverp);
541 track_feat.push_back(
d0);
549 float d0_significance = -99;
551 track_feat.push_back(d0_significance);
553 float z0SinTheta_significance = -99;
555 track_feat.push_back(z0SinTheta_significance);
559 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerHits");
560 return StatusCode::FAILURE;
562 track_feat.push_back(pix_innermosthits);
564 uint8_t pix_nextinnermosthits = 0;
566 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfNextToInnermostPixelLayerHits");
567 return StatusCode::FAILURE;
569 track_feat.push_back(pix_nextinnermosthits);
571 uint8_t pix_innermostsharedhits = 0;
573 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerSharedHits");
574 return StatusCode::FAILURE;
576 track_feat.push_back(pix_innermostsharedhits);
578 uint8_t pix_innermostsplithits = 0;
580 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerSplitHits");
581 return StatusCode::FAILURE;
583 track_feat.push_back(pix_innermostsplithits);
587 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelHits");
588 return StatusCode::FAILURE;
590 track_feat.push_back(pix_hits);
594 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelSharedHits");
595 return StatusCode::FAILURE;
597 track_feat.push_back(pix_shared);
601 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelSplitHits");
602 return StatusCode::FAILURE;
604 track_feat.push_back(pix_split);
608 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfSCTHits");
609 return StatusCode::FAILURE;
611 track_feat.push_back(sct_hits);
615 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfSCTSharedHits");
616 return StatusCode::FAILURE;
618 track_feat.push_back(sct_shared);
622 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfTRTHits");
623 return StatusCode::FAILURE;
625 track_feat.push_back(trt_hits);
627 char electron_track = acc_electron_track(*
track);
628 track_feat.push_back(electron_track);
632 int num_cnsts =
parts.size();
636 gnn_input.insert({
"track_features", track_info});
640 for (
auto& inp : gnn_input){
642 for (
auto &
dim: inp.second.second) {
646 for (
auto & con: inp.second.first) {
655 auto [out_f, out_vc, out_vf] = (std::abs(elec_eta) < 1.37) ?
m_onnxUtil->runInference(gnn_input) :
m_onnxUtil_endcap->runInference(gnn_input);
660 for (
auto& singlefloat : out_f){
664 for (
auto& vecchar : out_vc){
666 for (
auto&
cc : vecchar.second){
671 for (
auto& vecfloat : out_vf){
673 for (
auto&
ff : vecfloat.second){
679 auto it_dec_el_plit_output = dec_el_plit_output.begin();
680 for (
auto& singlefloat : out_f){
681 (*it_dec_el_plit_output)(
electron) = singlefloat.second;
682 ++it_dec_el_plit_output;
685 return StatusCode::SUCCESS;
◆ predictMuon()
Definition at line 163 of file DecoratePLIT.cxx.
183 std::map<std::string, FlavorTagDiscriminants::Inputs> gnn_input;
186 float muon_pt =
muon.pt();
187 float muon_eta =
muon.eta();
188 float muon_phi =
muon.phi();
190 float muon_ptvarcone30TTVARel = acc_ptvarcone30TTVA(
muon) / muon_pt;
191 float muon_topoetcone30Rel = acc_topoetcone30(
muon) / muon_pt;
193 float muon_caloClusterERel = -99;
196 float energyloss = 0;
197 if (!
muon.parameter(energyloss,xAOD::Muon::MeasEnergyLoss)) {
198 ATH_MSG_WARNING(
"DecoratePLIT::execute - failed to retrieve energy loss");
199 return StatusCode::FAILURE;
201 float calE = cluster->
calE();
202 if (std::abs(energyloss) > 0)
203 muon_caloClusterERel = calE / energyloss;
208 float muon_ptfrac_lepton{-99.f}, muon_ptrel_lepton{-99.f}, muon_dRtrackjet_lepton{-99.f}, muon_nTracksTrackjet{-99.f};
213 muon_ptfrac_lepton = muon_pt / trackjet->
pt();
215 float angle =
muon.p4().Vect().Angle(trackjet->
p4().Vect());
218 muon_dRtrackjet_lepton =
muon.p4().DeltaR(trackjet->
p4());
222 std::vector<float> muon_feat = {
223 muon_pt, muon_eta, muon_phi, muon_ptvarcone30TTVARel, muon_topoetcone30Rel,
224 muon_caloClusterERel, muon_ptfrac_lepton, muon_ptrel_lepton,
225 muon_dRtrackjet_lepton, muon_nTracksTrackjet
227 std::vector<int64_t> muon_feat_dim = {1,
static_cast<int64_t
>(muon_feat.size())};
231 gnn_input.insert({
"jet_features", muon_info});
235 std::vector<const xAOD::IParticle *>
parts;
238 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to fill particles");
239 return StatusCode::FAILURE;
243 std::vector<float> track_feat;
244 track_feat.reserve(
parts.size() *
static_cast<int64_t
>(muon_feat.size()));
249 float ptfrac = acc_ptfrac(*
track);
250 track_feat.push_back(ptfrac);
252 float dr_trackjet = acc_dr_trackjet(*
track);
253 track_feat.push_back(dr_trackjet);
255 float qoverp =
track->qOverP();
256 track_feat.push_back(qoverp);
259 track_feat.push_back(
d0);
270 float d0_significance = -99;
272 track_feat.push_back(d0_significance);
274 float z0SinTheta_significance = -99;
276 track_feat.push_back(z0SinTheta_significance);
280 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelHits");
281 return StatusCode::FAILURE;
283 track_feat.push_back(pix_hits);
287 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerHits");
288 return StatusCode::FAILURE;
290 track_feat.push_back(pix_innermosthits);
292 uint8_t pix_nextinnermosthits = 0;
294 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfNextToInnermostPixelLayerHits");
295 return StatusCode::FAILURE;
297 track_feat.push_back(pix_nextinnermosthits);
299 uint8_t pix_innermostsharedhits = 0;
301 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerSharedHits");
302 return StatusCode::FAILURE;
304 track_feat.push_back(pix_innermostsharedhits);
306 uint8_t pix_innermostsplithits = 0;
308 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfInnermostPixelLayerSplitHits");
309 return StatusCode::FAILURE;
311 track_feat.push_back(pix_innermostsplithits);
315 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelSharedHits");
316 return StatusCode::FAILURE;
318 track_feat.push_back(pix_shared);
322 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfPixelSplitHits");
323 return StatusCode::FAILURE;
325 track_feat.push_back(pix_split);
329 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfSCTHits");
330 return StatusCode::FAILURE;
332 track_feat.push_back(sct_hits);
336 ATH_MSG_ERROR(
"DecoratePLIT::execute - failed to retrieve xAOD::numberOfSCTSharedHits");
337 return StatusCode::FAILURE;
339 track_feat.push_back(sct_shared);
343 int num_cnsts =
parts.size();
347 gnn_input.insert({
"track_features", track_info});
350 for (
auto& inp : gnn_input){
352 for (
auto &
dim: inp.second.second) {
356 for (
auto & con: inp.second.first) {
364 auto [out_f, out_vc, out_vf] =
m_onnxUtil->runInference(gnn_input);
369 for (
auto& singlefloat : out_f){
373 for (
auto& vecchar : out_vc){
375 for (
auto&
cc : vecchar.second){
380 for (
auto& vecfloat : out_vf){
382 for (
auto&
ff : vecfloat.second){
388 auto it_dec_mu_plit_output = dec_mu_plit_output.begin();
389 for (
auto& singlefloat : out_f){
390 (*it_dec_mu_plit_output)(
muon) = singlefloat.second;
391 ++it_dec_mu_plit_output;
394 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_acc_el_ptvarcone30
◆ m_acc_el_topoetcone30
◆ m_acc_mu_ptvarcone30TTVA
◆ m_acc_mu_topoetcone30
◆ m_acc_trk_d0
◆ m_acc_trk_d0Uncertainty
◆ m_acc_trk_dr_lepton
◆ m_acc_trk_dr_trackjet
◆ m_acc_trk_electron_track
◆ m_acc_trk_muon_track
◆ m_acc_trk_ptfrac
◆ m_acc_trk_z0SinTheta
◆ m_acc_trk_z0SinThetaUncertainty
◆ m_btagIp_prefix
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_btagIp_prefix |
|
private |
Initial value:{
this, "btagIp_prefix", "btagIp_", "Prefix of b-tagging impact parameter variables (w.r.t. primary vertex)"}
Definition at line 92 of file DecoratePLIT.h.
◆ m_caloclustersKey
Initial value:{
this, "CaloClusterContainerKey", "egammaClusters",
"Calo cluster container name"
}
Definition at line 112 of file DecoratePLIT.h.
◆ m_configFileVersion
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_configFileVersion {this, "ConfigFileVersion", "", "Vector of tagger score files"} |
|
private |
◆ m_configFileVersion_endcap
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_configFileVersion_endcap {this, "ConfigFileVersion_endcap", "", "Vector of tagger score files for endcap"} |
|
private |
◆ m_configPath
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_configPath {this, "ConfigPath", "", "Path of the directory containing the onnx files"} |
|
private |
◆ m_dec_el_plit_output
◆ m_dec_mu_plit_output
◆ m_detStore
◆ m_electronsKey
Initial value:{
this, "ElectronContainerKey", "Electrons",
"Electron container name"
}
Definition at line 96 of file DecoratePLIT.h.
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_lepCalErelConeSize
Gaudi::Property<float> Prompt::DecoratePLIT::m_lepCalErelConeSize |
|
private |
Initial value:{
this, "lepCalErelConeSize", 0.15, "Cone size for relative calo cluster energy sum"}
Definition at line 90 of file DecoratePLIT.h.
◆ m_leptonsName
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_leptonsName |
|
private |
Initial value:{
this, "LeptonContainerName", "",
"Container's name of the lepton that you want to decorate. Also need to set ElectronContainerKey or MuonContainerKey accordingly"
}
Definition at line 78 of file DecoratePLIT.h.
◆ m_maxLepTrackdR
Gaudi::Property<float> Prompt::DecoratePLIT::m_maxLepTrackdR |
|
private |
Initial value:{
this, "maxLepTrackdR", 0.4, "Maximum distance between lepton and track"}
Definition at line 88 of file DecoratePLIT.h.
◆ m_maxLepTrackJetdR
Gaudi::Property<float> Prompt::DecoratePLIT::m_maxLepTrackJetdR |
|
private |
Initial value:{
this, "maxLepTrackJetdR", 0.4, "Maximum distance between lepton and trackjet"}
Definition at line 86 of file DecoratePLIT.h.
◆ m_muonsKey
Initial value:{
this, "MuonContainerKey", "Muons",
"Muon container name"
}
Definition at line 100 of file DecoratePLIT.h.
◆ m_num_lepton_features
int Prompt::DecoratePLIT::m_num_lepton_features |
|
private |
◆ m_num_track_features
int Prompt::DecoratePLIT::m_num_track_features |
|
private |
◆ m_onnxUtil
std::shared_ptr<const FlavorTagDiscriminants::OnnxUtil> Prompt::DecoratePLIT::m_onnxUtil {} |
|
private |
◆ m_onnxUtil_endcap
std::shared_ptr<const FlavorTagDiscriminants::OnnxUtil> Prompt::DecoratePLIT::m_onnxUtil_endcap {} |
|
private |
◆ m_TaggerName
Gaudi::Property<std::string> Prompt::DecoratePLIT::m_TaggerName {this, "TaggerName", "", "Tagger name"} |
|
private |
◆ m_trackjetsKey
Initial value:{
this, "TrackJetContainerKey", "AntiKtVR30Rmax4Rmin02PV0TrackJets",
"VR track jet container name"
}
Definition at line 104 of file DecoratePLIT.h.
◆ m_tracksKey
Initial value:{
this, "TracksContainerKey", "InDetTrackParticles",
"Tracks container name"
}
Definition at line 108 of file DecoratePLIT.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
int m_num_lepton_features
const xAOD::Jet * findClosestTrackJet(const xAOD::IParticle &part, const xAOD::JetContainer &jets) const
virtual double pt() const override final
The transverse momentum ( ) of the particle.
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_z0SinTheta
@ numberOfInnermostPixelLayerSplitHits
number of Pixel 0th layer barrel hits split by cluster splitting
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
std::pair< std::vector< float >, std::vector< int64_t > > Inputs
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_ptfrac
std::shared_ptr< const FlavorTagDiscriminants::OnnxUtil > m_onnxUtil
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
flt_t calE() const
Geet Energy in signal state CALIBRATED.
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloclustersKey
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronsKey
float z0() const
Returns the parameter.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
Gaudi::Property< std::string > m_configFileVersion_endcap
bool msgLvl(const MSG::Level lvl) const
size_t size() const
number of constituents
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
std::set< const xAOD::TrackParticle * > getTrackParticles(const xAOD::Egamma *eg, bool useBremAssoc=true, bool allParticles=true)
Return a list of all or only the best TrackParticle associated to the object.
@ numberOfTRTHits
number of TRT hits [unit8_t].
const std::string z0SinThetaUncertainty
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
SG::WriteDecorHandleKeyArray< xAOD::MuonContainer > m_dec_mu_plit_output
bool empty() const
Test if the key is blank.
JetConstituentVector getConstituents() const
Return a vector of consituents. The object behaves like vector<const IParticle*>. See JetConstituentV...
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_z0SinThetaUncertainty
Class providing the definition of the 4-vector interface.
__HOSTDEV__ double Phi_mpi_pi(double)
float d0() const
Returns the parameter.
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_muon_track
virtual void setOwner(IDataHandleHolder *o)=0
float z0SinTheta(const U &p)
StatusCode initializeAccessors()
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_acc_mu_topoetcone30
Description of a calorimeter cluster.
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
AthReentrantAlgorithm()
Default constructor:
Handle class for reading a decoration on an object.
Helper class to provide type-safe access to aux data.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
SG::ReadDecorHandleKey< xAOD::ElectronContainer > m_acc_el_ptvarcone30
::StatusCode StatusCode
StatusCode definition for legacy code.
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
SG::ReadDecorHandleKey< xAOD::ElectronContainer > m_acc_el_topoetcone30
Gaudi::Property< float > m_maxLepTrackdR
bool passed_r22tracking_cuts(const xAOD::TrackParticle &tp, const EventContext &ctx) const
SG::WriteDecorHandleKeyArray< xAOD::ElectronContainer > m_dec_el_plit_output
Gaudi::Property< float > m_maxLepTrackJetdR
Gaudi::Property< std::string > m_configFileVersion
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
@ numberOfPixelSplitHits
number of Pixel all-layer hits split by cluster splitting [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_tracksKey
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_dr_trackjet
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_dr_lepton
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
std::shared_ptr< const FlavorTagDiscriminants::OnnxUtil > m_onnxUtil_endcap
Gaudi::Property< std::string > m_TaggerName
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
const ParametersCovMatrix_t definingParametersCovMatrix() const
Returns the 5x5 symmetric matrix containing the defining parameters covariance matrix.
std::string to_string(const DetectorType &type)
virtual StatusCode sysInitialize() override
Override sysInitialize.
double charge(const T &p)
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
virtual FourMom_t p4() const =0
The full 4-momentum of the particle.
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
SG::ReadHandleKey< xAOD::MuonContainer > m_muonsKey
Gaudi::Property< float > m_lepCalErelConeSize
Gaudi::Property< std::string > m_configPath
virtual FourMom_t p4() const
The full 4-momentum of the particle.
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_d0
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_electron_track
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_acc_mu_ptvarcone30TTVA
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Class describing a TrackParticle.
SG::ReadDecorHandleKey< xAOD::TrackParticleContainer > m_acc_trk_d0Uncertainty
virtual double pt() const
The transverse momentum ( ) of the particle.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
float theta() const
Returns the parameter, which has range 0 to .
StatusCode decorateTrack(const xAOD::TrackParticle &track, float dr_lepton, bool isUsedForElectron, bool isUsedForMuon, const xAOD::Jet *trackJet, const xAOD::TrackParticle *trackLep) const
StatusCode predictMuon(const xAOD::Muon &muon, const xAOD::JetContainer &trackjets, const xAOD::TrackParticleContainer &tracks, std::vector< SG::WriteDecorHandle< xAOD::MuonContainer, float >> &dec_mu_plit_output, const EventContext &ctx) const
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
StatusCode predictElec(const xAOD::Electron &electron, const xAOD::JetContainer &trackjets, const xAOD::TrackParticleContainer &tracks, const xAOD::CaloClusterContainer &caloclusters, std::vector< SG::WriteDecorHandle< xAOD::ElectronContainer, float >> &dec_el_plit_output, const EventContext &ctx) const
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Gaudi::Property< std::string > m_leptonsName
SG::ReadHandleKey< xAOD::JetContainer > m_trackjetsKey
const std::string d0Uncertainty
StatusCode fillParticles(std::vector< const xAOD::IParticle * > &parts, const xAOD::IParticle &lepton, const xAOD::TrackParticle *trackLep, const xAOD::Jet *trackJet, const xAOD::TrackParticleContainer &trackContainer, const EventContext &ctx) const