Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <CombinatorialNSWSeedFinderAlg.h>
|
virtual | ~CombinatorialNSWSeedFinderAlg ()=default |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | execute (const EventContext &ctx) const override |
|
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 |
|
|
std::unique_ptr< SegmentSeed > | buildSegmentSeed (HitVec &hits, const AmgSymMatrix(2)&bMatrix, const HoughMaximum &max, const HitLayVec &extensionLayers) const |
|
HitVec | extendHits (const Amg::Vector3D &startPos, const Amg::Vector3D &direction, const HitLayVec &stripHitsLayers) const |
|
std::vector< std::unique_ptr< SegmentSeed > > | findSeedsFromMaximum (const HoughMaximum &max, const ActsGeometryContext &gctx) const |
|
HitLayVec | findCombinatoricHits (const Amg::Vector3D &beamSpot, const HitLayVec &combinatoricLayers) const |
|
HitWindow | findHitInWindow (const Amg::Vector3D &startPos, const SpacePoint *testHit, const Amg::Vector3D &dirEstUp, const Amg::Vector3D &dirEstDn) 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...
|
|
|
SG::ReadHandleKey< EtaHoughMaxContainer > | m_etaKey {this, "CombinatorialReadKey", "MuonHoughNswMaxima"} |
|
SG::WriteHandleKey< SegmentSeedContainer > | m_writeKey {this, "CombinatorialPhiWriteKey", "MuonHoughNswSegmentSeeds"} |
|
SG::ReadHandleKey< ActsGeometryContext > | m_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"} |
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
const MuonGMR4::MuonDetectorManager * | m_detMgr {nullptr} |
|
DoubleProperty | m_windowTheta {this, "m_windowTheta", 0.5 * Gaudi::Units::deg} |
|
DoubleProperty | m_minPullThreshold {this, "m_minPullThreshold", 5.} |
|
ToolHandle< MuonValR4::IPatternVisualizationTool > | m_visionTool {this, "VisualizationTool", ""} |
| Pattern visualization tool. More...
|
|
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 |
|
◆ StoreGateSvc_t
◆ ~CombinatorialNSWSeedFinderAlg()
virtual MuonR4::CombinatorialNSWSeedFinderAlg::~CombinatorialNSWSeedFinderAlg |
( |
| ) |
|
|
virtualdefault |
◆ buildSegmentSeed()
Definition at line 200 of file CombinatorialNSWSeedFinderAlg.cxx.
206 ATH_MSG_VERBOSE(
"Seed Rejection: Wrong number of initial layers for seeding --they should be four");
217 double interceptX = segPos.x();
218 double interceptY = segPos.y();
221 for (std::size_t
i = 0;
i < 4;
i++) {
227 double halfLength = 0.5 * clust->
readoutElement()->
stripLayer(clust->measurementHash()).design().stripLength(clust->channelNumber());
229 if (std::abs(
params[
i]) > halfLength) {
230 ATH_MSG_VERBOSE(
"Seed Rejection: Invalid seed - outside of the strip's length");
237 auto extendedHits =
extendHits(segPos, direction, extensionLayers);
238 hits.insert(
hits.end(), extendedHits.begin(), extendedHits.end());
239 return std::make_unique<SegmentSeed>(tanTheta, interceptY, tanPhi,
240 interceptX,
hits.size(),
241 std::move(
hits),
max.parentBucket());
◆ cardinality()
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 75 of file AthCommonReentrantAlgorithm.cxx.
◆ 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);
◆ 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.
◆ 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.
◆ 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()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode MuonR4::CombinatorialNSWSeedFinderAlg::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
Definition at line 336 of file CombinatorialNSWSeedFinderAlg.cxx.
346 ATH_CHECK(writeMaxima.record(std::make_unique<SegmentSeedContainer>()));
350 for (
const HoughMaximum *
max : *maxima) {
353 for(
const auto& hitMax :
max->getHitsInMax()){
358 for (
auto &seed : seeds) {
360 <<
", tanPhi = "<<
seed->tanPhi()<<
", x0 = "<<
seed->interceptX()<<
", hits in the seed "<<
seed->getHitsInMax().size());
362 for(
const auto& hit :
seed->getHitsInMax()){
367 m_visionTool->visualizeSeed(ctx, *seed,
"#phi-combinatorialSeed");
369 writeMaxima->push_back(std::move(seed));
374 return StatusCode::SUCCESS;
◆ extendHits()
Definition at line 151 of file CombinatorialNSWSeedFinderAlg.cxx.
159 for (
unsigned int i = 0;
i < stripHitsLayers.size();
i++) {
161 double offset = stripHitsLayers[
i].front()->positionInChamber().dot(stripHitsLayers[
i].front()->planeNormal());
162 const Amg::Vector3D extrapPos = startPos + Amg::intersect<3>(startPos, direction, stripHitsLayers[
i].front()->planeNormal(),
offset).value_or(0) * direction;
164 unsigned int indexOfHit = stripHitsLayers[
i].size()+1;
165 unsigned int triedHit{0};
169 for (
unsigned int j = 0; j < stripHitsLayers[
i].size(); j++) {
170 auto hit = stripHitsLayers[
i].at(j);
175 if (
pull > minPull) {
192 <<
Amg::toString(stripHitsLayers[
i].at(indexOfHit)->positionInChamber())<<
", dir: "<<
Amg::toString(stripHitsLayers[
i].at(indexOfHit)->directionInChamber())<<
" found with pull "<<minPull);
193 combinatoricHits.push_back(stripHitsLayers[
i].at(indexOfHit));
196 return combinatoricHits;
◆ 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
◆ extraOutputDeps()
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.
◆ filterPassed()
◆ findCombinatoricHits()
Construct the beamspot to first hit connection to guestimate the angle
Apply cut window on theta of the seed.
Definition at line 89 of file CombinatorialNSWSeedFinderAlg.cxx.
95 unsigned int iterLay0{0}, iterLay1{0}, iterLay2{0}, iterLay3{0};
96 unsigned int startLay1{0}, startLay2{0}, startLay3{0};
98 for( ; iterLay0 < combinatoricLayers[0].size() ; ++iterLay0){
100 const SpacePoint* hit0 = combinatoricLayers[0][iterLay0];
109 hit0->planeNormal().dot(hit0->positionInChamber())).value_or(0.) * initSeedDir ));
111 for( iterLay1 = startLay1; iterLay1 < combinatoricLayers[1].size() ; ++iterLay1){
112 const SpacePoint* hit1 = combinatoricLayers[1][iterLay1];
121 for( iterLay2 = startLay2; iterLay2 < combinatoricLayers[2].size() ; ++iterLay2){
122 const SpacePoint* hit2 = combinatoricLayers[2][iterLay2];
125 iterLay1 = combinatoricLayers[1].size();
131 for( iterLay3 = startLay3; iterLay3 < combinatoricLayers[3].size(); ++iterLay3){
132 const SpacePoint* hit3 = combinatoricLayers[3][iterLay3];
135 iterLay1 = combinatoricLayers[1].size();
136 iterLay2 = combinatoricLayers[2].size();
142 seedHitsFromLayers.emplace_back(
HitVec{hit0, hit1, hit2, hit3});
147 return seedHitsFromLayers;
◆ findHitInWindow()
Calculate the strip edges
Definition at line 49 of file CombinatorialNSWSeedFinderAlg.cxx.
54 const double planeOffSet = testHit->positionInChamber().dot(testHit->planeNormal());
57 Amg::intersect<3>(startPos, dirEstUp, testHit->planeNormal(), planeOffSet).value_or(0) * dirEstUp;
59 Amg::intersect<3>(startPos, dirEstDn, testHit->planeNormal(), planeOffSet).value_or(0) * dirEstDn;
61 switch (testHit->type()) {
63 const auto* prd =
static_cast<const xAOD::MMCluster*
>(testHit->primaryMeasurement());
65 const double halfLength = prd->
readoutElement()->
stripLayer(prd->measurementHash()).design().stripLength(prd->channelNumber()) * 0.5;
67 const Amg::Vector3D leftEdge = testHit->positionInChamber() - halfLength * testHit->directionInChamber();
68 const Amg::Vector3D rightEdge = testHit->positionInChamber() + halfLength * testHit->directionInChamber();
70 const bool below = estPlaneArrivalDn.y() >
std::max(leftEdge.y(), rightEdge.y());
71 const bool above = estPlaneArrivalUp.y() <
std::min(leftEdge.y(), rightEdge.y());
73 << (below || above ?
" is outside the window" :
" is inside the window"));
◆ findSeedsFromMaximum()
Definition at line 245 of file CombinatorialNSWSeedFinderAlg.cxx.
247 SpacePointPerLayerSplitter hitLayers{
max.getHitsInMax()};
249 HitLayVec stripHitsLayers{hitLayers.stripHits()};
251 std::vector<std::unique_ptr<SegmentSeed>> seeds;
253 unsigned int layerSize = stripHitsLayers.size();
263 constexpr
double legX{0.2};
266 const auto* mmClust =
static_cast<const xAOD::MMCluster*
>(sp->primaryMeasurement());
277 const double pull2 = (mmClust->localPosition<1>().
x() - simHit->
localPosition().x()) / std::sqrt(mmClust->localCovariance<1>().x());
282 m_visionTool->visualizeBucket(Gaudi::Hive::currentContext(), *
max.parentBucket(),
283 "truth", std::move(primitives));
287 std::array<const SpacePoint*, 4> seedHits{};
288 for (std::size_t
i = 0;
i < layerSize - 3; ++
i) {
289 seedHits[0] = stripHitsLayers[
i].front();
290 for (std::size_t j =
i + 1; j < layerSize - 2; ++j) {
291 seedHits[1] = stripHitsLayers[j].front();
292 for (std::size_t
k = j + 1;
k < layerSize - 1; ++
k) {
293 seedHits[2] = stripHitsLayers[
k].front();
294 for (std::size_t
l =
k + 1;
l < layerSize; ++
l) {
295 seedHits[3] = stripHitsLayers[
l].front();
296 AmgSymMatrix(2) bMatrix = CombinatorialSeedSolver::betaMatrix(seedHits);
297 if (std::abs(bMatrix.determinant()) < 1.
e-6) {
302 const HitLayVec layers{stripHitsLayers[
i], stripHitsLayers[j], stripHitsLayers[
k], stripHitsLayers[
l]};
310 std::copy_if(stripHitsLayers.begin(), stripHitsLayers.end(), std::back_inserter(extensionLayers),
312 const Identifier gasGapId = m_idHelperSvc->gasGapId(stripLayer.front()->identify());
313 return std::ranges::find_if(layers,[&gasGapId, this](const HitVec& spacePoints){
314 return gasGapId == m_idHelperSvc->gasGapId(spacePoints.front()->identify());
320 for (
auto &combinatoricHits :
result) {
323 seeds.push_back(std::move(seed));
◆ initialize()
StatusCode MuonR4::CombinatorialNSWSeedFinderAlg::initialize |
( |
| ) |
|
|
overridevirtual |
◆ 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.
◆ isClonable()
◆ 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()
◆ setFilterPassed()
◆ sysExecute()
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 85 of file AthCommonReentrantAlgorithm.cxx.
◆ sysInitialize()
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 61 of file AthCommonReentrantAlgorithm.cxx.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_detMgr
◆ m_detStore
◆ m_etaKey
◆ m_evtStore
◆ m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 114 of file AthCommonReentrantAlgorithm.h.
◆ m_geoCtxKey
◆ m_idHelperSvc
◆ m_minPullThreshold
DoubleProperty MuonR4::CombinatorialNSWSeedFinderAlg::m_minPullThreshold {this, "m_minPullThreshold", 5.} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_visionTool
◆ m_windowTheta
DoubleProperty MuonR4::CombinatorialNSWSeedFinderAlg::m_windowTheta {this, "m_windowTheta", 0.5 * Gaudi::Units::deg} |
|
private |
◆ m_writeKey
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
constexpr unsigned int minLayers
HitWindow findHitInWindow(const Amg::Vector3D &startPos, const SpacePoint *testHit, const Amg::Vector3D &dirEstUp, const Amg::Vector3D &dirEstDn) const
double stereoAngle() const
Returns the value of the stereo angle.
const SpectrometerSector * msSector() const
Returns the pointer to the envelope volume enclosing all chambers in the sector.
Identifier identify() const
Returns the global ATLAS identifier of the SimHit.
HitLayVec findCombinatoricHits(const Amg::Vector3D &beamSpot, const HitLayVec &combinatoricLayers) const
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
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)
const MuonGMR4::MmReadoutElement * readoutElement() const
Retrieve the associated MmReadoutElement.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
#define ATH_MSG_VERBOSE(x)
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
std::unique_ptr< TLatex > drawLabel(const std::string &text, const double xPos, const double yPos, const unsigned int fontSize=18)
Create a TLatex label,.
HitVec extendHits(const Amg::Vector3D &startPos, const Amg::Vector3D &direction, const HitLayVec &stripHitsLayers) const
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
double houghTanPhi(const Amg::Vector3D &v)
: Returns the hough tanPhi [x] / [z]
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
double chiSqTermStrip(const Amg::Vector3D &posInChamber, const Amg::Vector3D &dirInChamber, const SpacePoint &measurement, MsgStream &msg)
Calculates the chi2 contribuation to a linear segment line from an uncalibrated strip measurement.
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
int multilayer() const
Returns the multi layer of the element [1-2].
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
::StatusCode StatusCode
StatusCode definition for legacy code.
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &gctx) const
Returns the global -> local transformation from the ATLAS global.
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Eigen::Affine3d Transform3D
SG::WriteHandleKey< SegmentSeedContainer > m_writeKey
requires acceptedContainer< spacePointContainer > &&hasPointerValues< spacePointContainer > std::pair< Amg::Vector3D, Amg::Vector3D > seedSolution(const spacePointContainer &spacePoints, const std::array< double, 4 > ¶meters)
solves the equation system to calculate the seed
Out copy_if(In first, const In &last, Out res, const Pred &p)
ConstVectorMap< 3 > localDirection() const
Returns the local direction of the traversing particle.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Include the GeoPrimitives which need to be put first.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
const StripLayer & stripLayer(const Identifier &measId) const
DoubleProperty m_windowTheta
SpacePointPerLayerSplitter::HitVec HitVec
Eigen::Matrix< double, 3, 1 > Vector3D
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
SG::ReadHandleKey< EtaHoughMaxContainer > m_etaKey
const StripDesign & design() const
Returns the underlying strip design.
Amg::Vector3D dirFromAngles(const double phi, const double theta)
Constructs a direction vector from the azimuthal & polar angles.
#define ATH_MSG_WARNING(x)
requires acceptedContainer< spacePointContainer > &&hasPointerValues< spacePointContainer > std::array< double, 4 > defineParameters(AmgSymMatrix(2) betaMatrix, const spacePointContainer &spacePoints)
calculates the parameters lamda,alpha,gamma,kappa of the system
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
std::unique_ptr< SegmentSeed > buildSegmentSeed(HitVec &hits, const AmgSymMatrix(2)&bMatrix, const HoughMaximum &max, const HitLayVec &extensionLayers) const
ConstVectorMap< 3 > localPosition() const
Returns the local postion of the traversing particle.
const MuonGMR4::MuonDetectorManager * m_detMgr
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
const xAOD::MuonSimHit * getTruthMatchedHit(const xAOD::UncalibratedMeasurement &prdHit)
Returns the MuonSimHit, if there's any, matched to the uncalibrated muon measurement.
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
bool hasStereoAngle() const
Returns whether a stereo angle is defined.
DataVector< HoughMaximum > EtaHoughMaxContainer
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
const AmgSymMatrix(2) &SpacePoint
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
double houghTanTheta(const Amg::Vector3D &v)
Returns the hough tanTheta [y] / [z].
std::vector< std::unique_ptr< SegmentSeed > > findSeedsFromMaximum(const HoughMaximum &max, const ActsGeometryContext &gctx) const
std::unordered_set< const xAOD::MuonSimHit * > getMatchingSimHits(const xAOD::MuonSegment &segment)
: Returns all sim hits matched to a xAOD::MuonSegment
SpacePointPerLayerSplitter::HitLayVec HitLayVec
DoubleProperty m_minPullThreshold