 |
ATLAS Offline Software
|
Go to the documentation of this file.
63 return StatusCode::SUCCESS;
75 return StatusCode::FAILURE;
81 return StatusCode::FAILURE;
83 return StatusCode::SUCCESS;
89 std::vector<const xAOD::IParticle*>& tclist,
96 <<
", eta " <<
mu->eta()
97 <<
", phi " <<
mu->phi()
98 <<
" has cluster with "
99 <<
"eta " << muclus->
calEta()
100 <<
", phi " << muclus->
calPhi()
101 <<
", E " << muclus->
calE()
102 <<
" formed of " << muclus->
size() <<
" cells.");
104 <<
" Eloss: " <<
mu->floatParameter(xAOD::Muon::EnergyLoss)
105 <<
" MeasuredEloss: " <<
mu->floatParameter(xAOD::Muon::MeasEnergyLoss)
106 <<
" FSR E: " <<
mu->floatParameter(xAOD::Muon::FSR_CandidateEnergy) );
109 for(
const auto& matchel : tcLinkAcc(*muclus)) {
110 if(!matchel.isValid()) {
continue;}
111 ATH_MSG_VERBOSE(
"Tool found cluster " << (*matchel)->index() <<
" with pt " << (*matchel)->pt() );
112 if((*matchel)->e()>1
e-9) {
113 tclist.push_back(*matchel);
118 return StatusCode::SUCCESS;
122 std::vector<const xAOD::IParticle*>& constlist,
126 const TrackParticle* idtrack =
mu->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
129 ATH_MSG_VERBOSE(
"Accept muon track " << idtrack <<
" px, py = " << idtrack->
p4().Px() <<
", " << idtrack->
p4().Py());
131 constlist.push_back(idtrack);
136 return StatusCode::SUCCESS;
142 std::vector<const xAOD::IParticle*>& pfolist,
144 std::map<const IParticle*,MissingETBase::Types::constvec_t>& )
const
147 const TrackParticle* idtrack =
mu->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
151 <<
", eta " <<
mu->eta()
152 <<
", phi " <<
mu->phi());
155 <<
"eta " << muclus->
calEta()
156 <<
", phi " << muclus->
calPhi()
157 <<
", E " << muclus->
calE()
158 <<
" formed of " << muclus->
size() <<
" cells.");
161 <<
" Eloss: " <<
mu->floatParameter(xAOD::Muon::EnergyLoss)
162 <<
" MeasuredEloss: " <<
mu->floatParameter(xAOD::Muon::MeasEnergyLoss)
163 <<
" FSR E: " <<
mu->floatParameter(xAOD::Muon::FSR_CandidateEnergy) );
166 for(
const auto *
const pfo : *constits.
pfoCont) {
167 if(pfo->isCharged()) {
172 if(idtrack && pfo->
track(0) == idtrack && PVMatchedAcc(*pfo) &&
175 ATH_MSG_VERBOSE(
"Accept muon PFO " << pfo <<
" px, py = " << pfo->p4().Px() <<
", " << pfo->p4().Py());
176 ATH_MSG_VERBOSE(
"Muon PFO index: " << pfo->index() <<
", pt: " << pfo->pt() <<
", eta: " << pfo->eta() <<
", phi: " << pfo->phi() );
177 ATH_MSG_VERBOSE(
"Muon ID Track index: " << idtrack->
index() <<
", pt: " << idtrack->
pt() <<
", eta: " << idtrack->
eta() <<
", phi: " << idtrack->
phi() );
178 pfolist.push_back(pfo);
186 for(
const auto& matchel : tcLinkAcc(*muclus)) {
187 if(!matchel.isValid()) {
190 if((*matchel)->e()>FLT_MIN && pfo->cluster(0) == *matchel) {
191 ATH_MSG_VERBOSE(
"Tool found cluster " << (*matchel)->index() <<
" with pt " << (*matchel)->pt() );
192 pfolist.push_back(pfo);
200 return StatusCode::SUCCESS;
205 std::vector<const xAOD::IParticle*>& felist,
207 std::map<const IParticle*,MissingETBase::Types::constvec_t> &)
const
215 return StatusCode::SUCCESS;
219 std::vector<const xAOD::IParticle*>& felist,
222 ATH_MSG_DEBUG(
"Extract FEs From Links for " <<
mu->type() <<
" with pT " <<
mu->pt());
224 std::vector<FELink_t> nFELinks;
225 std::vector<FELink_t> cFELinks;
229 nFELinks=neutralFEReadDecorHandle(*
mu);
230 cFELinks=chargedFEReadDecorHandle(*
mu);
233 for (
const FELink_t& feLink : cFELinks) {
234 if (!feLink.isValid())
continue;
236 for (
const auto *
const fe : *constits.
feCont){
237 if (fe->index() == fe_init->
index() && fe->isCharged()){
240 ATH_MSG_DEBUG(
"Accept cFE with pt " << fe->pt() <<
", e " << fe->e() <<
", eta " << fe->eta() <<
", phi " << fe->phi() );
241 felist.push_back(fe);
248 for (
const FELink_t& feLink : nFELinks) {
249 if (!feLink.isValid())
continue;
251 for (
const auto *
const fe : *constits.
feCont){
252 if (fe->index() == fe_init->
index() && !fe->isCharged()){
253 if( ( !fe->isCharged()&& fe->e() > FLT_MIN ) ){
254 ATH_MSG_DEBUG(
"Accept nFE with pt " << fe->pt() <<
", e " << fe->e() <<
", eta " << fe->eta() <<
", phi " << fe->phi() <<
" in sum.");
255 felist.push_back(fe);
262 return StatusCode::SUCCESS;
266 std::vector<const xAOD::IParticle*>& felist,
269 const TrackParticle* idtrack =
mu->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
272 <<
", eta " <<
mu->eta()
273 <<
", phi " <<
mu->phi());
276 <<
"eta " << muclus->
calEta()
277 <<
", phi " << muclus->
calPhi()
278 <<
", E " << muclus->
calE()
279 <<
" formed of " << muclus->
size() <<
" cells.");
282 <<
" Eloss: " <<
mu->floatParameter(xAOD::Muon::EnergyLoss)
283 <<
" MeasuredEloss: " <<
mu->floatParameter(xAOD::Muon::MeasEnergyLoss)
284 <<
" FSR E: " <<
mu->floatParameter(xAOD::Muon::FSR_CandidateEnergy) );
293 if(idtrack && fe->
chargedObject(0) == idtrack && PVMatchedAcc(*fe) &&
296 ATH_MSG_VERBOSE(
"Accept muon PFO (FE) " << fe <<
" px, py = " << fe->
p4().Px() <<
", " << fe->
p4().Py());
298 ATH_MSG_VERBOSE(
"Muon ID Track index: " << idtrack->
index() <<
", pt: " << idtrack->
pt() <<
", eta: " << idtrack->
eta() <<
", phi: " << idtrack->
phi() );
299 felist.push_back(fe);
307 for(
const auto& matchel : tcLinkAcc(*muclus)) {
308 if(!matchel.isValid()) {
311 if((*matchel)->e()>FLT_MIN && fe->
otherObject(0) == *matchel) {
312 ATH_MSG_VERBOSE(
"Tool found cluster " << (*matchel)->index() <<
" with pt " << (*matchel)->pt() );
313 felist.push_back(fe);
321 return StatusCode::SUCCESS;
327 std::vector<const xAOD::IParticle*> hardObjs,
328 std::vector<const xAOD::IParticle*>& felist,
330 std::map<const IParticle*,MissingETBase::Types::constvec_t> & ,
336 return StatusCode::SUCCESS;
341 for(
const auto fe : *constits.
feCont) {
342 if( fe->isCharged()) {
345 felist.push_back(fe);
350 felist.push_back(fe);
359 for(
const auto fe_itr : *constits.
feCont) {
360 if( fe_itr->pt() < 0 || fe_itr->e() < 0 ) {
365 if(fe_itr->isCharged() && !PVMatchedAcc(*fe_itr)){
372 std::vector<const xAOD::Muon*> v_mu;
373 for(
const auto& obj_i : hardObjs) {
378 v_mu.push_back(mu_curr);
383 for(
const auto fe_i : *constits.
feCont) {
384 if( fe_i->pt() < 0 || fe_i->e() < 0 ) {
387 for(
const auto& mu_i : v_mu) {
388 double dR =
P4Helpers::deltaR( fe_i->eta(), fe_i->phi(), mu_i->eta(), mu_i->phi() );
397 std::vector<TLorentzVector> v_muTLV;
398 v_muTLV.reserve(v_mu.size());
399 for(
const auto& mu_i : v_mu) {
400 v_muTLV.push_back( mu_i->p4() );
404 TLorentzVector muTLV =
mu->p4();
411 return StatusCode::SUCCESS;
virtual double pt() const override final
The transverse momentum ( ) of the particle.
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_neutralFEReadDecorKey
StatusCode executeTool(xAOD::MissingETContainer *metCont, xAOD::MissingETAssociationMap *metMap) const final
const_pointer_type cptr()
Dereference the pointer.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
flt_t calE() const
Geet Energy in signal state CALIBRATED.
flt_t calEta() const
Get in signal state CALIBRATED.
StatusCode extractFEHR(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > hardObjs, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta, float &UEcorr) const final
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
virtual double phi() const override
The azimuthal angle ( ) of the particle.
virtual double pt() const override
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool isInDeltaR(const I4Momentum &p1, const I4Momentum &p2, double dR)
Check if 2 I4Momentum are in a cone.
Class providing the definition of the 4-vector interface.
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
Description of a calorimeter cluster.
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Gaudi::Property< bool > m_doMuonClusterMatch
Handle class for reading a decoration on an object.
::StatusCode StatusCode
StatusCode definition for legacy code.
static constexpr float m_Drcone
size_t size() const
size method (forwarded from CaloClusterCellLink obj)
flt_t calPhi() const
Get in signal state CALIBRATED.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
size_t index() const
Return the index of this element within its container.
double deltaR(const I4Momentum &p4, double eta, double phi)
from 1 I4Momentum
METMuonAssociator()
Default constructor:
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ElementLink implementation for ROOT usage.
const xAOD::IParticle * chargedObject(std::size_t i) const
Container for xAOD::MissingET_v1 objects.
StatusCode extractTracks(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &constlist, const met::METAssociator::ConstitHolder &constits) const final
StatusCode extractPFO(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &pfolist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta) const final
StatusCode extractFEs(const xAOD::Muon *mu, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits) const
struct TBPatternUnitContext Muon
static constexpr float m_MinDistCone
virtual double eta() const override
The pseudorapidity ( ) of the particle.
virtual FourMom_t p4() const override
The full 4-momentum of the particle.
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_chargedFEReadDecorKey
SG::ReadDecorHandleKey< xAOD::CaloClusterContainer > m_elementLinkName
#define ATH_MSG_WARNING(x)
const xAOD::IParticle * otherObject(std::size_t i) const
Handle class for reading a decoration on an object.
StatusCode extractFEsFromLinks(const xAOD::Muon *mu, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits) const
Class describing a TrackParticle.
StatusCode extractFE(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &felist, const met::METAssociator::ConstitHolder &constits, std::map< const xAOD::IParticle *, MissingETBase::Types::constvec_t > &momenta) const final
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
SG::ReadHandleKey< xAOD::MuonContainer > m_muContKey
StatusCode extractTopoClusters(const xAOD::IParticle *obj, std::vector< const xAOD::IParticle * > &tclist, const met::METAssociator::ConstitHolder &constits) const final
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
A detector object made of other lower level object(s)