ATLAS Offline Software
Loading...
Searching...
No Matches
MissingETCnv_p3.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
5/********************************************************************
6
7NAME: MissingETCnv_p3.cxx
8PACKAGE: offline/Reconstruction/RecTPCnv
9
10PURPOSE: Transient/Persisten converter for MissingET class
11********************************************************************/
12
13// AthenaPoolCnvSvc includes
15
16// MissingETEvent includes
19
20// RecTPCnv includes
23
24
25// #include <stdlib.h> // not needed here?
26
27// region converter
29
30
31
32void MissingETCnv_p3::persToTrans( const MissingET_p3* pers, MissingET* trans, MsgStream& /* msg */ ) const {
33 std::vector<float>::const_iterator it=pers->m_AllTheData.begin();
34 persToTrans(trans, it);
35 return;
36}
37
38void MissingETCnv_p3::transToPers( const MissingET* trans, MissingET_p3* pers, MsgStream& /* msg */ ) const {
39 transToPers(trans, pers->m_AllTheData);
40 return;
41}
42
43
44void MissingETCnv_p3::persToTrans( MissingET* trans, std::vector<float>::const_iterator i) const {
45
46 //float version;
47 //version = (*i);
48 ++i; // as there is just one it is not used.
49
50 union conv{ unsigned int i; float f; } c;
51 c.f=(*i); ++i;
52 MissingET::Source source = static_cast<MissingET::Source>(c.i>>1);
53 double ex = (*i);++i;
54 double ey = (*i);++i;
55 double etSum = (*i);++i;
56 std::unique_ptr<MissingEtRegions> regions;
57 if( c.i & 1) {
58 regions = std::make_unique<MissingEtRegions>();
59 regCnv.persToTrans( regions.get(), i);
60 }
61 *trans = MissingET (source,
62 std::move (regions),
63 ex, ey, etSum);
64
65 // std::cout<<"IN source: "<<trans->m_source;
66 // std::cout<<"\tex: "<<trans->m_ex;
67 // std::cout<<"\tey: "<<trans->m_ey;
68 // std::cout<<"\tetSum: "<<trans->m_etSum;
69 // if (trans->m_regions != 0) std::cout<<"\thas Regions"<<std::endl; else std::cout<<"\tNO Regions"<<std::endl;
70
71 return;
72}
73
74void MissingETCnv_p3::transToPers( const MissingET* trans, std::vector<float> &all ) const {
75
76 all.push_back(3.0); // storing version number
77
78 // folding together m_source and if regions are present
79 unsigned int tmp=static_cast<unsigned int>(trans->getSource());
80 tmp <<= 1;
81 if( trans->getRegions() != 0) tmp|=1;
82
83 union conv{ unsigned int i; float f; } c;
84 c.i=tmp;
85 all.push_back(c.f);
86
87 // simple types
88 all.push_back(trans->etx());
89 all.push_back(trans->ety());
90 all.push_back(trans->sumet());
91
92 // calling regions tTP
93 if( trans->getRegions() != 0) regCnv.transToPers(trans->getRegions(), all);
94
95 // std::cout<<"OUT source: "<<trans->m_source;
96 // std::cout<<"\tex: "<<trans->m_ex;
97 // std::cout<<"\tey: "<<trans->m_ey;
98 // std::cout<<"\tetSum: "<<trans->m_etSum;
99 // if (trans->m_regions != 0) std::cout<<"\thas Regions"<<std::endl; else std::cout<<"\tNO Regions"<<std::endl;
100
101 return;
102}
static const MissingEtRegionsCnv_p1 regCnv
static const std::vector< std::string > regions
Athena::TPCnvVers::Old Athena::TPCnvVers::Old MissingET
Definition RecTPCnv.cxx:64
virtual void transToPers(const MissingET *transObj, MissingET_p3 *persObj, MsgStream &msg) const override
virtual void persToTrans(const MissingET_p3 *persObj, MissingET *transObj, MsgStream &msg) const override
std::vector< float > m_AllTheData
virtual const MissingEtRegions * getRegions() const
virtual double sumet() const
virtual double etx() const
virtual double ety() const
virtual Source getSource() const