|
ATLAS Offline Software
|
Go to the documentation of this file.
10 #include "CLHEP/Geometry/Point3D.h"
31 declareInterface<IDataRetriever>(
this);
53 if (elements==
nullptr) {
55 return StatusCode::FAILURE;
62 return StatusCode::RECOVERABLE;
76 unsigned long NClusterTotal = 0;
77 for (
const auto SiClusterColl : *SiClusterCont.
cptr())
78 NClusterTotal += SiClusterColl->size();
81 DataVect x0; x0.reserve(NClusterTotal);
82 DataVect y0; y0.reserve(NClusterTotal);
86 DataVect z1; z1.reserve(NClusterTotal);
91 DataVect numBarcodes; numBarcodes.reserve(NClusterTotal);
95 DataVect etaModule; etaModule.reserve(NClusterTotal);
99 for (
const auto SiClusterColl : *SiClusterCont.
cptr()){
102 if ( !
m_geo->SCTIDHelper()->is_sct(SiClusterColl->identify())) continue ;
107 for (
const auto cluster : *SiClusterColl){
113 ATH_MSG_DEBUG(
"Could not obtain Detector Element with ID " <<
id );
119 std::pair<Amg::Vector3D, Amg::Vector3D > ends = element->
endsOfStrip(
pos);
137 etaModule.push_back(
DataType(
m_geo->SCTIDHelper()->eta_module(clusterId)));
144 unsigned long countBarcodes=0;
145 using iter = PRD_MultiTruthCollection::const_iterator;
146 std::pair<iter,iter>
range = simClusterMap->equal_range(clusterId);
151 numBarcodes.push_back(
DataType(countBarcodes));
168 dataMap[
"etaModule"] = etaModule;
172 if ( numBarcodes.size() > 0 ){
174 dataMap[
"numBarcodes"] = numBarcodes;
176 std::string bctag =
"barcodes multiple=\""+
DataType(
barcodes.size()/
double(numBarcodes.size())).toString()+
"\"";
193 return m_geo.retrieve();
virtual std::string dataTypeName() const
Return the name of the data type.
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
const_pointer_type cptr()
Dereference the pointer.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
Condition object key of SiDetectorElementCollection for SCT.
value_type get_compact() const
Get the compact id.
const std::string & key() const
Return the StoreGate ID for the referenced object.
std::map< std::string, DataVect > DataMap
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
SiClusterRetriever(const std::string &type, const std::string &name, const IInterface *parent)
Standard Constructor.
const_pointer_type retrieve()
def barcodes(beg, end, sz)
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
::StatusCode StatusCode
StatusCode definition for legacy code.
const ToolHandle< IInDetGeoModelTool > m_geo
A tool handle to the geo model tool.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandleKey< InDet::SiClusterContainer > m_SiClusterCollName
StoreGate key for the SiClusterContainer for SCT.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
This header is shared inbetween the C-style server thread and the C++ Athena ServerSvc.
std::pair< Amg::Vector3D, Amg::Vector3D > endsOfStrip(const Amg::Vector2D &position) const
Special method for SCT to retrieve the two ends of a "strip" Returned coordinates are in global frame...
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
virtual StatusCode initialize()
initialize
SG::ReadHandleKey< PRD_MultiTruthCollection > m_SiTruthMapName
Amg::Vector2D localPosition(const HepGeom::Point3D< double > &globalPosition) const
transform a global position into a 2D local position (reconstruction frame) (inline)
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
bool m_useSiTruthMap
StoreGate key for the PRD_MultiTruthCollection for SCT.
const SiDetectorElement * getDetectorElement(const IdentifierHash &hash) const