ATLAS Offline Software
xAODTrackParticleAuxContainerCnv_v4.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 ) \
29 do { \
30  if( log.level() <= MSGLVL ) { \
31  log << MSGLVL << MSG << endmsg; \
32  } \
33 } while( 0 )
34 
36 {
37 }
38 
42  MsgStream& log ) const {
43 
44  // Greet the user:
45  ATH_MSG( "Converting xAOD::TrackParticleAuxContainer_v4 to current version..." );
46 
47  // Clear the transient object:
48  newObj->resize( 0 );
49 
50  // Copy the payload of the v4 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_v4 to current version "
91  "[OK]" );
92 
93  return;
94 }
95 
101  MsgStream& log ) const {
102 
103  log << MSG::ERROR
104  << "Somebody called xAODTrackParticleAuxContainerCnv_v4::transToPers"
105  << endmsg;
106  throw std::runtime_error( "Somebody called xAODTrackParticleAuxContainerCnv_v4::"
107  "transToPers" );
108  return;
109 }
SG::copyAuxStoreThinned
void copyAuxStoreThinned(const SG::IConstAuxStore &orig, SG::IAuxStore &copy, const SG::ThinningInfo *info)
Helper to copy an aux store while applying thinning.
xAOD::TrackParticleAuxContainer_v5
Temporary container used until we have I/O for AuxStoreInternal.
Definition: TrackParticleAuxContainer_v5.h:35
xAODTrackParticleAuxContainerCnv_v4::persToTrans
virtual void persToTrans(const xAOD::TrackParticleAuxContainer_v4 *oldObj, xAOD::TrackParticleAuxContainer *newObj, MsgStream &log) const override
Function converting from the old type to the current one.
Definition: xAODTrackParticleAuxContainerCnv_v4.cxx:40
EventPrimitivesHelpers.h
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
xAOD::AuxContainerBase::resize
virtual bool resize(size_t size) override
Resize the arrays to a given size.
Definition: AuxContainerBase.cxx:504
Amg::expand
void expand(std::vector< float >::const_iterator it, std::vector< float >::const_iterator, AmgSymMatrix(N) &covMatrix)
Definition: EventPrimitivesHelpers.h:75
xAODTrackParticleAuxContainerCnv_v4::transToPers
virtual void transToPers(const xAOD::TrackParticleAuxContainer *, xAOD::TrackParticleAuxContainer_v4 *, MsgStream &log) const override
Dummy function inherited from the base class.
Definition: xAODTrackParticleAuxContainerCnv_v4.cxx:99
xAOD::AuxContainerBase::size
virtual size_t size() const override
Get the size of the container.
Definition: AuxContainerBase.cxx:429
copyAuxStoreThinned.h
Helper to copy an aux store while applying thinning.
xAOD::TrackParticleAuxContainer_v4
Temporary container used until we have I/O for AuxStoreInternal.
Definition: TrackParticleAuxContainer_v4.h:37
lumiFormat.i
int i
Definition: lumiFormat.py:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
xAODTrackParticleAuxContainerCnv_v4.h
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
TrackParticleContainer_v1.h
ATH_MSG
#define ATH_MSG(MSG)
Another convenience macro for printing messages in the converter.
Definition: xAODTrackParticleAuxContainerCnv_v4.cxx:28
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
TrackParticleContainer.h
xAODTrackParticleAuxContainerCnv_v4::xAODTrackParticleAuxContainerCnv_v4
xAODTrackParticleAuxContainerCnv_v4()
Default constructor.
Definition: xAODTrackParticleAuxContainerCnv_v4.cxx:35