ATLAS Offline Software
MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MSVTXVALIDATIONALGUTILS_H
6 #define MSVTXVALIDATIONALGUTILS_H
7 
8 #include <vector>
9 #include <cmath>
10 #include <unordered_set>
11 #include <algorithm>
12 
13 #include "CxxUtils/fpcompare.h"
14 #include "GaudiKernel/SystemOfUnits.h"
19 
24 #include "xAODJet/JetContainer.h"
25 
26 #include <TLorentzVector.h>
27 
28 
29 namespace MSVtxValidationAlgUtils {
30 
31  // particle properties
32  double getCTau(const xAOD::TruthVertex *decVtx);
33  // takes the fraction of energy deposited in the ECal and computes the log10 of the ratio between the energy deposited in the ECal and HCal
34  double getCalEnergyLogRatio(double EMF);
36 
37  // decay chain utils
38  std::vector<const xAOD::TruthParticle*> getChildren(const xAOD::TruthParticle* mother);
39  std::vector<const xAOD::TruthParticle*> getStableChildren(const xAOD::TruthParticle* particle, bool findOnlyGenStable);
40  std::vector<const xAOD::TruthParticle*> getStableChildrenRecursive(const xAOD::TruthParticle* particle, bool findOnlyGenStable, std::unordered_set<const xAOD::TruthParticle*>& visited);
41  std::vector<const xAOD::TruthParticle*> getDecayProducts(const xAOD::TruthVertex* vtx);
42 
43  // active vertices associated with jets
44  struct ActiveVertex {
45  const xAOD::TruthVertex* vtx{nullptr};
46  // from the four vector such of the direct decay products of the vertex
47  Double_t vtxEnergy{0.};
48  Double_t vtxMass{0.};
49  Double_t vtxPt{0.};
50  Double_t vtxScalarPtSum{0.}; // scalar pT sum of the direct decay products
51  // decay chain properties
52  size_t nChildren{0};
53  size_t decayDepth{0};
54  };
55 
56  std::vector<ActiveVertex> getActiveVertices(const xAOD::Jet* jet, const xAOD::TruthParticleContainer& truthParticles);
57 
58  // vertex isolation
59  struct VtxIso {
60  double track_mindR{-1.};
61  double track_pTsum{-1.};
62  double jet_mindR{-1.};
63  };
64 
66  double trackIso_pT, double softTrackIso_R, double jetIso_pT, double jetIso_LogRatio);
67 }
68 
69 #endif // MSVTXVALIDATIONALGUTILS_H
InDetGNNHardScatterSelection::getter_utils::Tracks
std::vector< const xAOD::TrackParticle * > Tracks
Definition: InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/CustomGetterUtils.h:49
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
MSVtxValidationAlgUtils::VtxIso::track_pTsum
double track_pTsum
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:61
xAODP4Helpers.h
MSVtxValidationAlgUtils::ActiveVertex::decayDepth
size_t decayDepth
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:53
MSVtxValidationAlgUtils::VtxIso::track_mindR
double track_mindR
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:60
TruthVertexContainer.h
TruthParticleContainer.h
Jets
Definition: Jets.py:1
MSVtxValidationAlgUtils::ActiveVertex::vtxScalarPtSum
Double_t vtxScalarPtSum
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:50
MSVtxValidationAlgUtils::getCTau
double getCTau(const xAOD::TruthVertex *decVtx)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:10
MSVtxValidationAlgUtils::getCalEnergyLogRatio
double getCalEnergyLogRatio(double EMF)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:16
MSVtxValidationAlgUtils::VtxIso
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:59
MSVtxValidationAlgUtils::ActiveVertex::vtxPt
Double_t vtxPt
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:49
GeoPrimitives.h
part1
Definition: part1.py:1
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
MSVtxValidationAlgUtils::comparePt
bool comparePt(const xAOD::TruthParticle *part1, const xAOD::TruthParticle *part2)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:33
fpcompare.h
Workaround x86 precision issues for FP inequality comparisons.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
part2
Definition: part2.py:1
MSVtxValidationAlgUtils::ActiveVertex::vtx
const xAOD::TruthVertex * vtx
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:45
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
MagicNumbers.h
MSVtxValidationAlgUtils::VtxIso::jet_mindR
double jet_mindR
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:62
MSVtxValidationAlgUtils::getActiveVertices
std::vector< ActiveVertex > getActiveVertices(const xAOD::Jet *jet, const xAOD::TruthParticleContainer &truthParticles)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:107
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
MSVtxValidationAlgUtils::ActiveVertex::vtxMass
Double_t vtxMass
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:48
VertexContainer.h
MSVtxValidationAlgUtils::getDecayProducts
std::vector< const xAOD::TruthParticle * > getDecayProducts(const xAOD::TruthVertex *vtx)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:91
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
MSVtxValidationAlgUtils::getStableChildren
std::vector< const xAOD::TruthParticle * > getStableChildren(const xAOD::TruthParticle *particle, bool findOnlyGenStable)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:83
MSVtxValidationAlgUtils::getIso
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)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:153
MSVtxValidationAlgUtils::ActiveVertex::nChildren
size_t nChildren
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:52
MSVtxValidationAlgUtils::ActiveVertex
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:44
MSVtxValidationAlgUtils
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:8
MSVtxValidationAlgUtils::ActiveVertex::vtxEnergy
Double_t vtxEnergy
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.h:47
TrackParticleContainer.h
HepMCHelpers.h
MSVtxValidationAlgUtils::getStableChildrenRecursive
std::vector< const xAOD::TruthParticle * > getStableChildrenRecursive(const xAOD::TruthParticle *particle, bool findOnlyGenStable, std::unordered_set< const xAOD::TruthParticle * > &visited)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:54
MSVtxValidationAlgUtils::getChildren
std::vector< const xAOD::TruthParticle * > getChildren(const xAOD::TruthParticle *mother)
Definition: MuonSpectrometer/MuonValidation/MuonVertexValidation/src/Utils.cxx:38