ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTrackParticleAuxContainerCnv_v3.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5// $Id$
6
7// System include(s):
8#include <stdexcept>
9
10// Gaudi/Athena include(s):
11#include "GaudiKernel/MsgStream.h"
12
13// Core EDM include(s):
15
16// Local include(s):
20
21// Amg include
23
25#define MSGLVL MSG::DEBUG
26
28#define ATH_MSG( MSG ) \
29do { \
30 if( log.level() <= MSGLVL ) { \
31 log << MSGLVL << MSG << endmsg; \
32 } \
33} while( 0 )
34
38
42 MsgStream& log ) const {
43
44 // Greet the user:
45 ATH_MSG( "Converting xAOD::TrackParticleAuxContainer_v3 to current version..." );
46
47 // Clear the transient object:
48 newObj->resize( 0 );
49
50 // Copy the payload of the v3 object into the latest one by misusing
51 // the thinning code a bit...
52 SG::copyAuxStoreThinned( *oldObj, *newObj, nullptr );
53
54 // Set up interface containers on top of them:
55
56 //The old uses v_
58 for( size_t i = 0; i < oldObj->size(); ++i ) {
59 oldInt.push_back( new xAOD::TrackParticle_v1() );
60 }
61 oldInt.setStore( oldObj );
62
64 for( size_t i = 0; i < newObj->size(); ++i ) {
65 newInt.push_back( new xAOD::TrackParticle() );
66 }
67 newInt.setStore( newObj );
68
69 std::vector<float> covMatrixVec;
70
71 for( size_t i = 0; i < oldInt.size(); ++i ) {
72
73 static const SG::AuxElement::ConstAccessor< std::vector<float> > definingParametersCovMatrixAcc( "definingParametersCovMatrix" );
74
75 if( definingParametersCovMatrixAcc.isAvailable( *( oldInt[ i ] ) ) ) {
76
77 covMatrixVec = definingParametersCovMatrixAcc( *( oldInt[ i ] ) );
78 xAOD::ParametersCovMatrix_t cov;
79 Amg::expand( covMatrixVec.begin(), covMatrixVec.end(),cov );
80 newInt[ i ]->setDefiningParametersCovMatrix(cov);
81
82 }
83
84 }
85
86 // FIXME - what do we do about the identifier?
87
88 // Print what happened:
89 ATH_MSG( "Converting xAOD::TrackParticleAuxContainer_v3 to current version "
90 "[OK]" );
91
92 return;
93}
94
100 MsgStream& log ) const {
101
102 log << MSG::ERROR
103 << "Somebody called xAODTrackParticleAuxContainerCnv_v3::transToPers"
104 << endmsg;
105 throw std::runtime_error( "Somebody called xAODTrackParticleAuxContainerCnv_v3::"
106 "transToPers" );
107 return;
108}
#define endmsg
#define ATH_MSG(lvl)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:569
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
virtual void persToTrans(const xAOD::TrackParticleAuxContainer_v3 *oldObj, xAOD::TrackParticleAuxContainer *newObj, MsgStream &log) const override
Function converting from the old type to the current one.
virtual void transToPers(const xAOD::TrackParticleAuxContainer *, xAOD::TrackParticleAuxContainer_v3 *, MsgStream &log) const override
Dummy function inherited from the base class.
virtual bool resize(size_t size) override
Resize the arrays to a given size.
virtual size_t size() const override
Get the size of the container.
Temporary container used until we have I/O for AuxStoreInternal.
Class describing a TrackParticle.
Helper to copy an aux store while applying thinning.
void expand(std::vector< float >::const_iterator it, std::vector< float >::const_iterator, AmgSymMatrix(N) &covMatrix)
void copyAuxStoreThinned(const SG::IConstAuxStore &orig, SG::IAuxStore &copy, const SG::ThinningInfo *info)
Helper to copy an aux store while applying thinning.
DataVector< xAOD::TrackParticle_v1 > TrackParticleContainer_v1
The container is a simple typedef for now.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.