ATLAS Offline Software
Loading...
Searching...
No Matches
xAODTrackParticleAuxContainerCnv_v2.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_v2 to current version..." );
46
47 // Clear the transient object:
48 newObj->resize( 0 );
49
50 // Copy the payload of the v2 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
87 // FIXME - what do we do about the identifier?
88
89 // Print what happened:
90 ATH_MSG( "Converting xAOD::TrackParticleAuxContainer_v2 to current version "
91 "[OK]" );
92
93 return;
94}
95
101 MsgStream& log ) const {
102
103 log << MSG::ERROR
104 << "Somebody called xAODTrackParticleAuxContainerCnv_v2::transToPers"
105 << endmsg;
106 throw std::runtime_error( "Somebody called xAODTrackParticleAuxContainerCnv_v2::"
107 "transToPers" );
108 return;
109}
#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_v2 *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_v2 *, 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.