 |
ATLAS Offline Software
|
Go to the documentation of this file.
15 ISvcLocator *pSvcLocator) :
58 return StatusCode::SUCCESS;
75 measToTruth = measToTruthHandle.
ptr();
81 ATH_CHECK(xaod.
record(std::make_unique<xAOD::TrackMeasurementValidationContainer>(),
82 std::make_unique<xAOD::TrackMeasurementValidationAuxContainer>()));
104 std::vector<bool> keepClusterCollection {};
109 for (std::size_t
i(0);
i<stripClusters->
size(); ++
i) {
110 if (not keepClusterCollection[
i])
continue;
116 measurements->
back()->index() );
118 decorator_measurement_link(*cluster) = std::move(mlink);
125 ATH_MSG_FATAL(
"Invalid strip detector element for hash " << hashId );
126 return StatusCode::FAILURE;
129 const std::vector<Identifier> rdoList = cluster->
rdoList();
130 std::vector< std::uint64_t > rdoIdentifierList;
131 rdoIdentifierList.reserve(rdoList.size());
132 for(
const Identifier& hitIdentifier : rdoList ){
133 rdoIdentifierList.push_back( hitIdentifier.get_compact() );
152 decor_detectorElementID(*measurement) = hashId;
153 decor_waferID(*measurement) = waferId.
get_compact();
157 decor_sizeZ(*measurement) = 0;
161 decor_omegax(*measurement) = 0;
162 decor_omegay(*measurement) = 0;
163 decor_LorentzShift(*measurement) = 0;
164 decor_centroid_xphi(*measurement) = 0;
165 decor_centroid_xeta(*measurement) = 0;
175 std::size_t measurementIndex = 0;
176 for (std::size_t
i(0);
i<stripClusters->
size(); ++
i) {
177 if (not keepClusterCollection[
i])
continue;
184 return StatusCode::FAILURE;
187 if (cluster->
index() >= measToTruth->size()) {
188 ATH_MSG_ERROR(
"PRD index "<< cluster->
index() <<
" not present in the measurement to truth vector with size " << measToTruth->size());
189 return StatusCode::FAILURE;
192 auto tps = measToTruth->at(cluster->
index());
194 std::vector<unsigned int> tp_indices;
195 std::vector<unsigned int> tp_barcodes;
196 for (
auto tp : tps) {
197 tp_indices.push_back(
tp->index());
201 decor_truth_indices(*measurement) = std::move(tp_indices);
202 decor_truth_barcode(*measurement) = std::move(tp_barcodes);
207 ATH_MSG_DEBUG(
" recorded StripPrepData objects: size " << measurements->
size() );
208 return StatusCode::SUCCESS;
213 std::vector<bool>&
labels)
const
218 return StatusCode::SUCCESS;
236 std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track = *trackLink;
237 if ( not optional_track.has_value() ) {
238 ATH_MSG_ERROR(
"Invalid track link for particle " << trackParticle->index());
239 return StatusCode::FAILURE;
241 ActsTrk::TrackContainer::ConstTrackProxy
track = optional_track.value();
244 track.container().trackStateContainer()
245 .visitBackwards(
track.tipIndex(),
247 (
const typename ActsTrk::TrackContainer::ConstTrackStateProxy& state)
249 auto flags = state.typeFlags();
250 if (not flags.test(Acts::TrackStateFlag::MeasurementFlag) and
251 not flags.test(Acts::TrackStateFlag::OutlierFlag)) return;
253 auto sl = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
254 if (sl == nullptr) return;
256 const xAOD::UncalibratedMeasurement &cluster = getUncalibratedMeasurement(sl);
257 if (cluster.type() != xAOD::UncalibMeasType::StripClusterType) return;
258 labels.at(cluster.index()) = true;
263 return StatusCode::SUCCESS;
def retrieve(aClass, aKey=None)
Property holding a SG store/key/clid from which a ReadHandle is made.
DetectorIdentType identifier() const
Returns the full Identifier of the measurement.
SG::WriteDecorHandleKey< xAOD::StripClusterContainer > m_trackMeasurement_link
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_centroid_xeta
DetectorIDHashType identifierHash() const
Returns the IdentifierHash of the measurement (corresponds to the detector element IdentifierHash)
long unsigned int DetectorIdentType
const SCT_ID * m_stripHelper
const_pointer_type cptr()
Dereference the pointer.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_layer
int channelsInPhi() const
Returns the dimensions of the cluster in numbers of channels in phi (x), respectively.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_SiWidth
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_sizeZ
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_centroid_xphi
virtual StatusCode initialize() override
SG::WriteHandleKey< xAOD::TrackMeasurementValidationContainer > m_write_xaod_key
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_truth_barcodes
value_type get_compact() const
Get the compact id.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_LorentzShift
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_truth_indices
Helper class to provide constant type-safe access to aux data.
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
void setRdoIdentifierList(const std::vector< uint64_t > &rdoIdentifierList)
Sets the list of RDO identifiers.
int phi_module(const Identifier &id) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_stripDetEleCollKey
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_omegax
bool isValid() const
Test to see if the link can be dereferenced.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_side
const std::vector< Identifier > rdoList() const
Returns the list of identifiers of the channels building the cluster.
SG::ReadHandleKey< MeasurementToTruthParticleAssociation > m_associationMap_key
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
StatusCode labelMeasurementToKeep(const EventContext &ctx, const xAOD::StripClusterContainer &clusters, std::vector< bool > &labels) const
An algorithm that can be simultaneously executed in multiple threads.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
StripClusterTruthDecoratorAlg(const std::string &name, ISvcLocator *pSvcLocator)
Class describing a TrackMeasurementValidation.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_bec
void setLocalPosition(float localX, float localY)
Sets the local position.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_sizePhi
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_waferID
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
Handle class for adding a decoration to an object.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_omegay
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_detectorElementID
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
ConstMatrixMap< N > localCovariance() const
Returns the local covariance of the measurement.
void setIdentifier(uint64_t identifier)
Sets the identifier.
size_t index() const
Return the index of this element within its container.
const T * back() const
Access the last element in the collection as an rvalue.
ConstVectorMap< N > localPosition() const
Returns the local position of the measurement.
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_phi_module
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ElementLink implementation for ROOT usage.
Gaudi::Property< bool > m_keepOnlyOnTrackMeasurements
void setGlobalPosition(float globalX, float globalY, float globalZ)
Sets the global position.
unsigned int DetectorIDHashType
@ detector ID element hash
void setLocalPositionError(float localXError, float localYError, float localXYCorrelation)
Sets the local position error.
int layer_disk(const Identifier &id) const
uint64_t identifier() const
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
virtual StatusCode execute(const EventContext &ctx) const override
const_pointer_type ptr()
Dereference the pointer.
StripClusterContainer_v1 StripClusterContainer
Define the version of the strip cluster container.
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_trackParticlesKey
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
int eta_module(const Identifier &id) const
ConstVectorMap< 3 > globalPosition() const
Returns the global position of the strip cluster.
int side(const Identifier &id) const
Handle class for reading a decoration on an object.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Class describing a TrackParticle.
SG::ReadHandleKey< xAOD::StripClusterContainer > m_clustercontainer_key
const T * at(size_type n) const
Access an element, as an rvalue.
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
size_type size() const noexcept
Returns the number of elements in the collection.
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
SG::WriteDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_measurement_eta_module
const_pointer_type cptr()
Gaudi::Property< bool > m_useTruthInfo