ATLAS Offline Software
Loading...
Searching...
No Matches
RecoTimingObjCnv_p1.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5
8
9#include <malloc.h>
10
11#include <sys/time.h>
12#include <sys/resource.h>
13#include <unistd.h>
14
16 RecoTimingObj* trans,
17 MsgStream& msg )
18{
19 if (msg.level() <= MSG::DEBUG)
20 msg << MSG::DEBUG << "Loading RecoTimingObj from persistent state.[start]" << endmsg;
21 trans->m_readFromFile=true;
22 trans->m_isTimings=pers->m_isTimings;
23
24 trans->clear();
25 trans->reserve(pers->timings.size());
26 for( unsigned int i(0); i<pers->timings.size(); ++i )
27 trans->push_back( pers->timings[i] );
28 if (msg.level() <= MSG::DEBUG)
29 msg << MSG::DEBUG << "Loading RecoTimingObj from persistent state.[end]" << endmsg;
30 return;
31}
32
34 RecoTimingObj_p1* pers,
35 MsgStream& msg )
36{
37 if (msg.level() <= MSG::DEBUG)
38 msg << MSG::DEBUG << "Creating persistent state of RecoTimingObj.[start]" << endmsg;
39 if ( trans->m_readFromFile )
40 pers->timings.reserve(trans->size());
41 else
42 {
43 if ( trans->m_isTimings )
44 pers->timings.reserve(trans->size()+1);
45 else
46 pers->timings.reserve(trans->size()+2);
47 }
48 pers->m_isTimings=trans->m_isTimings;
49
50 for( unsigned int i(0); i<trans->size(); ++i )
51 {
52 pers->timings.push_back( (*trans)[i] );
53 if (msg.level() <= MSG::DEBUG)
54 msg << MSG::DEBUG << "Creating persistent state of RecoTimingObj.[" << i << "] : " << (*trans)[i] << endmsg;
55 }
56 if ( ! trans->m_readFromFile && trans->size() > 0 )
57 {
58 float f0(0);
59 float f1(0);
60 float f2(0);
61
62 if ( trans->size() > 0 )
63 f0=(*trans)[0];
64 if ( ! trans->m_isTimings )
65 {
66 if ( trans->size() > 1 )
67 f1=(*trans)[1];
68 if ( trans->size() > 2 )
69 f2=(*trans)[2];
70 }
71
72 if ( pers->m_isTimings )
73 {
74 struct rusage r;
75 getrusage(RUSAGE_SELF, &r);
76 f0=float(r.ru_utime.tv_sec+r.ru_stime.tv_sec) + float(r.ru_utime.tv_usec+r.ru_stime.tv_usec)/1000000 - f0;
77 }
78 else
79 {
80 if(m_pagesize==0)
81 m_pagesize=sysconf(_SC_PAGESIZE);
83 f0=float(statm.vm_pages*m_pagesize)-f0;
84 f1=float(statm.rss_pages*m_pagesize)-f1;
85 f2=float(statm.shr_pages*m_pagesize)-f2;
86 }
87 pers->timings.push_back( f0 );
88 if ( ! pers->m_isTimings )
89 {
90 pers->timings.push_back( f1 );
91 pers->timings.push_back( f2 );
92 }
93 if (msg.level() <= MSG::DEBUG)
94 msg << MSG::DEBUG << "Creating persistent state of RecoTimingObj.[end] : " << f0 << endmsg;
95 }
96 if (msg.level() <= MSG::DEBUG)
97 msg << MSG::DEBUG << "Creating persistent state of RecoTimingObj.[end]" << endmsg;
98 return;
99}
#define endmsg
virtual void persToTrans(const RecoTimingObj_p1 *persObj, RecoTimingObj *transObj, MsgStream &msg)
virtual void transToPers(const RecoTimingObj *transObj, RecoTimingObj_p1 *persObj, MsgStream &msg)
std::vector< float > timings
int r
Definition globals.cxx:22
struct athena_statm read_athena_statm()
unsigned int rss_pages
unsigned int shr_pages
unsigned int vm_pages
MsgStream & msg
Definition testRead.cxx:32