ATLAS Offline Software
JetCollectionCnv_p2.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_p2.cxx
8 // Implementation file for class JetCollectionCnv_p2
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_p2 jetCnv;
33 static const JetKeyDescriptorCnv_p1 jetkeyCnv;
34 
35 void
37  JetCollection* trans,
38  MsgStream& msg ) const
39 {
40  msg << MSG::DEBUG << "Loading JetCollection from persistent state..."
41  << endmsg;
42 
43  // make sure to first read the JetKeyDescriptor
45  JetKeyStoreCnv.persToTrans( &pers->m_keyStore, &trans->m_keyStore, msg );
46 
47  // If the link is null, reset it to a default key.
48  if (trans->m_keyStore.isDefault())
49  trans->m_keyStore.toDefaultObject();
50  // link the JetKeyDescriptorInstance to the store:
51  if( trans->m_keyStore.isValid() ){
52  trans->keyDesc()->m_Stores = nullptr;
53  trans->keyDesc()->m_ConstStores = trans->m_keyStore.cptr();
54  // make sure the global instance is pointing to this jetkey store
57  }
58  else if (trans->m_keyStore.isDefault()) {
59  DataLink<JetKeyDescriptor> dl ("JetKeyMap");
60  if (dl.isValid()) {
61  trans->keyDesc()->m_Stores = nullptr;
62  trans->keyDesc()->m_ConstStores = dl.cptr();
63  // make sure the global instance is pointing to this jetkey store
66  }
67  else {
68  trans->keyDesc()->m_Stores =
70  trans->keyDesc()->m_ConstStores =
72  }
73  }
74  else {
77  }
78 
79  //(trans->m_keyStore)->printOut(msg);
80  msg << MSG::DEBUG << "Rolf : " << &(*trans->m_keyStore) << endmsg;
81  // attach the map to the instance
82  (trans->m_keyStore)->access();
83  msg << MSG::DEBUG << "attached JetKeyDescriptor to its instance" << endmsg;
84 
85  // elements are managed by DataPool
86  trans->clear(SG::VIEW_ELEMENTS);
87 
88  DataPool<Jet> pool( 20 );
89  const std::size_t nJets = pers->size();
90  if ( pool.capacity() - pool.allocated() < nJets ) {
91  pool.reserve( pool.allocated() + nJets );
92  }
93 
94  trans->setOrdered (static_cast<JetCollection::OrderedVar>(pers->m_ordered));
95  // the transient version does not have this data member any more,
96  // each jet knows its ROI
97  //trans->m_ROIauthor = //pers->m_roiAuthor;
98 
99  trans->reserve( nJets );
100  for ( JetCollection_p2::const_iterator
101  itr = pers->begin(),
102  itrEnd = pers->end();
103  itr != itrEnd;
104  ++itr ) {
105  Jet * jet = pool.nextElementPtr();
106  jetCnv.persToTrans( &(*itr), jet, msg );
107  trans->push_back( jet );
108 
109  }
110 
111  // now each jet knows its ROI
112  unsigned int RoIWord;
113  std::stringstream strm(pers->m_roiAuthor);
114  strm >> RoIWord;
115  if( strm.good() )
116  {
117  msg << MSG::DEBUG << "Note: This jet collection uses RoIWords!" << endmsg;
118  for( JetCollection::iterator itr = trans->begin(); itr != trans->end(); ++itr )
119  (*itr)->set_RoIword( RoIWord );
120  }
121 
122  msg << MSG::DEBUG << "Loading JetCollection from persistent state [OK]"
123  << endmsg;
124 }
125 
126 void
128  JetCollection_p2* pers,
129  MsgStream& msg ) const
130 {
131 // msg << MSG::DEBUG << "Creating persistent state of JetCollection..."
132 // << endmsg;
133 
134  pers->m_ordered = static_cast<short>(trans->ordered());
135  //pers->m_roiAuthor = trans->m_ROIauthor;
136 
137  std::size_t size = trans->size();
138  pers->resize(size);
139 
140  // convert vector entries one by one
141  JetCollection::const_iterator transItr = trans->begin();
142  JetCollection_p2::iterator persItr = pers->begin();
143  while(size) {
144  jetCnv.transToPers( *transItr, &(*persItr), msg );
145  ++persItr; ++transItr; --size;
146  }
147 
148  // RS now deal with the JetKeyDescriptor
150  JetKeyStoreCnv.transToPers( &trans->m_keyStore, &pers->m_keyStore, msg );
151 }
152 
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
JetCollection_p2::m_keyStore
DataLink_p1 m_keyStore
Definition: JetCollection_p2.h:43
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_p2.h
JetCnv_p2.h
JetCollectionCnv_p2::transToPers
virtual void transToPers(const JetCollection *trans, JetCollection_p2 *pers, MsgStream &msg) const override
Method creating the persistent representation JetCollection_p1 from its transient representation JetC...
Definition: JetCollectionCnv_p2.cxx:127
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.
JetCnv_p2::transToPers
virtual void transToPers(const Jet *transObj, Jet_p2 *persObj, MsgStream &msg) const override
Method creating the persistent representation Jet_p2 from its transient representation Jet.
Definition: JetCnv_p2.cxx:108
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
JetCollectionCnv_p2.h
pool
pool namespace
Definition: libname.h:15
JetCollection::OrderedVar
OrderedVar
Definition: JetCollection.h:35
JetKeyDescriptorInstance::instance
static JetKeyDescriptorInstance * instance()
Definition: JetKeyDescriptor.h:123
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
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_p2::persToTrans
virtual void persToTrans(const Jet_p2 *persObj, Jet *transObj, MsgStream &msg) const override
Method creating the transient representation of Jet from its persistent representation Jet_p2.
Definition: JetCnv_p2.cxx:35
JetCollection::ordered
JetCollection::OrderedVar ordered() const
Definition: JetCollection.h:68
JetCollection_p2::m_ordered
short m_ordered
Definition: JetCollection_p2.h:42
JetCollectionCnv_p2::persToTrans
virtual void persToTrans(const JetCollection_p2 *pers, JetCollection *trans, MsgStream &msg) const override
Method creating the transient representation of JetCollection from its persistent representation JetC...
Definition: JetCollectionCnv_p2.cxx:36
DataLinkCnv_p1::persToTrans
virtual void persToTrans(const PersDLink_t *pers, DLink_t *trans, MsgStream &log) const override
JetCollection_p2
Definition: JetCollection_p2.h:29
JetCollection::clear
void clear()
Definition: JetCollection.cxx:93
JetCnv_p2
Definition: JetCnv_p2.h:27
JetKeyDescriptorCnv_p1.h
python.dummyaccess.access
def access(filename, mode)
Definition: dummyaccess.py:18
DataPool.h
JetCollection_p2::m_roiAuthor
std::string m_roiAuthor
Definition: JetCollection_p2.h:41
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
JetCollection
Container for Jets
Definition: JetCollection.h:30
DEBUG
#define DEBUG
Definition: page_access.h:11
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::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