ATLAS Offline Software
Loading...
Searching...
No Matches
JetCollectionCnv_p4.cxx
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5*/
6
7// JetCollectionCnv_p4.cxx
8// Implementation file for class JetCollectionCnv_p4
9// Author: S.Binet<binet@cern.ch>
11
12// DataModel includes
14
15// JetEvent includes
16#include "JetEvent/Jet.h"
18
19
20// JetEventTPCnv includes
25
26// DataModelAthenaPool includes
28
29#include <sstream>
30
31// preallocate converters
32static const JetCnv_p4 jetCnv;
34
35
36void
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
76 msg << MSG::DEBUG << "attached JetKeyDescriptor to its instance" << endmsg;
77
79
80 trans->setOrdered (static_cast<JetCollection::OrderedVar>(pers->m_ordered));
81 // the transient version does not have this data member any more,
82 // each jet knows its ROI
83 // trans->m_ROIauthor = //pers->m_roiAuthor;
84
86
87 trans->clear();
88 trans->reserve(pers->size());
89
90 for (const TPObjRef& ref : *pers) {
92 }
93
94 // now each jet knows its ROI
95 unsigned int RoIWord;
96 std::stringstream strm(pers->m_roiAuthor);
97 strm >> RoIWord;
98 if( strm.good() )
99 {
100 msg << MSG::DEBUG << "Note: This jet collection uses RoIWords!" << endmsg;
101 for( JetCollection::iterator itr = trans->begin(); itr != trans->end(); ++itr )
102 (*itr)->set_RoIword( RoIWord );
103 }
104
105 msg << MSG::DEBUG << "Loading JetCollection from persistent state [OK]"
106 << endmsg;
107}
108
109void
111 JetCollection_p4* pers,
112 MsgStream& msg ) const
113{
114// msg << MSG::DEBUG << "Creating persistent state of JetCollection..."
115// << endmsg;
116
117 pers->m_ordered = static_cast<short>(trans->ordered());
118 //pers->m_roiAuthor = trans->m_ROIauthor;
119
120 pers->clear();
121 pers->reserve(trans->size());
122
123 for (const Jet* jet : *trans) {
124 pers->push_back(toPersistent((ITPConverterFor<Jet>**)nullptr, jet, msg));
125 }
126
127 // RS now deal with the JetKeyDescriptor
129 JetKeyStoreCnv.transToPers( &trans->m_keyStore, &pers->m_keyStore, msg );
130}
131
const boost::regex ref(r_ef)
#define endmsg
This file contains the class definition for the DataLinkCnv_p1 class and DataLinkVectorCnv_p1 class.
static const JetCnv_p1 jetCnv
static const JetKeyDescriptorCnv_p1 jetkeyCnv
bool isDefault() const
Test to see if we're in the default state.
virtual void persToTrans(const PersDLink_t *pers, DLink_t *trans, MsgStream &log) const override
virtual void transToPers(const DLink_t *trans, PersDLink_t *pers, MsgStream &log) const override
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
Common base class for all TP converters, specialized for a given transient type.
Definition TPConverter.h:37
CNV::Trans_t * createTransFromPStore(CNV **cnv, const TPObjRef &ref, MsgStream &log) const
TPObjRef toPersistent(CNV **cnv, const typename CNV::TransBase_t *transObj, MsgStream &log) const
virtual void transToPers(const JetCollection *trans, JetCollection_p4 *pers, MsgStream &msg) const override
Method creating the persistent representation JetCollection_p1 from its transient representation JetC...
virtual void persToTrans(const JetCollection_p4 *pers, JetCollection *trans, MsgStream &msg) const override
Method creating the transient representation of JetCollection from its persistent representation JetC...
DataLink_p1 m_keyStore
std::string m_roiAuthor
JetCollection::OrderedVar ordered() const
DataLink< JetKeyDescriptor > m_keyStore
link to the JetKeyDescriptor is mandatory for persistency. Access done through the JetKeyDescriptorIn...
void setOrdered(JetCollection::OrderedVar ordered)
DataVector< Jet >::iterator iterator
void push_back(Jet *j)
JetKeyDescriptorInstance * keyDesc() const
const JetKeyDescriptor * m_ConstStores
JetKeyDescriptor * m_Stores
static JetKeyDescriptorInstance * instance()
This class is an object reference used in Athena persistent data model.
Definition TPObjRef.h:20
MsgStream & msg
Definition testRead.cxx:32