15 ISvcLocator *pSvcLocator)
67 return StatusCode::SUCCESS;
124 for (
const SiHit& siHit: *siHits) {
125 if (!siHit.isPixel()) {
127 return StatusCode::FAILURE;
131 siHit.getLayerDisk(),
132 siHit.getPhiModule(),
133 siHit.getEtaModule()));
139 return StatusCode::FAILURE;
141 siHitsCollections[wafer_hash].push_back(&siHit);
148 pixElements->size());
152 for (
const auto& hashId : allIdHashes) {
155 ATH_MSG_FATAL(
"Invalid pixel detector element for hash " << hashId);
156 return StatusCode::FAILURE;
160 const std::vector< const SiHit* >& siHitsWithCurrentHash = siHitsCollections.at(hashId);
162 for (
auto itr = startRange; itr != stopRange; ++itr) {
171 startPosX, startPosY, startPosZ,
175 decor_sdo_words(*measurement) = std::move(word);
176 decor_sdo_depositsBarcode(*measurement) = std::move(depositsBarcode);
177 decor_sdo_depositsEnergy(*measurement) = std::move(depositsEnergy);
180 decor_sihit_energyDeposit(*measurement) = std::move(
energyDeposit);
181 decor_sihit_meanTime(*measurement) = std::move(meanTime);
182 decor_sihit_barcode(*measurement) = std::move(
barcode);
183 decor_sihit_pdgid(*measurement) = std::move(pdgid);
185 decor_sihit_startPosX(*measurement) = std::move(startPosX);
186 decor_sihit_startPosY(*measurement) = std::move(startPosY);
187 decor_sihit_startPosZ(*measurement) = std::move(startPosZ);
189 decor_sihit_endPosX(*measurement) = std::move(endPosX);
190 decor_sihit_endPosY(*measurement) = std::move(endPosY);
191 decor_sihit_endPosZ(*measurement) = std::move(endPosZ);
195 return StatusCode::SUCCESS;
201 const std::vector<const SiHit*>& sihits,
202 const std::vector< std::vector< int > >& sdoTracks)
const
204 std::vector<SiHit> matchingHits {};
205 std::vector<const SiHit*> multiMatchingHits {};
207 for (
const SiHit* siHit : sihits) {
211 HepGeom::Point3D<double> averagePosition = 0.5 * (siHit->localStartPosition() + siHit->localEndPosition());
215 for(
const auto& hitIdentifier : cluster.rdoList() ){
220 multiMatchingHits.push_back(siHit);
227 for (
const std::vector<int>& barcodeSDOColl : sdoTracks ) {
228 if (
std::find(barcodeSDOColl.begin(), barcodeSDOColl.end(), siHitBarcode) == barcodeSDOColl.end())
continue;
229 multiMatchingHits.push_back(siHit);
239 for ( ; siHitIter != multiMatchingHits.end(); ++siHitIter) {
240 const SiHit* lowestXPos = *siHitIter;
241 const SiHit* highestXPos = *siHitIter;
244 std::vector<const SiHit* > ajoiningHits;
245 ajoiningHits.push_back( *siHitIter );
247 siHitIter2 = siHitIter + 1;
248 while ( siHitIter2 != multiMatchingHits.end() ) {
251 (*siHitIter2)->particleLink()) ) {
257 if (std::abs((highestXPos->
localEndPosition().x()-(*siHitIter2)->localStartPosition().x()))<0.00005 &&
258 std::abs((highestXPos->
localEndPosition().y()-(*siHitIter2)->localStartPosition().y()))<0.00005 &&
259 std::abs((highestXPos->
localEndPosition().z()-(*siHitIter2)->localStartPosition().z()))<0.00005 ) {
260 highestXPos = *siHitIter2;
261 ajoiningHits.push_back( *siHitIter2 );
264 siHitIter2 = multiMatchingHits.erase( siHitIter2 );
265 }
else if (std::abs((lowestXPos->
localStartPosition().x()-(*siHitIter2)->localEndPosition().x()))<0.00005 &&
266 std::abs((lowestXPos->
localStartPosition().y()-(*siHitIter2)->localEndPosition().y()))<0.00005 &&
267 std::abs((lowestXPos->
localStartPosition().z()-(*siHitIter2)->localEndPosition().z()))<0.00005) {
268 lowestXPos = *siHitIter2;
269 ajoiningHits.push_back( *siHitIter2 );
272 siHitIter2 = multiMatchingHits.erase( siHitIter2 );
278 if ( ajoiningHits.empty() ) {
281 }
else if ( ajoiningHits.size() == 1 ) {
283 matchingHits.push_back( *ajoiningHits[0] );
287 ATH_MSG_DEBUG(
"Merging " << ajoiningHits.size() <<
" SiHits together." );
289 float energyDep {0.f};
291 for(
const auto& siHit : ajoiningHits ){
292 energyDep += siHit->energyLoss();
293 time += siHit->meanTime();
295 time /= ajoiningHits.size();
303 (*siHitIter)->getBarrelEndcap(),
304 (*siHitIter)->getLayerDisk(),
305 (*siHitIter)->getEtaModule(),
306 (*siHitIter)->getPhiModule(),
307 (*siHitIter)->getSide() );
309 ATH_MSG_DEBUG(
"Finished Merging " << ajoiningHits.size() <<
" SiHits together." );