ATLAS Offline Software
Loading...
Searching...
No Matches
MaterialEffectsOnTrackCnv_p2.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
8#include <cmath>
9
10#include <typeinfo>
11
12//#include "TrkSurfaces/Surface.h"
14
15void MaterialEffectsOnTrackCnv_p2 :: persToTrans(
16 const Trk::MaterialEffectsOnTrack_p2 *persObj,
18 MsgStream& log)
19{
20 fillTransFromPStore(&m_mefBaseCnv, persObj->m_mefBase, transObj, log);
21 if ((std::abs(persObj->m_deltaPhi) + std::abs(persObj->m_deltaTheta) >
22 1.0e-10) ||
23 (persObj->m_sigmaDeltaPhi + persObj->m_sigmaDeltaTheta > 1.0e-10)) {
24 transObj->m_scatteringAngles =
26 persObj->m_deltaTheta,
27 persObj->m_sigmaDeltaPhi,
28 persObj->m_sigmaDeltaTheta);
29 } else
30 transObj->m_scatteringAngles = std::nullopt;
31 transObj->m_energyLoss.reset(createTransFromPStore(
32 (ITPConverterFor<Trk::EnergyLoss>**)nullptr, persObj->m_energyLoss, log));
33}
34
35void MaterialEffectsOnTrackCnv_p2 :: transToPers(
36 const Trk::MaterialEffectsOnTrack *transObj,
38 MsgStream& log)
39{
40 persObj->m_mefBase = baseToPersistent( &m_mefBaseCnv, transObj, log );
41 if (transObj->scatteringAngles()!=nullptr) {
42 persObj->m_deltaPhi = (float)transObj->scatteringAngles()->deltaPhi();
43 persObj->m_deltaTheta = (float)transObj->scatteringAngles()->deltaTheta();
44 persObj->m_sigmaDeltaPhi = (float)transObj->scatteringAngles()->sigmaDeltaPhi();
45 persObj->m_sigmaDeltaTheta = (float)transObj->scatteringAngles()->sigmaDeltaTheta();
46 }
47 // persObj->m_energyLoss = toPersistent( &m_elossCnv, transObj->m_energyLoss, log );
48// if (transObj->m_energyLoss!=0) std::cout<<"Ending MaterialEffectsOnTrackCnv_p2::transToPers: "<<(typeid(*(transObj->m_energyLoss))).name()<<std::endl;
49 persObj->m_energyLoss = toPersistent( (ITPConverterFor<Trk::EnergyLoss>**)nullptr, transObj->energyLoss(), log );
50}
51
52
53
TPObjRef baseToPersistent(CNV **cnv, const typename CNV::Trans_t *transObj, MsgStream &log) const
Definition TPConverter.h:97
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
void fillTransFromPStore(CNV **cnv, const TPObjRef &ref, TRANS_T *trans, MsgStream &log) const
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
ITPConverterFor< Trk::MaterialEffectsBase > * m_mefBaseCnv
persistent representation v2 of MaterialEffectsOnTrack
represents the full description of deflection and e-loss of a track in material.
std::optional< ScatteringAngles > m_scatteringAngles
holds the scattering angles+errors in a separate object
std::unique_ptr< const EnergyLoss > m_energyLoss
holds the measured and/or estimated energy loss in a separate object
const EnergyLoss * energyLoss() const
returns the energy loss object.
const ScatteringAngles * scatteringAngles() const
returns the MCS-angles object.
represents a deflection of the track caused through multiple scattering in material.
double sigmaDeltaPhi() const
returns the
double deltaPhi() const
returns the
double sigmaDeltaTheta() const
returns the
double deltaTheta() const
returns the