 |
ATLAS Offline Software
|
Go to the documentation of this file.
15 m_net_inclusive(nullptr),
16 m_net_0p(nullptr), m_net_1p(nullptr), m_net_2p(nullptr), m_net_3p(nullptr) {
36 ATH_MSG_ERROR(
"Cannot load both prong-inclusive and prong-dependent networks!");
37 return StatusCode::FAILURE;
50 if(!
m_net_0p)
return StatusCode::FAILURE;
55 if(!
m_net_1p)
return StatusCode::FAILURE;
61 if(!
m_net_2p)
return StatusCode::FAILURE;
66 if(!
m_net_3p)
return StatusCode::FAILURE;
69 if(m_output_discriminant < Discriminant::NegLogPJet || m_output_discriminant > Discriminant::PTau) {
78 return StatusCode::SUCCESS;
83 if(network_file.empty())
return nullptr;
85 const std::string pr_network_file =
find_file(network_file);
86 if(pr_network_file.empty()) {
87 ATH_MSG_ERROR(
"Could not find network weights: " << network_file);
91 ATH_MSG_INFO(
"Using network config: " << pr_network_file);
94 std::unique_ptr<TauGNN> net = std::make_unique<TauGNN>(pr_network_file,
config);
108 out_ptau(tau) = -1111.0f;
109 out_pjet(tau) = -1111.0f;
113 return StatusCode::SUCCESS;
118 if (tau.
nTracks()>5)
return StatusCode::SUCCESS;
123 if (tau.
nTracks()!=1 && tau.
nTracks()!=3)
return StatusCode::SUCCESS;
128 std::vector<const xAOD::TauTrack *> tracks;
131 std::vector<xAOD::CaloVertexedTopoCluster>
clusters;
137 std::vector<const xAOD::TauTrack *> trackVec(tracks.begin(), tracks.begin()+numTracksMax);
140 std::map<std::string, float> out_f;
141 std::map<std::string, std::vector<char>> out_vc;
142 std::map<std::string, std::vector<float>> out_vf;
159 else if(n_tracks == 1) std::tie(out_f, out_vc, out_vf) =
m_net_1p->compute(tau, trackVec,
clusters);
160 else if(n_tracks == 2) {
162 else std::tie(out_f, out_vc, out_vf) =
m_net_3p->compute(tau, trackVec,
clusters);
163 }
else if(n_tracks == 3) std::tie(out_f, out_vc, out_vf) =
m_net_3p->compute(tau, trackVec,
clusters);
178 return StatusCode::SUCCESS;
183 std::vector<const xAOD::TauTrack*> tracks = tau.
allTracks();
191 while(
it != tracks.end()) {
193 it = tracks.erase(
it);
203 return lhs->
pt() > rhs->pt();
205 std::sort(tracks.begin(), tracks.end(), cmp_pt);
206 out = std::move(tracks);
208 return StatusCode::SUCCESS;
216 TLorentzVector clusterP4 = vertexedCluster.p4();
219 clusters.push_back(vertexedCluster);
225 return lhs.
p4().Et() > rhs.p4().Et();
234 return StatusCode::SUCCESS;
JetConstituentVector::iterator iterator
Gaudi::Property< bool > m_doTrackClassification
Gaudi::Property< std::string > m_output_pjet
virtual FourMom_t p4() const final
The full 4-momentum of the particle.
Gaudi::Property< bool > m_applyLooseTrackSel
StatusCode get_tracks(const xAOD::TauJet &tau, std::vector< const xAOD::TauTrack * > &out) const
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
std::unique_ptr< TauGNN > m_net_3p
std::unique_ptr< TauGNN > load_network(const std::string &network_file, const TauGNN::Config &config) const
Gaudi::Property< std::string > m_weightfile_inclusive
Gaudi::Property< int > m_max_clusters
std::unique_ptr< TauGNN > m_net_1p
Gaudi::Property< std::string > m_weightfile_3p
virtual StatusCode initialize() override
Tool initializer.
virtual double pt() const
The transverse momentum ( ) of the particle.
Gaudi::Property< bool > m_applyTightTrackSel
Gaudi::Property< float > m_max_cluster_dr
size_t nTracksCharged() const
std::unique_ptr< TauGNN > m_net_0p
std::unique_ptr< TauGNN > m_net_2p
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< std::string > m_weightfile_2p
Class describing a tau jet.
Gaudi::Property< unsigned int > m_output_discriminant
Gaudi::Property< std::string > m_tauContainerName
Gaudi::Property< int > m_max_tracks
std::unique_ptr< TauGNN > m_net_inclusive
Gaudi::Property< float > m_minTauPt
Gaudi::Property< std::string > m_outnode_tau
Gaudi::Property< std::string > m_input_layer_tracks
Gaudi::Property< std::string > m_input_layer_scalar
Gaudi::Property< float > m_min_prong_track_pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Gaudi::Property< bool > m_doVertexCorrection
Gaudi::Property< std::string > m_outnode_jet
std::vector< xAOD::CaloVertexedTopoCluster > vertexedClusters() const
Gaudi::Property< std::string > m_weightfile_0p
Gaudi::Property< std::string > m_weightfile_1p
virtual ~TauGNNEvaluator()
Evaluate cluster kinematics with a different vertex / signal state.
Gaudi::Property< std::string > m_input_layer_clusters
TauGNNEvaluator(const std::string &name="TauGNNEvaluator")
SG::WriteDecorHandleKey< xAOD::TauJetContainer > m_scoreHandleKey
StatusCode get_clusters(const xAOD::TauJet &tau, std::vector< xAOD::CaloVertexedTopoCluster > &out) const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
Gaudi::Property< std::string > m_output_ptau
Gaudi::Property< std::string > m_output_varname
virtual StatusCode execute(xAOD::TauJet &tau) const override
Execute - called for each tau candidate.