47 if (not SCTRDOContainer.
isValid()){
49 return StatusCode::RECOVERABLE;
55 if (elements==
nullptr) {
57 return StatusCode::FAILURE;
61 unsigned long NSCTRDO = 0;
63 for (
const auto SCTRDORawCollection : *SCTRDOContainer)
65 NSCTRDO+=SCTRDORawCollection->size();
68 DataVect ident; ident.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);
87 for (
const auto SCTRDORawCollection : *SCTRDOContainer) {
90 const IdentifierHash waferHash = SCTRDORawCollection->identifyHash();
93 for (
const auto rdoData : *SCTRDORawCollection) {
101 if (element ==
nullptr){
102 ATH_MSG_WARNING(
"Unable to obtain detector element for SCT_RDO hit with id " <<
id );
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) ));
128 firstHitError.push_back(
DataType( -1 ));
129 secondHitError.push_back(
DataType( -1 ));
134 preambleError.push_back(
DataType(-1));
137 formatterError.push_back(
DataType(-1));
144 dataMap[
"id"] =std::move( ident);
145 dataMap[
"x0"] =std::move( x0);
146 dataMap[
"y0"] =std::move( y0);
147 dataMap[
"z0"] =std::move( z0);
148 dataMap[
"x1"] =std::move( x1);
149 dataMap[
"y1"] =std::move( y1);
150 dataMap[
"z1"] =std::move( z1);
151 dataMap[
"phiModule"] =std::move( phiModule);
152 dataMap[
"etaModule"] =std::move( etaModule);
153 dataMap[
"timeBin"] =std::move( timeBin);
154 dataMap[
"firstHitError"] =std::move( firstHitError );
155 dataMap[
"secondHitError"] =std::move( secondHitError );
156 dataMap[
"syncError"] =std::move( syncError);
157 dataMap[
"preambleError"] =std::move( preambleError);
158 dataMap[
"lvl1Error"] =std::move( lvl1Error);
159 dataMap[
"BCIDError"] =std::move( BCIDError);
160 dataMap[
"formatterError"] =std::move( formatterError);
166 return FormatTool->AddToEvent(
dataTypeName(),
"", &dataMap);