ATLAS Offline Software
Classes | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
MuonR4::SpacePointMakerAlg Class Reference

#include <SpacePointMakerAlg.h>

Inheritance diagram for MuonR4::SpacePointMakerAlg:
Collaboration diagram for MuonR4::SpacePointMakerAlg:

Classes

struct  SpacePointsPerChamber
 : Helper struct to collect the space point per muon chamber, which are later sorted into the space point buckets. More...
 
class  SpacePointStatistics
 Helper class to keep track of how many eta+phi, eta and phi only space points are built in various detector regions. More...
 

Public Member Functions

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

Protected Member Functions

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

Private Types

using PreSortedSpacePointMap = std::unordered_map< const MuonGMR4::SpectrometerSector *, SpacePointsPerChamber >
 Container abrivation of the presorted space point container per MuonChambers. More...
 
using SpacePointBucketVec = std::vector< SpacePointBucket >
 Abrivation of a MuonSapcePoint bucket vector. More...
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

template<class MeasType >
Amg::Transform3D toChamberTransform (const ActsGeometryContext &gctx, const Amg::Transform3D &sectorTrans, const MeasType *meas) const
 Returns the transform from the attached Muon chamber frame to the sector frame. More...
 
template<class MeasType >
Amg::Vector3D positionInChamber (const MeasType *meas, const Amg::Transform3D &toChamberTrans) const
 Returns the position of the uncalibrated muon measurement in the sector frame. More...
 
template<class MeasType >
Amg::Vector3D channelDirInChamber (const MeasType *meas, const Amg::Transform3D &toChamberTrans) const
 Returns the direction of the measurement channel in the sector frame. More...
 
template<class MeasType >
Amg::Vector3D channelNormalInChamber (const MeasType *meas, const Amg::Transform3D &toChamberTrans) const
 Returns the direction, in the sector frame, of the precision axis of the measurement, i.e. More...
 
template<class MeasType >
 AmgSymMatrix (2) computeCov(const MeasType *primaryMeas
 Helper function to calculate the covariance for spacepoints having only one measurement. More...
 
template<class MeasType >
void fillSpacePoint (std::vector< SpacePoint > &pointColl, const MeasType *primaryMeas, const MeasType *secondaryMeas, const Amg::Transform3D &toChamberTrans_eta, const Amg::Transform3D &toChamberTrans_phi) const
 Helper function that creates the spacepoint and populates it, when having two measurement. More...
 
template<class ContType >
StatusCode loadContainerAndSort (const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, PreSortedSpacePointMap &fillContainer) const
 Retrieve an uncalibrated measurement container <ContType> and fill the hits into the presorted space point map. More...
 
void distributePointsAndStore (SpacePointsPerChamber &&hitsPerChamber, SpacePointContainer &finalContainer) const
 Distribute the premade spacepoints per chamber into their individual SpacePoint buckets. More...
 
void distributePrimaryPoints (std::vector< SpacePoint > &&spacePoints, SpacePointBucketVec &splittedContainer) const
 Distributes the vector of primary eta or eta + phi space points and fills them into the buckets. More...
 
void distributePhiPoints (std::vector< SpacePoint > &&spacePoints, SpacePointBucketVec &splittedContainer) const
 Distributs the vector phi space points into the buckets. More...
 
bool splitBucket (const SpacePoint &spacePoint, const double firstSpPos, const SpacePointBucketVec &sortedPoints) const
 Returns whether the space point is beyond the bucket boundary. More...
 
void newBucket (const SpacePoint &refSp, SpacePointBucketVec &sortedPoints) const
 Closes the current processed bucket and creates a new one. More...
 
template<class PrdType >
bool passOccupancy2D (const std::vector< const PrdType * > &etaHits, const std::vector< const PrdType * > &phiHits) const
 : Check whether the occupancy cuts of hits in a gasGap are surpassed. More...
 
template<class MeasType >
AmgSymMatrix(2) computeCov(const xAOD AmgSymMatrix (std::vector< SpacePoint > &pointColl, const MeasType *primaryMeas, const Amg::Transform3D &toChamberTrans) constvoid
 Helper function to calculate the covariance for spacepoints having two measurements. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

const Amg::Vector3Ddir
 
const Amg::Vector3D const Amg::Vector3D &nor const
 
SG::ReadHandleKey< xAOD::MdtDriftCircleContainerm_mdtKey
 
SG::ReadHandleKey< xAOD::RpcMeasurementContainerm_rpcKey
 
SG::ReadHandleKey< xAOD::TgcStripContainerm_tgcKey
 
SG::ReadHandleKey< xAOD::MMClusterContainerm_mmKey
 
SG::ReadHandleKey< xAOD::sTgcMeasContainerm_stgcKey {this, "sTgcKey", "xAODsTgcMeasurements"}
 
SG::ReadHandleKey< ActsGeometryContextm_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
SG::WriteHandleKey< SpacePointContainerm_writeKey {this, "WriteKey", "MuonSpacePoints"}
 
Gaudi::Property< double > m_spacePointWindow
 
Gaudi::Property< double > m_maxBucketLength
 
Gaudi::Property< double > m_spacePointOverlap
 
Gaudi::Property< bool > m_doStat
 
Gaudi::Property< unsigned int > m_capacityBucket {this,"CapacityBucket" , 50}
 
std::unique_ptr< SpacePointStatistics > m_statCounter ATLAS_THREAD_SAFE {}
 
Gaudi::Property< double > m_maxOccRpcEta
 
Gaudi::Property< double > m_maxOccRpcPhi
 
Gaudi::Property< double > m_maxOccTgcEta
 
Gaudi::Property< double > m_maxOccTgcPhi
 
Gaudi::Property< double > m_maxOccStgcEta
 
Gaudi::Property< double > m_maxOccStgcPhi
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 27 of file SpacePointMakerAlg.h.

Member Typedef Documentation

◆ PreSortedSpacePointMap

Container abrivation of the presorted space point container per MuonChambers.

Definition at line 153 of file SpacePointMakerAlg.h.

◆ SpacePointBucketVec

Abrivation of a MuonSapcePoint bucket vector.

Definition at line 171 of file SpacePointMakerAlg.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ~SpacePointMakerAlg()

MuonR4::SpacePointMakerAlg::~SpacePointMakerAlg ( )
default

Member Function Documentation

◆ AmgSymMatrix() [1/2]

template<class MeasType >
MuonR4::SpacePointMakerAlg::AmgSymMatrix ( ) const
private

Helper function to calculate the covariance for spacepoints having only one measurement.

Parameters
primaryMeasUncalibrated muon measurement
dirdirection of the measurement channel in the sector frame
nordirection of the precision axis of the measurement in the sector frame

◆ AmgSymMatrix() [2/2]

template<class MeasType >
AmgSymMatrix (2) computeCov( const xAOD MuonR4::SpacePointMakerAlg::AmgSymMatrix ( std::vector< SpacePoint > &  pointColl,
const MeasType *  primaryMeas,
const Amg::Transform3D toChamberTrans 
) const
private

Helper function to calculate the covariance for spacepoints having two measurements.

Parameters
primaryMeasPrimary uncalibrated muon measurement
secondaryMeasSecondary uncalibrated muon measurement
nor1direction of the precision axis of the primary measurement in the sector frame
nor2direction of the precision axis of the secondary measurement in the sector frame

Helper function that creates the spacepoint and populates it, when having one measurement

Parameters
pointCollCollection of spacepoints where the new one is being push
primaryMeasUncalibrated muon measurement
toChamberTranstransform from the attached Muon chamber frame to the sector frame

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality
overridevirtualinherited

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

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64 {
65  return 0;
66 }

◆ channelDirInChamber()

template<class MeasType >
Amg::Vector3D MuonR4::SpacePointMakerAlg::channelDirInChamber ( const MeasType *  meas,
const Amg::Transform3D toChamberTrans 
) const
private

Returns the direction of the measurement channel in the sector frame.

Parameters
measUncalibrated muon measurement
toChamberTranstransform from the attached Muon chamber frame to the sector frame

Definition at line 75 of file SpacePointMakerAlg.cxx.

76  {
77  if constexpr (std::is_same_v<MeasType, xAOD::MdtDriftCircle>){
78  return toChamberTrans.linear() * Amg::Vector3D::UnitZ();
79  }
80  else if constexpr (std::is_same_v<MeasType, xAOD::RpcMeasurement> or
81  std::is_same_v<MeasType, xAOD::MMCluster> or
82  std::is_same_v<MeasType, xAOD::sTgcMeasurement>){
83  return toChamberTrans.linear() * Amg::Vector3D::UnitY();
84  }
85  else if constexpr (std::is_same_v<MeasType, xAOD::TgcStrip>) {
86  const auto& stripLay = meas->readoutElement()->sensorLayout(meas->layerHash());
87  if (meas->measuresPhi()) {
88  const auto& sDesign = static_cast<const MuonGMR4::RadialStripDesign&>(stripLay->design(true));
89  return toChamberTrans.linear() * stripLay->to3D(sDesign.stripDir(meas->channelNumber()), true);
90  }
91  return toChamberTrans.linear() * stripLay->to3D(stripLay->design().stripDir(), false);
92  }
93  else static_assert(std::false_type::value, "Unsupported measurement type.");
94  return Amg::Vector3D::Zero();
95 }

◆ channelNormalInChamber()

template<class MeasType >
Amg::Vector3D MuonR4::SpacePointMakerAlg::channelNormalInChamber ( const MeasType *  meas,
const Amg::Transform3D toChamberTrans 
) const
private

Returns the direction, in the sector frame, of the precision axis of the measurement, i.e.

the vector pointing to the next strip or tube

Parameters
measUncalibrated muon measurement
toChamberTranstransform from the attached Muon chamber frame to the sector frame

Definition at line 98 of file SpacePointMakerAlg.cxx.

99  {
100  if constexpr (std::is_same_v<MeasType, xAOD::MdtDriftCircle>){
101  return toChamberTrans.linear() * Amg::Vector3D::UnitY();
102  }
103  else if constexpr (std::is_same_v<MeasType, xAOD::RpcMeasurement> or
104  std::is_same_v<MeasType, xAOD::MMCluster> or
105  std::is_same_v<MeasType, xAOD::sTgcMeasurement>){
106  return toChamberTrans.linear() * Amg::Vector3D::UnitX();
107  }
108  else if constexpr (std::is_same_v<MeasType, xAOD::TgcStrip>) {
109  const auto& stripLay = meas->readoutElement()->sensorLayout(meas->layerHash());
110  if (meas->measuresPhi()) {
111  const auto& sDesign = static_cast<const MuonGMR4::RadialStripDesign&>(stripLay->design(true));
112  return toChamberTrans.linear() * stripLay->to3D(sDesign.stripNormal(meas->channelNumber()), true);
113  }
114  return toChamberTrans.linear() * stripLay->to3D(stripLay->design().stripNormal(), false);
115  }
116  else static_assert(std::false_type::value, "Unsupported measurement type.");
117  return Amg::Vector3D::Zero();
118 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ distributePhiPoints()

void MuonR4::SpacePointMakerAlg::distributePhiPoints ( std::vector< SpacePoint > &&  spacePoints,
SpacePointBucketVec splittedContainer 
) const
private

Distributs the vector phi space points into the buckets.

In contrast to the primary distribution no new buckets are created and the points are distributed into the existing ones instead.

Parameters
spacePointVecotr of phi space points to sort into the buckets
splittedContainerOutput vector containing all defined bucket

If maxY is smaller than the lower cov boundary or minY is bigger than the other boundary, there's definetely no overlap

Definition at line 535 of file SpacePointMakerAlg.cxx.

536  {
537  for (SpacePoint& sp : spacePoints) {
538  auto phiPoint = std::make_shared<SpacePoint>(std::move(sp));
539  const double minY = phiPoint->positionInChamber().y() - phiPoint->uncertainty().y();
540  const double maxY = phiPoint->positionInChamber().y() + phiPoint->uncertainty().y();
541  for (SpacePointBucket& bucket : splittedContainer){
544  if (! (maxY < bucket.coveredMin() || bucket.coveredMax() < minY) ) {
545  bucket.emplace_back(phiPoint);
546  }
547  }
548  }
549 }

◆ distributePointsAndStore()

void MuonR4::SpacePointMakerAlg::distributePointsAndStore ( SpacePointsPerChamber &&  hitsPerChamber,
SpacePointContainer finalContainer 
) const
private

Distribute the premade spacepoints per chamber into their individual SpacePoint buckets.

A new bucket is created everytime if the hit to fill is along the z-axis farther away from the first point in the bucket than the <spacePointWindowSize>. Hit in the previous bucket which are <spacePointOverlap> away from the first hit in the new bucket are also mirrored. The bucket formation starts with the eta Muon space points and then consumes the phi hits.

Parameters
ctxEvent context of the current event
hitsPerChamberList of all premade space points which have to be sorted
finalContainerOutput SpacePoint bucket container.

Definition at line 500 of file SpacePointMakerAlg.cxx.

501  {
502  SpacePointBucketVec splittedHits{};
503  splittedHits.emplace_back();
504  if (m_statCounter){
505  m_statCounter->addToStat(hitsPerChamber.etaHits);
506  m_statCounter->addToStat(hitsPerChamber.phiHits);
507 
508  }
509  distributePrimaryPoints(std::move(hitsPerChamber.etaHits), splittedHits);
510  splittedHits.erase(std::remove_if(splittedHits.begin(), splittedHits.end(),
511  [](const SpacePointBucket& bucket) {
512  return bucket.size() <= 1;
513  }), splittedHits.end());
514  distributePhiPoints(std::move(hitsPerChamber.phiHits), splittedHits);
515 
516  for (SpacePointBucket& bucket : splittedHits) {
517 
518  std::ranges::sort(bucket, MuonR4::SpacePointPerLayerSorter{});
519 
520  if (msgLvl(MSG::VERBOSE)){
521  std::stringstream spStr{};
522  for (const std::shared_ptr<SpacePoint>& sp : bucket){
523  spStr<<"SpacePoint: PrimaryMeas: " << m_idHelperSvc->toString(sp->identify()) << " SecondaryMeas: "
524  <<(sp->secondaryMeasurement() ? m_idHelperSvc->toString(xAOD::identify(sp->secondaryMeasurement())) : " None ")
525  << " Pos: " << Amg::toString(sp->positionInChamber())<<std::endl;
526  }
527  ATH_MSG_VERBOSE("Created a bucket, printing all spacepoints..."<<std::endl<<spStr.str());
528  }
529 
530  bucket.populateChamberLocations();
531  finalContainer.push_back(std::make_unique<SpacePointBucket>(std::move(bucket)));
532  }
533 
534 }

◆ distributePrimaryPoints()

void MuonR4::SpacePointMakerAlg::distributePrimaryPoints ( std::vector< SpacePoint > &&  spacePoints,
SpacePointBucketVec splittedContainer 
) const
private

Distributes the vector of primary eta or eta + phi space points and fills them into the buckets.

The buckets are dynamically created based on the distance of the new space point to sort to the previous or the first space point in the bucket.

Parameters
spacePointsVector of space points to sort into the buckets
splittedContainerOutput vector containing all defined bucket

Order the space points by local chamber y which is along the tube-plane.

Definition at line 588 of file SpacePointMakerAlg.cxx.

589  {
590 
591  if (spacePoints.empty()) return;
592 
594  std::ranges::sort(spacePoints,
595  [] (const SpacePoint& a, const SpacePoint& b) {
596  return a.positionInChamber().y() < b.positionInChamber().y();
597  });
598 
599  double firstPointPos = spacePoints.front().positionInChamber().y();
600 
601  for (SpacePoint& toSort : spacePoints) {
602  ATH_MSG_VERBOSE("Add new primary space point "<<m_idHelperSvc->toString(toSort.identify())<<", "
603  <<" @ "<<Amg::toString(toSort.positionInChamber()));
604 
605  if (splitBucket(toSort, firstPointPos, splittedHits)){
606  newBucket(toSort, splittedHits);
607  firstPointPos = splittedHits.back().empty() ? toSort.positionInChamber().y() : splittedHits.back().front()->positionInChamber().y();
608  ATH_MSG_VERBOSE("New bucket: id " << splittedHits.back().bucketId() << " Coverage: " << firstPointPos);
609  }
610  std::shared_ptr<SpacePoint> spacePoint = std::make_shared<SpacePoint>(std::move(toSort));
611  splittedHits.back().emplace_back(spacePoint);
612  }
613  SpacePointBucket& lastBucket{splittedHits.back()};
614  lastBucket.setCoveredRange(lastBucket.front()->positionInChamber().y(),
615  lastBucket.back()->positionInChamber().y());
616 }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode MuonR4::SpacePointMakerAlg::execute ( const EventContext &  ctx) const
override

Definition at line 482 of file SpacePointMakerAlg.cxx.

482  {
483  PreSortedSpacePointMap preSortedContainer{};
484  ATH_CHECK(loadContainerAndSort(ctx, m_mdtKey, preSortedContainer));
485  ATH_CHECK(loadContainerAndSort(ctx, m_rpcKey, preSortedContainer));
486  ATH_CHECK(loadContainerAndSort(ctx, m_tgcKey, preSortedContainer));
487  ATH_CHECK(loadContainerAndSort(ctx, m_mmKey, preSortedContainer));
488  ATH_CHECK(loadContainerAndSort(ctx, m_stgcKey, preSortedContainer));
489  std::unique_ptr<SpacePointContainer> outContainer = std::make_unique<SpacePointContainer>();
490 
491  for (auto &[chamber, hitsPerChamber] : preSortedContainer){
492  ATH_MSG_DEBUG("Fill space points for chamber "<<chamber->identString());
493  distributePointsAndStore(std::move(hitsPerChamber), *outContainer);
494  }
496  ATH_CHECK(writeHandle.record(std::move(outContainer)));
497  return StatusCode::SUCCESS;
498 }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps
overridevirtualinherited

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.

90 {
91  // If we didn't find any symlinks to add, just return the collection
92  // from the base class. Otherwise, return the extended collection.
93  if (!m_extendedExtraObjects.empty()) {
95  }
96  return BaseAlg::extraOutputDeps();
97 }

◆ fillSpacePoint()

template<class MeasType >
void MuonR4::SpacePointMakerAlg::fillSpacePoint ( std::vector< SpacePoint > &  pointColl,
const MeasType *  primaryMeas,
const MeasType *  secondaryMeas,
const Amg::Transform3D toChamberTrans_eta,
const Amg::Transform3D toChamberTrans_phi 
) const
private

Helper function that creates the spacepoint and populates it, when having two measurement.

Parameters
pointCollCollection of spacepoints where the new one is being push
primaryMeasPrimary uncalibrated muon measurement
secondaryMeasSecondary uncalibrated muon measurement
toChamberTrans_etatransform from the attached Muon chamber frame to the sector frame for the primary meas
toChamberTrans_phitransform from the attached Muon chamber frame to the sector frame for the secondary meas

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96  {
97  return execState( ctx ).filterPassed();
98  }

◆ finalize()

StatusCode MuonR4::SpacePointMakerAlg::finalize ( )
override

Definition at line 292 of file SpacePointMakerAlg.cxx.

292  {
293  if (m_statCounter) {
294  m_statCounter->dumpStatisics(msgStream());
295  }
296  return StatusCode::SUCCESS;
297 }

◆ initialize()

StatusCode MuonR4::SpacePointMakerAlg::initialize ( )
override

Definition at line 298 of file SpacePointMakerAlg.cxx.

298  {
300  ATH_CHECK(m_mdtKey.initialize(!m_mdtKey.empty()));
301  ATH_CHECK(m_rpcKey.initialize(!m_rpcKey.empty()));
302  ATH_CHECK(m_tgcKey.initialize(!m_tgcKey.empty()));
303  ATH_CHECK(m_mmKey.initialize(!m_mmKey.empty()));
304  ATH_CHECK(m_stgcKey.initialize(!m_stgcKey.empty()));
305  ATH_CHECK(m_idHelperSvc.retrieve());
307  if (m_doStat) m_statCounter = std::make_unique<SpacePointStatistics>(m_idHelperSvc.get());
308  return StatusCode::SUCCESS;
309 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ isClonable()

bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::isClonable
overridevirtualinherited

Specify if the algorithm is clonable.

Reentrant algorithms are clonable.

Definition at line 68 of file AthCommonReentrantAlgorithm.cxx.

52 {
53  // Reentrant algorithms are clonable.
54  return true;
55 }

◆ loadContainerAndSort()

template<class ContType >
StatusCode MuonR4::SpacePointMakerAlg::loadContainerAndSort ( const EventContext &  ctx,
const SG::ReadHandleKey< ContType > &  key,
PreSortedSpacePointMap fillContainer 
) const
private

Retrieve an uncalibrated measurement container <ContType> and fill the hits into the presorted space point map.

Per associated MuonChamber, hits from Tgc, Rpc, sTgcs are grouped by their gasGap location and then divided into eta & phi measurements. If both are found, each eta measurement is combined with phi measurement into a SpacePoint. In any other case, the measurements are just transformed into a SpacePoint.

Parameters
ctxEvent context of the current event
keyReadHandleKey to access the container of data type <ContType>
fillContainerGlobal container into which all space points are filled.

Loop over the chamber hits to split the hits per gasGap

Make directly to a space point

Wires measure the phi coordinate

Tgc & Rpcs have the measuresPhi property

Sort in the hit

Create the space points

Simple combination by taking the cross-product

There's no valid combination with another phi hit

Tgc measurements with different bunch crossing tags cannot be combined

If there's a phi measuremnt which cannot be combined with the others or no eta measurement is suitable, then manually push_back the phi hits

Definition at line 346 of file SpacePointMakerAlg.cxx.

348  {
349  const ContType* measurementCont{nullptr};
350  ATH_CHECK(SG::get(measurementCont, key, ctx));
351  if (!measurementCont || measurementCont->empty()){
352  ATH_MSG_DEBUG("nothing to do");
353  return StatusCode::SUCCESS;
354  }
355  const ActsGeometryContext* gctx{nullptr};
356  ATH_CHECK(SG::get(gctx, m_geoCtxKey, ctx));
357 
358  using PrdType = typename ContType::const_value_type;
359  using PrdVec = std::vector<PrdType>;
360  xAOD::ChamberViewer viewer{*measurementCont};
361  do {
362 
363  SpacePointsPerChamber& pointsInChamb = fillContainer[viewer.at(0)->readoutElement()->msSector()];
364  const Amg::Transform3D& sectorTrans = viewer.at(0)->readoutElement()->msSector()->globalToLocalTrans(*gctx);
365  ATH_MSG_DEBUG("Fill space points for chamber "<<m_idHelperSvc->toStringDetEl(viewer.at(0)->identify()));
366  if constexpr( std::is_same_v<ContType, xAOD::MdtDriftCircleContainer> ||
367  std::is_same_v<ContType, xAOD::MMClusterContainer>) {
368 
369  pointsInChamb.etaHits.reserve(pointsInChamb.etaHits.capacity() + viewer.size());
370  for (const PrdType prd: viewer) {
371  ATH_MSG_VERBOSE("Create space point from "<<m_idHelperSvc->toString(prd->identify())
372  <<", hash: "<<prd->identifierHash());
373 
374  Amg::Transform3D toChamberTrans{ toChamberTransform(*gctx, sectorTrans,prd)};
375  fillSpacePoint(pointsInChamb.etaHits, prd, toChamberTrans);
376  }
377  } else {
379  using EtaPhiHits = std::array<PrdVec, 2>;
380  std::vector<EtaPhiHits> hitsPerGasGap{};
381  for (const PrdType prd : viewer) {
382  ATH_MSG_VERBOSE("Create space point from "<<m_idHelperSvc->toString(prd->identify())<<", hash: "<<prd->identifierHash());
383 
384  unsigned int gapIdx = prd->gasGap() -1;
385  if constexpr (std::is_same_v<ContType, xAOD::RpcMeasurementContainer>) {
386  gapIdx = prd->readoutElement()->createHash(0, prd->gasGap(), prd->doubletPhi(), false);
387  }
388 
389  bool measPhi{false};
390  if constexpr(std::is_same_v<ContType, xAOD::sTgcMeasContainer>) {
392  if (prd->channelType() == sTgcIdHelper::sTgcChannelTypes::Pad) {
393  Amg::Transform3D toChamberTrans{ toChamberTransform(*gctx, sectorTrans, prd)};
394  fillSpacePoint(pointsInChamb.etaHits, prd, toChamberTrans);
395  continue;
396  }
398  measPhi = prd->channelType() == sTgcIdHelper::sTgcChannelTypes::Wire;
399  } else {
401  measPhi = prd->measuresPhi();
402  }
403 
404  if (hitsPerGasGap.size() <= gapIdx) {
405  hitsPerGasGap.resize(gapIdx + 1);
406  }
408  PrdVec& toPush = hitsPerGasGap[gapIdx][measPhi];
409  if (toPush.capacity() == toPush.size()) {
410  toPush.reserve(toPush.size() + m_capacityBucket);
411  }
412  toPush.push_back(prd);
413  }
415  for (auto& [etaHits, phiHits] : hitsPerGasGap) {
416 
417  Amg::Transform3D toChamberTrans_eta {}, toChamberTrans_phi {};
418  if (!etaHits.empty()){
419  toChamberTrans_eta = toChamberTransform(*gctx, sectorTrans, etaHits.at(0));
420  }
421  if (!phiHits.empty()){
422  toChamberTrans_phi = toChamberTransform(*gctx, sectorTrans, phiHits.at(0));
423  }
424 
425  if (!passOccupancy2D(etaHits, phiHits)) {
426  ATH_MSG_VERBOSE("Occupancy cut not passed "<<etaHits.size()<<", "<<phiHits.size());
427  pointsInChamb.etaHits.reserve(pointsInChamb.etaHits.size() + etaHits.size());
428  pointsInChamb.phiHits.reserve(pointsInChamb.phiHits.size() + phiHits.size());
429  for (const PrdType etaPrd : etaHits) {
430 
431  fillSpacePoint(pointsInChamb.etaHits, etaPrd, toChamberTrans_eta);
432  ATH_MSG_VERBOSE("Add new eta hit "<<m_idHelperSvc->toString(pointsInChamb.etaHits.back().identify())
433  <<" "<<Amg::toString(pointsInChamb.etaHits.back().positionInChamber()));
434 
435  }
436  for (const PrdType phiPrd : phiHits) {
437  fillSpacePoint(pointsInChamb.phiHits, phiPrd, toChamberTrans_phi);
438  ATH_MSG_VERBOSE("Add new phi hit "<<m_idHelperSvc->toString(pointsInChamb.phiHits.back().identify())
439  <<" "<<Amg::toString(pointsInChamb.phiHits.back().positionInChamber()));
440  }
441  continue;
442  }
443  std::vector<std::shared_ptr<unsigned>> etaCounts{matchCountVec(etaHits.size())},
444  phiCounts{matchCountVec(phiHits.size())};
445  pointsInChamb.etaHits.reserve(etaHits.size()*phiHits.size());
447  for (unsigned int etaP = 0; etaP < etaHits.size(); ++etaP) {
449  for (unsigned int phiP = 0; phiP < phiHits.size(); ++ phiP) {
452  if (!(etaHits[etaP]->bcBitMap() & phiHits[phiP]->bcBitMap())){
453  continue;
454  }
455  }
456  fillSpacePoint(pointsInChamb.etaHits, etaHits[etaP], phiHits[phiP], toChamberTrans_eta, toChamberTrans_phi);
457 
458  SpacePoint& sp {pointsInChamb.etaHits.back()};
459  ATH_MSG_VERBOSE("Create new spacepoint from "<<m_idHelperSvc->toString(etaHits[etaP]->identify())
460  <<" & "<<m_idHelperSvc->toString(phiHits[phiP]->identify())<<" at "<<Amg::toString(sp.positionInChamber()));
461  sp.setInstanceCounts(etaCounts[etaP], phiCounts[phiP]);
462  }
463  if (!(*etaCounts[etaP])) {
464  fillSpacePoint(pointsInChamb.etaHits, etaHits[etaP], toChamberTrans_eta);
465  continue;
466  }
467  }
470  for (unsigned int phiP = 0; phiP < phiHits.size(); ++ phiP){
471  if (!(*phiCounts[phiP])) {
472  fillSpacePoint(pointsInChamb.phiHits, phiHits[phiP], toChamberTrans_phi);
473  }
474  }
475  }
476  }
477  } while (viewer.next());
478  return StatusCode::SUCCESS;
479 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ newBucket()

void MuonR4::SpacePointMakerAlg::newBucket ( const SpacePoint refSp,
SpacePointBucketVec sortedPoints 
) const
private

Closes the current processed bucket and creates a new one.

Space points of the previous bucket within the overlap region to the first space point of the new bucket are copied over

Parameters
refSpFirst new space point which will be added to the new bucket.
sortedPointsList of all processed buckets in the chamber. The list is augmented by 1 element

Set the boundaries from the previous bucket

Copy space points that could be within the overlap region to the next bucket

Definition at line 564 of file SpacePointMakerAlg.cxx.

565  {
566  SpacePointBucket& newContainer = sortedPoints.emplace_back();
567  newContainer.setBucketId(sortedPoints.size() -1);
568 
570  SpacePointBucket& overlap{sortedPoints[sortedPoints.size() - 2]};
571  overlap.setCoveredRange(overlap.front()->positionInChamber().y(),
572  overlap.back()->positionInChamber().y());
573 
574  const double refBound = refSpacePoint.positionInChamber().y();
575 
577  for (const std::shared_ptr<SpacePoint>& pointInBucket : overlap | std::views::reverse) {
578  const double overlapPos = pointInBucket->positionInChamber().y() + pointInBucket->uncertainty()[Amg::y];
579  if (refBound - overlapPos < m_spacePointOverlap) {
580  newContainer.insert(newContainer.begin(), pointInBucket);
581  } else {
582  break;
583  }
584  }
585 
586 }

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ passOccupancy2D() [1/4]

template<class PrdType >
bool MuonR4::SpacePointMakerAlg::passOccupancy2D ( const std::vector< const PrdType * > &  etaHits,
const std::vector< const PrdType * > &  phiHits 
) const
private

: Check whether the occupancy cuts of hits in a gasGap are surpassed.

The method is specified for each of the 3 strip technologies, Rpc, Tgc, sTgc and applies a technology-dependent upper bound on the number of phi & eta hits. If the threshold is surpassed, only 1D space points are built intsead of 2D ones

Parameters
etaHitsList of all presorted eta measurements in a gas gap
phiHitsList of all presorted phi measurements in a gas gap

◆ passOccupancy2D() [2/4]

template<>
bool MuonR4::SpacePointMakerAlg::passOccupancy2D ( const std::vector< const xAOD::RpcMeasurement * > &  etaHits,
const std::vector< const xAOD::RpcMeasurement * > &  phiHits 
) const

Definition at line 323 of file SpacePointMakerAlg.cxx.

324  {
325  if (etaHits.empty() || phiHits.empty()) {
326  return false;
327  }
328  const MuonGMR4::RpcReadoutElement* re = etaHits[0]->readoutElement();
329  ATH_MSG_VERBOSE("Collected "<<etaHits.size()<<"/"<<phiHits.size()<<" hits in "<<m_idHelperSvc->toStringGasGap(etaHits[0]->identify()));
330  return ((1.*etaHits.size()) / (1.*re->nEtaStrips())) < m_maxOccRpcEta &&
331  ((1.*phiHits.size()) / (1.*re->nPhiStrips())) < m_maxOccRpcPhi;
332  }

◆ passOccupancy2D() [3/4]

template<>
bool MuonR4::SpacePointMakerAlg::passOccupancy2D ( const std::vector< const xAOD::sTgcMeasurement * > &  etaHits,
const std::vector< const xAOD::sTgcMeasurement * > &  phiHits 
) const

Definition at line 335 of file SpacePointMakerAlg.cxx.

336  {
337  if (etaHits.empty() || phiHits.empty()) {
338  return false;
339  }
340  const MuonGMR4::sTgcReadoutElement* re = etaHits[0]->readoutElement();
341  return ((1.*etaHits.size()) / (1.*re->numChannels(etaHits[0]->measurementHash()))) < m_maxOccStgcEta &&
342  ((1.*phiHits.size()) / (1.*re->numChannels(phiHits[0]->measurementHash()))) < m_maxOccStgcPhi;
343  }

◆ passOccupancy2D() [4/4]

template<>
bool MuonR4::SpacePointMakerAlg::passOccupancy2D ( const std::vector< const xAOD::TgcStrip * > &  etaHits,
const std::vector< const xAOD::TgcStrip * > &  phiHits 
) const

Definition at line 312 of file SpacePointMakerAlg.cxx.

313  {
314  if (etaHits.empty() || phiHits.empty()) {
315  return false;
316  }
317  const MuonGMR4::TgcReadoutElement* re = etaHits[0]->readoutElement();
318  ATH_MSG_VERBOSE("Collected "<<etaHits.size()<<"/"<<phiHits.size()<<" hits in "<<m_idHelperSvc->toStringGasGap(etaHits[0]->identify()));
319  return ((1.*etaHits.size()) / ((1.*re->numChannels(etaHits[0]->measurementHash())))) < m_maxOccTgcEta &&
320  ((1.*phiHits.size()) / ((1.*re->numChannels(phiHits[0]->measurementHash())))) < m_maxOccTgcPhi;
321  }

◆ positionInChamber()

template<class MeasType >
Amg::Vector3D MuonR4::SpacePointMakerAlg::positionInChamber ( const MeasType *  meas,
const Amg::Transform3D toChamberTrans 
) const
private

Returns the position of the uncalibrated muon measurement in the sector frame.

Parameters
measUncalibrated muon measurement
toChamberTranstransform from the attached Muon chamber frame to the sector frame

Definition at line 48 of file SpacePointMakerAlg.cxx.

49  {
50  if constexpr (std::is_same_v<MeasType, xAOD::MdtDriftCircle>){
51  return toChamberTrans * meas->localCirclePosition();
52  } else if constexpr (std::is_same_v<MeasType, xAOD::RpcMeasurement>){
53  return toChamberTrans * meas->localMeasurementPos();
54  } else if constexpr (std::is_same_v<MeasType, xAOD::TgcStrip>){
55  const auto& stripLay = meas->readoutElement()->sensorLayout(meas->layerHash());
56  return toChamberTrans * stripLay->to3D(meas->template localPosition<1>()[0]*Amg::Vector2D::UnitX(),
57  meas->measuresPhi());
58  } else if constexpr (std::is_same_v<MeasType, xAOD::MMCluster>){
59  return toChamberTrans * (meas->template localPosition<1>()[Trk::locX] * Amg::Vector3D::UnitX());
60  }
61  else if constexpr (std::is_same_v<MeasType, xAOD::sTgcMeasurement>){
62  if (meas->channelType() == sTgcIdHelper::sTgcChannelTypes::Strip ||
63  meas->channelType() == sTgcIdHelper::sTgcChannelTypes::Wire) {
64  return toChamberTrans * (meas->template localPosition<1>()[Trk::locX] * Amg::Vector3D::UnitX());
65  }
67  locPos.block<2,1>(0,0) = xAOD::toEigen(meas->template localPosition<2>());
68  return toChamberTrans * locPos;
69  }
70  else static_assert(std::false_type::value, "Unsupported measurement type.");
71  return Amg::Vector3D::Zero();
72 }

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100  {
101  execState( ctx ).setFilterPassed( state );
102  }

◆ splitBucket()

bool MuonR4::SpacePointMakerAlg::splitBucket ( const SpacePoint spacePoint,
const double  firstSpPos,
const SpacePointBucketVec sortedPoints 
) const
private

Returns whether the space point is beyond the bucket boundary.

Parameters
spacePointSpace point candidate to add to the bucket
sortedPointsContainer of all defined buckets in the chamber

Distance between this point and the first one exceeds the maximum length

Definition at line 550 of file SpacePointMakerAlg.cxx.

552  {
554  const double spY = spacePoint.positionInChamber().y();
555  if (spY - firstSpPos > m_maxBucketLength){
556  return true;
557  }
558 
559  if (sortedPoints.empty() || sortedPoints.back().empty()) {
560  return false;
561  }
562  return spY - sortedPoints.back().back()->positionInChamber().y() > m_spacePointWindow;
563 }

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

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

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77 {
78  return BaseAlg::sysExecute (ctx);
79 }

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

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

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

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

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107  {
109 
110  if (sc.isFailure()) {
111  return sc;
112  }
113 
114  ServiceHandle<ICondSvc> cs("CondSvc",name());
115  for (auto h : outputHandles()) {
116  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117  // do this inside the loop so we don't create the CondSvc until needed
118  if ( cs.retrieve().isFailure() ) {
119  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120  return StatusCode::SUCCESS;
121  }
122  if (cs->regHandle(this,*h).isFailure()) {
123  sc = StatusCode::FAILURE;
124  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125  << " with CondSvc");
126  }
127  }
128  }
129  return sc;
130 }

◆ sysStart()

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

Handle START transition.

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

◆ toChamberTransform()

template<class MeasType >
Amg::Transform3D MuonR4::SpacePointMakerAlg::toChamberTransform ( const ActsGeometryContext gctx,
const Amg::Transform3D sectorTrans,
const MeasType *  meas 
) const
private

Returns the transform from the attached Muon chamber frame to the sector frame.

Parameters
gctxGeometry context to calculate the relative alignment between chamber & measurement
measUncalibrated muon measurement

Definition at line 34 of file SpacePointMakerAlg.cxx.

36  {
37  IdentifierHash hash = {};
38  if constexpr(std::is_same_v<MeasType, xAOD::MdtDriftCircle>) {
39  hash = meas->measurementHash();
40  } else {
41  hash = meas->layerHash();
42  }
43  const MuonGMR4::MuonReadoutElement* reEle{meas->readoutElement()};
44  return sectorTrans * reEle->localToGlobalTrans(gctx, hash);
45 }

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::unique_ptr<SpacePointStatistics> m_statCounter MuonR4::SpacePointMakerAlg::ATLAS_THREAD_SAFE {}
private

Definition at line 256 of file SpacePointMakerAlg.h.

◆ const

const Amg::Vector3D const Amg::Vector3D& nor MuonR4::SpacePointMakerAlg::const
private

Definition at line 66 of file SpacePointMakerAlg.h.

◆ dir

const Amg::Vector3D& MuonR4::SpacePointMakerAlg::dir
private

Definition at line 65 of file SpacePointMakerAlg.h.

◆ m_capacityBucket

Gaudi::Property<unsigned int> MuonR4::SpacePointMakerAlg::m_capacityBucket {this,"CapacityBucket" , 50}
private

Definition at line 255 of file SpacePointMakerAlg.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doStat

Gaudi::Property<bool> MuonR4::SpacePointMakerAlg::m_doStat
private
Initial value:
{this, "doStats", false,
"If enabled the algorithm keeps track how many hits have been made" }

Definition at line 252 of file SpacePointMakerAlg.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

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

SG::ReadHandleKey<ActsGeometryContext> MuonR4::SpacePointMakerAlg::m_geoCtxKey {this, "AlignmentKey", "ActsAlignment", "cond handle key"}
private

Definition at line 236 of file SpacePointMakerAlg.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> MuonR4::SpacePointMakerAlg::m_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 238 of file SpacePointMakerAlg.h.

◆ m_maxBucketLength

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxBucketLength
private
Initial value:
{this, "maxBucketLength", 2.*Gaudi::Units::m,
"Maximal size of a space point bucket"}

Definition at line 245 of file SpacePointMakerAlg.h.

◆ m_maxOccRpcEta

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccRpcEta
private
Initial value:
{this, "maxRpcEtaOccupancy", 0.1,
"Maximum occpancy of Rpc eta hits in a gasGap"}

Definition at line 258 of file SpacePointMakerAlg.h.

◆ m_maxOccRpcPhi

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccRpcPhi
private
Initial value:
{this, "maxRpcPhiOccupancy", 0.1,
"Maximum occpancy of Rpc phi hits in a gasGap"}

Definition at line 260 of file SpacePointMakerAlg.h.

◆ m_maxOccStgcEta

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccStgcEta
private
Initial value:
{this, "maxSTGCEtaOccupancy", 0.1,
"Maximum occpancy of sTgc eta hits in a gasGap"}

Definition at line 268 of file SpacePointMakerAlg.h.

◆ m_maxOccStgcPhi

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccStgcPhi
private
Initial value:
{this, "maxSTGCPhiOccupancy", 0.1,
"Maximum occpancy of sTgc phi hits in a gasGap"}

Definition at line 270 of file SpacePointMakerAlg.h.

◆ m_maxOccTgcEta

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccTgcEta
private
Initial value:
{this, "maxTgcEtaOccupancy", 0.1,
"Maximum occpancy of Tgc eta hits in a gasGap"}

Definition at line 263 of file SpacePointMakerAlg.h.

◆ m_maxOccTgcPhi

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_maxOccTgcPhi
private
Initial value:
{this, "maxTgcPhiOccupancy", 0.1,
"Maximum occpancy of Tgc phi hits in a gasGap"}

Definition at line 265 of file SpacePointMakerAlg.h.

◆ m_mdtKey

SG::ReadHandleKey<xAOD::MdtDriftCircleContainer> MuonR4::SpacePointMakerAlg::m_mdtKey
private
Initial value:
{this, "MdtKey", "xMdtMeasurements",
"Key to the uncalibrated Drift circle measurements"}

Definition at line 221 of file SpacePointMakerAlg.h.

◆ m_mmKey

SG::ReadHandleKey<xAOD::MMClusterContainer> MuonR4::SpacePointMakerAlg::m_mmKey
private
Initial value:
{this, "MmKey", "xAODMMClusters",
"Key to the uncalibrated 1D Mm hits"}

Definition at line 230 of file SpacePointMakerAlg.h.

◆ m_rpcKey

SG::ReadHandleKey<xAOD::RpcMeasurementContainer> MuonR4::SpacePointMakerAlg::m_rpcKey
private
Initial value:
{this, "RpcKey", "xRpcMeasurements",
"Key to the uncalibrated 1D rpc hits"}

Definition at line 224 of file SpacePointMakerAlg.h.

◆ m_spacePointOverlap

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_spacePointOverlap
private
Initial value:
{this, "spacePointOverlap", 25.*Gaudi::Units::cm,
"Hits that are within <spacePointOverlap> of the bucket margin. "
"Are copied to the next bucket"}

Definition at line 248 of file SpacePointMakerAlg.h.

◆ m_spacePointWindow

Gaudi::Property<double> MuonR4::SpacePointMakerAlg::m_spacePointWindow
private
Initial value:
{this, "spacePointWindowSize", 0.8*Gaudi::Units::m,
"Maximal distance between consecutive hits in a bucket"}

Definition at line 242 of file SpacePointMakerAlg.h.

◆ m_stgcKey

SG::ReadHandleKey<xAOD::sTgcMeasContainer> MuonR4::SpacePointMakerAlg::m_stgcKey {this, "sTgcKey", "xAODsTgcMeasurements"}
private

Definition at line 233 of file SpacePointMakerAlg.h.

◆ m_tgcKey

SG::ReadHandleKey<xAOD::TgcStripContainer> MuonR4::SpacePointMakerAlg::m_tgcKey
private
Initial value:
{this, "TgcKey", "xTgcStrips",
"Key to the uncalibrated 1D tgc hits"}

Definition at line 227 of file SpacePointMakerAlg.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeKey

SG::WriteHandleKey<SpacePointContainer> MuonR4::SpacePointMakerAlg::m_writeKey {this, "WriteKey", "MuonSpacePoints"}
private

Definition at line 240 of file SpacePointMakerAlg.h.


The documentation for this class was generated from the following files:
MuonR4::SpacePointMakerAlg::PreSortedSpacePointMap
std::unordered_map< const MuonGMR4::SpectrometerSector *, SpacePointsPerChamber > PreSortedSpacePointMap
Container abrivation of the presorted space point container per MuonChambers.
Definition: SpacePointMakerAlg.h:153
xAOD::identify
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/Root/UtilFunctions.cxx:82
MuonR4::SpacePointMakerAlg::m_stgcKey
SG::ReadHandleKey< xAOD::sTgcMeasContainer > m_stgcKey
Definition: SpacePointMakerAlg.h:233
Trk::locX
@ locX
Definition: ParamDefs.h:37
MuonR4::SpacePointPerLayerSorter
The SpacePointPerLayerSorter sort two given space points by their layer Identifier.
Definition: SpacePointPerLayerSorter.h:15
calibdata.chamber
chamber
Definition: calibdata.py:31
MuonR4::SpacePointMakerAlg::distributePrimaryPoints
void distributePrimaryPoints(std::vector< SpacePoint > &&spacePoints, SpacePointBucketVec &splittedContainer) const
Distributes the vector of primary eta or eta + phi space points and fills them into the buckets.
Definition: SpacePointMakerAlg.cxx:588
MuonR4::SpacePointMakerAlg::splitBucket
bool splitBucket(const SpacePoint &spacePoint, const double firstSpPos, const SpacePointBucketVec &sortedPoints) const
Returns whether the space point is beyond the bucket boundary.
Definition: SpacePointMakerAlg.cxx:550
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
Amg::y
@ y
Definition: GeoPrimitives.h:35
MuonR4::SpacePointMakerAlg::m_maxOccStgcPhi
Gaudi::Property< double > m_maxOccStgcPhi
Definition: SpacePointMakerAlg.h:270
MuonGMR4::MuonReadoutElement
The MuonReadoutElement is an abstract class representing the geometry representing the muon detector.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:38
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
athena.value
value
Definition: athena.py:124
MuonR4::SpacePointMakerAlg::m_rpcKey
SG::ReadHandleKey< xAOD::RpcMeasurementContainer > m_rpcKey
Definition: SpacePointMakerAlg.h:224
MuonR4::SpacePointMakerAlg::distributePhiPoints
void distributePhiPoints(std::vector< SpacePoint > &&spacePoints, SpacePointBucketVec &splittedContainer) const
Distributs the vector phi space points into the buckets.
Definition: SpacePointMakerAlg.cxx:535
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonGMR4::RpcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:17
MuonR4::SpacePointMakerAlg::m_mmKey
SG::ReadHandleKey< xAOD::MMClusterContainer > m_mmKey
Definition: SpacePointMakerAlg.h:230
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MuonR4::SpacePointMakerAlg::newBucket
void newBucket(const SpacePoint &refSp, SpacePointBucketVec &sortedPoints) const
Closes the current processed bucket and creates a new one.
Definition: SpacePointMakerAlg.cxx:564
SpacePoint
Definition: Trigger/TrigAccel/TrigCudaFitter/src/SpacePoint.h:7
DeMoUpdate.reverse
reverse
Definition: DeMoUpdate.py:563
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
xAOD::ChamberViewer
Definition: ChamberViewer.h:59
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
AthCommonReentrantAlgorithm::extraOutputDeps
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
Definition: AthCommonReentrantAlgorithm.cxx:89
MuonR4::SpacePointMakerAlg::SpacePointBucketVec
std::vector< SpacePointBucket > SpacePointBucketVec
Abrivation of a MuonSapcePoint bucket vector.
Definition: SpacePointMakerAlg.h:171
MuonR4::SpacePointMakerAlg::m_tgcKey
SG::ReadHandleKey< xAOD::TgcStripContainer > m_tgcKey
Definition: SpacePointMakerAlg.h:227
MuonR4::SpacePointMakerAlg::m_writeKey
SG::WriteHandleKey< SpacePointContainer > m_writeKey
Definition: SpacePointMakerAlg.h:240
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
MuonR4::SpacePointMakerAlg::m_maxOccStgcEta
Gaudi::Property< double > m_maxOccStgcEta
Definition: SpacePointMakerAlg.h:268
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
AthCommonReentrantAlgorithm::sysExecute
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Definition: AthCommonReentrantAlgorithm.cxx:76
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonR4::SpacePointMakerAlg::m_maxOccTgcEta
Gaudi::Property< double > m_maxOccTgcEta
Definition: SpacePointMakerAlg.h:263
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
F600IntegrationConfig.spacePoints
spacePoints
Definition: F600IntegrationConfig.py:122
MuonR4::SpacePointMakerAlg::m_maxOccTgcPhi
Gaudi::Property< double > m_maxOccTgcPhi
Definition: SpacePointMakerAlg.h:265
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
MuonR4::SpacePointMakerAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: SpacePointMakerAlg.h:238
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
NSWL1::PadTriggerAdapter::fillContainer
StatusCode fillContainer(const std::unique_ptr< Muon::NSW_PadTriggerDataContainer > &out, const std::vector< std::unique_ptr< NSWL1::PadTrigger >> &triggers, const uint32_t l1id)
Definition: PadTriggerAdapter.cxx:17
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MuonR4::SpacePointMakerAlg::loadContainerAndSort
StatusCode loadContainerAndSort(const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, PreSortedSpacePointMap &fillContainer) const
Retrieve an uncalibrated measurement container <ContType> and fill the hits into the presorted space ...
Definition: SpacePointMakerAlg.cxx:346
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGMR4::sTgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:20
MuonR4::SpacePointMakerAlg::m_mdtKey
SG::ReadHandleKey< xAOD::MdtDriftCircleContainer > m_mdtKey
Definition: SpacePointMakerAlg.h:221
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
MuonR4::SpacePointMakerAlg::passOccupancy2D
bool passOccupancy2D(const std::vector< const PrdType * > &etaHits, const std::vector< const PrdType * > &phiHits) const
: Check whether the occupancy cuts of hits in a gasGap are surpassed.
MuonR4::SpacePointMakerAlg::m_maxBucketLength
Gaudi::Property< double > m_maxBucketLength
Definition: SpacePointMakerAlg.h:245
MuonR4::SpacePointMakerAlg::m_spacePointWindow
Gaudi::Property< double > m_spacePointWindow
Definition: SpacePointMakerAlg.h:242
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
h
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:108
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
re
const boost::regex re(r_e)
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
MuonGMR4::MuonReadoutElement::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &ctx) const
Returns the local to global transformation into the ATLAS coordinate system.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:81
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthCommonReentrantAlgorithm.cxx:107
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
MuonR4::SpacePointMakerAlg::m_doStat
Gaudi::Property< bool > m_doStat
Definition: SpacePointMakerAlg.h:252
MuonR4::SpacePointMakerAlg::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: SpacePointMakerAlg.h:236
MuonR4::SpacePointMakerAlg::m_maxOccRpcEta
Gaudi::Property< double > m_maxOccRpcEta
Definition: SpacePointMakerAlg.h:258
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:13
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
MuonR4::SpacePointMakerAlg::fillSpacePoint
void fillSpacePoint(std::vector< SpacePoint > &pointColl, const MeasType *primaryMeas, const MeasType *secondaryMeas, const Amg::Transform3D &toChamberTrans_eta, const Amg::Transform3D &toChamberTrans_phi) const
Helper function that creates the spacepoint and populates it, when having two measurement.
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthCommonReentrantAlgorithm.h:114
MuonGMR4::RadialStripDesign
Definition: RadialStripDesign.h:23
MuonR4::SpacePointMakerAlg::m_capacityBucket
Gaudi::Property< unsigned int > m_capacityBucket
Definition: SpacePointMakerAlg.h:255
MuonGMR4::TgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/TgcReadoutElement.h:19
MuonR4::SpacePointMakerAlg::distributePointsAndStore
void distributePointsAndStore(SpacePointsPerChamber &&hitsPerChamber, SpacePointContainer &finalContainer) const
Distribute the premade spacepoints per chamber into their individual SpacePoint buckets.
Definition: SpacePointMakerAlg.cxx:500
MuonR4::SpacePointMakerAlg::toChamberTransform
Amg::Transform3D toChamberTransform(const ActsGeometryContext &gctx, const Amg::Transform3D &sectorTrans, const MeasType *meas) const
Returns the transform from the attached Muon chamber frame to the sector frame.
Definition: SpacePointMakerAlg.cxx:34
MuonR4::SpacePointMakerAlg::m_spacePointOverlap
Gaudi::Property< double > m_spacePointOverlap
Definition: SpacePointMakerAlg.h:248
fitman.k
k
Definition: fitman.py:528
python.SystemOfUnits.m
float m
Definition: SystemOfUnits.py:106
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
ServiceHandle< ICondSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
MuonR4::SpacePointMakerAlg::m_maxOccRpcPhi
Gaudi::Property< double > m_maxOccRpcPhi
Definition: SpacePointMakerAlg.h:260