ATLAS Offline Software
Public Member Functions | List of all members
DerivationFramework::AugOriginalCounts Class Reference

Augmentation with primary vertex counts (before thinning) More...

#include <AugOriginalCounts.h>

Inheritance diagram for DerivationFramework::AugOriginalCounts:
Collaboration diagram for DerivationFramework::AugOriginalCounts:

Public Member Functions

 AugOriginalCounts (const std::string &t, const std::string &n, const IInterface *p)
 Main constructor. More...
 
virtual StatusCode addBranches () const override
 Main method called for each event. More...
 
virtual StatusCode initialize () override
 

Private Attributes

job options
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigPVNTracks {this, "DO_NOT_SET1", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNTracksKeys {this, "DO_NOT_SET2", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNTracksLRTKeys {this, "DO_NOT_SET22", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNtype0 {this, "DO_NOT_SET3", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNtype1 {this, "DO_NOT_SET4", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNtype2 {this, "DO_NOT_SET5", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNtype3 {this, "DO_NOT_SET6", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::EventInfom_OrigNtypeUnknown {this, "DO_NOT_SET7", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::VertexContainerm_OrigSqrtPt2Sum {this, "DO_NOT_SET8", "", "internal property"}
 
SG::WriteDecorHandleKey< xAOD::VertexContainerm_d_nPVTracks {this, "DO_NOT_SET9", "", "internal property"}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_TrackContainername
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_TrackContainerLRTname
 
SG::ReadHandleKey< xAOD::VertexContainerm_PVContainername
 
bool m_addPVCountsByType
 
bool m_addNTracksToPVs
 
bool m_addSqrtPt2SumToPVs
 

Detailed Description

Augmentation with primary vertex counts (before thinning)

This tool adds primary vertex counts and track counts to the EventInfo container in order to preserve them in case the primary vertex or track collections are thinned.

Job options

Name Description
TrackContainer name of the TrackParticle container to be used
VertexContainer name of the Vertex container to be used
AddPVCountsByType add PV counts by PV type (default: false)

Definition at line 60 of file AugOriginalCounts.h.

Constructor & Destructor Documentation

◆ AugOriginalCounts()

DerivationFramework::AugOriginalCounts::AugOriginalCounts ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Main constructor.

Definition at line 17 of file AugOriginalCounts.cxx.

19  :
20  base_class(t,n,p),
21  m_TrackContainername("InDetTrackParticles"),
22  m_TrackContainerLRTname("InDetLargeD0TrackParticles"),
23  m_PVContainername("PrimaryVertices")
24  {
25 
26  declareProperty("TrackContainer", m_TrackContainername);
27  declareProperty("TrackLRTContainer", m_TrackContainerLRTname);
28  declareProperty("VertexContainer", m_PVContainername);
29  declareProperty("AddPVCountsByType", m_addPVCountsByType = false);
30  // decorate PVs with track counts and/or sqrt(sum(pt^2))
31  // (needed if track collection will be thinned)
32  declareProperty("AddNTracksToPVs", m_addNTracksToPVs = false);
33  declareProperty("AddSqrtPt2SumToPVs", m_addSqrtPt2SumToPVs = false);
34  }

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::AugOriginalCounts::addBranches ( ) const
overridevirtual

Main method called for each event.

Definition at line 89 of file AugOriginalCounts.cxx.

90  {
91 
92  const EventContext& ctx = Gaudi::Hive::currentContext();
93 
94  if(!m_PVContainername.empty()){
95 
98  PV_count(0) = vertices->size();
99 
100  if ( m_addPVCountsByType ) {
106 
107  // now count
108  constexpr int nvtypes = 5;
109  int nvtc[] = {0, 0, 0, 0, 0};
110  for (auto vtx : *vertices) {
111  VxType::VertexType vt = vtx->vertexType();
112  if ( vt >=0 && vt < nvtypes ) {
113  nvtc[vt]++; // vertex types 0 - 3
114  } else {
115  nvtc[nvtypes-1]++; // unknown
116  }
117  }
118  PV0_count(0) = nvtc[0];
119  PV1_count(0) = nvtc[1];
120  PV2_count(0) = nvtc[2];
121  PV3_count(0) = nvtc[3];
122  PVUnk_count(0) = nvtc[4];
123  } // m_addPVCountsByType
124 
125  // decorate PVs with track counts
126  // (needed if track collection will be thinned)
127  if ( m_addNTracksToPVs ) {
129  for (auto vtx : *vertices) {
130  d_nPVTracks(*vtx) = (int)vtx->nTrackParticles();
131  }
132  } // m_addNTracksToPVs
133 
134  // decorate PVs with sqrt(sum(pt^2)) of tracks
135  // (needed if track collection will be thinned)
136  if ( m_addSqrtPt2SumToPVs ) {
138  for (auto vtx : *vertices) {
139  float sqrtPt2Sum(0.);
140  for (auto tp : vtx->trackParticleLinks()) {
141  sqrtPt2Sum += std::sqrt(pow((*tp)->pt(),2));
142  }
143  d_pvSqrtPt2Sum(*vtx) = sqrtPt2Sum;
144  }
145  } // m_addSqrtPt2SumToPVs
146  }
147 
151  track_count(0) = tracks->size();
152  }
156  track_count(0) = tracks->size();
157  }
158 
159  return StatusCode::SUCCESS;
160  }

◆ initialize()

StatusCode DerivationFramework::AugOriginalCounts::initialize ( )
overridevirtual

Definition at line 36 of file AugOriginalCounts.cxx.

37  {
41 
42  if(!m_PVContainername.empty()){
43  std::string pvstring = "EventInfo.OriginalCount_";
44  pvstring += m_PVContainername.key();
45  m_OrigPVNTracks = std::move(pvstring);
47  }
48  if ( m_addPVCountsByType ) {
49  std::string pv0string = "EventInfo.OriginalCount_type0_"+m_PVContainername.key();
50  std::string pv1string = "EventInfo.OriginalCount_type1_"+m_PVContainername.key();
51  std::string pv2string = "EventInfo.OriginalCount_type2_"+m_PVContainername.key();
52  std::string pv3string = "EventInfo.OriginalCount_type3_"+m_PVContainername.key();
53  std::string pvUstring = "EventInfo.OriginalCount_typeUnknown_"+m_PVContainername.key();
54  m_OrigNtype0 = std::move(pv0string);
55  m_OrigNtype1 = std::move(pv1string);
56  m_OrigNtype2 = std::move(pv2string);
57  m_OrigNtype3 = std::move(pv3string);
58  m_OrigNtypeUnknown = std::move(pvUstring);
64  }
65  if ( m_addSqrtPt2SumToPVs ) {
66  std::string trackcon = m_PVContainername.key();
67  trackcon += ".OriginalCount_";
68  trackcon += m_TrackContainername.key();
69  m_OrigSqrtPt2Sum = std::move(trackcon);
70  ATH_CHECK(m_OrigSqrtPt2Sum.initialize());
71  }
72  if ( m_addNTracksToPVs ) {
73  std::string name = m_PVContainername.key();
74  name+= ".OrigNTracks";
75  m_d_nPVTracks = std::move(name);
76  ATH_CHECK(m_d_nPVTracks.initialize());
77  }
79  m_OrigNTracksKeys = "EventInfo.OriginalCount_" + m_TrackContainername.key();
81  }
83  m_OrigNTracksLRTKeys = "EventInfo.OriginalCount_" + m_TrackContainerLRTname.key();
85  }
86  return StatusCode::SUCCESS;
87  }

Member Data Documentation

◆ m_addNTracksToPVs

bool DerivationFramework::AugOriginalCounts::m_addNTracksToPVs
private

Definition at line 87 of file AugOriginalCounts.h.

◆ m_addPVCountsByType

bool DerivationFramework::AugOriginalCounts::m_addPVCountsByType
private

Definition at line 86 of file AugOriginalCounts.h.

◆ m_addSqrtPt2SumToPVs

bool DerivationFramework::AugOriginalCounts::m_addSqrtPt2SumToPVs
private

Definition at line 88 of file AugOriginalCounts.h.

◆ m_d_nPVTracks

SG::WriteDecorHandleKey<xAOD::VertexContainer> DerivationFramework::AugOriginalCounts::m_d_nPVTracks {this, "DO_NOT_SET9", "", "internal property"}
private

Definition at line 82 of file AugOriginalCounts.h.

◆ m_OrigNTracksKeys

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNTracksKeys {this, "DO_NOT_SET2", "", "internal property"}
private

Definition at line 73 of file AugOriginalCounts.h.

◆ m_OrigNTracksLRTKeys

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNTracksLRTKeys {this, "DO_NOT_SET22", "", "internal property"}
private

Definition at line 74 of file AugOriginalCounts.h.

◆ m_OrigNtype0

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNtype0 {this, "DO_NOT_SET3", "", "internal property"}
private

Definition at line 75 of file AugOriginalCounts.h.

◆ m_OrigNtype1

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNtype1 {this, "DO_NOT_SET4", "", "internal property"}
private

Definition at line 76 of file AugOriginalCounts.h.

◆ m_OrigNtype2

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNtype2 {this, "DO_NOT_SET5", "", "internal property"}
private

Definition at line 77 of file AugOriginalCounts.h.

◆ m_OrigNtype3

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNtype3 {this, "DO_NOT_SET6", "", "internal property"}
private

Definition at line 78 of file AugOriginalCounts.h.

◆ m_OrigNtypeUnknown

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigNtypeUnknown {this, "DO_NOT_SET7", "", "internal property"}
private

Definition at line 79 of file AugOriginalCounts.h.

◆ m_OrigPVNTracks

SG::WriteDecorHandleKey<xAOD::EventInfo> DerivationFramework::AugOriginalCounts::m_OrigPVNTracks {this, "DO_NOT_SET1", "", "internal property"}
private

Definition at line 72 of file AugOriginalCounts.h.

◆ m_OrigSqrtPt2Sum

SG::WriteDecorHandleKey<xAOD::VertexContainer> DerivationFramework::AugOriginalCounts::m_OrigSqrtPt2Sum {this, "DO_NOT_SET8", "", "internal property"}
private

Definition at line 81 of file AugOriginalCounts.h.

◆ m_PVContainername

SG::ReadHandleKey<xAOD::VertexContainer> DerivationFramework::AugOriginalCounts::m_PVContainername
private

Definition at line 85 of file AugOriginalCounts.h.

◆ m_TrackContainerLRTname

SG::ReadHandleKey<xAOD::TrackParticleContainer> DerivationFramework::AugOriginalCounts::m_TrackContainerLRTname
private

Definition at line 84 of file AugOriginalCounts.h.

◆ m_TrackContainername

SG::ReadHandleKey<xAOD::TrackParticleContainer> DerivationFramework::AugOriginalCounts::m_TrackContainername
private

Definition at line 83 of file AugOriginalCounts.h.


The documentation for this class was generated from the following files:
DerivationFramework::AugOriginalCounts::m_PVContainername
SG::ReadHandleKey< xAOD::VertexContainer > m_PVContainername
Definition: AugOriginalCounts.h:85
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
DerivationFramework::AugOriginalCounts::m_OrigPVNTracks
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigPVNTracks
Definition: AugOriginalCounts.h:72
ParticleTest.tp
tp
Definition: ParticleTest.py:25
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
DerivationFramework::AugOriginalCounts::m_OrigNtype1
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNtype1
Definition: AugOriginalCounts.h:76
xAOD::VxType::VertexType
VertexType
Vertex types.
Definition: TrackingPrimitives.h:570
DerivationFramework::AugOriginalCounts::m_addNTracksToPVs
bool m_addNTracksToPVs
Definition: AugOriginalCounts.h:87
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
DerivationFramework::AugOriginalCounts::m_OrigNTracksLRTKeys
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNTracksLRTKeys
Definition: AugOriginalCounts.h:74
DerivationFramework::AugOriginalCounts::m_OrigNtypeUnknown
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNtypeUnknown
Definition: AugOriginalCounts.h:79
beamspotman.n
n
Definition: beamspotman.py:731
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
DerivationFramework::AugOriginalCounts::m_addPVCountsByType
bool m_addPVCountsByType
Definition: AugOriginalCounts.h:86
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::AugOriginalCounts::m_OrigNtype3
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNtype3
Definition: AugOriginalCounts.h:78
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
DerivationFramework::AugOriginalCounts::m_d_nPVTracks
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_d_nPVTracks
Definition: AugOriginalCounts.h:82
DerivationFramework::AugOriginalCounts::m_addSqrtPt2SumToPVs
bool m_addSqrtPt2SumToPVs
Definition: AugOriginalCounts.h:88
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DerivationFramework::AugOriginalCounts::m_OrigNTracksKeys
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNTracksKeys
Definition: AugOriginalCounts.h:73
DerivationFramework::AugOriginalCounts::m_OrigNtype2
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNtype2
Definition: AugOriginalCounts.h:77
DerivationFramework::AugOriginalCounts::m_OrigNtype0
SG::WriteDecorHandleKey< xAOD::EventInfo > m_OrigNtype0
Definition: AugOriginalCounts.h:75
validateBDTTau.vt
vt
Definition: validateBDTTau.py:43
DerivationFramework::AugOriginalCounts::m_TrackContainerLRTname
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackContainerLRTname
Definition: AugOriginalCounts.h:84
DerivationFramework::AugOriginalCounts::m_OrigSqrtPt2Sum
SG::WriteDecorHandleKey< xAOD::VertexContainer > m_OrigSqrtPt2Sum
Definition: AugOriginalCounts.h:81
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
DerivationFramework::AugOriginalCounts::m_TrackContainername
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackContainername
Definition: AugOriginalCounts.h:83
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30