ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
Rec::MuidCaloTrackStateOnSurface Class Reference

#include <MuidCaloTrackStateOnSurface.h>

Inheritance diagram for Rec::MuidCaloTrackStateOnSurface:
Collaboration diagram for Rec::MuidCaloTrackStateOnSurface:

Public Member Functions

 MuidCaloTrackStateOnSurface (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~MuidCaloTrackStateOnSurface ()=default
 
StatusCode initialize () override
 
StatusCode finalize () override
 
std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > caloTSOS (const EventContext &ctx, const Trk::TrackParameters &parameters) const override
 IMuidCaloTrackStateOnSurface interface: to get the 3 scattering and energy deposit TSOS'es representing the calorimeter. More...
 
std::unique_ptr< Trk::TrackStateOnSurfaceinnerTSOS (const EventContext &ctx, const Trk::TrackParameters &parameters) const override
 IMuidCaloTrackStateOnSurface interface: to get individually the scattering TSOS'es representing the calorimeter. More...
 
std::unique_ptr< Trk::TrackStateOnSurfaceouterTSOS (const EventContext &ctx, const Trk::TrackParameters &parameters) const override
 
std::unique_ptr< Trk::TrackStateOnSurfacemiddleTSOS (const EventContext &ctx, const Trk::TrackParameters &middleParameters, const Trk::TrackParameters *innerParameters, const Trk::TrackParameters *outerParameters) const override
 IMuidCaloTrackStateOnSurface interface: to get the energy deposit TSOS representing the calorimeter. More...
 
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 sysInitialize () override
 Perform system initialization for an algorithm. 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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool and IAlgTool interface methods. More...
 

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  SurfaceLayer { Inner, Middle, Outer }
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

const Trk::SurfacegetCaloSurface (const double eta, const short layer) const
 
std::unique_ptr< const Trk::TrackParametersgetExtrapolatedParameters (const EventContext &ctx, const Trk::TrackParameters &parameters, const short layer) 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...
 

Static Private Member Functions

static bool useEtaPhiFromDirection (const Trk::TrackParameters &parameters)
 

Private Attributes

ToolHandle< Rec::IMuidCaloEnergym_caloEnergyDeposit
 
ToolHandle< Rec::IMuidCaloEnergym_caloEnergyParam
 
ToolHandle< Rec::IMuidCaloMaterialParamm_caloMaterialParam
 
ToolHandle< Trk::IPropagatorm_propagator
 
Trk::MagneticFieldProperties m_magFieldProperties {Trk::FullField}
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCacheCondObjInputKey
 
double m_minCaloRadius
 
double m_minRemainingEnergy
 
double m_paramPtCut
 
std::atomic_int m_count {0}
 
std::atomic_int m_countArbitrarySolution {0}
 
std::atomic_int m_countCompleteFailure {0}
 
std::atomic_int m_countInnerFailure {0}
 
std::atomic_int m_countOuterFailure {0}
 
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 44 of file MuidCaloTrackStateOnSurface.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ SurfaceLayer

Enumerator
Inner 
Middle 
Outer 

Definition at line 75 of file MuidCaloTrackStateOnSurface.h.

75 { Inner, Middle, Outer };

Constructor & Destructor Documentation

◆ MuidCaloTrackStateOnSurface()

MuidCaloTrackStateOnSurface::MuidCaloTrackStateOnSurface ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 39 of file MuidCaloTrackStateOnSurface.cxx.

39  :
44  declareInterface<IMuidCaloTrackStateOnSurface>(this);
45  declareProperty("MinCaloRadius", m_minCaloRadius);
46  declareProperty("MinRemainingEnergy", m_minRemainingEnergy);
47  declareProperty("ParamPtCut", m_paramPtCut);
48  }

◆ ~MuidCaloTrackStateOnSurface()

virtual Rec::MuidCaloTrackStateOnSurface::~MuidCaloTrackStateOnSurface ( )
virtualdefault

Member Function Documentation

◆ caloTSOS()

std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > MuidCaloTrackStateOnSurface::caloTSOS ( const EventContext &  ctx,
const Trk::TrackParameters parameters 
) const
overridevirtual

IMuidCaloTrackStateOnSurface interface: to get the 3 scattering and energy deposit TSOS'es representing the calorimeter.

The input TrackParameters may be anywhere along the track.

Implements Rec::IMuidCaloTrackStateOnSurface.

Definition at line 85 of file MuidCaloTrackStateOnSurface.cxx.

86  {
87  std::vector<std::unique_ptr<const Trk::TrackStateOnSurface>> caloTSOS;
88  caloTSOS.reserve(3);
89 
90  std::unique_ptr<Trk::TrackStateOnSurface> innerTS, middleTS, outerTS;
91  std::unique_ptr<const Trk::TrackParameters> inParams, midParams;
92  const Trk::TrackParameters* innerParams = nullptr;
93  const Trk::TrackParameters* middleParams = nullptr;
94  const Trk::TrackParameters* outerParams = nullptr;
95 
96  MagField::AtlasFieldCache fieldCache;
97  // Get field cache object
99  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
100 
101  if (!fieldCondObj) {
102  ATH_MSG_ERROR("Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
103  return caloTSOS;
104  }
105  fieldCondObj->getInitializedCache(fieldCache);
106 
107  // track to calo surfaces - first decide in or outwards
108  bool trackOutwards = true;
109  if (dynamic_cast<const Trk::PerigeeSurface*>(&parameters.associatedSurface())) {
110  if (parameters.associatedSurface().center().perp() > 0.5 * Gaudi::Units::meter) trackOutwards = false;
111  } else if (std::abs(parameters.position().z()) > 4.0 * Gaudi::Units::meter ||
112  parameters.position().perp() > 1.2 * Gaudi::Units::meter) {
113  trackOutwards = false;
114  }
115 
116  if (trackOutwards) // forward tracking
117  {
118  innerTS = innerTSOS(ctx, parameters);
119  if (innerTS) {
120  innerParams = innerTS->trackParameters();
121  if (innerParams->momentum().dot(innerParams->position()) > 0.) {
122  midParams = getExtrapolatedParameters(ctx, *innerParams, SurfaceLayer::Middle);
123  middleParams = midParams.get();
124  } else {
125  ATH_MSG_VERBOSE(" quit as looper " << innerParams);
126  }
127  if (middleParams) {
128  // get calo energy deposit
129  middleTS = m_caloEnergyParam->trackStateOnSurface(ctx, *midParams, innerParams, outerParams);
130  if (!middleTS) { middleParams = nullptr; }
131  }
132 
133  if (middleParams) {
134  // apply energy deposit to give outgoing middleParams,
135  // note the iteration required to get optimum energy correction
136  std::unique_ptr<const Trk::TrackParameters> params;
137  for (int iterate = 0; iterate != 2; ++iterate) {
138  if (!middleTS) break;
139 
140  const Trk::MaterialEffectsOnTrack* meot =
141  dynamic_cast<const Trk::MaterialEffectsOnTrack*>(middleTS->materialEffectsOnTrack());
142  const double energyDeposit = meot ? meot->energyLoss()->deltaE() : 0.;
143  middleParams = middleTS->trackParameters();
144  Amg::Vector3D momentum = middleParams->momentum();
145  double correctedEnergy = innerParams->momentum().mag() - energyDeposit;
146 
147  // fail potential loopers
148  if (fieldCache.toroidOn() && correctedEnergy < m_minRemainingEnergy) {
149  middleTS.reset();
150  ATH_MSG_VERBOSE(" fail tracking outwards: momentum " << momentum.mag() / Gaudi::Units::GeV
151  << " energyDeposit " << energyDeposit / Gaudi::Units::GeV
152  << " correctedEnergy "
153  << correctedEnergy / Gaudi::Units::GeV << " (GeV units)");
154  break;
155  }
156  // toroid off: set floor for remaining energy
157  if (correctedEnergy < m_minRemainingEnergy) {
159  } else {
160  momentum *= correctedEnergy / momentum.mag();
161  }
162 
163  const Trk::CylinderSurface* cylinder =
164  dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
165  if (cylinder) {
166  params =
167  std::make_unique<Trk::AtaCylinder>(middleParams->position(), momentum, middleParams->charge(), *cylinder);
168  } else {
169  const Trk::DiscSurface* disc = dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
170  if (disc) {
171  params = std::make_unique<Trk::AtaDisc>(middleParams->position(), momentum, middleParams->charge(), *disc);
172  } else {
173  ATH_MSG_WARNING(" caloTSOS: unexpected TrackParameters type ");
174  }
175  }
176 
177  // delete middle and outer,
178  // then recompute with parameters as for backwards tracking
179  if (!params) {
180  middleTS.reset();
181  } else if (params->momentum().perp() > m_paramPtCut) {
182  middleTS = m_caloEnergyDeposit->trackStateOnSurface(ctx, *params, innerParams, outerParams);
183  } else {
184  middleTS = m_caloEnergyParam->trackStateOnSurface(ctx, *params, innerParams, outerParams);
185  }
187  if (middleTS) { outerTS = outerTSOS(ctx, *params); }
188  }
189  if (!middleTS) { ATH_MSG_VERBOSE(" fail tracking outwards: no intersect at middle surface"); }
190  }
191  } else {
192  ATH_MSG_VERBOSE(" fail tracking ouwards: no intersect at inner surface");
193  }
194  } else // backward tracking
195  {
196  outerTS = outerTSOS(ctx, parameters);
197  if (outerTS) {
198  outerParams = outerTS->trackParameters();
199  midParams = getExtrapolatedParameters(ctx, *outerParams, SurfaceLayer::Middle);
200  middleParams = midParams.get();
201  if (middleParams) {
202  inParams = getExtrapolatedParameters(ctx, *midParams, SurfaceLayer::Inner);
203  innerParams = inParams.get();
204  if (inParams) {
205  // get calo energy deposit
206  if (middleParams->momentum().perp() > m_paramPtCut) {
207  middleTS = m_caloEnergyDeposit->trackStateOnSurface(ctx, *middleParams, inParams.get(), outerParams);
208  } else {
209  middleTS = m_caloEnergyParam->trackStateOnSurface(ctx, *middleParams, inParams.get(), outerParams);
210  }
211  // apply energy deposit
212  const Trk::MaterialEffectsOnTrack* meot =
213  middleTS ? dynamic_cast<const Trk::MaterialEffectsOnTrack*>(middleTS->materialEffectsOnTrack()) : nullptr;
214  const double energyDeposit = meot ? meot->energyLoss()->deltaE() : 0.;
215  Amg::Vector3D momentum = middleParams->momentum();
216  double correctedEnergy = momentum.mag() + energyDeposit;
217 
218  // fail potential loopers
219  if (correctedEnergy < 0.5 * Gaudi::Units::GeV) {
220  middleTS.reset();
221  ATH_MSG_VERBOSE(" fail tracking inwards: momentum " << momentum.mag() / Gaudi::Units::GeV << " energyDeposit "
223  << " correctedEnergy "
224  << correctedEnergy / Gaudi::Units::GeV << " (GeV units)");
225  } else {
226  momentum *= 1. + energyDeposit / momentum.mag();
227  std::unique_ptr<const Trk::TrackParameters> params;
228  const Trk::CylinderSurface* cylinder =
229  dynamic_cast<const Trk::CylinderSurface*>(&middleParams->associatedSurface());
230  std::optional<AmgSymMatrix(5)> cov =
231  middleParams->covariance() ? std::optional<AmgSymMatrix(5)>(*middleParams->covariance()) : std::nullopt;
232  if (cylinder) {
233  params = std::make_unique<Trk::AtaCylinder>(middleParams->position(), momentum, middleParams->charge(),
234  *cylinder, cov);
235  } else {
236  const Trk::DiscSurface* disc = dynamic_cast<const Trk::DiscSurface*>(&middleParams->associatedSurface());
237  if (disc) {
238  params = std::make_unique<Trk::AtaDisc>(middleParams->position(), momentum, middleParams->charge(),
239  *disc, cov);
240  } else {
241  ATH_MSG_WARNING(" caloTSOS: unexpected TrackParameters type ");
242  }
243  }
244  if (params && middleTS) { innerTS = innerTSOS(ctx, *params); }
245  }
246  } else {
247  ATH_MSG_VERBOSE(" fail tracking inwards: no intersect at inner surface");
248  }
249  } else {
250  ATH_MSG_VERBOSE(" fail tracking inwards: no intersect at middle surface");
251  }
252  }
253  }
254 
255  if (innerTS)
256  caloTSOS.push_back(std::move(innerTS));
257  else
259  if (middleTS) caloTSOS.push_back(std::move(middleTS));
260  if (outerTS)
261  caloTSOS.push_back(std::move(outerTS));
262  else
264 
265  // keep some statistics
266  ++m_count;
267 
268  if (caloTSOS.empty()) { ++m_countCompleteFailure; }
269  return caloTSOS;
270  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ finalize()

StatusCode MuidCaloTrackStateOnSurface::finalize ( )
override

Definition at line 74 of file MuidCaloTrackStateOnSurface.cxx.

74  {
75  ATH_MSG_INFO("finalized with " << m_count << " muons asking for calo association, out of which: " << endmsg << " "
76  << m_countInnerFailure << " failed to find the inner calo scattering plane," << endmsg << " "
77  << m_countOuterFailure << " failed to find the outer calo scattering plane," << endmsg
78  << " while another " << m_countCompleteFailure
79  << " completely failed to intersect the calorimeter." << endmsg << " "
80  << m_countArbitrarySolution << " with oscillation resolved by taking an arbitrary solution");
81 
82  return StatusCode::SUCCESS;
83  }

◆ getCaloSurface()

const Trk::Surface * MuidCaloTrackStateOnSurface::getCaloSurface ( const double  eta,
const short  layer 
) const
private

Definition at line 310 of file MuidCaloTrackStateOnSurface.cxx.

310  {
311  if (layer == SurfaceLayer::Inner) return m_caloMaterialParam->innerSurface(eta);
312  if (layer == SurfaceLayer::Middle) return m_caloMaterialParam->middleSurface(eta);
313  if (layer == SurfaceLayer::Outer) return m_caloMaterialParam->outerSurface(eta);
314  ATH_MSG_WARNING("Invalid layer id given " << layer);
315  return nullptr;
316  }

◆ getExtrapolatedParameters()

std::unique_ptr< const Trk::TrackParameters > MuidCaloTrackStateOnSurface::getExtrapolatedParameters ( const EventContext &  ctx,
const Trk::TrackParameters parameters,
const short  layer 
) const
private

The TrackParameters own their dedicated instance of the track surface... In cases, where the loop below resets the extrapolation we need to clone the surface as well this pointer is just the surface garbage collection

Definition at line 317 of file MuidCaloTrackStateOnSurface.cxx.

318  {
319  // will need to know whether forward or back tracking
320  Trk::PropDirection momentumDirection = Trk::alongMomentum;
321  Trk::PropDirection oppositeDirection = Trk::oppositeMomentum;
322  Trk::PropDirection propDirection = Trk::anyDirection;
323  const std::string surf_layer_str = layer == SurfaceLayer::Inner ? "Inner" : (layer == SurfaceLayer::Middle ? "Middle" : "Outer");
324  // initial surface at track eta -
325  // using position or direction according to distance from origin
326  double startingPhi = 0.;
327  const Trk::Surface* surface = nullptr;
329  startingPhi = parameters.momentum().phi();
330  surface = getCaloSurface(parameters.momentum().eta(), layer);
331  } else {
332  startingPhi = parameters.position().phi();
333  surface = getCaloSurface(parameters.position().eta(), layer);
334  if (parameters.momentum().dot(parameters.position()) < 0.) {
335  momentumDirection = Trk::oppositeMomentum;
336  oppositeDirection = Trk::alongMomentum;
337  }
338  }
339  if (!surface) return nullptr;
340 
341  // extrapolate to calo surface (take care to get correct cylinder intersect)
342  unsigned extrapolations = 0;
343  if (surface->type() == Trk::SurfaceType::Cylinder) {
344  if (parameters.position().perp() < surface->globalReferencePoint().perp()) {
345  propDirection = momentumDirection;
346  } else {
347  propDirection = oppositeDirection;
348  }
349  }
350  // tidy up ownership later
351  std::unique_ptr<const Trk::TrackParameters> extrapolation{
352  m_propagator->propagate(ctx, parameters, *surface, propDirection, false, m_magFieldProperties, Trk::nonInteracting)};
353  if (!extrapolation) return nullptr;
354 
355  // phi flip means track has crossed beam-axis (so quit)
356  double deltaPhi = xAOD::P4Helpers::deltaPhi(extrapolation->position().phi(), startingPhi);
357  if (std::abs(deltaPhi) > M_PI_2) { return nullptr; }
358 
359  // also quit wrong rz-direction in endcap
360  if (surface->type() != Trk::SurfaceType::Cylinder) {
361  double signRZ = (extrapolation->position().perp() - parameters.position().perp()) *
362  (extrapolation->position().z() - parameters.position().z());
363  if (signRZ * extrapolation->position().z() < 0.) {
364  ATH_MSG_VERBOSE(" wrong way in endcap ");
365  return nullptr;
366  }
367  }
368 
369  // iterate if extrapolated surface is different
370  bool restart = false;
371  const Trk::Surface* oldSurface = surface;
372  const Trk::Surface* extrapolatedSurface = getCaloSurface(extrapolation->position().eta(), layer);
376  std::unique_ptr<const Trk::Surface> reset_surface;
377  while (++extrapolations < 5 && extrapolatedSurface != oldSurface) {
378  // take care to get correct solution for cylinder when starting from inside
379  if (surface->type() == Trk::SurfaceType::Cylinder) {
380  if (extrapolation->position().perp() < surface->globalReferencePoint().perp()) {
381  propDirection = momentumDirection;
382  } else {
383  propDirection = oppositeDirection;
384  }
385  } else {
386  propDirection = Trk::anyDirection;
387  }
388  std::unique_ptr<const Trk::TrackParameters> oldParameters = std::move(extrapolation);
389  extrapolation = m_propagator->propagate(ctx, *oldParameters, *extrapolatedSurface, propDirection, false, m_magFieldProperties,
391  if (!extrapolation) {
392  // restart from input parameters (if not already done)
393  // trap no solution after restart
394  if ((*oldParameters) == parameters) {
395  ATH_MSG_VERBOSE(" innerParameters: extrap fails ");
396  return nullptr;
397  }
398  if (restart) {
399  ATH_MSG_DEBUG(surf_layer_str << " Parameters: oscillating => arbitrary solution chosen");
401  extrapolation = std::move(oldParameters);
402  reset_surface.reset(extrapolation->associatedSurface().clone());
403  extrapolatedSurface = reset_surface.get();
404  surface = extrapolatedSurface;
405  restart = false;
406  } else {
407  ATH_MSG_VERBOSE(surf_layer_str << " Parameters: restart extrap after " << extrapolations << " extrapolations");
408  restart = true;
409  extrapolations -= 2;
410  extrapolation = parameters.uniqueClone();
411  surface = oldSurface;
412  }
413  } else {
414  // update surface
415  ATH_MSG_DEBUG(surf_layer_str << " Parameters: Extrapolation succeeded go to next iteration");
416  oldSurface = surface;
417  surface = extrapolatedSurface;
418  extrapolatedSurface = getCaloSurface(extrapolation->position().eta(), layer);
419  }
420  }
421 
422  // final check for phi flip
423  deltaPhi = xAOD::P4Helpers::deltaPhi(extrapolation->position().phi(), startingPhi);
424  if (std::abs(deltaPhi) > M_PI_2) { return nullptr; }
425 
426  ATH_MSG_VERBOSE(surf_layer_str << " Parameters: success after " << extrapolations << " extrapolation step(s). "
427  << std::setiosflags(std::ios::fixed) << " Intersection at: r,phi,z " << std::setw(7)
428  << std::setprecision(1) << extrapolation->position().perp() << std::setw(7) << std::setprecision(3)
429  << extrapolation->position().phi() << std::setw(8) << std::setprecision(1)
430  << extrapolation->position().z() << " Direction: eta,phi " << std::setw(7) << std::setprecision(3)
431  << extrapolation->momentum().eta() << std::setw(7) << std::setprecision(3)
432  << extrapolation->momentum().phi());
433 
434  return extrapolation;
435  }

◆ initialize()

StatusCode MuidCaloTrackStateOnSurface::initialize ( )
override

handle to the magnetic field cache

Definition at line 52 of file MuidCaloTrackStateOnSurface.cxx.

52  {
53  ATH_MSG_DEBUG("Initializing CombinedMuonTrackStateOnSurface");
54 
55  // get the Tools
56  ATH_CHECK(m_caloEnergyDeposit.retrieve());
57  ATH_MSG_DEBUG("Retrieved tool " << m_caloEnergyDeposit);
58 
59  ATH_CHECK(m_caloEnergyParam.retrieve());
60  ATH_MSG_DEBUG("Retrieved tool " << m_caloEnergyParam);
61 
62  ATH_CHECK(m_caloMaterialParam.retrieve());
63  ATH_MSG_DEBUG("Retrieved tool " << m_caloMaterialParam);
64 
67 
68  ATH_CHECK(m_propagator.retrieve());
69  ATH_MSG_DEBUG("Retrieved tool " << m_propagator);
70 
71  return StatusCode::SUCCESS;
72  }

◆ innerTSOS()

std::unique_ptr< Trk::TrackStateOnSurface > MuidCaloTrackStateOnSurface::innerTSOS ( const EventContext &  ctx,
const Trk::TrackParameters parameters 
) const
overridevirtual

IMuidCaloTrackStateOnSurface interface: to get individually the scattering TSOS'es representing the calorimeter.

The input TrackParameters may be anywhere along the track.

Implements Rec::IMuidCaloTrackStateOnSurface.

Definition at line 271 of file MuidCaloTrackStateOnSurface.cxx.

272  {
273  std::unique_ptr<const Trk::TrackParameters> extrapolation = getExtrapolatedParameters(ctx, parameters, SurfaceLayer::Inner);
274  if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
275  ATH_MSG_DEBUG(" innerTSOS: extrapolation fails ");
276  return nullptr;
277  }
278  return m_caloMaterialParam->trackStateOnSurface(*extrapolation);
279  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

static const InterfaceID& Rec::IMuidCaloTrackStateOnSurface::interfaceID ( )
inlinestaticinherited

AlgTool and IAlgTool interface methods.

Interface ID for IMuidCaloTrackStateOnSurface

Definition at line 40 of file IMuidCaloTrackStateOnSurface.h.

40  {
41  static const InterfaceID IID_IMuidCaloTrackStateOnSurface("IMuidCaloTrackStateOnSurface", 1, 0);
42  return IID_IMuidCaloTrackStateOnSurface;
43  }

◆ middleTSOS()

std::unique_ptr< Trk::TrackStateOnSurface > MuidCaloTrackStateOnSurface::middleTSOS ( const EventContext &  ctx,
const Trk::TrackParameters middleParameters,
const Trk::TrackParameters innerParameters,
const Trk::TrackParameters outerParameters 
) const
overridevirtual

IMuidCaloTrackStateOnSurface interface: to get the energy deposit TSOS representing the calorimeter.

The input TrackParameters may be anywhere along the track, but when the inner or outer parameters are provided they must be expressed at the appropriate surface. The return TSOS surface is at the material midpoint.

Implements Rec::IMuidCaloTrackStateOnSurface.

Definition at line 289 of file MuidCaloTrackStateOnSurface.cxx.

292  {
293  std::unique_ptr<const Trk::TrackParameters> extrapolation = getExtrapolatedParameters(ctx, middleParams, SurfaceLayer::Middle);
294 
295  if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
296  ATH_MSG_DEBUG(" middleTSOS: extrapolation fails ");
297  return nullptr;
298  }
299  std::unique_ptr<Trk::TrackStateOnSurface> TSOS;
300  if (extrapolation->momentum().perp() > m_paramPtCut) {
301  TSOS = m_caloEnergyDeposit->trackStateOnSurface(ctx, *extrapolation, innerParams, outerParams);
302  } else {
303  TSOS = m_caloEnergyParam->trackStateOnSurface(ctx, *extrapolation, innerParams, outerParams);
304  }
305  return TSOS;
306  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::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< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

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

◆ outerTSOS()

std::unique_ptr< Trk::TrackStateOnSurface > MuidCaloTrackStateOnSurface::outerTSOS ( const EventContext &  ctx,
const Trk::TrackParameters parameters 
) const
overridevirtual

Implements Rec::IMuidCaloTrackStateOnSurface.

Definition at line 280 of file MuidCaloTrackStateOnSurface.cxx.

281  {
282  std::unique_ptr<const Trk::TrackParameters> extrapolation = getExtrapolatedParameters(ctx, parameters, SurfaceLayer::Outer);
283  if (!extrapolation || extrapolation->position().perp() < m_minCaloRadius) {
284  ATH_MSG_DEBUG(" outerTSOS: extrapolation fails ");
285  return nullptr;
286  }
287  return m_caloMaterialParam->trackStateOnSurface(*extrapolation);
288  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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  }

◆ useEtaPhiFromDirection()

bool MuidCaloTrackStateOnSurface::useEtaPhiFromDirection ( const Trk::TrackParameters parameters)
staticprivate

Definition at line 437 of file MuidCaloTrackStateOnSurface.cxx.

437  {
438  // estimate eta,phi for the track intersect with the calo from the track direction when the
439  // parameters are expressed near the beam-line, further out it's better to use the track position
440  double parameterDistance = parameters.position().mag();
441  if (dynamic_cast<const Trk::PerigeeSurface*>(&parameters.associatedSurface()))
442  parameterDistance = parameters.associatedSurface().center().perp();
443 
444  return parameterDistance < 0.5 * Gaudi::Units::meter;
445  }

Member Data Documentation

◆ m_caloEnergyDeposit

ToolHandle<Rec::IMuidCaloEnergy> Rec::MuidCaloTrackStateOnSurface::m_caloEnergyDeposit
private
Initial value:
{
this,
"CaloEnergyDeposit",
"Rec::MuidCaloEnergyTool/MuidCaloEnergyTool",
}

Definition at line 85 of file MuidCaloTrackStateOnSurface.h.

◆ m_caloEnergyParam

ToolHandle<Rec::IMuidCaloEnergy> Rec::MuidCaloTrackStateOnSurface::m_caloEnergyParam
private
Initial value:
{
this,
"CaloEnergyParam",
"Rec::MuidCaloEnergyTool/MuidCaloEnergyToolParam",
}

Definition at line 90 of file MuidCaloTrackStateOnSurface.h.

◆ m_caloMaterialParam

ToolHandle<Rec::IMuidCaloMaterialParam> Rec::MuidCaloTrackStateOnSurface::m_caloMaterialParam
private
Initial value:
{
this,
"CaloMaterialParam",
"Rec::MuidCaloMaterialParam/MuidCaloMaterialParam",
}

Definition at line 95 of file MuidCaloTrackStateOnSurface.h.

◆ m_count

std::atomic_int Rec::MuidCaloTrackStateOnSurface::m_count {0}
mutableprivate

Definition at line 118 of file MuidCaloTrackStateOnSurface.h.

◆ m_countArbitrarySolution

std::atomic_int Rec::MuidCaloTrackStateOnSurface::m_countArbitrarySolution {0}
mutableprivate

Definition at line 119 of file MuidCaloTrackStateOnSurface.h.

◆ m_countCompleteFailure

std::atomic_int Rec::MuidCaloTrackStateOnSurface::m_countCompleteFailure {0}
mutableprivate

Definition at line 120 of file MuidCaloTrackStateOnSurface.h.

◆ m_countInnerFailure

std::atomic_int Rec::MuidCaloTrackStateOnSurface::m_countInnerFailure {0}
mutableprivate

Definition at line 121 of file MuidCaloTrackStateOnSurface.h.

◆ m_countOuterFailure

std::atomic_int Rec::MuidCaloTrackStateOnSurface::m_countOuterFailure {0}
mutableprivate

Definition at line 122 of file MuidCaloTrackStateOnSurface.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fieldCacheCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> Rec::MuidCaloTrackStateOnSurface::m_fieldCacheCondObjInputKey
private
Initial value:
{this, "AtlasFieldCacheCondObj", "fieldCondObj",
"Name of the Magnetic Field conditions object key"}

Definition at line 109 of file MuidCaloTrackStateOnSurface.h.

◆ m_magFieldProperties

Trk::MagneticFieldProperties Rec::MuidCaloTrackStateOnSurface::m_magFieldProperties {Trk::FullField}
private

Definition at line 106 of file MuidCaloTrackStateOnSurface.h.

◆ m_minCaloRadius

double Rec::MuidCaloTrackStateOnSurface::m_minCaloRadius
private

Definition at line 113 of file MuidCaloTrackStateOnSurface.h.

◆ m_minRemainingEnergy

double Rec::MuidCaloTrackStateOnSurface::m_minRemainingEnergy
private

Definition at line 114 of file MuidCaloTrackStateOnSurface.h.

◆ m_paramPtCut

double Rec::MuidCaloTrackStateOnSurface::m_paramPtCut
private

Definition at line 115 of file MuidCaloTrackStateOnSurface.h.

◆ m_propagator

ToolHandle<Trk::IPropagator> Rec::MuidCaloTrackStateOnSurface::m_propagator
private
Initial value:
{
this,
"Propagator",
"Trk::IntersectorWrapper/IntersectorWrapper",
}

Definition at line 100 of file MuidCaloTrackStateOnSurface.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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
Rec::MuidCaloTrackStateOnSurface::m_caloEnergyDeposit
ToolHandle< Rec::IMuidCaloEnergy > m_caloEnergyDeposit
Definition: MuidCaloTrackStateOnSurface.h:85
Trk::TrackStateOnSurface::trackParameters
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
Rec::MuidCaloTrackStateOnSurface::m_countInnerFailure
std::atomic_int m_countInnerFailure
Definition: MuidCaloTrackStateOnSurface.h:121
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::ParametersBase::charge
double charge() const
Returns the charge.
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
Trk::ParametersBase::associatedSurface
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
Rec::MuidCaloTrackStateOnSurface::m_minCaloRadius
double m_minCaloRadius
Definition: MuidCaloTrackStateOnSurface.h:113
Rec::MuidCaloTrackStateOnSurface::m_countOuterFailure
std::atomic_int m_countOuterFailure
Definition: MuidCaloTrackStateOnSurface.h:122
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
Rec::MuidCaloTrackStateOnSurface::Inner
@ Inner
Definition: MuidCaloTrackStateOnSurface.h:75
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: xAODP4Helpers.h:69
Rec::MuidCaloTrackStateOnSurface::getCaloSurface
const Trk::Surface * getCaloSurface(const double eta, const short layer) const
Definition: MuidCaloTrackStateOnSurface.cxx:310
Rec::MuidCaloTrackStateOnSurface::outerTSOS
std::unique_ptr< Trk::TrackStateOnSurface > outerTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
Definition: MuidCaloTrackStateOnSurface.cxx:280
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::DiscSurface
Definition: DiscSurface.h:54
Trk::Surface::globalReferencePoint
virtual const Amg::Vector3D & globalReferencePoint() const
Returns a global reference point on the surface, for PlaneSurface, StraightLineSurface,...
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
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
MagField::AtlasFieldCache::toroidOn
bool toroidOn() const
Rec::MuidCaloTrackStateOnSurface::m_countArbitrarySolution
std::atomic_int m_countArbitrarySolution
Definition: MuidCaloTrackStateOnSurface.h:119
Rec::MuidCaloTrackStateOnSurface::m_count
std::atomic_int m_count
Definition: MuidCaloTrackStateOnSurface.h:118
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
Trk::energyDeposit
@ energyDeposit
Definition: MeasurementType.h:32
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Rec::MuidCaloTrackStateOnSurface::Middle
@ Middle
Definition: MuidCaloTrackStateOnSurface.h:75
Trk::MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
Definition: MaterialEffectsOnTrack.h:40
Trk::PropDirection
PropDirection
Definition: PropDirection.h:19
AthCommonDataStore
Definition: AthCommonDataStore.h:52
python.SystemOfUnits.meter
int meter
Definition: SystemOfUnits.py:61
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::TrackStateOnSurface::materialEffectsOnTrack
const MaterialEffectsBase * materialEffectsOnTrack() const
return material effects const overload
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::CylinderSurface
Definition: CylinderSurface.h:55
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Trk::EnergyLoss::deltaE
double deltaE() const
returns the
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Rec::MuidCaloTrackStateOnSurface::caloTSOS
std::vector< std::unique_ptr< const Trk::TrackStateOnSurface > > caloTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
IMuidCaloTrackStateOnSurface interface: to get the 3 scattering and energy deposit TSOS'es representi...
Definition: MuidCaloTrackStateOnSurface.cxx:85
Rec::MuidCaloTrackStateOnSurface::m_caloEnergyParam
ToolHandle< Rec::IMuidCaloEnergy > m_caloEnergyParam
Definition: MuidCaloTrackStateOnSurface.h:90
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
Rec::MuidCaloTrackStateOnSurface::useEtaPhiFromDirection
static bool useEtaPhiFromDirection(const Trk::TrackParameters &parameters)
Definition: MuidCaloTrackStateOnSurface.cxx:437
Rec::MuidCaloTrackStateOnSurface::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: MuidCaloTrackStateOnSurface.h:109
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Rec::MuidCaloTrackStateOnSurface::m_caloMaterialParam
ToolHandle< Rec::IMuidCaloMaterialParam > m_caloMaterialParam
Definition: MuidCaloTrackStateOnSurface.h:95
Rec::MuidCaloTrackStateOnSurface::Outer
@ Outer
Definition: MuidCaloTrackStateOnSurface.h:75
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::nonInteracting
@ nonInteracting
Definition: ParticleHypothesis.h:25
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::MaterialEffectsOnTrack::energyLoss
const EnergyLoss * energyLoss() const
returns the energy loss object.
h
Rec::MuidCaloTrackStateOnSurface::m_propagator
ToolHandle< Trk::IPropagator > m_propagator
Definition: MuidCaloTrackStateOnSurface.h:100
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Rec::MuidCaloTrackStateOnSurface::innerTSOS
std::unique_ptr< Trk::TrackStateOnSurface > innerTSOS(const EventContext &ctx, const Trk::TrackParameters &parameters) const override
IMuidCaloTrackStateOnSurface interface: to get individually the scattering TSOS'es representing the c...
Definition: MuidCaloTrackStateOnSurface.cxx:271
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Rec::MuidCaloTrackStateOnSurface::getExtrapolatedParameters
std::unique_ptr< const Trk::TrackParameters > getExtrapolatedParameters(const EventContext &ctx, const Trk::TrackParameters &parameters, const short layer) const
Definition: MuidCaloTrackStateOnSurface.cxx:317
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
Trk::SurfaceType::Cylinder
@ Cylinder
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Rec::MuidCaloTrackStateOnSurface::m_paramPtCut
double m_paramPtCut
Definition: MuidCaloTrackStateOnSurface.h:115
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
Rec::MuidCaloTrackStateOnSurface::m_minRemainingEnergy
double m_minRemainingEnergy
Definition: MuidCaloTrackStateOnSurface.h:114
PrepareReferenceFile.iterate
def iterate(ROOT.TDirectory thisdir, ROOT.TDirectory targetdir, str prefix, typing.Pattern regex, bool excludeTrees)
Definition: PrepareReferenceFile.py:10
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
Rec::MuidCaloTrackStateOnSurface::m_magFieldProperties
Trk::MagneticFieldProperties m_magFieldProperties
Definition: MuidCaloTrackStateOnSurface.h:106
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Trk::Surface::type
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
fitman.k
k
Definition: fitman.py:528
Rec::MuidCaloTrackStateOnSurface::m_countCompleteFailure
std::atomic_int m_countCompleteFailure
Definition: MuidCaloTrackStateOnSurface.h:120