Skip to content
Snippets Groups Projects
Commit b2e12409 authored by John Chapman's avatar John Chapman
Browse files

Migrate ActsObjectDecoration code to use SiHit/SDO uniqueIDs

parent 86f8f46b
No related branches found
No related tags found
No related merge requests found
......@@ -164,22 +164,22 @@ namespace ActsTrk {
const xAOD::TrackMeasurementValidation* measurement = measurements->at(cluster->index());
ATH_CHECK(measurement->identifier() == cluster->identifier() );
auto [word, depositsBarcode, depositsEnergy] = ActsTrk::detail::getSDOInformation(cluster->rdoList(), *sdos); // FIXME barcode-based
std::vector<SiHit> compatibleSiHits = findAllHitsCompatibleWithCluster(*cluster, *element, siHitsWithCurrentHash, depositsBarcode);
auto [word, depositsUniqueID, depositsEnergy] = ActsTrk::detail::getSDOInformation(cluster->rdoList(), *sdos);
std::vector<SiHit> compatibleSiHits = findAllHitsCompatibleWithCluster(*cluster, *element, siHitsWithCurrentHash, depositsUniqueID);
auto [energyDeposit, meanTime, barcode, pdgid,
auto [energyDeposit, meanTime, uniqueID, pdgid,
startPosX, startPosY, startPosZ,
endPosX, endPosY, endPosZ] = ActsTrk::detail::getSiHitInformation(*element, compatibleSiHits); // FIXME barcode-based
endPosX, endPosY, endPosZ] = ActsTrk::detail::getSiHitInformation(*element, compatibleSiHits);
// attach SDO decorations
decor_sdo_words(*measurement) = std::move(word);
decor_sdo_depositsBarcode(*measurement) = std::move(depositsBarcode);
decor_sdo_depositsBarcode(*measurement) = std::move(depositsUniqueID);
decor_sdo_depositsEnergy(*measurement) = std::move(depositsEnergy);
// attach SiHit decorations
decor_sihit_energyDeposit(*measurement) = std::move(energyDeposit);
decor_sihit_meanTime(*measurement) = std::move(meanTime);
decor_sihit_barcode(*measurement) = std::move(barcode);
decor_sihit_barcode(*measurement) = std::move(uniqueID);
decor_sihit_pdgid(*measurement) = std::move(pdgid);
decor_sihit_startPosX(*measurement) = std::move(startPosX);
......@@ -223,9 +223,9 @@ namespace ActsTrk {
} // list on rdos
} else { // not m_useSiHitsGeometryMatching
auto siHitBarcode = HepMC::barcode(siHit->particleLink()); // FIXME barcode-based
for ( const std::vector<int>& barcodeSDOColl : sdoTracks ) {
if (std::find(barcodeSDOColl.begin(), barcodeSDOColl.end(), siHitBarcode) == barcodeSDOColl.end()) continue; // FIXME barcode-based
auto siHitUniqueID = HepMC::uniqueID(siHit->particleLink());
for ( const std::vector<int>& uniqueIDSDOColl : sdoTracks ) {
if (std::find(uniqueIDSDOColl.begin(), uniqueIDSDOColl.end(), siHitUniqueID) == uniqueIDSDOColl.end()) continue;
multiMatchingHits.push_back(siHit);
break;
}
......@@ -298,7 +298,7 @@ namespace ActsTrk {
highestXPos->localEndPosition(),
energyDep,
time,
HepMC::barcode((*siHitIter)->particleLink()), // FIXME barcode-based
(*siHitIter)->particleLink(),
0, // 0 for pixel 1 for strip
(*siHitIter)->getBarrelEndcap(),
(*siHitIter)->getLayerDisk(),
......
......@@ -164,22 +164,22 @@ namespace ActsTrk {
const xAOD::TrackMeasurementValidation* measurement = measurements->at(cluster->index());
ATH_CHECK(measurement->identifier() == cluster->identifier() );
auto [word, depositsBarcode, depositsEnergy] = ActsTrk::detail::getSDOInformation(cluster->rdoList(), *sdos); // FIXME barcode-based
auto [word, depositsUniqueID, depositsEnergy] = ActsTrk::detail::getSDOInformation(cluster->rdoList(), *sdos);
std::vector<SiHit> compatibleSiHits = findAllHitsCompatibleWithCluster(*cluster, *element, siHitsWithCurrentHash);
auto [energyDeposit, meanTime, barcode, pdgid,
auto [energyDeposit, meanTime, uniqueID, pdgid,
startPosX, startPosY, startPosZ,
endPosX, endPosY, endPosZ] = ActsTrk::detail::getSiHitInformation(*element, compatibleSiHits); // FIXME barcode-based
endPosX, endPosY, endPosZ] = ActsTrk::detail::getSiHitInformation(*element, compatibleSiHits);
// attach SDO decorations
decor_sdo_words(*measurement) = std::move(word);
decor_sdo_depositsBarcode(*measurement) = std::move(depositsBarcode);
decor_sdo_depositsBarcode(*measurement) = std::move(depositsUniqueID);
decor_sdo_depositsEnergy(*measurement) = std::move(depositsEnergy);
// attach SiHit decorations
decor_sihit_energyDeposit(*measurement) = std::move(energyDeposit);
decor_sihit_meanTime(*measurement) = std::move(meanTime);
decor_sihit_barcode(*measurement) = std::move(barcode);
decor_sihit_barcode(*measurement) = std::move(uniqueID);
decor_sihit_pdgid(*measurement) = std::move(pdgid);
decor_sihit_startPosX(*measurement) = std::move(startPosX);
......@@ -285,7 +285,7 @@ namespace ActsTrk {
highestXPos->localEndPosition(),
energyDep,
time,
HepMC::barcode((*siHitIter)->particleLink()), // FIXME barcode-based
(*siHitIter)->particleLink(),
1, // 0 for pixel 1 for strip
(*siHitIter)->getBarrelEndcap(),
(*siHitIter)->getLayerDisk(),
......
......@@ -14,7 +14,7 @@ namespace ActsTrk::detail {
const InDetSimDataCollection& sdoCollection )
{
std::vector<int> sdo_word {};
std::vector< std::vector< int > > sdo_depositsBarcode {};
std::vector< std::vector< int > > sdo_depositsUniqueID {};
std::vector< std::vector< float > > sdo_depositsEnergy {};
for (const Identifier hitIdentifier : rdoList) {
......@@ -23,22 +23,22 @@ namespace ActsTrk::detail {
sdo_word.push_back( pos->second.word() ) ;
std::vector<int> sdoDepBC(pos->second.getdeposits().size(), HepMC::INVALID_PARTICLE_ID);
std::vector<int> sdoDepUID(pos->second.getdeposits().size(), HepMC::INVALID_PARTICLE_ID);
std::vector<float> sdoDepEnergy(pos->second.getdeposits().size());
unsigned int nDepos {0};
for (const auto& deposit: pos->second.getdeposits()) {
if (deposit.first) sdoDepBC[nDepos] = HepMC::barcode(deposit.first); // FIXME barcode-based
if (deposit.first) sdoDepUID[nDepos] = HepMC::uniqueID(deposit.first);
sdoDepEnergy[nDepos] = deposit.second;
++nDepos;
}
sdo_depositsBarcode.push_back( std::move(sdoDepBC) );
sdo_depositsUniqueID.push_back( std::move(sdoDepUID) );
sdo_depositsEnergy.push_back( std::move(sdoDepEnergy) );
}
return std::make_tuple(std::move(sdo_word),
std::move(sdo_depositsBarcode),
std::move(sdo_depositsUniqueID),
std::move(sdo_depositsEnergy));
}
......@@ -61,7 +61,7 @@ namespace ActsTrk::detail {
std::vector<float> sihit_energyDeposit(numHits, 0);
std::vector<float> sihit_meanTime(numHits, 0);
std::vector<int> sihit_barcode(numHits, 0);
std::vector<int> sihit_uniqueID(numHits, 0);
std::vector<int> sihit_pdgid(numHits, 0);
std::vector<float> sihit_startPosX(numHits, 0);
......@@ -78,7 +78,7 @@ namespace ActsTrk::detail {
sihit_meanTime[hitNumber] = sihit.meanTime() ;
const HepMcParticleLink& HMPL = sihit.particleLink();
sihit_barcode[hitNumber] = HepMC::barcode(HMPL); // FIXME barcode-based
sihit_uniqueID[hitNumber] = HepMC::uniqueID(HMPL);
if( HMPL.isValid() ){
sihit_pdgid[hitNumber] = HMPL->pdg_id();
}
......@@ -99,7 +99,7 @@ namespace ActsTrk::detail {
++hitNumber;
}
return std::make_tuple(std::move(sihit_energyDeposit), std::move(sihit_meanTime), std::move(sihit_barcode), std::move(sihit_pdgid),
return std::make_tuple(std::move(sihit_energyDeposit), std::move(sihit_meanTime), std::move(sihit_uniqueID), std::move(sihit_pdgid),
std::move(sihit_startPosX), std::move(sihit_startPosY), std::move(sihit_startPosZ),
std::move(sihit_endPosX), std::move(sihit_endPosY), std::move(sihit_endPosZ));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment