ATLAS Offline Software
JetCollectionCnv_p3.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // JetCollectionCnv_p3.cxx
8 // Implementation file for class JetCollectionCnv_p3
9 // Author: S.Binet<binet@cern.ch>
11 
12 // DataModel includes
13 #include "AthAllocators/DataPool.h"
14 
15 // JetEvent includes
16 #include "JetEvent/Jet.h"
17 #include "JetEvent/JetCollection.h"
18 
19 
20 // JetEventTPCnv includes
25 
26 // DataModelAthenaPool includes
28 
29 #include <sstream>
30 
31 // preallocate converters
32 static const JetCnv_p3 jetCnv;
33 static const JetKeyDescriptorCnv_p1 jetkeyCnv;
34 
35 
36 void
38  JetCollection* trans,
39  MsgStream& msg ) const
40 {
41  msg << MSG::DEBUG << "Loading JetCollection from persistent state..."
42  << endmsg;
43 
44  // make sure to first read the JetKeyDescriptor
46  JetKeyStoreCnv.persToTrans( &pers->m_keyStore, &trans->m_keyStore, msg );
47  // link the JetKeyDescriptorInstance to the store:
48  if( trans->m_keyStore.isValid() ){
49  trans->keyDesc()->m_Stores = nullptr;
50  trans->keyDesc()->m_ConstStores = trans->m_keyStore.cptr();
51  // make sure the global instance is pointing to this jetkey store
54  }
55  else if (trans->m_keyStore.isDefault()) {
56  DataLink<JetKeyDescriptor> dl ("JetKeyMap");
57  if (dl.isValid()) {
58  trans->keyDesc()->m_Stores = nullptr;
59  trans->keyDesc()->m_ConstStores = dl.cptr();
60  // make sure the global instance is pointing to this jetkey store
63  }
64  else {
65  trans->keyDesc()->m_Stores =
67  trans->keyDesc()->m_ConstStores =
69  }
70  }
71  else {
74  }
75  msg << MSG::DEBUG << "attached JetKeyDescriptor to its instance" << endmsg;
76 
77  // elements are managed by DataPool
78  trans->clear(SG::VIEW_ELEMENTS);
79 
80  DataPool<Jet> pool( 20 );
81  const std::size_t nJets = pers->size();
82  if ( pool.capacity() - pool.allocated() < nJets ) {
83  pool.reserve( pool.allocated() + nJets );
84  }
85 
86  trans->setOrdered (static_cast<JetCollection::OrderedVar>(pers->m_ordered));
87  // the transient version does not have this data member any more,
88  // each jet knows its ROI
89  // trans->m_ROIauthor = //pers->m_roiAuthor;
90 
91  msg << MSG::DEBUG << "persistant JetCollection has size " << nJets <<endmsg;
92 
93  trans->reserve( nJets );
94  for ( JetCollection_p3::const_iterator
95  itr = pers->begin(),
96  itrEnd = pers->end();
97  itr != itrEnd;
98  ++itr ) {
99  Jet * jet = pool.nextElementPtr();
100  jetCnv.persToTrans( &(*itr), jet, msg );
101  trans->push_back( jet );
102 
103  }
104 
105  // now each jet knows its ROI
106  unsigned int RoIWord;
107  std::stringstream strm(pers->m_roiAuthor);
108  strm >> RoIWord;
109  if( strm.good() )
110  {
111  msg << MSG::DEBUG << "Note: This jet collection uses RoIWords!" << endmsg;
112  for( JetCollection::iterator itr = trans->begin(); itr != trans->end(); ++itr )
113  (*itr)->set_RoIword( RoIWord );
114  }
115 
116  msg << MSG::DEBUG << "Loading JetCollection from persistent state [OK]"
117  << endmsg;
118 }
119 
120 void
122  JetCollection_p3* pers,
123  MsgStream& msg ) const
124 {
125 // msg << MSG::DEBUG << "Creating persistent state of JetCollection..."
126 // << endmsg;
127 
128  pers->m_ordered = static_cast<short>(trans->ordered());
129  //pers->m_roiAuthor = trans->m_ROIauthor;
130 
131  std::size_t size = trans->size();
132  pers->resize(size);
133 
134  // convert vector entries one by one
135  JetCollection::const_iterator transItr = trans->begin();
136  JetCollection_p3::iterator persItr = pers->begin();
137  while(size) {
138  jetCnv.transToPers( *transItr, &(*persItr), msg );
139  ++persItr; ++transItr; --size;
140  }
141 
142  // RS now deal with the JetKeyDescriptor
144  JetKeyStoreCnv.transToPers( &trans->m_keyStore, &pers->m_keyStore, msg );
145 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
JetKeyDescriptorInstance::m_Stores
JetKeyDescriptor * m_Stores
Definition: JetKeyDescriptor.h:155
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TestSUSYToolsAlg.dl
dl
Definition: TestSUSYToolsAlg.py:83
JetCollection_p3::m_roiAuthor
std::string m_roiAuthor
Definition: JetCollection_p3.h:41
JetCollection::keyDesc
JetKeyDescriptorInstance * keyDesc() const
Definition: JetCollection.cxx:43
DataLinkCnv_p1.h
This file contains the class definition for the DataLinkCnv_p1 class and DataLinkVectorCnv_p1 class.
JetCollectionCnv_p3.h
Jet
Basic data class defines behavior for all Jet objects The Jet class is the principal data class for...
Definition: Reconstruction/Jet/JetEvent/JetEvent/Jet.h:47
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
JetCnv_p3.h
pool
pool namespace
Definition: libname.h:15
JetCollection_p3.h
JetCollection_p3
Definition: JetCollection_p3.h:29
JetCollection::OrderedVar
OrderedVar
Definition: JetCollection.h:35
JetKeyDescriptorInstance::instance
static JetKeyDescriptorInstance * instance()
Definition: JetKeyDescriptor.h:123
JetCollectionCnv_p3::transToPers
virtual void transToPers(const JetCollection *trans, JetCollection_p3 *pers, MsgStream &msg) const override
Method creating the persistent representation JetCollection_p1 from its transient representation JetC...
Definition: JetCollectionCnv_p3.cxx:121
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
JetCnv_p3::transToPers
virtual void transToPers(const Jet *transObj, Jet_p3 *persObj, MsgStream &msg) const override
Method creating the persistent representation Jet_p3 from its transient representation Jet.
Definition: JetCnv_p3.cxx:108
JetCollection::m_keyStore
DataLink< JetKeyDescriptor > m_keyStore
link to the JetKeyDescriptor is mandatory for persistency. Access done through the JetKeyDescriptorIn...
Definition: JetCollection.h:94
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
DataLinkCnv_p1::transToPers
virtual void transToPers(const DLink_t *trans, PersDLink_t *pers, MsgStream &log) const override
JetCollection.h
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
JetCnv_p3
Definition: JetCnv_p3.h:27
JetCollection::ordered
JetCollection::OrderedVar ordered() const
Definition: JetCollection.h:68
DataLinkCnv_p1::persToTrans
virtual void persToTrans(const PersDLink_t *pers, DLink_t *trans, MsgStream &log) const override
JetCollection::clear
void clear()
Definition: JetCollection.cxx:93
JetKeyDescriptorCnv_p1.h
DataPool.h
DataLinkBase::isDefault
bool isDefault() const
Test to see if we're in the default state.
Definition: DataLinkBase.cxx:31
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
JetKeyDescriptorCnv_p1
Definition: JetKeyDescriptorCnv_p1.h:17
JetCollectionCnv_p3::persToTrans
virtual void persToTrans(const JetCollection_p3 *pers, JetCollection *trans, MsgStream &msg) const override
Method creating the transient representation of JetCollection from its persistent representation JetC...
Definition: JetCollectionCnv_p3.cxx:37
JetCollection
Container for Jets
Definition: JetCollection.h:30
JetCnv_p3::persToTrans
virtual void persToTrans(const Jet_p3 *persObj, Jet *transObj, MsgStream &msg) const override
Method creating the transient representation of Jet from its persistent representation Jet_p3.
Definition: JetCnv_p3.cxx:36
DEBUG
#define DEBUG
Definition: page_access.h:11
JetCollection_p3::m_keyStore
DataLink_p1 m_keyStore
Definition: JetCollection_p3.h:43
DataPool
a typed memory pool that saves time spent allocation small object. This is typically used by containe...
Definition: DataPool.h:47
Jet.h
JetCollection::setOrdered
void setOrdered(JetCollection::OrderedVar ordered)
Definition: JetCollection.h:65
JetCollection_p3::m_ordered
short m_ordered
Definition: JetCollection_p3.h:42
JetCollection::iterator
DataVector< Jet >::iterator iterator
Definition: JetCollection.h:34
JetCollection::push_back
void push_back(Jet *j)
Definition: JetCollection.cxx:82
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
DataLinkCnv_p1
Definition: DataLinkCnv_p1.h:23
JetKeyDescriptorInstance::m_ConstStores
const JetKeyDescriptor * m_ConstStores
Definition: JetKeyDescriptor.h:156