EventFilter
L1TRawToDigi
plugins
implementations_stage2
EGammaPacker.cc
Go to the documentation of this file.
1
#include "
FWCore/Framework/interface/Event.h
"
2
#include "
EventFilter/L1TRawToDigi/plugins/PackerFactory.h
"
3
4
#include "
CaloTokens.h
"
5
6
#include "
L1TStage2Layer2Constants.h
"
7
#include "
EGammaPacker.h
"
8
9
namespace
l1t
{
10
namespace
stage2
{
11
Blocks
EGammaPacker::pack
(
const
edm::Event
&
event
,
const
PackerTokens
* toks) {
12
edm::Handle<EGammaBxCollection>
egs;
13
event
.getByToken(static_cast<const CommonTokens*>(toks)->getEGammaToken(), egs);
14
15
std::vector<uint32_t> load1, load2;
16
17
int
nBx = 0;
18
for
(
int
i
= egs->getFirstBX();
i
<= egs->getLastBX(); ++
i
) {
19
for
(
auto
j
= egs->begin(
i
);
j
!= egs->end(
i
); ++
j
) {
20
uint32_t packed_eta =
abs
(
j
->hwEta()) & 0x7F;
21
if
(
j
->hwEta() < 0) {
22
packed_eta = (128 - packed_eta) | 1 << 7;
23
}
24
25
uint32_t
word
=
std::min
(
j
->hwPt(), 0x1FF) | packed_eta << 9 | (
j
->hwPhi() & 0xFF) << 17 |
26
(
j
->hwIso() & 0x3) << 25 | (
j
->hwQual() & 0x7) << 27;
27
28
//Depending on the number, push onto the appropriate link
29
if
(load1.size() - nBx *
l1t::stage2::layer2::demux::nEGPerLink
<
l1t::stage2::layer2::demux::nEGPerLink
)
30
load1.push_back(
word
);
31
else
32
load2.push_back(
word
);
33
}
34
35
// push zeroes if not enough EG; must do this for each BX and each link
36
while
(load1.size() - nBx *
l1t::stage2::layer2::demux::nOutputFramePerBX
<
37
l1t::stage2::layer2::demux::nOutputFramePerBX
)
38
load1.push_back(0);
39
while
(load2.size() - nBx *
l1t::stage2::layer2::demux::nOutputFramePerBX
<
40
l1t::stage2::layer2::demux::nOutputFramePerBX
)
41
load2.push_back(0);
42
43
nBx++;
44
}
45
46
return
{
Block
(
b1_
, load1),
Block
(
b2_
, load2)};
47
}
48
49
}
// namespace stage2
50
}
// namespace l1t
51
52
DEFINE_L1T_PACKER
(
l1t::stage2::GTEGammaPacker
);
53
DEFINE_L1T_PACKER
(
l1t::stage2::CaloEGammaPacker
);
l1t::Blocks
std::vector< Block > Blocks
Definition:
Block.h:83
l1t::stage2::layer2::demux::nOutputFramePerBX
const unsigned int nOutputFramePerBX
Definition:
L1TStage2Layer2Constants.cc:11
CaloTokens.h
mps_fire.i
i
Definition:
mps_fire.py:355
PackerFactory.h
L1TStage2Layer2Constants.h
min
T min(T a, T b)
Definition:
MathUtil.h:58
edm::Handle
Definition:
AssociativeIterator.h:50
l1t::stage2::layer2::demux::nEGPerLink
const unsigned int nEGPerLink
Definition:
L1TStage2Layer2Constants.cc:12
word
uint64_t word
Definition:
CTPPSTotemDataFormatter.cc:29
l1t::stage2::EGammaPacker::b1_
int b1_
Definition:
EGammaPacker.h:12
l1t::stage2::CaloEGammaPacker
Definition:
EGammaPacker.h:19
l1t::stage2::EGammaPacker::pack
Blocks pack(const edm::Event &, const PackerTokens *) override
Definition:
EGammaPacker.cc:11
DEFINE_L1T_PACKER
#define DEFINE_L1T_PACKER(type)
Definition:
PackerFactory.h:23
l1t::stage2::EGammaPacker::b2_
int b2_
Definition:
EGammaPacker.h:12
Event.h
l1t
delete x;
Definition:
CaloConfig.h:22
EGammaPacker.h
l1t::PackerTokens
Definition:
PackerTokens.h:10
SiStripSourceConfigTier0_cff.stage2
stage2
Definition:
SiStripSourceConfigTier0_cff.py:71
l1t::stage2::GTEGammaPacker
Definition:
EGammaPacker.h:15
funct::abs
Abs< T >::type abs(const T &t)
Definition:
Abs.h:22
dqmiolumiharvest.j
j
Definition:
dqmiolumiharvest.py:66
event
Definition:
event.py:1
edm::Event
Definition:
Event.h:73
l1t::Block
Definition:
Block.h:54
Generated for CMSSW Reference Manual by
1.8.16