ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
InDetPhysValTruthDecoratorAlg Class Reference

#include <InDetPhysValTruthDecoratorAlg.h>

Inheritance diagram for InDetPhysValTruthDecoratorAlg:
Collaboration diagram for InDetPhysValTruthDecoratorAlg:

Public Member Functions

 InDetPhysValTruthDecoratorAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~InDetPhysValTruthDecoratorAlg ()
 
virtual StatusCode initialize ()
 
virtual StatusCode finalize ()
 
virtual StatusCode execute (const EventContext &ctx) const
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

enum  { kPixel, kSCT, kNClusterTypes }
 
enum  EDecorations {
  kDecorD0, kDecorZ0, kDecorPhi, kDecorTheta,
  kDecorZ0st, kDecorQOverP, kDecorProdR, kDecorProdZ,
  kDecorNSilHits, kNDecorators
}
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool decorateTruth (const xAOD::TruthParticle &particle, std::vector< std::pair< SG::WriteDecorHandle< xAOD::TruthParticleContainer, float >, bool > > &float_decor, const Amg::Vector3D &beamPos, const std::vector< std::array< uint16_t, kNClusterTypes > > &counts) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

PublicToolHandle< Trk::IExtrapolatorm_extrapolator {this,"Extrapolator","Trk::Extrapolator/AtlasExtrapolator",""}
 
SG::ReadDecorHandleKeyArray< xAOD::EventInfom_beamSpotDecoKey
 
PublicToolHandle< IAthSelectionToolm_truthSelectionTool {this,"TruthSelectionTool","",""}
 
std::mutex m_mutex
 
CutFlow m_cutFlow ATLAS_THREAD_SAFE
 
std::atomic< std::size_t > m_nMissingTruthParticles = 0u
 
std::atomic< bool > m_errorEmitted {false}
 
SG::ReadHandleKey< xAOD::TruthParticleContainerm_truthParticleName {this, "TruthParticleContainerName", "TruthParticles", ""}
 TruthParticle container's name needed to create decorators. More...
 
Gaudi::Property< std::string > m_prefix {this, "Prefix", "", "Decoration prefix to avoid clashes."}
 
SG::ReadHandleKey< xAOD::TrackMeasurementValidationContainerm_truthPixelClusterName {this, "PixelClusterContainerName", "PixelClusters", ""}
 TruthPixelClusterContainer and TruthSCTClusterContainer needed for truth silicon hit cut. More...
 
SG::ReadHandleKey< xAOD::TrackMeasurementValidationContainerm_truthSCTClusterName {this, "SCTClusterContainerName", "SCT_Clusters", ""}
 
SG::ReadDecorHandleKey< xAOD::TruthParticleContainerm_truthParticleIndexDecor {this, "TruthParticleIndexDecoration", "origTruthIndex", "decoration name for the original truth particle index."}
 
std::vector< std::pair< SG::WriteDecorHandleKey< xAOD::TruthParticleContainer >, SG::AuxElement::ConstAccessor< float > > > m_decor
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 35 of file InDetPhysValTruthDecoratorAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
kPixel 
kSCT 
kNClusterTypes 

Definition at line 45 of file InDetPhysValTruthDecoratorAlg.h.

◆ EDecorations

Enumerator
kDecorD0 
kDecorZ0 
kDecorPhi 
kDecorTheta 
kDecorZ0st 
kDecorQOverP 
kDecorProdR 
kDecorProdZ 
kDecorNSilHits 
kNDecorators 

Definition at line 86 of file InDetPhysValTruthDecoratorAlg.h.

86  {
87  kDecorD0,
88  kDecorZ0,
89  kDecorPhi,
91  kDecorZ0st,
97  };

Constructor & Destructor Documentation

◆ InDetPhysValTruthDecoratorAlg()

InDetPhysValTruthDecoratorAlg::InDetPhysValTruthDecoratorAlg ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 29 of file InDetPhysValTruthDecoratorAlg.cxx.

29  :
30  AthReentrantAlgorithm(name, pSvcLocator)
31 {
32 }

◆ ~InDetPhysValTruthDecoratorAlg()

InDetPhysValTruthDecoratorAlg::~InDetPhysValTruthDecoratorAlg ( )
virtual

Definition at line 34 of file InDetPhysValTruthDecoratorAlg.cxx.

34  {
35  // nop
36 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ decorateTruth()

bool InDetPhysValTruthDecoratorAlg::decorateTruth ( const xAOD::TruthParticle particle,
std::vector< std::pair< SG::WriteDecorHandle< xAOD::TruthParticleContainer, float >, bool > > &  float_decor,
const Amg::Vector3D beamPos,
const std::vector< std::array< uint16_t, kNClusterTypes > > &  counts 
) const
private

Definition at line 197 of file InDetPhysValTruthDecoratorAlg.cxx.

200  {
201  ATH_MSG_VERBOSE("Decorate truth with d0 etc");
202  if (particle.isNeutral()) {
203  return false;
204  }
205  const EventContext& ctx = Gaudi::Hive::currentContext();
206  const Amg::Vector3D momentum(particle.px(), particle.py(), particle.pz());
207  const int pid(particle.pdgId());
208  double charge = particle.charge();
209 
210  if (std::isnan(charge)) {
211  ATH_MSG_DEBUG("charge not found on particle with pid " << pid);
212  return false;
213  }
214 
215  // @TODO float?
216  float nSiHits = std::accumulate(counts.at(particle.index()).begin(), counts[particle.index()].end(), 0u);
217 
219 
220  const xAOD::TruthVertex* ptruthVertex(nullptr);
221  try{
222  ptruthVertex = particle.prodVtx();
223  } catch (const std::exception& e) {
224  if (not m_errorEmitted) {
225  ATH_MSG_WARNING("A non existent production vertex was requested in calculating the track parameters d0 etc");
226  }
227  m_errorEmitted = true;
228  return false;
229  }
230  if (!ptruthVertex) {
231  ATH_MSG_DEBUG("A production vertex pointer was retrieved, but it is NULL");
232  return false;
233  }
234  const auto xPos = ptruthVertex->x();
235  const auto yPos = ptruthVertex->y();
236  const auto z_truth = ptruthVertex->z();
237  const Amg::Vector3D position(xPos, yPos, z_truth);
238  const float prodR_truth = std::sqrt(xPos * xPos + yPos * yPos);
239  // delete ptruthVertex;ptruthVertex=0;
240  const Trk::CurvilinearParameters cParameters(position, momentum, charge);
241 
242  Trk::PerigeeSurface persf(beamPos);
243 
244  std::unique_ptr<const Trk::TrackParameters> tP ( m_extrapolator->extrapolate(ctx,
245  cParameters,
246  persf, Trk::anyDirection, false) );
247  if (tP) {
248  float d0_truth = tP->parameters()[Trk::d0];
249  float theta_truth = tP->parameters()[Trk::theta];
250  float z0_truth = tP->parameters()[Trk::z0];
251  float phi_truth = tP->parameters()[Trk::phi];
252  float qOverP_truth = tP->parameters()[Trk::qOverP]; // P or Pt ??
253  float z0st_truth = z0_truth * std::sin(theta_truth);
254 
255  // 'safeDecorator' used to prevent a crash in case of adding something which pre-exists.
256  // behaviour chosen is to reject quietly
257  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorD0],d0_truth);
258  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorZ0],z0_truth);
259  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorPhi],phi_truth);
260  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorTheta],theta_truth);
261  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorZ0st],z0st_truth);
262  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorQOverP],qOverP_truth);
263  IDPVM::decorateOrRejectQuietly(particle,float_decor[kDecorProdR],prodR_truth);
265 
266  return true;
267  } else {
268  ATH_MSG_DEBUG("The TrackParameters pointer for this TruthParticle is NULL");
269  return false;
270  }
271 }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode InDetPhysValTruthDecoratorAlg::execute ( const EventContext &  ctx) const
virtual

truthbarcode-cluster maps to be pre-stored at event level

Definition at line 84 of file InDetPhysValTruthDecoratorAlg.cxx.

84  {
86  if ((not ptruth.isValid())) {
87  return StatusCode::FAILURE;
88  }
89  std::size_t ptruth_size=ptruth->size();
90 
91  std::vector<unsigned int> truthIndexMap;
94  unsigned int max_size=0;
95  assert( ptruth_size < std::numeric_limits<unsigned int>::max());
96  for (const xAOD::TruthParticle *truth_particle : *ptruth) {
97  max_size = std::max( max_size, decor_index(*truth_particle) );
98  }
100  ATH_MSG_ERROR("Truth index exceed max allowed range.");
101  return StatusCode::FAILURE;
102  }
103  ++max_size;
104  truthIndexMap.resize( max_size, std::numeric_limits<unsigned int>::max());
105  unsigned int new_index=0;
106  for (const xAOD::TruthParticle *truth_particle : *ptruth) {
107  truthIndexMap.at( decor_index(*truth_particle) ) = new_index;
108  ++new_index;
109  }
110  }
111  else {
112  truthIndexMap.reserve(ptruth_size);
113  for (unsigned int i=0; i<ptruth_size; ++i) {
114  truthIndexMap.push_back(i);
115  }
116  }
117 
118  std::vector< IDPVM::OptionalDecoration<xAOD::TruthParticleContainer,float> >
119  float_decor( IDPVM::createDecoratorsIfNeeded(*ptruth, m_decor, ctx, msgLvl(MSG::DEBUG)) );
120 
122  std::vector< std::array<uint16_t, kNClusterTypes> > tp_clustercount;
123  tp_clustercount.resize(ptruth_size,std::array<uint16_t,kNClusterTypes>{});
124  unsigned int missing_truth_particle=0u;
125  //Loop over the pixel and sct clusters to fill the truth barcode - cluster count maps
128  //only decorate the truth particles with truth silicon hits if both containers are available
129  if (sctClusters.isValid() && pixelClusters.isValid()) {
130  for (const auto *const sct : *sctClusters) {
131  const xAOD::TrackMeasurementValidation* sctCluster = sct;
132  static const SG::AuxElement::ConstAccessor< std::vector<unsigned int> > truthIndexAcc("truth_index");
133  if (truthIndexAcc.isAvailable(*sctCluster)) {
134  const std::vector<unsigned int> &truth_indices = truthIndexAcc(*sctCluster);
135  for (auto index : truth_indices) {
137  if (index < truthIndexMap.size() && truthIndexMap[index] != std::numeric_limits<unsigned int>::max()) {
138  ++tp_clustercount.at(truthIndexMap[index])[kSCT];
139  }
140  else {
141  ++missing_truth_particle;
142  }
143  }
144  }
145  }
146  } // Loop over SCT clusters
147 
148  for (const auto *const pix : *pixelClusters) {
149  const xAOD::TrackMeasurementValidation* pixCluster = pix;
150  static const SG::AuxElement::ConstAccessor< std::vector<unsigned int> > truthIndexAcc("truth_index");
151  if (truthIndexAcc.isAvailable(*pixCluster)) {
152  const std::vector<unsigned int> &truth_indices = truthIndexAcc(*pixCluster);
153  for (auto index : truth_indices) {
155  if (index < truthIndexMap.size() && truthIndexMap[index] != std::numeric_limits<unsigned int>::max()) {
156  ++tp_clustercount.at(truthIndexMap[index])[kPixel];
157  }
158  else {
159  ++missing_truth_particle;
160  }
161  }
162  }
163  }
164  } // Loop over PIX clusters
165  }
166  m_nMissingTruthParticles += missing_truth_particle;
167 
168  if (not float_decor.empty()) {
172  Amg::Vector3D beamPos = Amg::Vector3D(beamPosX(0), beamPosY(0), beamPosZ(0));
173 
174  if ( m_truthSelectionTool.get() ) {
175  CutFlow tmp_cut_flow(m_truthSelectionTool->nCuts());
176  for (const xAOD::TruthParticle *truth_particle : *ptruth) {
177  auto passed = m_truthSelectionTool->accept(truth_particle);
178  tmp_cut_flow.update( passed.missingCuts() );
179  if (not passed) continue;
180  decorateTruth(*truth_particle, float_decor, beamPos, tp_clustercount);
181  }
182  std::lock_guard<std::mutex> lock(m_mutex);
183  m_cutFlow.merge(std::move(tmp_cut_flow));
184  }
185  else {
186  for (const xAOD::TruthParticle *truth_particle : *ptruth) {
187  decorateTruth(*truth_particle, float_decor, beamPos, tp_clustercount);
188  }
189  }
190  }
191  return StatusCode::SUCCESS;
192 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode InDetPhysValTruthDecoratorAlg::finalize ( )
virtual

Definition at line 72 of file InDetPhysValTruthDecoratorAlg.cxx.

72  {
73  if (not m_truthSelectionTool.name().empty()) {
74  std::lock_guard<std::mutex> lock(m_mutex);
75  ATH_MSG_DEBUG( "Truth selection cut flow : " << m_cutFlow.report(m_truthSelectionTool->names()) );
76  }
78  ATH_MSG_INFO( "Clusters which reference missing / thinned truth particles : " << m_nMissingTruthParticles );
79  }
80  return StatusCode::SUCCESS;
81 }

◆ initialize()

StatusCode InDetPhysValTruthDecoratorAlg::initialize ( )
virtual

Definition at line 39 of file InDetPhysValTruthDecoratorAlg.cxx.

39  {
40  ATH_CHECK(m_extrapolator.retrieve());
41  ATH_CHECK(m_beamSpotDecoKey.initialize());
42  ATH_CHECK( m_truthPixelClusterName.initialize() );
43  ATH_CHECK( m_truthSCTClusterName.initialize() );
44  ATH_CHECK( m_truthSelectionTool.retrieve( EnableTool { not m_truthSelectionTool.name().empty() } ) );
45  if (not m_truthSelectionTool.name().empty() ) {
46  m_cutFlow = CutFlow(m_truthSelectionTool->nCuts() );
47  }
48 
50  if (!m_truthParticleIndexDecor.key().empty()) {
52  }
54 
55  std::vector<std::string> decor_names(kNDecorators);
56  decor_names[kDecorD0]="d0";
57  decor_names[kDecorZ0]="z0";
58  decor_names[kDecorPhi]="phi";
59  decor_names[kDecorTheta]="theta";
60  decor_names[kDecorZ0st]="z0st";
61  decor_names[kDecorQOverP]="qOverP";
62  decor_names[kDecorProdR]="prodR";
63  decor_names[kDecorProdZ]="prodZ";
64  decor_names[kDecorNSilHits]="nSilHits";
65 
67  assert( m_decor.size() == kNDecorators);
68  return StatusCode::SUCCESS;
69 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

CutFlow m_cutFlow InDetPhysValTruthDecoratorAlg::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 63 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_beamSpotDecoKey

SG::ReadDecorHandleKeyArray<xAOD::EventInfo> InDetPhysValTruthDecoratorAlg::m_beamSpotDecoKey
private
Initial value:
{this, "BeamSpotDecoKeys",
{"EventInfo.beamPosX", "EventInfo.beamPosY", "EventInfo.beamPosZ"},
"Beamspot position decoration keys"}

Definition at line 54 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_decor

std::vector< std::pair<SG::WriteDecorHandleKey<xAOD::TruthParticleContainer>,SG::AuxElement::ConstAccessor<float> > > InDetPhysValTruthDecoratorAlg::m_decor
private

Definition at line 98 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_errorEmitted

std::atomic<bool> InDetPhysValTruthDecoratorAlg::m_errorEmitted {false}
mutableprivate

Definition at line 66 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_extrapolator

PublicToolHandle<Trk::IExtrapolator> InDetPhysValTruthDecoratorAlg::m_extrapolator {this,"Extrapolator","Trk::Extrapolator/AtlasExtrapolator",""}
private

Definition at line 52 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_mutex

std::mutex InDetPhysValTruthDecoratorAlg::m_mutex
mutableprivate

Definition at line 62 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_nMissingTruthParticles

std::atomic<std::size_t> InDetPhysValTruthDecoratorAlg::m_nMissingTruthParticles = 0u
mutableprivate

Definition at line 65 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_prefix

Gaudi::Property<std::string> InDetPhysValTruthDecoratorAlg::m_prefix {this, "Prefix", "", "Decoration prefix to avoid clashes."}
private

Definition at line 72 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_truthParticleIndexDecor

SG::ReadDecorHandleKey<xAOD::TruthParticleContainer> InDetPhysValTruthDecoratorAlg::m_truthParticleIndexDecor {this, "TruthParticleIndexDecoration", "origTruthIndex", "decoration name for the original truth particle index."}
private

Definition at line 82 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_truthParticleName

SG::ReadHandleKey<xAOD::TruthParticleContainer> InDetPhysValTruthDecoratorAlg::m_truthParticleName {this, "TruthParticleContainerName", "TruthParticles", ""}
private

TruthParticle container's name needed to create decorators.

Definition at line 69 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_truthPixelClusterName

SG::ReadHandleKey<xAOD::TrackMeasurementValidationContainer> InDetPhysValTruthDecoratorAlg::m_truthPixelClusterName {this, "PixelClusterContainerName", "PixelClusters", ""}
private

TruthPixelClusterContainer and TruthSCTClusterContainer needed for truth silicon hit cut.

Definition at line 76 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_truthSCTClusterName

SG::ReadHandleKey<xAOD::TrackMeasurementValidationContainer> InDetPhysValTruthDecoratorAlg::m_truthSCTClusterName {this, "SCTClusterContainerName", "SCT_Clusters", ""}
private

Definition at line 79 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_truthSelectionTool

PublicToolHandle<IAthSelectionTool> InDetPhysValTruthDecoratorAlg::m_truthSelectionTool {this,"TruthSelectionTool","",""}
private

Definition at line 59 of file InDetPhysValTruthDecoratorAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
InDetPhysValTruthDecoratorAlg::kNClusterTypes
@ kNClusterTypes
Definition: InDetPhysValTruthDecoratorAlg.h:45
InDetPhysValTruthDecoratorAlg::kDecorProdR
@ kDecorProdR
Definition: InDetPhysValTruthDecoratorAlg.h:93
InDetPhysValTruthDecoratorAlg::m_truthSelectionTool
PublicToolHandle< IAthSelectionTool > m_truthSelectionTool
Definition: InDetPhysValTruthDecoratorAlg.h:60
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
max
#define max(a, b)
Definition: cfImp.cxx:41
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
InDetPhysValTruthDecoratorAlg::kDecorTheta
@ kDecorTheta
Definition: InDetPhysValTruthDecoratorAlg.h:90
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
InDetPhysValTruthDecoratorAlg::m_beamSpotDecoKey
SG::ReadDecorHandleKeyArray< xAOD::EventInfo > m_beamSpotDecoKey
Definition: InDetPhysValTruthDecoratorAlg.h:55
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDetPhysValTruthDecoratorAlg::kPixel
@ kPixel
Definition: InDetPhysValTruthDecoratorAlg.h:45
InDetPhysValTruthDecoratorAlg::decorateTruth
bool decorateTruth(const xAOD::TruthParticle &particle, std::vector< std::pair< SG::WriteDecorHandle< xAOD::TruthParticleContainer, float >, bool > > &float_decor, const Amg::Vector3D &beamPos, const std::vector< std::array< uint16_t, kNClusterTypes > > &counts) const
Definition: InDetPhysValTruthDecoratorAlg.cxx:197
InDetPhysValTruthDecoratorAlg::m_decor
std::vector< std::pair< SG::WriteDecorHandleKey< xAOD::TruthParticleContainer >, SG::AuxElement::ConstAccessor< float > > > m_decor
Definition: InDetPhysValTruthDecoratorAlg.h:98
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
InDetPhysValTruthDecoratorAlg::kDecorZ0
@ kDecorZ0
Definition: InDetPhysValTruthDecoratorAlg.h:88
IDPVM::createDecoratorKeysAndAccessor
void createDecoratorKeysAndAccessor(T_Parent &parent, const SG::ReadHandleKey< T_Cont > &container_key, const std::string &prefix, const std::vector< std::string > &decor_names, std::vector< WriteKeyAccessorPair< T_Cont, T > > &decor_out)
Definition: safeDecorator.h:52
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::z0
@ z0
Definition: ParamDefs.h:70
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
InDetPhysValTruthDecoratorAlg::m_nMissingTruthParticles
std::atomic< std::size_t > m_nMissingTruthParticles
Definition: InDetPhysValTruthDecoratorAlg.h:65
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
InDetPhysValTruthDecoratorAlg::kDecorProdZ
@ kDecorProdZ
Definition: InDetPhysValTruthDecoratorAlg.h:94
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDetPhysValTruthDecoratorAlg::m_errorEmitted
std::atomic< bool > m_errorEmitted
Definition: InDetPhysValTruthDecoratorAlg.h:66
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
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
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDetPhysValTruthDecoratorAlg::kSCT
@ kSCT
Definition: InDetPhysValTruthDecoratorAlg.h:45
xAOD::TrackMeasurementValidation_v1
Class describing a TrackMeasurementValidation.
Definition: TrackMeasurementValidation_v1.h:27
InDetPhysValTruthDecoratorAlg::kDecorZ0st
@ kDecorZ0st
Definition: InDetPhysValTruthDecoratorAlg.h:91
TauGNNUtils::Variables::Track::nSiHits
bool nSiHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:691
InDetPhysValTruthDecoratorAlg::kDecorD0
@ kDecorD0
Definition: InDetPhysValTruthDecoratorAlg.h:87
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
lumiFormat.i
int i
Definition: lumiFormat.py:92
SG::ReadDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
InDetPhysValTruthDecoratorAlg::kNDecorators
@ kNDecorators
Definition: InDetPhysValTruthDecoratorAlg.h:96
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
IDPVM::decorateOrRejectQuietly
void decorateOrRejectQuietly(const T_Cont_Elm &particle, OptionalDecoration< T_Cont, T > &decorator, const T &value)
Definition: safeDecorator.h:175
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
calibdata.exception
exception
Definition: calibdata.py:496
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
InDetPhysValTruthDecoratorAlg::kDecorQOverP
@ kDecorQOverP
Definition: InDetPhysValTruthDecoratorAlg.h:92
CutFlow
Definition: CutFlow.h:166
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
InDetPhysValTruthDecoratorAlg::m_truthParticleName
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleName
TruthParticle container's name needed to create decorators.
Definition: InDetPhysValTruthDecoratorAlg.h:70
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
IDPVM::createDecoratorsIfNeeded
std::vector< OptionalDecoration< T_Cont, T > > createDecoratorsIfNeeded(const T_Cont &container, const std::vector< WriteKeyAccessorPair< T_Cont, T > > &keys, const EventContext &ctx, bool verbose=false)
Definition: safeDecorator.h:70
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:41
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Trk::d0
@ d0
Definition: ParamDefs.h:69
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
charge
double charge(const T &p)
Definition: AtlasPID.h:494
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDetPhysValTruthDecoratorAlg::m_prefix
Gaudi::Property< std::string > m_prefix
Definition: InDetPhysValTruthDecoratorAlg.h:73
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
h
InDetPhysValTruthDecoratorAlg::m_truthPixelClusterName
SG::ReadHandleKey< xAOD::TrackMeasurementValidationContainer > m_truthPixelClusterName
TruthPixelClusterContainer and TruthSCTClusterContainer needed for truth silicon hit cut.
Definition: InDetPhysValTruthDecoratorAlg.h:77
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
InDetPhysValTruthDecoratorAlg::kDecorPhi
@ kDecorPhi
Definition: InDetPhysValTruthDecoratorAlg.h:89
InDetPhysValTruthDecoratorAlg::m_mutex
std::mutex m_mutex
Definition: InDetPhysValTruthDecoratorAlg.h:62
DEBUG
#define DEBUG
Definition: page_access.h:11
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
InDetPhysValTruthDecoratorAlg::m_extrapolator
PublicToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: InDetPhysValTruthDecoratorAlg.h:53
InDetPhysValTruthDecoratorAlg::m_truthParticleIndexDecor
SG::ReadDecorHandleKey< xAOD::TruthParticleContainer > m_truthParticleIndexDecor
Definition: InDetPhysValTruthDecoratorAlg.h:83
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::phi
@ phi
Definition: ParamDefs.h:81
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDetPhysValTruthDecoratorAlg::m_truthSCTClusterName
SG::ReadHandleKey< xAOD::TrackMeasurementValidationContainer > m_truthSCTClusterName
Definition: InDetPhysValTruthDecoratorAlg.h:80
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
pix
Definition: PixelMapping.cxx:16
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDetPhysValTruthDecoratorAlg::kDecorNSilHits
@ kDecorNSilHits
Definition: InDetPhysValTruthDecoratorAlg.h:95
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >