ATLAS Offline Software
METTrackFilterTool.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // METTrackFilterTool.cxx
8 // Implementation file for class METTrackFilterTool
9 //
10 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
11 //
12 // Author: P Loch, S Resconi, TJ Khoo
14 
15 // METReconstruction includes
17 
18 // MET EDM
22 
23 // Tracking EDM
26 
27 // Calo EDM
29 
30 // Egamma EDM
32 #include "xAODEgamma/Electron.h"
33 
34 // Track errors
36 
37 // ConstDV
39 
40 // DeltaR calculation
42 
43 namespace met {
44 
45  using std::vector;
46  //
47  using namespace xAOD;
48 
50  // Public methods:
52 
53  // Constructors
56  AsgTool(name),
58  {
59  declareProperty( "DoPVSel", m_trk_doPVsel = true );
60  declareProperty( "DoEoverPSel", m_trk_doEoverPsel = false );
61  declareProperty( "DoVxSep", m_doVxSep = false );
62  declareProperty( "DoLepRecovery", m_doLepRecovery=false );
63  declareProperty( "UseIsolationTools", m_useIsolationTools=true );
64  declareProperty( "CentralTrackPtThr", m_cenTrackPtThr = 200e+3 );
65  declareProperty( "ForwardTrackPtThr", m_forTrackPtThr = 120e+3 );
66  }
67 
68  // Destructor
71  = default;
72 
73  // Athena algtool's Hooks
76  {
78  ATH_MSG_INFO ("Initializing " << name() << "...");
79  ATH_CHECK(m_trkseltool.retrieve());
80  ATH_CHECK(m_trkToVertexTool.retrieve());
81  ATH_CHECK(m_trkIsolationTool.retrieve());
82  ATH_CHECK(m_caloIsolationTool.retrieve());
83 
84  if(m_doVxSep) ATH_MSG_INFO("Building TrackMET for each vertex");
85 
87  ATH_CHECK( m_pv_inputkey.initialize());
88  if(m_doLepRecovery){
90  ATH_CHECK( m_mu_inputkey.initialize());
91  }
92 
93  return StatusCode::SUCCESS;
94  }
95 
97  {
98  ATH_MSG_INFO ("Finalizing " << name() << "...");
99 
100  return StatusCode::SUCCESS;
101  }
102 
104  // Protected methods:
106 
107  // Implement for now, but should move to common tools when possible
108  // bool METTrackFilterTool::isPVTrack(const xAOD::TrackParticle* /*trk*/,
109  // const xAOD::Vertex* /*pv*/) const
110  // {
111  // if(!trk || !pv) return false;
112  // if(fabs(trk->d0())>m_trk_d0Max) return false;
113  // if(fabs(trk->z0()+trk->vz() - pv->z()) > m_trk_z0Max) return false;
114  // return true;
115  // }
116 
118  const std::vector<const xAOD::TrackParticle*>& trkList,
119  const xAOD::CaloClusterContainer* clusters) const {
120 
121  if( (fabs(trk->eta())<1.5 && trk->pt()>m_cenTrackPtThr) ||
122  (fabs(trk->eta())>=1.5 && trk->pt()>m_forTrackPtThr) ) {
123 
124  // Get relative error on qoverp
125  float Rerr = Amg::error(trk->definingParametersCovMatrix(),4)/fabs(trk->qOverP());
126  ATH_MSG_VERBOSE( "Track momentum error (%): " << Rerr*100 );
127 
128  // first compute track and calo isolation variables
129  float ptcone20 = 0., isolfrac = 0., etcone10 = 0., EoverP = 0.;
130  if(!m_useIsolationTools) {
131  ATH_MSG_VERBOSE( "Using OLD track isolation setup");
132  // ptcone
133  for(const auto& obj : trkList) {
134  if(obj->type() == xAOD::Type::TrackParticle) {
135  const TrackParticle* testtrk = static_cast<const TrackParticle*>(obj);
136  if(testtrk==trk) continue;
137  if (xAOD::P4Helpers::isInDeltaR(*testtrk,*trk,0.2,m_useRapidity)) {
138  ptcone20 += testtrk->pt();
139  }
140  }
141  else {ATH_MSG_WARNING("METTrackFilterTool::isGoodEoveP given an object of type " << obj->type());}
142  }
143  isolfrac = ptcone20 / trk->pt();
144  // etcone
145  for(const auto *const clus : *clusters) {
146  if (xAOD::P4Helpers::isInDeltaR(*clus,*trk,0.1,m_useRapidity)) {
147  etcone10 += clus->pt();
148  }
149  }
150  EoverP = etcone10/trk->pt();
151  }
152  else {
153  ATH_MSG_VERBOSE( "Using NEW track isolation setup");
154  // ptcone
155  TrackIsolation trkIsoResult;
156  std::vector<Iso::IsolationType> trkIsoCones;
157  trkIsoCones.push_back(xAOD::Iso::IsolationType::ptcone20);
158  xAOD::TrackCorrection trkIsoCorr;
160  m_trkIsolationTool->trackIsolation(trkIsoResult,
161  *trk,
162  trkIsoCones,
163  trkIsoCorr);
164  ptcone20 = !trkIsoResult.ptcones.empty() ? trkIsoResult.ptcones[0] : 0;
165  isolfrac = ptcone20/trk->pt();
166  // etcone
167  CaloIsolation caloIsoResult_coreCone;
168  std::vector<Iso::IsolationType> caloIsoCones_coreCone;
169  caloIsoCones_coreCone.push_back(xAOD::Iso::IsolationType::etcone20);
170  xAOD::CaloCorrection caloIsoCorr_coreCone;
171  caloIsoCorr_coreCone.calobitset.set(xAOD::Iso::IsolationCaloCorrection::coreCone);
172  m_caloIsolationTool->caloTopoClusterIsolation(caloIsoResult_coreCone,
173  *trk,
174  caloIsoCones_coreCone,
175  caloIsoCorr_coreCone);
176  etcone10 = !caloIsoResult_coreCone.etcones.empty() ?
178  EoverP = etcone10/trk->pt();
180  }
181  ATH_MSG_VERBOSE( "Track isolation fraction: " << isolfrac );
182  ATH_MSG_VERBOSE( "Track E/P = " << EoverP );
183 
184  if(isolfrac<0.1) {
185  // isolated track cuts
186  if(Rerr>0.4) return false;
187  else if (EoverP<0.65 && ((EoverP>0.1 && Rerr>0.05) || Rerr>0.1)) return false;
188  } else {
189  // non-isolated track cuts
190  float trkptsum = ptcone20+trk->pt();
191  if(etcone10/trkptsum<0.6 && trk->pt()/trkptsum>0.6) return false;
192  }
193  }
194 
195  return true;
196  }
197 
199  {
200 
201  ATH_MSG_DEBUG ("In execute: " << name() << "...");
202 
203  std::vector<const xAOD::Electron*> selElectrons;
204  std::vector<const xAOD::Muon*> selMuons;
205 
206  if(m_doLepRecovery)
207  {
209  if (!elCont.isValid()) {
210  ATH_MSG_WARNING("Unable to retrieve electron container " << m_el_inputkey.key());
211  return StatusCode::SUCCESS;
212  } else {
213  selectElectrons(*elCont, selElectrons);
214  }
216  if (!muCont.isValid()) {
217  ATH_MSG_WARNING("Unable to retrieve muon container " << m_mu_inputkey.key());
218  return StatusCode::SUCCESS;
219  } else {
220  selectMuons(*muCont, selMuons);
221  }
222 
223  }
224 
226  if(iter==metMap->end()) {
227  ATH_MSG_WARNING("Could not find current METComponent in MET Map!");
228  return StatusCode::FAILURE;
229  }
230  MissingETComponent* newComp = *iter;
233 
234  // Extract the component corresponding to the Track SoftTerms
237  metTerm->setSource(src_ST_refTrk);
238 
240  if(citer==metMap->end()) {
241  ATH_MSG_WARNING("Could not find Soft ID Track component in MET Map!");
242  return StatusCode::FAILURE;
243  }
244  vector<const TrackParticle*> softTracks;
245  softTracks.reserve((*citer)->size());
246  for(const auto& obj : (*citer)->objects()) {
247  const TrackParticle* trk = dynamic_cast<const TrackParticle*>(obj);
248  if(trk) {softTracks.push_back(trk);}
249  else {ATH_MSG_WARNING("Track filter given an object of type " << obj->type());}
250  }
251 
252  const Vertex* pv=nullptr;
254  if (!vxCont.isValid()) {
255  ATH_MSG_WARNING("Unable to retrieve input primary vertex container");
256  }
257  vector<const Vertex*> vertices;
258 
259  if(m_trk_doPVsel) {
260  if(!vxCont->empty()) {
261  vertices.reserve(vxCont->size());
262  for(const auto *const vx : *vxCont) {
263  if(vx->vertexType()==VxType::PriVtx) {pv = vx;}
264  vertices.push_back(vx);
265  }
266  } else{
267  ATH_MSG_WARNING("Event has no primary vertices");
268  return StatusCode::FAILURE;
269  }
270  if(pv) { ATH_MSG_DEBUG("Main primary vertex has z = " << pv->z()); }
271  else {
272  ATH_MSG_DEBUG("Did not find a primary vertex in the container. Reject all tracks.");
273  return StatusCode::SUCCESS;
274  }
275  }
276 
277  if(m_doVxSep) {
278  xAOD::TrackVertexAssociationMap trktovxmap=m_trkToVertexTool->getUniqueMatchMap(softTracks, vertices);
279 
280  // initialize metContainer and metTerm
281  MissingETContainer* metCont = static_cast<MissingETContainer*>( metTerm->container() );
282 
283  bool firstVx(true);
284  std::string basename = metTerm->name()+"_vx";
285  for(const auto *const vx : *vxCont){
286  if(vx->vertexType()==VxType::PriVtx || vx->vertexType()==VxType::PileUp) {
287  MissingET *met_vx = metTerm;
288  if(!firstVx) {
289  met_vx = new MissingET(0. ,0. ,0. );
290  metCont->push_back(met_vx);
291  met_vx->setSource(metTerm->source());
292  MissingETComposition::add(metMap, met_vx);
293  }
294  met_vx->setName(basename+std::to_string(vx->index()));
295  ATH_MSG_VERBOSE("Building " << met_vx->name());
296 
297  ATH_MSG_VERBOSE("Number of tracks associated to vertex " << vx->index() << ": "<< (trktovxmap[vx]).size());
298 
299  ATH_CHECK( buildTrackMET(metMap,met_vx,vx,selElectrons,selMuons,trktovxmap[vx]) );
300  firstVx = false;
301  }
302  }
303  } else {
304  ATH_CHECK( buildTrackMET(metMap,metTerm,pv,selElectrons,selMuons,softTracks) );
305  }
306 
307  return StatusCode::SUCCESS;
308  }
309 
311  xAOD::MissingET* const metTerm,
312  const xAOD::Vertex* const pv,
313  const std::vector<const xAOD::Electron*>& selElectrons,
314  const std::vector<const xAOD::Muon*>& selMuons,
315  const std::vector<const xAOD::TrackParticle*>& softTracks) const {
316 
317  vector<const IParticle*> dummyList;
318  MissingETBase::Types::weight_t unitWeight(1.,1.,1.);
319 
320  const MissingETComponent* metComp = MissingETComposition::getComponent(metMap,metTerm);
321  if(!metComp) {
322  ATH_MSG_WARNING("Failed to find MissingETComponent for MET term " << metTerm->name());
323  return StatusCode::FAILURE;
324  }
325  // Loop over the tracks and select only good ones
326  for( const auto& trk : softTracks ) {
327  // Could/should use common implementation of addToMET here -- derive builder and refiner from a common base tool?
328  bool passFilters = true;
330  if (!tcCont.isValid()) {
331  ATH_MSG_WARNING("Unable to retrieve topocluster container " << m_cl_inputkey << " for overlap removal");
332  }
333  if(m_trk_doEoverPsel && !isGoodEoverP(trk,softTracks,tcCont.cptr())) passFilters = false;
334  if(m_trk_doPVsel) {
335  if(!(m_trkseltool->accept( *trk, pv ))) passFilters=false;
336  } else {
337  if(!(m_trkseltool->accept( trk ))) passFilters=false;
338  }
339 
340  bool isMuon=false;
341  bool isElectron=false;
342  size_t el_index=-1;
343 
344  if(m_doLepRecovery) {
345  isMuon=isMuTrack(*trk,selMuons);
346  isElectron=isElTrack(*trk,selElectrons, el_index);
347  }
348 
349  bool isLepton=(isMuon||isElectron);
350 
351  if(passFilters || (m_doLepRecovery && isLepton)) {
352  if(!passFilters && isElectron && m_doLepRecovery) {
353  //electron track fails, replace with electron pt
354  const Electron* el = selElectrons[el_index];
355 
356  metTerm->add(el->pt()*cos(trk->phi()),
357  el->pt()*sin(trk->phi()),
358  el->pt());
359  MissingETComposition::insert(metMap,metTerm,el,dummyList,unitWeight);
360  } else {
361  metTerm->add(trk->pt()*cos(trk->phi()),trk->pt()*sin(trk->phi()),trk->pt());
362  MissingETComposition::insert(metMap,metTerm,trk,dummyList,unitWeight);
363  ATH_MSG_VERBOSE("METTerm " << metTerm->name() <<" sumpt: " << metTerm->sumet());
364  }
365  }
366  }
367  return StatusCode::SUCCESS;
368  }
369 
370  bool METTrackFilterTool::isElTrack(const xAOD::TrackParticle &trk, const std::vector<const xAOD::Electron*>& electrons, size_t &el_index)
371  {
372  for(unsigned int eli=0; eli<electrons.size(); ++eli) {
373  const xAOD::Electron *el=electrons.at(eli);
374  if(&trk==xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF(el->trackParticle())) {
375  el_index=eli;
376  return true;
377  }
378  }
379  return false;
380  }
381 
382  bool METTrackFilterTool::isMuTrack(const xAOD::TrackParticle &trk, const std::vector<const xAOD::Muon*>& muons)
383  {
384  for(const auto *muon : muons) {
385  // if(((muon_list.at(mui))->trackParticle(xAOD::Muon::InnerDetectorTrackParticle))->pt()==trk->pt())
386  if((muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle))==&trk) {
387  return true;
388  }
389  }
390  return false;
391  }
392 
393  void METTrackFilterTool::selectElectrons(const xAOD::ElectronContainer &elCont, std::vector<const xAOD::Electron*>& electrons)
394  {
395  for(const auto *el : elCont) {
396  if( (el)->author()&0x1 //electron author
397  && (el)->pt()>10000 // electron pt
398  && fabs(el->eta())<2.47 // electron eta
399  ) {
400  if((fabs((el)->eta())<=1.37) || (fabs((el)->eta())>=1.52) ) {
401  // crack region
402  electrons.push_back(el);
403  }
404  }
405  }
406  }
407 
408 
409  void METTrackFilterTool::selectMuons(const xAOD::MuonContainer &muCont, std::vector<const xAOD::Muon*>& muons)
410  {
411  for(const auto *mu : muCont) {
412  if( (mu->muonType()==xAOD::Muon::Combined)
413  && (mu->pt()>6000.)
414  && fabs(mu->eta())<2.5
415  ) {
416  muons.push_back(mu);
417  }
418  }
419  }
420 
421 
422 }
423 
met::METTrackFilterTool::m_trkseltool
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkseltool
Definition: METTrackFilterTool.h:93
xAOD::MissingETComponentMap_v1
Definition: MissingETComponentMap_v1.h:25
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
xAOD::TrackCorrection
Definition: IsolationCommon.h:18
met::METTrackFilterTool::isMuTrack
static bool isMuTrack(const xAOD::TrackParticle &trk, const std::vector< const xAOD::Muon * > &muons)
Definition: METTrackFilterTool.cxx:382
met::METTrackFilterTool::METTrackFilterTool
METTrackFilterTool()
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::Iso::coreEnergy
@ coreEnergy
energy stored for this correction
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:93
MissingETBase::Status::Vertex::Nominal
@ Nominal
Primary vertex is nominal vertex.
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
xAOD::MissingET_v1::sumet
float sumet() const
Returns.
met::METTrackFilterTool::m_trk_doEoverPsel
bool m_trk_doEoverPsel
Definition: METTrackFilterTool.h:112
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAODP4Helpers.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
xAOD::Iso::coreTrackPtr
@ coreTrackPtr
tracks pointer
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:66
xAOD::MissingETComposition::find
static MissingETComponentMap::const_iterator find(const MissingETComponentMap *pMap, const MissingET *pmetObj)
Find non-modifiable contribution for a given MET object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:82
met::METTrackFilterTool::m_cl_inputkey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_cl_inputkey
Definition: METTrackFilterTool.h:106
EventPrimitivesHelpers.h
MissingETAuxComponentMap.h
met::METTrackFilterTool::buildTrackMET
StatusCode buildTrackMET(xAOD::MissingETComponentMap *const metMap, xAOD::MissingET *const metTerm, const xAOD::Vertex *const pv, const std::vector< const xAOD::Electron * > &selElectrons, const std::vector< const xAOD::Muon * > &selMuons, const std::vector< const xAOD::TrackParticle * > &softTracks) const
Definition: METTrackFilterTool.cxx:310
xAOD::TrackCorrection::trackbitset
Iso::IsolationTrackCorrectionBitset trackbitset
Definition: IsolationCommon.h:19
test_pyathena.pt
pt
Definition: test_pyathena.py:11
MissingETBase::Source::track
static Types::bitmask_t track(Region reg=Region::FullAcceptance)
Bit mask for MET term from Track signal objects.
Definition: MissingETBase.h:291
xAOD::Iso::ptcone20
@ ptcone20
Track isolation.
Definition: IsolationType.h:40
met::METTrackFilterTool::executeTool
StatusCode executeTool(xAOD::MissingET *metTerm, xAOD::MissingETComponentMap *metMap) const
Definition: METTrackFilterTool.cxx:198
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::TrackVertexAssociationMap
std::map< const xAOD::Vertex *, xAOD::TrackVertexAssociationList > TrackVertexAssociationMap
Definition: TrackVertexAssociationMap.h:19
met::METTrackFilterTool::m_trkIsolationTool
ToolHandle< xAOD::ITrackIsolationTool > m_trkIsolationTool
Definition: METTrackFilterTool.h:95
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
met::METTrackFilterTool::selectMuons
static void selectMuons(const xAOD::MuonContainer &muCont, std::vector< const xAOD::Muon * > &muons)
Definition: METTrackFilterTool.cxx:409
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
met::METTrackFilterTool::m_trkToVertexTool
ToolHandle< CP::ITrackVertexAssociationTool > m_trkToVertexTool
Definition: METTrackFilterTool.h:94
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
MissingETBase::Types::bitmask_t
uint64_t bitmask_t
Type for status word bit mask.
Definition: MissingETBase.h:39
xAOD::MissingET_v1::setSource
void setSource(MissingETBase::Types::bitmask_t src)
Set the source of the MET object.
MissingETBase::Status::Tags::correctedTerm
static Types::bitmask_t correctedTerm(Vertex vtx=Vertex::Nominal, Correction cor=Correction::Corrected)
Definition: MissingETCompositionBase.h:128
MissingETBase::Source::idTrack
static Types::bitmask_t idTrack(Region reg=Region::FullAcceptance)
Bit pattern indicating a ID Track MET term.
Definition: MissingETBase.h:366
MissingETBase::Source::Type::SoftEvent
@ SoftEvent
Indicator for the MET term from reconstructed soft event signals (tracks, clusters) or MC truth parti...
xAOD::MissingETComponent_v1::setStatusWord
bool setStatusWord(MissingETBase::Types::bitmask_t sw=MissingETBase::Status::clearedStatus())
Set the statusword of a MET term.
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::MissingET_v1::setName
void setName(const std::string &name)
Set the name of the MET object.
xAOD::MissingETComposition::getComponent
static const MissingETComponent * getComponent(const MissingETComponentMap *pMap, const IParticle *pPart)
Access non-modifiable contribution object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:122
xAOD::MissingETComposition::insert
static bool insert(MissingETComponentMap *pMap, const MissingET *pMET, const IParticle *pPart, MissingETBase::Types::weight_t weight=MissingETBase::Types::weight_t())
Insert contributing signal or physics object by pointer, with optional kinematic weight object.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:42
MissingETBase::Status::Correction::PileupTrack
@ PileupTrack
Reconstructed track based pile-up correction.
met::METTrackFilterTool::m_trk_doPVsel
bool m_trk_doPVsel
Definition: METTrackFilterTool.h:101
xAOD::CaloIsolation
Definition: IsolationCommon.h:22
EgammaxAODHelpers.h
met
Definition: IMETSignificance.h:24
met::METTrackFilterTool::m_doVxSep
bool m_doVxSep
Definition: METTrackFilterTool.h:108
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
xAOD::Iso::etcone20
@ etcone20
Calorimeter isolation.
Definition: IsolationType.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::CaloIsolation::coreCorrections
std::map< Iso::IsolationCaloCorrection, std::map< Iso::IsolationCorrectionParameter, float > > coreCorrections
Definition: IsolationCommon.h:26
xAOD::EgammaHelpers::isElectron
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Definition: EgammaxAODHelpers.cxx:13
PyAlgorithmExample.EoverP
int EoverP
Definition: PyAlgorithmExample.py:122
MissingETAuxContainer.h
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
met::METTrackFilterTool::m_forTrackPtThr
double m_forTrackPtThr
Definition: METTrackFilterTool.h:115
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
met::METTrackFilterTool::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: METTrackFilterTool.cxx:75
met::METTrackFilterTool::m_caloIsolationTool
ToolHandle< xAOD::ICaloTopoClusterIsolationTool > m_caloIsolationTool
Definition: METTrackFilterTool.h:96
met::METTrackFilterTool::m_mu_inputkey
SG::ReadHandleKey< xAOD::MuonContainer > m_mu_inputkey
Definition: METTrackFilterTool.h:104
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
met::METTrackFilterTool::isGoodEoverP
bool isGoodEoverP(const xAOD::TrackParticle *trk, const std::vector< const xAOD::TrackParticle * > &trkList, const xAOD::CaloClusterContainer *clusters) const
Definition: METTrackFilterTool.cxx:117
xAOD::MissingET_v1::name
const std::string & name() const
Identifier getters.
MissingET
Athena::TPCnvVers::Old Athena::TPCnvVers::Old MissingET
Definition: RecTPCnv.cxx:64
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
xAOD::TrackIsolation
Definition: IsolationCommon.h:33
met::METTrackFilterTool::finalize
StatusCode finalize()
Definition: METTrackFilterTool.cxx:96
xAOD::MissingET_v1::add
void add(const IParticle *particle)
Add particle kinematics to MET.
Definition: MissingET_v1.cxx:77
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
xAOD::VxType::PileUp
@ PileUp
Pile-up vertex.
Definition: TrackingPrimitives.h:573
xAOD::TrackParticle_v1::qOverP
float qOverP() const
Returns the parameter.
xAOD::TrackParticle_v1::definingParametersCovMatrix
const ParametersCovMatrix_t definingParametersCovMatrix() const
Returns the 5x5 symmetric matrix containing the defining parameters covariance matrix.
Definition: TrackParticle_v1.cxx:246
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
met::METTrackFilterTool::m_cenTrackPtThr
double m_cenTrackPtThr
Definition: METTrackFilterTool.h:114
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
xAOD::CaloIsolation::etcones
std::vector< float > etcones
Definition: IsolationCommon.h:30
xAOD::Iso::coreCone
@ coreCone
core energy (in dR<0.1).
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:29
met::METTrackFilterTool::isElTrack
static bool isElTrack(const xAOD::TrackParticle &trk, const std::vector< const xAOD::Electron * > &electrons, size_t &el_index)
Definition: METTrackFilterTool.cxx:370
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
xAOD::MissingETComposition::add
static bool add(MissingETComponentMap *pMap, const MissingET *pMET, MissingETBase::Types::bitmask_t sw=MissingETBase::Status::clearedStatus())
Adding a MissingET object to the map.
Definition: Event/xAOD/xAODMissingET/Root/MissingETComposition.cxx:29
xAOD::EgammaHelpers::getOriginalTrackParticleFromGSF
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...
Definition: ElectronxAODHelpers.cxx:22
xAOD::MissingET_v1::source
MissingETBase::Types::bitmask_t source() const
MET object source tag.
met::METTrackFilterTool::selectElectrons
static void selectElectrons(const xAOD::ElectronContainer &elCont, std::vector< const xAOD::Electron * > &electrons)
Definition: METTrackFilterTool.cxx:393
xAOD::Electron_v1
Definition: Electron_v1.h:34
xAOD::TrackIsolation::ptcones
std::vector< float > ptcones
Definition: IsolationCommon.h:36
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
met::METTrackFilterTool::m_pv_inputkey
SG::ReadHandleKey< xAOD::VertexContainer > m_pv_inputkey
Definition: METTrackFilterTool.h:105
VertexContainer.h
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::CaloCorrection
Definition: IsolationCommon.h:14
CaloCondBlobAlgs_fillNoiseFromASCII.author
string author
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:26
isLepton
bool isLepton(const T &p)
APID: the fourth generation leptons are leptons.
Definition: AtlasPID.h:130
METTrackFilterTool.h
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
met::METTrackFilterTool::m_doLepRecovery
bool m_doLepRecovery
Definition: METTrackFilterTool.h:109
python.changerun.pv
pv
Definition: changerun.py:81
CaloClusterContainer.h
xAOD::MissingETComponent_v1::Weight
Kinematic weight descriptor.
Definition: MissingETComponent_v1.h:28
met::METTrackFilterTool::m_useIsolationTools
bool m_useIsolationTools
Definition: METTrackFilterTool.h:110
met::METTrackFilterTool::~METTrackFilterTool
~METTrackFilterTool()
Electron.h
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
SG::AuxElement::container
const SG::AuxVectorData * container() const
Return the container holding this element.
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
met::METRefinerTool
Definition: METRefinerTool.h:39
xAOD::P4Helpers::isInDeltaR
bool isInDeltaR(const xAOD::IParticle &p1, const xAOD::IParticle &p2, double dR, bool useRapidity=true)
Check if 2 xAOD::IParticle are in a cone.
Definition: xAODP4Helpers.h:174
python.PyAthena.obj
obj
Definition: PyAthena.py:135
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
python.Dumpers.etcone10
int etcone10
Definition: Dumpers.py:41
MissingETBase::Source::softEvent
static Types::bitmask_t softEvent(Region reg=Region::FullAcceptance)
Standard MET term from reconstructed soft event.
Definition: MissingETBase.h:264
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
MissingETComposition.h
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
TrackParticleContainer.h
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
xAOD::CaloCorrection::calobitset
Iso::IsolationCaloCorrectionBitset calobitset
Definition: IsolationCommon.h:15
xAOD::MissingETComponent_v1
MET component descriptor contains object links and corresponding parameters.
Definition: MissingETComponent_v1.h:24
met::METRefinerTool::m_useRapidity
bool m_useRapidity
Definition: METRefinerTool.h:64
met::METTrackFilterTool::m_el_inputkey
SG::ReadHandleKey< xAOD::ElectronContainer > m_el_inputkey
Definition: METTrackFilterTool.h:103
isMuon
bool isMuon(const T &p)
Definition: AtlasPID.h:145
beamspotman.basename
basename
Definition: beamspotman.py:640
met::METRefinerTool::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: METRefinerTool.cxx:52