From 14f6514a268b03b4f41224ca797af2491c1a5fbb Mon Sep 17 00:00:00 2001 From: Maarten Van Veghel <maarten.vanveghel@cern.ch> Date: Sun, 10 Mar 2024 01:54:37 +0100 Subject: [PATCH] adapt to removal of additionalInfo for charged calo --- .../PhysEvent/include/Event/Bremsstrahlung.h | 28 ++++--- .../src/ChargedProtoParticleAddCaloInfo.cpp | 80 +++---------------- .../ChargedProtoParticleAddCombineDLLs.cpp | 35 +++----- 3 files changed, 36 insertions(+), 107 deletions(-) diff --git a/Event/PhysEvent/include/Event/Bremsstrahlung.h b/Event/PhysEvent/include/Event/Bremsstrahlung.h index 578d0fb0baf..629db560c4c 100644 --- a/Event/PhysEvent/include/Event/Bremsstrahlung.h +++ b/Event/PhysEvent/include/Event/Bremsstrahlung.h @@ -296,30 +296,34 @@ namespace LHCb::Event::Bremsstrahlung { } bool hasBrem() const { - using Info = LHCb::ProtoParticle::additionalInfo; - return this->base().proto() && ( this->base().proto()->info( Info::CaloHasBrem, 0 ) > 0. ) && - !this->overlapVeto(); + auto proto = this->base().proto(); + if ( !proto ) return false; + auto pid = proto->bremInfo(); + return pid ? pid->HasBrem() && !this->overlapVeto() : false; } bool inBrem() const { - using Info = LHCb::ProtoParticle::additionalInfo; - return this->base().proto() && ( this->base().proto()->info( Info::InAccBrem, 0 ) > 0. ); + auto proto = this->base().proto(); + if ( !proto ) return false; + auto pid = proto->bremInfo(); + return pid ? pid->InBrem() : false; } details::bremid_t bremID() const { - using Info = LHCb::ProtoParticle::additionalInfo; auto proto = this->base().proto(); if ( !proto ) return {0, 0.f}; - auto id = (int)proto->info( Info::CaloBremHypoID, 0 ); - auto chi2 = (details::float_t)proto->info( Info::CaloBremMatch, -1. ); + auto pid = proto->bremInfo(); + auto id = pid ? (int)pid->BremHypoID().all() : 0; + auto chi2 = pid ? (details::float_t)pid->BremHypoMatch() : -1.; return {id, chi2}; } details::float_t bremFrac( details::momentum3_t const& mom ) const { - using Info = ProtoParticle::additionalInfo; - auto proto = this->base().proto(); - auto bremenergy = details::float_t{(float)proto->info( Info::CaloBremEnergy, 0. )}; - auto bendcorr = details::float_t{(float)proto->info( Info::CaloBremBendingCorr, 1. )}; + using Info = LHCb::Event::Calo::v1::BremInfo; + auto proto = this->base().proto(); + Info const* pid = proto ? proto->bremInfo() : nullptr; + auto bremenergy = pid ? (details::float_t)pid->BremEnergy() : 0.; + auto bendcorr = pid ? (details::float_t)pid->BremBendingCorrection() : 1.; return details::bremFrac( mom, bremenergy, bendcorr ); } diff --git a/Event/RecreatePIDTools/src/ChargedProtoParticleAddCaloInfo.cpp b/Event/RecreatePIDTools/src/ChargedProtoParticleAddCaloInfo.cpp index f0f785a5f05..c64ed173535 100644 --- a/Event/RecreatePIDTools/src/ChargedProtoParticleAddCaloInfo.cpp +++ b/Event/RecreatePIDTools/src/ChargedProtoParticleAddCaloInfo.cpp @@ -91,13 +91,12 @@ namespace LHCb::Rec::ProtoParticle::Charged { // specific implementations //============================================================================= using namespace LHCb::Event::Calo::v1; - using additionalInfo = LHCb::ProtoParticle::additionalInfo; // Ecal info - class AddEcalInfo final : public AddCaloInfoBase<CaloChargedPID> { + class AddCaloInfo final : public AddCaloInfoBase<CaloChargedPID> { public: // constructor - AddEcalInfo( std::string const& type, std::string const& name, IInterface const* parent ) + AddCaloInfo( std::string const& type, std::string const& name, IInterface const* parent ) : AddCaloInfoBase<CaloChargedPID>::AddCaloInfoBase( type, name, parent ) {} // main execution @@ -110,6 +109,7 @@ namespace LHCb::Rec::ProtoParticle::Charged { for ( auto proto : protos ) { // remove current info proto->removeCaloEcalInfo(); + proto->removeCaloHcalInfo(); // find pp with track if ( !proto->track() ) continue; auto relation = map.find( proto->track() ); @@ -120,22 +120,9 @@ namespace LHCb::Rec::ProtoParticle::Charged { auto const* pid = relation->second; // skip if not in acceptance - if ( !pid->InEcal() ) continue; - // store pid info - auto track_p = proto->track()->p(); - auto cellid = pid->ElectronID(); - proto->addInfo( additionalInfo::InAccEcal, true ); - proto->addInfo( additionalInfo::CaloClusChi2, pid->ClusterMatch() ); - proto->addInfo( additionalInfo::CaloTrMatch, pid->ClusterMatch() ); - proto->addInfo( additionalInfo::CaloChargedID, cellid.all() ); - proto->addInfo( additionalInfo::CaloElectronMatch, pid->ElectronMatch() ); - proto->addInfo( additionalInfo::CaloChargedEcal, pid->ElectronEnergy() ); - proto->addInfo( additionalInfo::CaloEoverP, pid->ElectronShowerEoP() ); - proto->addInfo( additionalInfo::CaloEcalE, pid->ElectronShowerEoP() * track_p ); - proto->addInfo( additionalInfo::ElectronShowerDLL, pid->ElectronShowerDLL() ); - proto->addInfo( additionalInfo::EcalPIDe, pid->EcalPIDe() ); - proto->addInfo( additionalInfo::EcalPIDmu, pid->EcalPIDmu() ); + if ( !( pid->InEcal() || pid->InHcal() ) ) continue; // add relevant CaloHypo + auto cellid = pid->ElectronID(); addCaloHypo( etable, cellid, proto ); // reference to CaloChargedPID object proto->setCaloChargedPID( pid ); @@ -148,42 +135,6 @@ namespace LHCb::Rec::ProtoParticle::Charged { "Table relating cellids to CaloHypos"}; }; - // Hcal info - struct AddHcalInfo final : AddCaloInfoBase<CaloChargedPID> { - // constructor - AddHcalInfo( std::string const& type, std::string const& name, IInterface const* parent ) - : AddCaloInfoBase<CaloChargedPID>::AddCaloInfoBase( type, name, parent ) {} - - // main execution - StatusCode operator()( ProtoParticles& protos, IGeometryInfo const& ) const override { - // make map - auto map = getPIDsMap(); - // update all relevant protoparticles - for ( auto proto : protos ) { - // remove current info - proto->removeCaloHcalInfo(); - // find pp with track - if ( !proto->track() ) continue; - auto relation = map.find( proto->track() ); - if ( map.end() == relation ) { - if ( msgLevel( MSG::VERBOSE ) ) verbose() << " -> NO associated CaloPID object found" << endmsg; - continue; - } - - auto const* pid = relation->second; - // skip if not in acceptance - if ( !pid->InHcal() ) continue; - // store pid info - auto track_p = proto->track()->p(); - proto->addInfo( additionalInfo::InAccHcal, true ); - proto->addInfo( additionalInfo::CaloHcalE, pid->HcalEoP() * track_p ); - proto->addInfo( additionalInfo::HcalPIDe, pid->HcalPIDe() ); - proto->addInfo( additionalInfo::HcalPIDmu, pid->HcalPIDmu() ); - } - return StatusCode::SUCCESS; - } - }; - // Brem info class AddBremInfo final : public AddCaloInfoBase<BremInfo> { public: @@ -212,19 +163,8 @@ namespace LHCb::Rec::ProtoParticle::Charged { auto const* pid = relation->second; // skip if not in acceptance if ( !pid->InBrem() ) continue; - // store pid info - auto cellid = pid->BremHypoID(); - proto->addInfo( additionalInfo::InAccBrem, true ); - proto->addInfo( additionalInfo::CaloBremMatch, pid->BremHypoMatch() ); - proto->addInfo( additionalInfo::CaloBremHypoID, cellid.all() ); - proto->addInfo( additionalInfo::CaloBremHypoEnergy, pid->BremHypoEnergy() ); - proto->addInfo( additionalInfo::CaloBremHypoDeltaX, pid->BremHypoDeltaX() ); - proto->addInfo( additionalInfo::CaloBremTBEnergy, pid->BremTrackBasedEnergy() ); - proto->addInfo( additionalInfo::CaloBremBendingCorr, pid->BremBendingCorrection() ); - proto->addInfo( additionalInfo::CaloBremEnergy, pid->BremEnergy() ); - proto->addInfo( additionalInfo::CaloHasBrem, pid->HasBrem() ); - proto->addInfo( additionalInfo::BremPIDe, pid->BremPIDe() ); // add relevant CaloHypo + auto cellid = pid->BremHypoID(); addCaloHypo( phtable, cellid, proto ); // reference to BremInfo object proto->setBremInfo( pid ); @@ -260,9 +200,8 @@ namespace LHCb::Rec::ProtoParticle::Charged { proto->clearCalo( LHCb::CaloHypo::Hypothesis::Photon ); // add relevant CaloHypo auto cellid_ecal = - LHCb::Detector::Calo::CellID{(unsigned int)proto->info( additionalInfo::CaloChargedID, 0 )}; - auto cellid_brem = - LHCb::Detector::Calo::CellID{(unsigned int)proto->info( additionalInfo::CaloBremHypoID, 0 )}; + proto->caloChargedPID() ? proto->caloChargedPID()->ElectronID() : LHCb::Detector::Calo::CellID{}; + auto cellid_brem = proto->bremInfo() ? proto->bremInfo()->BremHypoID() : LHCb::Detector::Calo::CellID{}; if ( cellid_ecal ) addCaloHypo( etable, cellid_ecal, proto, m_report_missing ); if ( cellid_brem ) addCaloHypo( ptable, cellid_brem, proto, m_report_missing ); } @@ -293,8 +232,7 @@ namespace LHCb::Rec::ProtoParticle::Charged { } // namespace v2 - DECLARE_COMPONENT_WITH_ID( v2::AddEcalInfo, "ChargedProtoParticleAddEcalInfo" ) - DECLARE_COMPONENT_WITH_ID( v2::AddHcalInfo, "ChargedProtoParticleAddHcalInfo" ) + DECLARE_COMPONENT_WITH_ID( v2::AddCaloInfo, "ChargedProtoParticleAddCaloInfo" ) DECLARE_COMPONENT_WITH_ID( v2::AddBremInfo, "ChargedProtoParticleAddBremInfo" ) DECLARE_COMPONENT_WITH_ID( v2::AddHypos, "ChargedProtoParticleAddCaloHypos" ) diff --git a/Event/RecreatePIDTools/src/ChargedProtoParticleAddCombineDLLs.cpp b/Event/RecreatePIDTools/src/ChargedProtoParticleAddCombineDLLs.cpp index b02b1c16a97..bc9632fbb5e 100644 --- a/Event/RecreatePIDTools/src/ChargedProtoParticleAddCombineDLLs.cpp +++ b/Event/RecreatePIDTools/src/ChargedProtoParticleAddCombineDLLs.cpp @@ -258,41 +258,28 @@ namespace LHCb::Rec::ProtoParticle::Charged { } bool AddCombineDLLs::addCalo( LHCb::ProtoParticle* proto, CombinedLL& combDLL ) const { - bool ok = false; - if ( proto->hasInfo( LHCb::ProtoParticle::additionalInfo::EcalPIDe ) || - proto->hasInfo( LHCb::ProtoParticle::additionalInfo::EcalPIDmu ) ) { + bool ok = false; + auto pid = proto->caloChargedPID(); + if ( pid && pid->InEcal() ) { const int eTechnique = m_maskTechnique.at( "ECAL" ); - if ( 0 != ( m_elCombDll & eTechnique ) ) - combDLL.elDLL += proto->info( LHCb::ProtoParticle::additionalInfo::EcalPIDe, 0 ); - if ( 0 != ( m_muCombDll & eTechnique ) ) - combDLL.muDLL += proto->info( LHCb::ProtoParticle::additionalInfo::EcalPIDmu, 0 ); + if ( 0 != ( m_elCombDll & eTechnique ) ) combDLL.elDLL += pid->EcalPIDe(); + if ( 0 != ( m_muCombDll & eTechnique ) ) combDLL.muDLL += pid->EcalPIDmu(); if ( msgLevel( MSG::VERBOSE ) ) verbose() << " -> Adding ECAL info " << combDLL << endmsg; ok = true; } - if ( proto->hasInfo( LHCb::ProtoParticle::additionalInfo::HcalPIDe ) || - proto->hasInfo( LHCb::ProtoParticle::additionalInfo::HcalPIDmu ) ) { + if ( pid && pid->InHcal() ) { const int hTechnique = m_maskTechnique.at( "HCAL" ); - if ( 0 != ( m_elCombDll & hTechnique ) ) - combDLL.elDLL += proto->info( LHCb::ProtoParticle::additionalInfo::HcalPIDe, 0 ); - if ( 0 != ( m_muCombDll & hTechnique ) ) - combDLL.muDLL += proto->info( LHCb::ProtoParticle::additionalInfo::HcalPIDmu, 0 ); + if ( 0 != ( m_elCombDll & hTechnique ) ) combDLL.elDLL += pid->HcalPIDe(); + if ( 0 != ( m_muCombDll & hTechnique ) ) combDLL.muDLL += pid->HcalPIDmu(); if ( msgLevel( MSG::VERBOSE ) ) verbose() << " -> Adding HCAL info " << combDLL << endmsg; ok = true; } - if ( proto->hasInfo( LHCb::ProtoParticle::additionalInfo::PrsPIDe ) ) { - const int pTechnique = m_maskTechnique.at( "PRS" ); - if ( 0 != ( m_elCombDll & pTechnique ) ) - combDLL.elDLL += proto->info( LHCb::ProtoParticle::additionalInfo::PrsPIDe, 0 ); - if ( msgLevel( MSG::VERBOSE ) ) verbose() << " -> Adding PRS info " << combDLL << endmsg; - ok = true; - } - - if ( proto->hasInfo( LHCb::ProtoParticle::additionalInfo::BremPIDe ) ) { + auto brem = proto->bremInfo(); + if ( brem && brem->InBrem() ) { const int bTechnique = m_maskTechnique.at( "BREM" ); - if ( 0 != ( m_elCombDll & bTechnique ) ) - combDLL.elDLL += proto->info( LHCb::ProtoParticle::additionalInfo::BremPIDe, 0 ); + if ( 0 != ( m_elCombDll & bTechnique ) ) combDLL.elDLL += brem->BremPIDe(); if ( msgLevel( MSG::VERBOSE ) ) verbose() << " -> Adding BREM info " << combDLL << endmsg; ok = true; } -- GitLab