ATLAS Offline Software
Loading...
Searching...
No Matches
JiveXML::SCTRDORetriever Class Reference

Retrieve all SCT_RDORawData information (SCT raw hits) More...

#include <SCTRDORetriever.h>

Inheritance diagram for JiveXML::SCTRDORetriever:
Collaboration diagram for JiveXML::SCTRDORetriever:

Public Member Functions

 SCTRDORetriever (const std::string &type, const std::string &name, const IInterface *parent)
 Standard Constructor.
virtual StatusCode retrieve (ToolHandle< IFormatTool > &FormatTool)
 Retrieve all the data.
virtual std::string dataTypeName () const
 Return the name of the data type.
virtual StatusCode initialize ()
 Only retrieve geo tool in initialize.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Return the interface identifier.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const ToolHandle< IInDetGeoModelToolm_geo {this, "GeoModelTool", "JiveXML::InDetGeoModelTool/InDetGeoModelTool",""}
 A tool handle to the geo model tool.
ToolHandle< ISiLorentzAngleToolm_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"}
 A tool handle to the SiLorentzAngleTool.
SG::ReadHandleKey< SCT_RDO_Containerm_SCTRDOContainerName
 The StoreGate key for the SCTRDO container.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
 Condition object key of SiDetectorElementCollection for SCT.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Retrieve all SCT_RDORawData information (SCT raw hits)

  • Properties
    • SCTRDOContainer= 'SCT_RDOs' The StoreGate key for the SCTRDO container.
  • Retrieved Data
    • id: the identifier of the hit
    • x0,y0,z0: start coordinates of the hit strip
    • x1,y1,z1: end coordinates of the hit strip
    • phiModule,etaModule: \(\eta\) and \(\phi\) of module in detector coordinates
    • timeBin: time bin of the hit in the 3 consecutive bunch crossing
    • firstHitError: error flag for first hits data
    • secondHitError: error flag for second hits data

Definition at line 37 of file SCTRDORetriever.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ SCTRDORetriever()

JiveXML::SCTRDORetriever::SCTRDORetriever ( const std::string & type,
const std::string & name,
const IInterface * parent )

Standard Constructor.

This is the standard AthAlgTool constructor.

Parameters
typeAlgTool type name
nameAlgTool instance name
parentAlgTools parent owning this tool

Definition at line 24 of file SCTRDORetriever.cxx.

24 :
25 AthAlgTool(type,name,parent)
26 {
27 //Declare the interface
28 declareInterface<IDataRetriever>(this);
29
30 //And properties
31 declareProperty("SCTRDOContainer" , m_SCTRDOContainerName = std::string("SCT_RDOs"));
32 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
SG::ReadHandleKey< SCT_RDO_Container > m_SCTRDOContainerName
The StoreGate key for the SCTRDO container.

Member Function Documentation

◆ dataTypeName()

virtual std::string JiveXML::SCTRDORetriever::dataTypeName ( ) const
inlinevirtual

Return the name of the data type.

Implements JiveXML::IDataRetriever.

Definition at line 48 of file SCTRDORetriever.h.

48{ return "SCTRDO"; };

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ initialize()

StatusCode JiveXML::SCTRDORetriever::initialize ( )
virtual

Only retrieve geo tool in initialize.

Definition at line 169 of file SCTRDORetriever.cxx.

169 {
170 // Read Handle Key
171 ATH_CHECK( m_SCTRDOContainerName.initialize() );
172 // Read Cond Handle Key
173 ATH_CHECK( m_SCTDetEleCollKey.initialize() );
174
175 ATH_CHECK( m_lorentzAngleTool.retrieve() );
176
177 return m_geo.retrieve();
178 }
#define ATH_CHECK
Evaluate an expression and check for errors.
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
A tool handle to the SiLorentzAngleTool.
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
Condition object key of SiDetectorElementCollection for SCT.
const ToolHandle< IInDetGeoModelTool > m_geo
A tool handle to the geo model tool.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & JiveXML::IDataRetriever::interfaceID ( )
inlinestaticinherited

Return the interface identifier.

Definition at line 40 of file IDataRetriever.h.

40{ return IID_IDataRetriever; }
static const InterfaceID IID_IDataRetriever("JiveXML::IDataRetriever", 3, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ 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< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
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)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ retrieve()

StatusCode JiveXML::SCTRDORetriever::retrieve ( ToolHandle< IFormatTool > & FormatTool)
virtual

Retrieve all the data.

Implementation of DataRetriever interface.

  • for each pixel raw hit get coordinates and other data
  • fill in dataMap and forward it to the formatting tool
    Parameters
    FormatToolthe tool that will create formated output from the DataMap

Implements JiveXML::IDataRetriever.

Definition at line 40 of file SCTRDORetriever.cxx.

40 {
41
42 //be verbose
43 ATH_MSG_DEBUG( "Retrieving " << dataTypeName() );
44
45 //Get an iterator over all containers
46 SG::ReadHandle<SCT_RDO_Container> SCTRDOContainer(m_SCTRDOContainerName);
47 if (not SCTRDOContainer.isValid()){
48 ATH_MSG_DEBUG( "Unable to retrieve SCT_RDO_Container with name " << m_SCTRDOContainerName.key() );
49 return StatusCode::RECOVERABLE;
50 }
51
52 // Get SCT_DetectorElementCollection
53 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEle(m_SCTDetEleCollKey);
54 const InDetDD::SiDetectorElementCollection* elements(sctDetEle.retrieve());
55 if (elements==nullptr) {
56 ATH_MSG_FATAL(m_SCTDetEleCollKey.fullKey() << " could not be retrieved");
57 return StatusCode::FAILURE;
58 }
59
60 // Now find out how much space we need in total
61 unsigned long NSCTRDO = 0;
62 //Loop over SCTRDO containers
63 for (const auto SCTRDORawCollection : *SCTRDOContainer)
64 //and get number of SCTRDO in this collection
65 NSCTRDO+=SCTRDORawCollection->size();
66
67 //Define the data vectors we want to fill and create space
68 DataVect ident; ident.reserve(NSCTRDO);
69 DataVect x0; x0.reserve(NSCTRDO);
70 DataVect y0; y0.reserve(NSCTRDO);
71 DataVect z0; z0.reserve(NSCTRDO);
72 DataVect x1; x1.reserve(NSCTRDO);
73 DataVect y1; y1.reserve(NSCTRDO);
74 DataVect z1; z1.reserve(NSCTRDO);
75 DataVect phiModule; phiModule.reserve(NSCTRDO);
76 DataVect etaModule; etaModule.reserve(NSCTRDO);
77 DataVect timeBin; timeBin.reserve(NSCTRDO);
78 DataVect firstHitError; firstHitError.reserve(NSCTRDO);
79 DataVect secondHitError; secondHitError.reserve(NSCTRDO);
80 DataVect syncError; syncError.reserve(NSCTRDO);
81 DataVect preambleError; preambleError.reserve(NSCTRDO);
82 DataVect lvl1Error; lvl1Error.reserve(NSCTRDO);
83 DataVect BCIDError; BCIDError.reserve(NSCTRDO);
84 DataVect formatterError; formatterError.reserve(NSCTRDO);
85
86 //Now loop again over SCTRDO collections to retrieve the data
87 for (const auto SCTRDORawCollection : *SCTRDOContainer) {
88
89 //Get the identifier
90 const IdentifierHash waferHash = SCTRDORawCollection->identifyHash();
91
92 //Loop over raw hit collection
93 for (const auto rdoData : *SCTRDORawCollection) {
94
95 //Get the identifier
96 Identifier id = rdoData->identify();
97
98 //Get the hit detector element
99 const InDetDD::SiDetectorElement *element = elements->getDetectorElement(waferHash);
100 //Make sure we got the detector element
101 if (element == nullptr){
102 ATH_MSG_WARNING( "Unable to obtain detector element for SCT_RDO hit with id " << id );
103 continue ;
104 }
105
106 //Get the local position and store it
107 Amg::Vector2D localPos = element->rawLocalPositionOfCell(id);
108 localPos[Trk::distPhi] += m_lorentzAngleTool->getLorentzShift(waferHash, Gaudi::Hive::currentContext());
109 const std::pair<Amg::Vector3D, Amg::Vector3D> endsOfStrip = element->endsOfStrip(localPos);
110 ident.push_back(DataType( id.get_compact() ));
111 x0.push_back(DataType( endsOfStrip.first.x()*CLHEP::mm/CLHEP::cm));
112 y0.push_back(DataType( endsOfStrip.first.y()*CLHEP::mm/CLHEP::cm));
113 z0.push_back(DataType( endsOfStrip.first.z()*CLHEP::mm/CLHEP::cm));
114 x1.push_back(DataType( endsOfStrip.second.x()*CLHEP::mm/CLHEP::cm));
115 y1.push_back(DataType( endsOfStrip.second.y()*CLHEP::mm/CLHEP::cm));
116 z1.push_back(DataType( endsOfStrip.second.z()*CLHEP::mm/CLHEP::cm));
117 phiModule.push_back(DataType( m_geo->SCTIDHelper()->phi_module(id) ));
118 etaModule.push_back(DataType( m_geo->SCTIDHelper()->eta_module(id) ));
119
120 //Check if we have rdoData3
121 const SCT3_RawData *rdoData3 = dynamic_cast<const SCT3_RawData *>(rdoData);
122 if (rdoData3) {
123 timeBin.push_back(DataType( rdoData3->getTimeBin() ));
124 firstHitError.push_back(DataType( rdoData3->FirstHitError() ));
125 secondHitError.push_back(DataType( rdoData3->SecondHitError() ));
126 } else {
127 timeBin.push_back(DataType( -1 ));
128 firstHitError.push_back(DataType( -1 ));
129 secondHitError.push_back(DataType( -1 ));
130 }
131
132 //Old testbeam information is no more used
133 syncError.push_back(DataType(-1));
134 preambleError.push_back(DataType(-1));
135 lvl1Error.push_back(DataType(-1));
136 BCIDError.push_back(DataType(-1));
137 formatterError.push_back(DataType(-1));
138
139 } // loop over SCTRDO collection
140 } // loop over containers
141
142 //Finally add the data to our map
144 dataMap["id"] = ident;
145 dataMap["x0"] = x0;
146 dataMap["y0"] = y0;
147 dataMap["z0"] = z0;
148 dataMap["x1"] = x1;
149 dataMap["y1"] = y1;
150 dataMap["z1"] = z1;
151 dataMap["phiModule"] = phiModule;
152 dataMap["etaModule"] = etaModule;
153 dataMap["timeBin"] = timeBin;
154 dataMap["firstHitError"] = firstHitError ;
155 dataMap["secondHitError"] = secondHitError ;
156 dataMap["syncError"] = syncError;
157 dataMap["preambleError"] = preambleError;
158 dataMap["lvl1Error"] = lvl1Error;
159 dataMap["BCIDError"] = BCIDError;
160 dataMap["formatterError"] = formatterError;
161
162 //Be verbose
163 ATH_MSG_DEBUG( dataTypeName() << ": " << ident.size() );
164
165 //forward data to formating tool and return
166 return FormatTool->AddToEvent(dataTypeName(), "", &dataMap);
167 }
#define ATH_MSG_FATAL(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
OFFLINE_FRAGMENTS_NAMESPACE::PointerType DataType
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...
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
virtual std::string dataTypeName() const
Return the name of the data type.
int getTimeBin() const
bool SecondHitError() const
bool FirstHitError() const
Eigen::Matrix< double, 2, 1 > Vector2D
std::map< std::string, DataVect > DataMap
Definition DataType.h:59
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.
Definition DataType.h:58
@ phiModule
Definition HitInfo.h:80
@ ident
Definition HitInfo.h:77
@ distPhi
Definition ParamDefs.h:50

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_geo

const ToolHandle<IInDetGeoModelTool> JiveXML::SCTRDORetriever::m_geo {this, "GeoModelTool", "JiveXML::InDetGeoModelTool/InDetGeoModelTool",""}
private

A tool handle to the geo model tool.

Definition at line 56 of file SCTRDORetriever.h.

57{this, "GeoModelTool", "JiveXML::InDetGeoModelTool/InDetGeoModelTool",""};

◆ m_lorentzAngleTool

ToolHandle<ISiLorentzAngleTool> JiveXML::SCTRDORetriever::m_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"}
private

A tool handle to the SiLorentzAngleTool.

Definition at line 60 of file SCTRDORetriever.h.

60{this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"};

◆ m_SCTDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> JiveXML::SCTRDORetriever::m_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
private

Condition object key of SiDetectorElementCollection for SCT.

Definition at line 66 of file SCTRDORetriever.h.

66{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};

◆ m_SCTRDOContainerName

SG::ReadHandleKey<SCT_RDO_Container> JiveXML::SCTRDORetriever::m_SCTRDOContainerName
private

The StoreGate key for the SCTRDO container.

Definition at line 63 of file SCTRDORetriever.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: