59 return StatusCode::SUCCESS;
80 return StatusCode::SUCCESS;
103 pixelAccessor ( *inputPixelClusters,
105 pixElements->
size());
108 for (
const auto& hashId : allIdHashes) {
110 if ( element ==
nullptr ) {
111 ATH_MSG_FATAL(
"Invalid pixel detector element for hash " << hashId);
112 return StatusCode::FAILURE;
118 if ( design ==
nullptr ) {
119 ATH_MSG_FATAL(
"Invalid pixel module design for hash " << hashId);
120 return StatusCode::FAILURE;
123 std::unique_ptr<InDet::PixelClusterCollection> collection = std::make_unique<InDet::PixelClusterCollection>(hashId);
127 for (
auto start = this_range.first; start != this_range.second; ++start) {
130 if (!cluster)
continue;
131 cluster->setHashAndIndex(hashId, collection->size());
134 collection->push_back(cluster.get());
135 dec_link(*in_cluster) =
Link_t{cluster.release(), *collection};
139 InDet::PixelClusterContainer::IDC_WriteHandle
lock = outputPixelClusterContainer->getWriteHandle(hashId);
144 auto offsets = std::make_unique<std::vector<unsigned int>>(
m_pixelID->wafer_hash_max(), 0);
145 unsigned int counter(0);
146 for (
const auto coll : *outputPixelClusterContainer) {
147 (*offsets)[coll->identifyHash()] = counter;
148 counter += coll->size();
153 return StatusCode::SUCCESS;
175 stripAccessor ( *inputStripClusters,
177 stripElements->
size());
182 for (
const auto& hashId : allIdHashes) {
184 if ( element ==
nullptr ) {
185 ATH_MSG_FATAL(
"Invalid strip detector element for hash " << hashId);
186 return StatusCode::FAILURE;
189 bool isBarrel = element->
isBarrel();
195 if ( design ==
nullptr ) {
196 ATH_MSG_FATAL(
"Invalid strip module design for hash " << hashId);
197 return StatusCode::FAILURE;
200 std::unique_ptr<InDet::SCT_ClusterCollection> collection = std::make_unique<InDet::SCT_ClusterCollection>(hashId);
205 for (
auto start = this_range.first; start != this_range.second; ++start) {
209 if (!cluster)
continue;
210 cluster->setHashAndIndex(hashId, collection->size());
214 collection->push_back( cluster.get() );
215 dec_link(*in_cluster) =
Link_t{cluster.release(), *collection};
219 InDet::SCT_ClusterContainer::IDC_WriteHandle
lock = outputStripClusterContainer->getWriteHandle(hashId);
224 auto offsets = std::make_unique<std::vector<unsigned int>>(
m_stripID->wafer_hash_max(), 0);
225 unsigned int counter(0);
226 for (
const auto coll : *outputStripClusterContainer) {
227 (*offsets)[coll->identifyHash()] = counter;
228 counter += coll->size();
233 return StatusCode::SUCCESS;
251 hgtdAccessor ( *inputHgtdClusters,
253 hgtdElements->
size());
256 for (
const auto& hashId : allIdHashes) {
258 if ( element ==
nullptr ) {
259 ATH_MSG_FATAL(
"Invalid hgtd detector element for hash " << hashId);
260 return StatusCode::FAILURE;
263 std::unique_ptr<::HGTD_ClusterCollection> collection = std::make_unique<::HGTD_ClusterCollection>(hashId);
267 for (
auto start = this_range.first; start != this_range.second; ++start) {
271 cluster->setHashAndIndex(hashId, collection->size());
274 collection->push_back(cluster.get());
275 dec_link(*in_cluster) =
Link_t{cluster.release(), *collection};
286 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
virtual void lock()=0
Interface to allow an object to lock itself when made const in SG.
ElementLink< xAOD::TruthParticleContainer > Link_t
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for the SCT subdetector.
Handle class for adding a decoration to an object.
const ServiceHandle< StoreGateSvc > & detStore() const
Class implementing how to access a container.
const boost::container::small_vector< Range, inline_size > rangesForIdentifierDirect(const identifier_t &identifier) const
Function to return the list of ranges corresponding to a given identifier.
std::vector< identifier_t > allIdentifiers() const
Function to return all available identifier (i.e. keys in the map).
size_type size() const noexcept
Returns the number of elements in the collection.
ElementLink implementation for ROOT usage.
This is a "hash" representation of an Identifier.
Class used to describe the design of a module (diode segmentation and readout scheme).
Base class for the SCT module side design, extended by the Forward and Barrel module design.
Class to hold the SiDetectorElement objects to be put in the detector store.
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const
Class to hold geometrical description of a silicon detector element.
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
SG::ReadHandleKey< xAOD::HGTDClusterContainer > m_inputHgtdClusterContainerKey
const PixelID * m_pixelID
SG::WriteHandleKey< std::vector< unsigned int > > m_stripClusterOffSetKey
SG::WriteHandleKey< InDet::SCT_ClusterContainer > m_outputStripClusterContainerKey
virtual StatusCode initialize() override
StatusCode convertHgtdClusters(const EventContext &ctx) const
Gaudi::Property< bool > m_processHgtd
SG::WriteHandleKey< std::vector< unsigned int > > m_pixelClusterOffSetKey
SG::ReadHandleKey< xAOD::PixelClusterContainer > m_inputPixelClusterContainerKey
SG::WriteHandleKey< InDet::SiClusterContainer > m_stripClusterContainerLinkKey
SG::WriteDecorHandleKey< xAOD::StripClusterContainer > m_stripClusterLinkKey
StatusCode convertPixelClusters(const EventContext &ctx) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
SG::WriteDecorHandleKey< xAOD::HGTDClusterContainer > m_hgdtClusterLinkKey
virtual StatusCode execute(const EventContext &ctx) const override
Gaudi::Property< bool > m_processStrip
SG::ReadCondHandleKey< InDetDD::HGTD_DetectorElementCollection > m_HGTDDetEleCollKey
SG::WriteHandleKey< InDet::SiClusterContainer > m_pixelClusterContainerLinkKey
Gaudi::Property< bool > m_processPixel
SG::WriteHandleKey<::HGTD_ClusterContainer > m_outputHgtdClusterContainerKey
StatusCode convertStripClusters(const EventContext &ctx) const
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_stripDetEleCollKey
SG::ReadHandleKey< xAOD::StripClusterContainer > m_inputStripClusterContainerKey
SG::WriteDecorHandleKey< xAOD::PixelClusterContainer > m_pixelClusterLinkKey
SG::WriteHandleKey< InDet::PixelClusterContainer > m_outputPixelClusterContainerKey
StatusCode setConst()
Set the 'const' bit for the bound proxy in the store.
Handle class for adding a decoration to an object.
StatusCode symLink(const WriteHandleKey< U > &key)
Make an explicit link.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
const HGTD_DetectorElement * getDetectorElement(const IdentifierHash &hash, const HGTD_DetectorElementCollection &coll)
DataVector< HGTD_DetectorElement > HGTD_DetectorElementCollection
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
const InDetDD::PixelModuleDesign * pixelModuleDesign(const InDetDD::SiDetectorElement &element)
Resolve the readout design of a pixel/strip detector element.
const InDetDD::SCT_ModuleSideDesign * stripModuleSideDesign(const InDetDD::SiDetectorElement &element)
std::unique_ptr< InDet::PixelCluster > convertXaodToInDetCluster(const xAOD::PixelCluster &xaodCluster, const InDetDD::SiDetectorElement &element, const InDetDD::PixelModuleDesign &design, const PixelID &pixelID)
PixelClusterContainer_v1 PixelClusterContainer
Define the version of the pixel cluster container.
HGTDClusterContainer_v1 HGTDClusterContainer
Define the version of the HGTD cluster container.
StripCluster_v1 StripCluster
Define the version of the strip cluster class.
StripClusterContainer_v1 StripClusterContainer
Define the version of the strip cluster container.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
HGTDCluster_v1 HGTDCluster
Define the version of the pixel cluster class.