Skip to content
Snippets Groups Projects
Commit 9764454c authored by Julien Maurer's avatar Julien Maurer
Browse files

Merge branch 'cherry-pick-6d4e4eb5-22.0' into '22.0'

Sweeping !56977 from master to 22.0.
Workaround feature in HepMC3::GenVertex::position()

See merge request !56995
parents 12cb659a 908cbcfc
No related branches found
No related tags found
4 merge requests!69091Fix correlated smearing bug in JER in JetUncertainties in 22.0,!58791DataQualityConfigurations: Modify L1Calo config for web display,!5707927.09.2022: daily merge merge of 22.0 into master,!56995Sweeping !56977 from master to 22.0. Workaround feature in HepMC3::GenVertex::position()
......@@ -65,7 +65,7 @@ namespace Simulation
continue;
}
ATH_MSG_VERBOSE("Retrieved Vertex shift of: " << *curShift);
ATH_MSG_VERBOSE("Retrieved Vertex shift of: " << *curShift << " from " << vertexShifter->name());
// As signal process vertex is a pointer, there is some risk
// that the pointer points to a vertex somewhere else in the
......@@ -86,7 +86,14 @@ namespace Simulation
for( ; vtxIt != vtxItEnd; ++vtxIt) {
// quick access:
auto curVtx = (*vtxIt);
#ifdef HEPMC3
// NB Doing this check to explicitly avoid the fallback mechanism in
// HepMC3::GenVertex::position() to return the position of
// another GenVertex in the event if the position isn't set (or is set to zero)!
const HepMC::FourVector &curPos = (curVtx->has_set_position()) ? curVtx->position() : HepMC::FourVector::ZERO_VECTOR();
#else
const HepMC::FourVector &curPos = curVtx->position();
#endif
// get a copy of the current vertex position
CLHEP::HepLorentzVector newPos( curPos.x(), curPos.y(), curPos.z(), curPos.t() );
......
......@@ -81,7 +81,10 @@ StatusCode Simulation::ZeroLifetimePositioner::manipulate(HepMC::GenEvent& ge, b
if (ATH_UNLIKELY(this->msgLvl (MSG::VERBOSE))) {
HepMC::Print::line(nextVtx);
}
const HepMC::FourVector &nextVec = nextVtx->position();
// NB Doing this check to explicitly avoid the fallback mechanism in
// HepMC3::GenVertex::position() to return the position of
// another GenVertex in the event if the position isn't set (or is set to zero)!
const HepMC::FourVector &nextVec = (nextVtx->has_set_position()) ? nextVtx->position() : HepMC::FourVector::ZERO_VECTOR();
const CLHEP::HepLorentzVector nextPos( nextVec.x(), nextVec.y(), nextVec.z(), nextVec.t() );
ATH_MSG_VERBOSE("Current Vertex:");
if (ATH_UNLIKELY(this->msgLvl (MSG::VERBOSE))) {
......@@ -93,7 +96,10 @@ StatusCode Simulation::ZeroLifetimePositioner::manipulate(HepMC::GenEvent& ge, b
if (ATH_UNLIKELY(this->msgLvl (MSG::VERBOSE))) {
HepMC::Print::line(prevVtx);
}
const HepMC::FourVector &prevVec = prevVtx->position();
// NB Doing this check to explicitly avoid the fallback mechanism in
// HepMC3::GenVertex::position() to return the position of
// another GenVertex in the event if the position isn't set (or is set to zero)!
const HepMC::FourVector &prevVec = (prevVtx->has_set_position()) ? prevVtx->position() : HepMC::FourVector::ZERO_VECTOR();
const CLHEP::HepLorentzVector prevPos( prevVec.x(), prevVec.y(), prevVec.z(), prevVec.t() );
CLHEP::HepLorentzVector newPos = 0.5*(prevPos+nextPos);
curVtx->set_position(HepMC::FourVector(newPos.x(),newPos.y(),newPos.z(),newPos.t()));
......
......@@ -267,7 +267,11 @@ void ISF::TruthSvc::recordIncidentToMCTruth( ISF::ITruthIncident& ti, bool passW
// 2) A new GenVertex for the intermediate interaction should be
// added.
#ifdef HEPMC3
auto newVtx = HepMC::newGenVertexPtr( vtx->position(), vtx->status());
// NB Doing this check to explicitly avoid the fallback mechanism in
// HepMC3::GenVertex::position() to return the position of
// another GenVertex in the event if the position isn't set (or is set to zero)!
const HepMC::FourVector &posVec = (vtx->has_set_position()) ? vtx->position() : HepMC::FourVector::ZERO_VECTOR();
auto newVtx = HepMC::newGenVertexPtr( posVec, vtx->status());
HepMC::GenEvent *mcEvent = parentBeforeIncident->parent_event();
auto tmpVtx = newVtx;
mcEvent->add_vertex( newVtx);
......@@ -448,7 +452,14 @@ HepMC::GenVertexPtr ISF::TruthSvc::createGenVertexFromTruthIncident( ISF::ITrut
this->deleteChildVertex(oldVertex);
}
else {
#ifdef HEPMC3
// NB Doing this check to explicitly avoid the fallback mechanism in
// HepMC3::GenVertex::position() to return the position of
// another GenVertex in the event if the position isn't set (or is set to zero)!
const HepMC::FourVector &old_pos = (oldVertex->has_set_position()) ? oldVertex->position() : HepMC::FourVector::ZERO_VECTOR();
#else
const auto& old_pos=oldVertex->position();
#endif
const auto& new_pos=ti.position();
double diffr=std::sqrt(std::pow(new_pos.x()-old_pos.x(),2)+std::pow(new_pos.y()-old_pos.y(),2)+std::pow(new_pos.z()-old_pos.z(),2));
//AV The comparison below is not portable.
......
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