ATLAS Offline Software
InsituTrackTools.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 #include <cmath>
9 
10 namespace Muon {
11  InsituTrackTools::InsituTrackTools(const std::string& t, const std::string& n, const IInterface* p ):
12  AthAlgTool(t,n,p)
13  {
14  declareInterface<IInsituTrackTools>(this);
15 
16  declareProperty("InnerTrackContainerName", m_InnerTrackContainerName = "TrackParticleCandidate");
17  declareProperty("ConeJetContainerName", m_ConeJetContainerName = "Cone4H1TowerJets");
18  declareProperty("m_MaximalMassDifferenceToZBoson", m_MaximalMassDifferenceToZBoson = 20000.); // MeV
19  declareProperty("m_MaximalPTofTracksInCone", m_MaximalPTofTracksInCone = 15000.); // MeV
20  declareProperty("m_MaximalNumberofTracksInCone", m_MaximalNumberofTracksInCone = 5);
21  declareProperty("m_MaximalJetEnergyInCone", m_MaximalJetEnergyInCone = 25000.); // MeV
22 
23  }
24 
26  {
28  if (isCloseTrack(track1, track2)==true) return false;
29 
31  if (std::abs(getInvariantMass(track1, track2)-91187.6)>m_MaximalMassDifferenceToZBoson) return false;
32 
33  if ((isIsolatedTrack(track1)==true) && (isIsolatedTrack(track2)==true)) return true;
34  return false;
35  }
36 
38  {
39  float TrackPTIsolation1 = 0.0;
40  int NIsolation1 = 0;
41  getTrackIsolation(track1, TrackPTIsolation1, NIsolation1);
42 
43  if ((TrackPTIsolation1<m_MaximalPTofTracksInCone) && (NIsolation1<m_MaximalNumberofTracksInCone)) return true;
44  return false;
45  }
46 
48  {
49  float JetIsolation1 = getJetIsolation(track1);
50  float TrackPTIsolation1 = 0.0;
51  int NIsolation1 = 0;
52  getTrackIsolation(track1, TrackPTIsolation1, NIsolation1);
53 
54  if ((JetIsolation1<m_MaximalJetEnergyInCone) && (TrackPTIsolation1<m_MaximalPTofTracksInCone) && (NIsolation1<m_MaximalNumberofTracksInCone)) return true;
55  return false;
56  }
57 
59  {
60  TLorentzVector tvec1;
61  TLorentzVector tvec2;
62  tvec1.SetPtEtaPhiM(track1->pt(), track1->eta(), track1->phi(), ParticleConstants::muonMassInMeV);
63  tvec2.SetPtEtaPhiM(track2->pt(), track2->eta(), track2->phi(), ParticleConstants::muonMassInMeV);
64  return (tvec1+tvec2).M();
65  }
66 
68  {
69  return true;
70  }
71 
73  {
74  return true;
75  }
76 
78  {
79  return false;
80  }
81 
83  {
84  if (getDistance(track1, track2)<0.4) return true;
85  return false;
86  }
87 
89  {
90  double dphi = std::abs(track1->phi()-track2->phi());
91  if (dphi>M_PI) dphi = std::abs(dphi-2.0*M_PI);
92  return std::sqrt(std::pow(track1->eta()-track2->eta(),2)+std::pow(dphi,2));
93  }
94 
95  bool InsituTrackTools::getTrackIsolation(const INavigable4Momentum *trackParticle, float &PtIsolation, int &NIsolation)
96  {
97  const Rec::TrackParticleContainer* trackTES=nullptr;
98  StatusCode sc = evtStore()->retrieve(trackTES, m_InnerTrackContainerName);
99  if (sc.isFailure() || !trackTES) return false;
100 
101  NIsolation = 0;
102  PtIsolation = 0.0;
103 
104  double track_eta = trackParticle->eta();
105  double track_phi = trackParticle->phi();
106 
107  double id_eta = 0.0;
108  double id_phi = 0.0;
109  double dr = 0.0;
111  Rec::TrackParticleContainer::const_iterator trackItr = trackTES->begin();
112  Rec::TrackParticleContainer::const_iterator trackItrE = trackTES->end();
113  for (; trackItr != trackItrE; ++trackItr)
114  {
115 
116  id_eta = (*trackItr)->eta();
117  id_phi = (*trackItr)->phi();
118 
119  dr = std::sqrt(std::pow(id_eta-track_eta,2)+std::pow(id_phi-track_phi,2));
120  if ((0.01<dr) && (dr<0.4))
121  {
122  NIsolation++;
123  PtIsolation+=(*trackItr)->pt();
124  }
125  }
126 
127  return true;
128  }
129 
131  {
132  float PtIsolation;
133  int NIsolation;
134  if (getTrackIsolation(trackParticle, PtIsolation, NIsolation)==true) return PtIsolation;
135  return -1.0;
136  }
137 
139  {
140  float PtIsolation;
141  int NIsolation;
142  if (getTrackIsolation(trackParticle, PtIsolation, NIsolation)==true) return NIsolation;
143  return -1;
144  }
145 
146 
148  {
149  const JetCollection* jetTES = nullptr; //ESD Key
150  StatusCode sc = evtStore()->retrieve(jetTES, m_ConeJetContainerName);
151  if (sc.isFailure() || !jetTES) return -1.;
152 
153  double track_eta = trackParticle->eta();
154  double track_phi = trackParticle->phi();
155 
156  double jet_energy = 0.0;
157  double jet_eta = 0.0;
158  double jet_phi = 0.0;
159  double dr = 0.0;
160 
162  JetCollection::const_iterator jetItr = jetTES->begin();
163  JetCollection::const_iterator jetItrE = jetTES->end();
164 
165  for(; jetItr != jetItrE; ++jetItr)
166  {
167  jet_eta = (*jetItr)->eta();
168  jet_phi = (*jetItr)->phi();
169 
170  dr = std::sqrt(std::pow(jet_eta-track_eta,2)+std::pow(jet_phi-track_phi,2));
171  if ((0.01<dr) && (dr<0.4)) jet_energy+=(*jetItr)->pt();
172  }
173 
174  return jet_energy;
175  }
176 }//namespace
Muon::InsituTrackTools::isTriggeredMuon
virtual bool isTriggeredMuon(const INavigable4Momentum *track1) override
Definition: InsituTrackTools.cxx:67
Muon::InsituTrackTools::getTrackPtIsolation
virtual float getTrackPtIsolation(const INavigable4Momentum *trackParticle) override
Definition: InsituTrackTools.cxx:130
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Muon::InsituTrackTools::isTriggeredElectron
virtual bool isTriggeredElectron(const INavigable4Momentum *track1) override
Definition: InsituTrackTools.cxx:72
Muon::InsituTrackTools::getInvariantMass
virtual double getInvariantMass(const INavigable4Momentum *track1, const INavigable4Momentum *track2) override
Definition: InsituTrackTools.cxx:58
INavigable4Momentum.h
Muon::InsituTrackTools::m_ConeJetContainerName
std::string m_ConeJetContainerName
Definition: InsituTrackTools.h:85
ParticleConstants::PDG2011::muonMassInMeV
constexpr double muonMassInMeV
the mass of the muon (in MeV)
Definition: ParticleConstants.h:29
M_PI
#define M_PI
Definition: ActiveFraction.h:11
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:111
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
Muon::InsituTrackTools::getDistance
virtual double getDistance(const INavigable4Momentum *track1, const INavigable4Momentum *track2) override
Definition: InsituTrackTools.cxx:88
I4Momentum::pt
virtual double pt() const =0
transverse momentum
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
ParticleConstants.h
Muon::InsituTrackTools::m_InnerTrackContainerName
std::string m_InnerTrackContainerName
member variables for algorithm properties:
Definition: InsituTrackTools.h:84
beamspotman.n
n
Definition: beamspotman.py:729
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
I4Momentum::eta
virtual double eta() const =0
pseudo rapidity
Muon::InsituTrackTools::m_MaximalMassDifferenceToZBoson
double m_MaximalMassDifferenceToZBoson
Cut variables.
Definition: InsituTrackTools.h:88
InsituTrackTools.h
Muon::InsituTrackTools::getTrackIsolation
virtual bool getTrackIsolation(const INavigable4Momentum *trackParticle, float &PtIsolation, int &NIsolation) override
Definition: InsituTrackTools.cxx:95
I4Momentum::phi
virtual double phi() const =0
phi in [-pi,pi[
Muon::InsituTrackTools::isCloseTrack
virtual bool isCloseTrack(const INavigable4Momentum *track1, const INavigable4Momentum *track2) override
Definition: InsituTrackTools.cxx:82
Muon::InsituTrackTools::m_MaximalJetEnergyInCone
double m_MaximalJetEnergyInCone
Definition: InsituTrackTools.h:91
Rec::TrackParticleContainer
Definition: Reconstruction/Particle/Particle/TrackParticleContainer.h:33
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
Muon::InsituTrackTools::InsituTrackTools
InsituTrackTools(const std::string &, const std::string &, const IInterface *)
Definition: InsituTrackTools.cxx:11
Muon::InsituTrackTools::isZBosonCandidate
virtual bool isZBosonCandidate(const INavigable4Momentum *track1, const INavigable4Momentum *track2) override
Definition: InsituTrackTools.cxx:25
JetCollection
Container for Jets
Definition: JetCollection.h:30
INavigable4Momentum
Definition: INavigable4Momentum.h:21
Muon::InsituTrackTools::isIsolatedTrack
virtual bool isIsolatedTrack(const INavigable4Momentum *track1) override
Definition: InsituTrackTools.cxx:37
Muon::InsituTrackTools::m_MaximalNumberofTracksInCone
double m_MaximalNumberofTracksInCone
Definition: InsituTrackTools.h:90
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
Muon::InsituTrackTools::getJetIsolation
virtual float getJetIsolation(const INavigable4Momentum *trackParticle) override
Definition: InsituTrackTools.cxx:147
AthAlgTool
Definition: AthAlgTool.h:26
Muon::InsituTrackTools::isIsolatedMuon
virtual bool isIsolatedMuon(const INavigable4Momentum *track1) override
Definition: InsituTrackTools.cxx:47
Muon::InsituTrackTools::m_MaximalPTofTracksInCone
double m_MaximalPTofTracksInCone
Definition: InsituTrackTools.h:89
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
Muon::InsituTrackTools::getNTrackIsolation
virtual int getNTrackIsolation(const INavigable4Momentum *trackParticle) override
Definition: InsituTrackTools.cxx:138
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Muon::InsituTrackTools::isElectronCandidate
virtual bool isElectronCandidate(const INavigable4Momentum *track1) override
Definition: InsituTrackTools.cxx:77