|
ATLAS Offline Software
|
#include <StepEngine.h>
|
| StepEngine (const std::string &, const std::string &, const IInterface *) |
| Constructor. More...
|
|
virtual | ~StepEngine () |
| Destructor. More...
|
|
virtual StatusCode | initialize () override |
| AlgTool initialize method. More...
|
|
virtual StatusCode | finalize () override |
| AlgTool finalize method. More...
|
|
virtual ExtrapolationCode | extrapolate (ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const override |
| charged extrapolation - public interface More...
|
|
virtual ExtrapolationCode | extrapolate (ExCellNeutral &ecNeutral, const Surface *sf=0, const BoundaryCheck &bcheck=true) const override |
| neutral extrapolation - public interface More...
|
|
virtual GeometryType | geometryType () const override |
| define for which GeometrySignature this extrapolator is valid - this is GLOBAL More...
|
|
virtual ExtrapolationCode | extrapolate (ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const=0 |
| charged extrapolation More...
|
|
virtual ExtrapolationCode | extrapolate (ExCellNeutral &ecNeutral, const Surface *sf=0, const BoundaryCheck &bcheck=true) const=0 |
| neutral extrapolation 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 |
|
|
template<class T > |
Trk::ExtrapolationCode | targetSurfacesT (ExtrapolationCell< T > &eCell, Trk::TargetSurfaceVector &ts, bool trueOrderedIntersections, const Surface *sf=0, const BoundaryCheck &bcheck=true) const |
| main loop extrapolation method More...
|
|
template<class T > |
Trk::ExtrapolationCode | resolveFrameBoundaryT (ExtrapolationCell< T > &eCell, Amg::Vector3D position, unsigned int index) const |
|
void | evaluateDistance (Trk::TargetSurface &tt, const Amg::Vector3D &pos, const Amg::Vector3D &mom, Trk::TargetSurfaceVector &ts, bool trueOrdered) const |
| distance calculations More...
|
|
Trk::ExtrapolationCode | handleIntersection (ExCellCharged &ecCharged, Trk::TargetSurfaceVector &solutions) const |
| handle extrapolation step More...
|
|
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...
|
|
Extrapolation engine for arbitrary tracking geometry environment. Intended as primary choice for Calo/MS.
- Author
- sarka.todorova -at- cern.ch
Definition at line 43 of file StepEngine.h.
◆ StoreGateSvc_t
◆ ResolveLayerType
Enumerator |
---|
StartLayer | |
NavigationLayer | |
PassThroughLayer | |
SubStructureLayer | |
DestinationLayer | |
StartAndDestinationLayer | |
UndefinedLayer | |
Definition at line 50 of file StepEngine.h.
◆ StepEngine()
Trk::StepEngine::StepEngine |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
Constructor.
Definition at line 15 of file StepEngine.cxx.
24 declareInterface<Trk::IExtrapolationEngine>(
this);
◆ ~StepEngine()
Trk::StepEngine::~StepEngine |
( |
| ) |
|
|
virtualdefault |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evaluateDistance()
distance calculations
Definition at line 268 of file StepEngine.cxx.
273 double dist = distSol.
first();
281 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
282 tt.setPosition(posi);
289 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
290 tt.setPosition(posi);
300 tt.setDistance(dist,fabs(dAbs),distSol.
signedDistance() && dAbs!=0. ? dAbs/fabs(dAbs) : 0.);
301 tt.setPosition(posi);
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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
◆ extrapolate() [1/4]
charged extrapolation - public interface
charged extrapolation
Implements Trk::IExtrapolationEngine.
Definition at line 77 of file StepEngine.cxx.
83 if (!ecCharged.leadVolume) {
89 ecCharged.lastLeadParameters = ecCharged.leadParameters;
100 EX_MSG_WARNING(
"",
"extrapolate",
"",
"frame navigation recovery attempt for:"<< ecCharged.leadVolume->volumeName());
111 Trk::PathLimit pathLim(ecCharged.materialLimitX0-ecCharged.materialX0, ecCharged.materialProcess);
119 while (ecCharged.leadParameters ) {
123 EX_MSG_VERBOSE(ecCharged.navigationStep,
"propagate",
"loop",
"starting propagation at position : " << ecCharged.leadParameters->position()<<
","<<ecCharged.leadParameters->momentum() );
124 if (
m_debugCall)
EX_MSG_DEBUG(ecCharged.navigationStep,
"propagate",
"debug loop",
"starting propagation at position : " << ecCharged.leadParameters->position()<<
","<<ecCharged.leadParameters->momentum() );
132 Gaudi::Hive::currentContext(),
140 EX_MSG_INFO(ecCharged.navigationStep,
"extrapolate",
"loop:debug mode:",
" stopping execution for further debugging");
144 EX_MSG_INFO(ecCharged.navigationStep,
"extrapolate",
"loop:debug mode:",
"rerun last extrapolation call"<<ecCharged.lastLeadParameters->position());
145 ecCharged.leadParameters = ecCharged.lastLeadParameters;
146 ecCharged.leadVolume =
nullptr;
155 if (!nextPar)
EX_MSG_VERBOSE(ecCharged.navigationStep,
"propagate",
"loop",
"propagation failed ");
156 else EX_MSG_VERBOSE(ecCharged.navigationStep,
"propagate",
"loop",
"propagated to :"<< nextPar->
position());
160 EX_MSG_VERBOSE(ecCharged.navigationStep,
"propagate",
"loop",
"propagation arrived at position : " << ecCharged.leadParameters->position() );
161 if (
m_debugCall)
EX_MSG_DEBUG(ecCharged.navigationStep,
"propagate",
"loop",
"propagation arrived at position : " << ecCharged.leadParameters->position() );
◆ extrapolate() [2/4]
◆ extrapolate() [3/4]
neutral extrapolation - public interface
neutral extrapolation
Implements Trk::IExtrapolationEngine.
Definition at line 179 of file StepEngine.cxx.
186 if (!ecNeutral.leadVolume) {
207 if (!ecNeutral.leadVolume) {
217 for (
auto &
t :
ts) {
222 const auto &bounds = ecNeutral.leadVolume->boundarySurfaces();
224 ecNeutral.leadParameters->momentum(),
225 ecNeutral.propDirection);
233 && (nextVolume->
geometrySignature() != ecNeutral.leadVolume->geometrySignature());
236 if (!stopAtThisBoundary)
239 if (ecNeutral.leadVolume == nextVolume ) {
243 EX_MSG_VERBOSE(ecNeutral.navigationStep,
"navigation",
"",
"loop detected while trying to leave TrackingVolume '" << nextVolume->
volumeName() <<
".");
248 if (stopAtThisBoundary){
249 EX_MSG_VERBOSE(ecNeutral.navigationStep,
"navigation",
"",
"geometry signature change from " <<
250 ecNeutral.leadVolume->geometrySignature() <<
" to " << nextVolume->
geometrySignature());
257 ecNeutral.lastBoundaryParameters = ecNeutral.leadParameters;
259 ecNeutral.leadVolume = nextVolume;
◆ extrapolate() [4/4]
◆ finalize()
StatusCode Trk::StepEngine::finalize |
( |
| ) |
|
|
overridevirtual |
AlgTool finalize method.
Definition at line 69 of file StepEngine.cxx.
72 return StatusCode::SUCCESS;
◆ geometryType()
◆ handleIntersection()
handle extrapolation step
Definition at line 309 of file StepEngine.cxx.
312 for (
const auto & thisSurface : solutions){
◆ initialize()
StatusCode Trk::StepEngine::initialize |
( |
| ) |
|
|
overridevirtual |
AlgTool initialize method.
Definition at line 41 of file StepEngine.cxx.
45 return StatusCode::FAILURE;
51 return StatusCode::FAILURE;
57 return StatusCode::FAILURE;
65 return StatusCode::SUCCESS;
◆ inputHandles()
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& Trk::IExtrapolationEngine::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
AlgTool interface methods.
Definition at line 43 of file IExtrapolationEngine.h.
43 {
return IID_IExtrapolationEngine; }
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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()
◆ renounceArray()
◆ resolveFrameBoundaryT()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ targetSurfacesT()
main loop extrapolation method
◆ updateVHKA()
◆ m_debugAndFix
bool Trk::StepEngine::m_debugAndFix |
|
private |
◆ m_debugCall
bool Trk::StepEngine::m_debugCall |
|
mutableprivate |
◆ m_detStore
◆ m_evtStore
◆ m_materialEffectsEngine
◆ m_navigationEngine
◆ m_propagator
◆ m_sopPostfix
std::string Trk::IExtrapolationEngine::m_sopPostfix |
|
protectedinherited |
◆ m_sopPrefix
std::string Trk::IExtrapolationEngine::m_sopPrefix |
|
protectedinherited |
< SCREEN output formatting (SOP) - unify amongst extrapolation engines
prefix for screen output
Definition at line 63 of file IExtrapolationEngine.h.
◆ m_targetSurfaces
◆ m_tolerance
double Trk::StepEngine::m_tolerance |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
double currentDistance(bool signedDist=false) const
Current distance to surface (spatial), signed (along/opposite to surface normal) if input argument tr...
bool signedDistance() const
This method indicates availability of signed current distance (false for Perigee and StraighLineSurfa...
Trk::ExtrapolationCode handleIntersection(ExCellCharged &ecCharged, Trk::TargetSurfaceVector &solutions) const
handle extrapolation step
ToolHandle< INavigationEngine > m_navigationEngine
access to tracking geometry
const Amg::Vector3D & position() const
Access method for the position.
GeometrySignature geometrySignature() const
return the Signature
int numberOfSolutions() const
Number of intersection solutions.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
ToolHandle< IPropagator > m_propagator
the used propagation engine
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
double first() const
Distance to first intersection solution along direction.
@ StartAndDestinationLayer
virtual void setOwner(IDataHandleHolder *o)=0
Trk::ExtrapolationCode targetSurfacesT(ExtrapolationCell< T > &eCell, Trk::TargetSurfaceVector &ts, bool trueOrderedIntersections, const Surface *sf=0, const BoundaryCheck &bcheck=true) const
main loop extrapolation method
Trk::ExtrapolationCode resolveFrameBoundaryT(ExtrapolationCell< T > &eCell, Amg::Vector3D position, unsigned int index) const
double second() const
Distance to second intersection solution along direction (for a cylinder surface)
CurvilinearParametersT< NeutralParametersDim, Neutral, PlaneSurface > NeutralCurvilinearParameters
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
void setDebugModeOn()
set debug mode
virtual ExtrapolationCode extrapolate(ExCellCharged &ecCharged, const Surface *sf=0, const BoundaryCheck &bcheck=true) const override
charged extrapolation - public interface
Eigen::Matrix< double, 3, 1 > Vector3D
void setDebugModeOff()
set debug mode
ToolHandle< IMaterialEffectsEngine > m_materialEffectsEngine
the material effects updated
std::vector< TargetSurface > TargetSurfaceVector
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
TargetSurfaces m_targetSurfaces
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Trk::ExtrapolationCode setOnInput(const Trk::ExCellCharged &, const Trk::Surface *sf, const BoundaryCheck &bc)
Extract surfaces for charged propagation, step into new frame volume.