ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloCnv
CaloSimEventTPCnv
src
CaloCalibrationHitContainerCnv_p4.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
CaloSimEvent/CaloCalibrationHit.h
"
6
#include "
CaloSimEvent/CaloCalibrationHitContainer.h
"
7
#include "Identifier/Identifier.h"
8
9
#include "
Identifier/IdentifierHash.h
"
10
#include "
CaloIdentifier/CaloCell_ID.h
"
11
#include "
CaloIdentifier/CaloDM_ID.h
"
12
#include "
CaloIdentifier/CaloIdManager.h
"
13
14
#include "
CxxUtils/Compressor.h
"
15
16
// CaloCalibrationHitContainerCnv_p4, used for T/P separation
17
// author Ilija Vukotic
18
19
#include "
CaloSimEventTPCnv/CaloCalibrationHitContainerCnv_p4.h
"
20
#include "map"
21
22
void
CaloCalibrationHitContainerCnv_p4::transToPers
(
const
CaloCalibrationHitContainer
* transCont,
CaloCalibrationHitContainer_p4
* persCont, MsgStream &log)
23
{
24
25
// static int ev=0;
26
size_t
size
= transCont->
size
();
27
if
(log.level() <= MSG::DEBUG) log << MSG::DEBUG <<
" *** Writing CaloCalibrationHitContainer_p4 of size:"
<<
size
<<
endmsg
;
28
29
persCont->
m_channelHash
.reserve(
size
);
30
std::vector<float> tempE;
31
tempE.reserve(
size
*4);
32
std::vector<unsigned int> tempPID; tempPID.reserve(
size
);
33
34
CaloCalibrationHitContainer::const_iterator
it = transCont->
begin
();
35
36
std::multimap <unsigned int, unsigned int> map_hashPositions;
// first hash ; second its position in container
37
38
for
(
unsigned
int
w=0;w<
size
;++w) {
39
40
unsigned
int
id
= (*it)->cellID().get_identifier32().get_compact();
41
map_hashPositions.insert(std::pair<unsigned int, int>(
id
, w));
42
++it;
43
}
44
45
std::multimap<unsigned int, unsigned int>::const_iterator iter;
46
unsigned
int
old=0;
47
for
(iter=map_hashPositions.begin(); iter != map_hashPositions.end(); ++iter) {
48
unsigned
int
pHash=(iter->first)-old;
// to store as a difference
49
old=iter->first;
50
unsigned
int
pos=iter->second;
51
persCont->
m_channelHash
.push_back(pHash);
52
const
CaloCalibrationHit
&
hit
= *transCont->
At
(pos);
53
tempE.push_back(
static_cast<
float
>
(
hit
.energyEM()) );
54
tempE.push_back(
static_cast<
float
>
(
hit
.energyNonEM()) );
55
tempE.push_back(
static_cast<
float
>
(
hit
.energyInvisible()) );
56
tempE.push_back(
static_cast<
float
>
(
hit
.energyEscaped()) );
57
tempPID.push_back(
static_cast<
unsigned
int
>
(
hit
.particleUID()) );
58
}
59
60
Compressor
A
;
A
.setNrBits(18);
61
A
.reduce(tempE,persCont->
m_energy
);
// packs energy
62
persCont->
m_name
= transCont->
Name
();
//stores name
63
persCont->
m_particleUID
= std::move(tempPID);
64
65
}
66
67
68
69
void
CaloCalibrationHitContainerCnv_p4::persToTrans
(
const
CaloCalibrationHitContainer_p4
* persCont,
CaloCalibrationHitContainer
* transCont, MsgStream &log)
70
{
71
size_t
cells=persCont->
m_channelHash
.size();
72
if
(log.level() <= MSG::DEBUG) log << MSG::DEBUG <<
" *** Reading CaloCalibrationHitContainer of size: "
<<cells<<
endmsg
;
73
transCont->
clear
();
74
transCont->
reserve
(cells);
75
transCont->
setName
(persCont->
name
() );
76
77
Compressor
A
;
78
std::vector<float> tempE;
79
tempE.reserve(cells*4);
80
A
.expandToFloat(persCont->
m_energy
,tempE);
81
82
unsigned
int
sum=0;
83
for
(
unsigned
int
i=0;i<cells;++i) {
84
sum+= persCont->
m_channelHash
[i];
85
86
transCont->
push_back
87
(
new
CaloCalibrationHit
(
static_cast<
Identifier
>
(sum),
88
tempE[i*4],
89
tempE[i*4+1],
90
tempE[i*4+2],
91
tempE[i*4+3],
92
HepMC::INVALID_PARTICLE_ID
,
93
static_cast<
int
>
(persCont->
m_particleUID
[i])));
94
}
95
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
CaloCalibrationHitContainerCnv_p4.h
CaloCalibrationHitContainer.h
CaloCalibrationHit.h
CaloCell_ID.h
CaloDM_ID.h
CaloIdManager.h
Compressor.h
IdentifierHash.h
hit
bool hit(const Container &ids, int pdgId)
Definition
JetIRCSafeLabelTool.cxx:64
size
size_t size() const
Number of registered mappings.
AthenaHitsVector::reserve
void reserve(size_type n)
Definition
AthenaHitsVector.h:230
AthenaHitsVector::setName
void setName(const std::string &name)
Definition
AthenaHitsVector.h:180
AthenaHitsVector::At
const T * At(unsigned int pos) const
Definition
AthenaHitsVector.h:204
AthenaHitsVector::clear
void clear()
Definition
AthenaHitsVector.h:222
AthenaHitsVector::begin
const_iterator begin() const
Definition
AthenaHitsVector.h:187
AthenaHitsVector::size
size_type size() const
Definition
AthenaHitsVector.h:199
AthenaHitsVector::Name
const std::string & Name() const
Definition
AthenaHitsVector.h:178
AthenaHitsVector< CaloCalibrationHit >::const_iterator
boost::transform_iterator< make_const, typename CONT::const_iterator > const_iterator
Definition
AthenaHitsVector.h:105
AthenaHitsVector::push_back
void push_back(T *t)
Definition
AthenaHitsVector.h:201
CaloCalibrationHitContainerCnv_p4::persToTrans
virtual void persToTrans(const CaloCalibrationHitContainer_p4 *persColl, CaloCalibrationHitContainer *transColl, MsgStream &log)
Definition
CaloCalibrationHitContainerCnv_p4.cxx:69
CaloCalibrationHitContainerCnv_p4::transToPers
virtual void transToPers(const CaloCalibrationHitContainer *transColl, CaloCalibrationHitContainer_p4 *persColl, MsgStream &log)
Definition
CaloCalibrationHitContainerCnv_p4.cxx:22
CaloCalibrationHitContainer_p4
Persistent represenation of a CaloCalibrationContainer,.
Definition
CaloCalibrationHitContainer_p4.h:16
CaloCalibrationHitContainer_p4::m_name
std::string m_name
Definition
CaloCalibrationHitContainer_p4.h:27
CaloCalibrationHitContainer_p4::m_energy
std::vector< unsigned int > m_energy
Definition
CaloCalibrationHitContainer_p4.h:26
CaloCalibrationHitContainer_p4::m_channelHash
std::vector< unsigned int > m_channelHash
Definition
CaloCalibrationHitContainer_p4.h:25
CaloCalibrationHitContainer_p4::name
const std::string & name() const
Definition
CaloCalibrationHitContainer_p4.h:36
CaloCalibrationHitContainer_p4::m_particleUID
std::vector< unsigned int > m_particleUID
Definition
CaloCalibrationHitContainer_p4.h:28
CaloCalibrationHitContainer
Definition
CaloCalibrationHitContainer.h:25
CaloCalibrationHit
Class to store calorimeter calibration hit.
Definition
CaloCalibrationHit.h:24
Compressor
Definition
Compressor.h:26
HepMC::INVALID_PARTICLE_ID
constexpr int INVALID_PARTICLE_ID
Definition
MagicNumbers.h:58
Identifier
Definition
IdentifierFieldParser.cxx:14
A
hold the test vectors and ease the comparison
Generated on
for ATLAS Offline Software by
1.17.0