 |
ATLAS Offline Software
|
Go to the documentation of this file.
12 return decVtx->
v4().Vect().Mag() / decVtx->
genvecV4().Gamma();
17 double logRatio{-99.};
23 else logRatio = std::log10(
double(1./EMF - 1.));
40 if (!mother)
return {};
42 std::vector<const xAOD::TruthParticle*>
children{};
46 if (!child || child == mother)
continue;
57 std::vector<const xAOD::TruthParticle*> stableChildren;
63 bool particleIsStable = findOnlyGenStable ?
particle->isGenStable() :
particle->isStable();
64 if (particleIsStable) {
66 return stableChildren;
75 if (std::none_of(stableChildren.begin(), stableChildren.end(), [&](
const auto&
x) {return x==c;})) stableChildren.push_back(
c);
79 return stableChildren;
86 std::unordered_set<const xAOD::TruthParticle*> visited;
95 std::set<const xAOD::TruthVertex*> seenVertices;
98 size_t maxChildren{0};
99 size_t maxDecayDepth{0};
102 if (!
tp || !
tp->isStable() ||
jet->p4().DeltaR(
tp->p4()) > 0.4)
continue;
108 if (decayDepth > 200)
break;
113 if (!prodVtx || seenVertices.count(prodVtx))
break;
114 if (prodVtx->
v4().Mag2() < 0)
break;
115 seenVertices.insert(prodVtx);
120 if ((nChildren >= 2) && ((nChildren > maxChildren) || (mostActiveVertex && nChildren == maxChildren && prodVtx->
v4().Vect().Mag2() > mostActiveVertex->
v4().Vect().Mag2()))) {
121 mostActiveVertex = prodVtx;
122 maxChildren = nChildren;
123 maxDecayDepth = decayDepth;
128 JetVtxApprox jetVtx{mostActiveVertex, maxChildren, maxDecayDepth};
135 double trackIso_pT,
double softTrackIso_R,
double jetIso_pT,
double jetIso_LogRatio){
146 double hardTrack_mindR{99.};
150 if(
Track->pt() >= trackIso_pT && dR < hardTrack_mindR) hardTrack_mindR = dR;
155 iso.track_mindR = hardTrack_mindR != 99. ? hardTrack_mindR : -1.;
156 iso.track_pTsum = softTrack_pTsum.mag() != 0. ? softTrack_pTsum.perp()/
Gaudi::Units::GeV : -1.;
159 double jet_mindR{99.};
161 if(
Jet->
pt() < jetIso_pT)
continue;
164 if(logratio >= jetIso_LogRatio)
continue;
171 iso.jet_mindR = jet_mindR != 99. ? jet_mindR : -1.;
size_t nOutgoingParticles() const
Get the number of outgoing particles.
std::vector< const xAOD::TrackParticle * > Tracks
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
virtual double eta() const
pseudo rapidity
Basic data class defines behavior for all Jet objects The Jet class is the principal data class for...
double getCTau(const xAOD::TruthVertex *decVtx)
const Amg::Vector3D & position() const
Returns the 3-pos.
double getCalEnergyLogRatio(double EMF)
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
FourVec_t v4() const
The full 4-vector of the vertex.
bool isPhysical(const T &p)
Identify if the particle is physical, i.e. is stable or decayed.
bool is_simulation_particle(const T &p)
Method to establish if a particle (or barcode) was created during the simulation (TODO update to be s...
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Class describing a truth particle in the MC record.
bool comparePt(const xAOD::TruthParticle *part1, const xAOD::TruthParticle *part2)
const TruthParticle_v1 * incomingParticle(size_t index) const
Get one of the incoming particles.
virtual double phi() const
phi in [-pi,pi[
bool greater_equal(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Class describing a truth vertex in the MC record.
size_t nChildren() const
Number of children of this particle.
const TruthParticle_v1 * child(size_t i) const
Retrieve the i-th mother (TruthParticle) of this TruthParticle.
Eigen::Matrix< double, 3, 1 > Vector3D
Class describing a Vertex.
std::vector< const xAOD::TruthParticle * > getStableChildren(const xAOD::TruthParticle *particle, bool findOnlyGenStable)
VtxIso getIso(const xAOD::Vertex *vtx, const xAOD::TrackParticleContainer &Tracks, const xAOD::JetContainer &Jets, double trackIso_pT, double softTrackIso_R, double jetIso_pT, double jetIso_LogRatio)
virtual double pt() const
transverse momentum
Class describing a TrackParticle.
GenVecFourVec_t genvecV4() const
The full 4-vector of the particle : GenVector form.
void zero(TH2 *h)
zero the contents of a 2d histogram
JetVtxApprox getJetVtxApprox(const xAOD::Jet *jet, const xAOD::TruthParticleContainer &truthParticles)
std::vector< const xAOD::TruthParticle * > getStableChildrenRecursive(const xAOD::TruthParticle *particle, bool findOnlyGenStable, std::unordered_set< const xAOD::TruthParticle * > &visited)
std::vector< const xAOD::TruthParticle * > getChildren(const xAOD::TruthParticle *mother)