8#include "CLHEP/Geometry/Point3D.h"
30 declareInterface<IDataRetriever>(
this);
43 return m_geo.retrieve();
60 if (not pixelDetEleHandle.
isValid() or elements==
nullptr) {
62 return StatusCode::FAILURE;
69 return StatusCode::RECOVERABLE;
83 unsigned long NClusterTotal = 0;
84 for (
const auto SiClusterColl : * SiClusterCont)
85 NClusterTotal += SiClusterColl->size();
88 DataVect x0; x0.reserve(NClusterTotal);
89 DataVect y0; y0.reserve(NClusterTotal);
90 DataVect z0; z0.reserve(NClusterTotal);
91 DataVect widthx; widthx.reserve(NClusterTotal);
92 DataVect widthy; widthy.reserve(NClusterTotal);
93 DataVect eloss; eloss.reserve(NClusterTotal);
94 DataVect ident; ident.reserve(NClusterTotal);
97 DataVect numBarcodes; numBarcodes.reserve(NClusterTotal);
98 DataVect barcodes; barcodes.reserve(2*NClusterTotal);
100 DataVect phiModule; phiModule.reserve(NClusterTotal);
101 DataVect etaModule; etaModule.reserve(NClusterTotal);
104 for (
const auto SiClusterColl : * SiClusterCont) {
107 if ( !
m_geo->PixelIDHelper()->is_pixel(SiClusterColl->identify())) continue ;
110 for (
const auto sicluster : * SiClusterColl) {
114 if (not cluster)
continue;
120 ATH_MSG_DEBUG(
"Could not obtain Detector Element with ID " <<
id );
135 phiModule.push_back(
DataType(
m_geo->PixelIDHelper()->phi_module(clusterId)));
136 etaModule.push_back(
DataType(
m_geo->PixelIDHelper()->eta_module(clusterId)));
142 unsigned long countBarcodes=0;
143 using iter = PRD_MultiTruthCollection::const_iterator;
144 std::pair<iter,iter> range = simClusterMap->equal_range(clusterId);
145 for (iter i = range.first; i != range.second; ++i) {
147 barcodes.push_back(
DataType(i->second.barcode()));
149 numBarcodes.push_back(
DataType(countBarcodes));
160 dataMap[
"widthx"] = widthx;
161 dataMap[
"widthy"] = widthy;
162 dataMap[
"eloss"] = eloss;
163 dataMap[
"id"] = ident;
164 dataMap[
"phiModule"] = phiModule;
165 dataMap[
"etaModule"] = etaModule;
168 if ( numBarcodes.size() > 0 ){
170 dataMap[
"numBarcodes"] = numBarcodes;
172 std::string bctag =
"barcodes multiple=\""+
DataType(barcodes.size()/
double(numBarcodes.size())).toString()+
"\"";
173 dataMap[bctag] = barcodes;
180 return FormatTool->AddToEvent(
dataTypeName(),
"", &dataMap);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
This is an Identifier helper class for the Pixel subdetector.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
This is a "hash" representation of an Identifier.
value_type get_compact() const
Get the compact id.
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.
float energyLoss() const
Energy lost is in the cluster is computed from the total charge id a calibration could be used.
const Amg::Vector3D & globalPosition() const
return global position reference
const InDet::SiWidth & width() const
return width class reference
const ToolHandle< IInDetGeoModelTool > m_geo
A tool handle to the geo model tool.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
virtual std::string dataTypeName() const
Return the name of the data type.
SG::ReadHandleKey< InDet::SiClusterContainer > m_PixelClusterCollName
The StoreGate key for the SiClusterCollection to retrieve.
PixelClusterRetriever(const std::string &type, const std::string &name, const IInterface *parent)
Standard Constructor.
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
virtual StatusCode initialize()
initialize only geo model tool
SG::ReadHandleKey< PRD_MultiTruthCollection > m_PixelTruthMapName
bool m_usePixelTruthMap
The StoreGate key for the PRD MultiTruthMap with the track associations.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Identifier identify() const
return the identifier
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
std::map< std::string, DataVect > DataMap
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())