ATLAS Offline Software
Loading...
Searching...
No Matches
TrackStateOnSurfaceCnv_p1.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5//-----------------------------------------------------------------------------
6//
7// file: TrackStateOnSurfaceCnv_p1.cxx
8//
9//-----------------------------------------------------------------------------
10
16
17
19persToTrans( const Trk::TrackStateOnSurface_p1 *persObj, Trk::TrackStateOnSurface *transObj, MsgStream &log )
20{
21 ITPConverterFor<Trk::MeasurementBase> *measureCnv = nullptr;
22 Trk::MeasurementBase* meas = createTransFromPStore( &measureCnv, persObj->m_measurementOnTrack, log );
23
24 ITPConverterFor<Trk::TrackParameters> *paramsCnv = nullptr;
25 Trk::TrackParameters* trackParameters = dynamic_cast<Trk::TrackParameters*>(createTransFromPStore( &paramsCnv, persObj->m_trackParameters, log ));
26
27 std::unique_ptr<const Trk::FitQuality> fitQ(createTransFromPStore( &m_fitQCnv, persObj->m_fitQualityOnSurface, log));
28 auto fitQos = fitQ ? Trk::FitQualityOnSurface(*fitQ) : Trk::FitQualityOnSurface{};
29
30 Trk::MaterialEffectsBase* materialEffects = nullptr;
31 if (! persObj->m_scatteringAngle.isNull() ) {
32 materialEffects =
34 }
35
36 if (!persObj->m_materialEffectsOnTrack.isNull()) {
37 materialEffects =
39 }
40
41 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> types;
42 std::bitset<Trk::TrackStateOnSurface::NumberOfPersistencyHints> hints;
44 *transObj = Trk::TrackStateOnSurface (fitQos,
45 std::unique_ptr<Trk::MeasurementBase>(meas),
46 std::unique_ptr<Trk::TrackParameters>(trackParameters),
47 std::unique_ptr<Trk::MaterialEffectsBase>(materialEffects),
48 types);
49 //Hints are atomic. Set once here if TSOS was slimmed
50 //aka not 0. If 0 we want to allow setting them later on
51 uint8_t hintsUInt = hints.to_ulong();
52 if(hintsUInt!=0){
53 transObj->setHints(hintsUInt);
54 }
55
56}
57
58
61{
62 throw std::runtime_error("TrackStateOnSurfaceCnv_p1::transToPers is deprecated!");
63}
64
static const std::vector< std::string > types
Common base class for all TP converters, specialized for a given transient type.
Definition TPConverter.h:37
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
bool isNull() const
Tests if the reference is NULL.
Definition TPObjRef.h:68
MaterialEffectsOnTrackCnv_p1 * m_bremCnv
ScatteringAngleOnTrackCnv_p1 * m_scatCnv
virtual void transToPers(const Trk::TrackStateOnSurface *transObj, Trk::TrackStateOnSurface_p1 *persObj, MsgStream &log)
virtual void persToTrans(const Trk::TrackStateOnSurface_p1 *persObj, Trk::TrackStateOnSurface *transObj, MsgStream &log)
base class to integrate material effects on Trk::Track in a flexible way.
This class is the pure abstract base class for all fittable tracking measurements.
represents the track state (measurement, material, fit parameters and quality) at a surface.
void setHints(const uint8_t hints) const
Use this method to set persistification hints.
static void splitToBitsets(const unsigned int long input, std::bitset< NumberOfTrackStateOnSurfaceTypes > &types, std::bitset< NumberOfPersistencyHints > &hints)
ParametersBase< TrackParametersDim, Charged > TrackParameters