ATLAS Offline Software
JetRestrictedSumPtVertexWeightCalculator.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
10 #include "xAODTracking/Vertex.h"
11 #include "xAODJet/Jet.h"
12 
13 #include <vector>
14 #include <set>
15 #include <iomanip>
16 
17 namespace Trk {
18 
21 {
22  ATH_CHECK(m_jetContKey.initialize(!m_jetContKey.empty()));
23  ATH_CHECK(m_tracksInCone.retrieve());
24 
25  return StatusCode::SUCCESS;
26 } // end of initialize method
27 
30 {
31  return StatusCode::SUCCESS;
32 }
33 
34 // class constructor implementation
36  const std::string& t,
37  const std::string& n,
38  const IInterface* p)
39  : AthAlgTool(t, n, p)
40 {
41  declareInterface<IVertexWeightCalculator>(this);
42 }
43 
44 double
46  const xAOD::Vertex& vertex) const
47 {
48  //::First get the jet containers
50  if (!jetContHandle.isValid()){
51  ATH_MSG_ERROR ("HardScatterSelectionTool configured to use jet collection "<<m_jetContKey.key()<<", but collection is not found!");
52  }
53  const xAOD::JetContainer* jetCont{jetContHandle.cptr()};
54 
55  // Retrieve tracks within jet cone (cached lookup)
56  // Add to a set for comparison later
57  std::set<const xAOD::TrackParticle*> tracks_in_jets;
58  for(const xAOD::Jet* jet : *jetCont) {
59  std::vector<const xAOD::TrackParticle*> tracks_in_this_jet;
60  m_tracksInCone->particlesInCone( jet->eta(), jet->phi(), m_cone_dR, tracks_in_this_jet );
61  tracks_in_jets.insert(tracks_in_this_jet.begin(),tracks_in_this_jet.end());
62  }
63  ATH_MSG_VERBOSE("Collected " << tracks_in_jets.size() << " tracks in " << jetCont->size() << " jets");
64 
65  size_t n_selected_tracks{0};
66  double total_pt{0.}, jet_only_pt{0.};
67  ATH_MSG_DEBUG("Estimating vertex sorting score from "
68  << vertex.nTrackParticles() << " tracks at vertex.");
69  for (const auto& elTrackParticle : vertex.trackParticleLinks()) {
70 
71  if (not elTrackParticle.isValid()) {
73  "No valid link to tracks in xAOD::Vertex object. Skipping track for "
74  "signal compatibility (may be serious).");
75  continue;
76  }
77 
78  const Trk::Perigee& perigee =
79  (*elTrackParticle.cptr())->perigeeParameters();
80  float increment = 0.;
81  if (m_doSumPt2Selection) {
82  increment = std::pow(1. / perigee.parameters()[Trk::qOverP] *
83  sin(perigee.parameters()[Trk::theta]) / 1000.,
84  2);
85  } else {
86  increment = std::fabs(1. / perigee.parameters()[Trk::qOverP]) *
87  sin(perigee.parameters()[Trk::theta]) / 1000.;
88  }
89  total_pt += increment;
90 
91  if(tracks_in_jets.contains(*elTrackParticle)) {
92  ATH_MSG_VERBOSE("Accepted track with index " << (*elTrackParticle)->index() << " in jet vicinity.");
93  ++n_selected_tracks;
94  jet_only_pt += increment;
95  }
96 
97  }
98  ATH_MSG_VERBOSE("Counted " << n_selected_tracks << "/" << vertex.nTrackParticles()
99  << " towards vertex sumpt " << std::setprecision(3) << jet_only_pt << " (unrestricted sum: " << total_pt << ")");
100  return total_pt;
101 }
102 
103 }
104 
Trk::JetRestrictedSumPtVertexWeightCalculator::m_cone_dR
Gaudi::Property< float > m_cone_dR
Definition: JetRestrictedSumPtVertexWeightCalculator.h:69
Jet.h
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrackParameters.h
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
JetRestrictedSumPtVertexWeightCalculator.h
Trk::JetRestrictedSumPtVertexWeightCalculator::m_doSumPt2Selection
Gaudi::Property< bool > m_doSumPt2Selection
Flag to Set SumPt^2 not SumPt as selection criteria.
Definition: JetRestrictedSumPtVertexWeightCalculator.h:68
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::JetRestrictedSumPtVertexWeightCalculator::JetRestrictedSumPtVertexWeightCalculator
JetRestrictedSumPtVertexWeightCalculator(const std::string &t, const std::string &n, const IInterface *p)
constructor
Definition: JetRestrictedSumPtVertexWeightCalculator.cxx:35
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
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
VxTrackAtVertex.h
Trk::JetRestrictedSumPtVertexWeightCalculator::estimateSignalCompatibility
virtual double estimateSignalCompatibility(const xAOD::Vertex &vertex) const override final
WeightCalculator.
Definition: JetRestrictedSumPtVertexWeightCalculator.cxx:45
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Vertex.h
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::JetRestrictedSumPtVertexWeightCalculator::m_jetContKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetContKey
Definition: JetRestrictedSumPtVertexWeightCalculator.h:72
Trk::perigeeParameters
@ perigeeParameters
Definition: MeasurementType.h:19
Trk::JetRestrictedSumPtVertexWeightCalculator::m_tracksInCone
ToolHandle< xAOD::ITrackParticlesInConeTool > m_tracksInCone
Definition: JetRestrictedSumPtVertexWeightCalculator.h:71
TrackParticle.h
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
Trk::JetRestrictedSumPtVertexWeightCalculator::initialize
virtual StatusCode initialize() override
Definition: JetRestrictedSumPtVertexWeightCalculator.cxx:20
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
AthAlgTool
Definition: AthAlgTool.h:26
Trk::JetRestrictedSumPtVertexWeightCalculator::finalize
virtual StatusCode finalize() override
Definition: JetRestrictedSumPtVertexWeightCalculator.cxx:29