17     constexpr 
float dummy_val = -1.;
 
   20         RecordPars() = 
default;
 
   23             mom{std::move(mom_)}{}
 
   24         RecordPars(
const CLHEP::Hep3Vector& pos_, 
const CLHEP::Hep3Vector& mom_):
 
   25             pos{pos_.x(), pos_.y(), pos_.z()},
 
   26             mom{mom_.x(), mom_.y(), mom_.z()}{
 
   31         std::string record_name{};
 
   42                                                              const std::string& 
keyName)
 const{
 
   44             const std::string fullKey = recordKey.key() + 
"_" + 
keyName; 
 
   72         return StatusCode::SUCCESS;
 
  102         return StatusCode::SUCCESS;
 
  120             ATH_CHECK(trackRecordCollection.isPresent());
 
  122             const std::string r_name = trackRecordCollection.key();
 
  123             float& 
x = (*myDecors.
xDecor[
idx])(truthParticle);
 
  124             float& 
y = (*myDecors.
yDecor[
idx])(truthParticle);
 
  125             float& 
z = (*myDecors.
zDecor[
idx])(truthParticle);
 
  136             float& ex = (*myDecors.
exDecor[
idx])(truthParticle);
 
  137             float& ey = (*myDecors.
eyDecor[
idx])(truthParticle);
 
  138             float& ez = (*myDecors.
ezDecor[
idx])(truthParticle);
 
  139             float& epx = (*myDecors.
epxDecor[
idx])(truthParticle);
 
  140             float& epy = (*myDecors.
epyDecor[
idx])(truthParticle);
 
  141             float& epz = (*myDecors.
epzDecor[
idx])(truthParticle);
 
  143             ex = ey = ez = epx = epy = epz = dummy_val;
 
  146             for (
const TrackRecord& trackRecord : *trackRecordCollection) {
 
  148                 CLHEP::Hep3Vector 
pos = trackRecord.GetPosition();
 
  149                 CLHEP::Hep3Vector 
mom = trackRecord.GetMomentum();
 
  150                 ATH_MSG_VERBOSE(
"Found associated  " << r_name << 
" pt " << 
mom.perp() << 
" position: r " << 
pos.perp() << 
" z " << 
pos.z());
 
  159             if (!found_truth) {
parameters.emplace_back();}
 
  162             r_pars.record_name = r_name;
 
  166             if (!found_truth) 
continue;
 
  168             if (r_name == 
"CaloEntryLayer")
 
  169                 volume = trackingGeometry->
trackingVolume(
"InDet::Containers::InnerDetector");
 
  170             else if (r_name == 
"MuonEntryLayer")
 
  172             else if (r_name == 
"MuonExitLayer")
 
  173                 volume = trackingGeometry->
trackingVolume(
"Muon::Containers::MuonSystem");
 
  177             r_pars.volume = volume;
 
  184         cov(4, 4) = 1
e-3 / truthParticle.
p4().P();
 
  189             if ( (!start_pars.record_name.empty() && !start_pars.volume) || !end_pars.volume) 
continue;
 
  193             const std::string& r_name = end_pars.record_name;    
 
  195             float& ex = (*myDecors.
exDecor[end_pars.idx])(truthParticle);
 
  196             float& ey = (*myDecors.
eyDecor[end_pars.idx])(truthParticle);
 
  197             float& ez = (*myDecors.
ezDecor[end_pars.idx])(truthParticle);
 
  198             float& epx = (*myDecors.
epxDecor[end_pars.idx])(truthParticle);  
 
  199             float& epy = (*myDecors.
epyDecor[end_pars.idx])(truthParticle);
 
  200             float& epz = (*myDecors.
epzDecor[end_pars.idx])(truthParticle);
 
  202             std::vector<float>& covMat = (*myDecors.
ecovDecor[end_pars.idx])(truthParticle);
 
  204             std::unique_ptr<Trk::TrackParameters> exPars{
 
  210             (*myDecors.
eisDecor[end_pars.idx])(truthParticle) = 
true;
 
  211             ex = exPars->position().x();
 
  212             ey = exPars->position().y();
 
  213             ez = exPars->position().z();
 
  214             epx = exPars->momentum().x();
 
  215             epy = exPars->momentum().y();
 
  216             epz = exPars->momentum().z();
 
  221                 << 
" truth: r " << end_pars.pos.perp() << 
" z " 
  222                 << end_pars.pos.z() << 
" p " 
  223                 << end_pars.mom.mag() << std::endl
 
  224                 << 
" extrp: r " << exPars->position().perp() << 
" z " 
  225                 << exPars->position().z() << 
" p " 
  226                 << exPars->momentum().mag() << 
" res p " 
  227                 << (end_pars.mom.mag() -
 
  228                     exPars->momentum().mag())
 
  229                 << 
" error " << errorp << 
" cov " 
  232                 << (end_pars.mom.mag() -
 
  233                     exPars->momentum().mag()) /
 
  236         return StatusCode::SUCCESS;