ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1Interfaces
src
RoIFormatUpdater.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
/* **********************************************************
5
*
6
* Quick and dirty hack to work around fact that there is no RoI
7
* format version at the moment. Hopefully this is a short-term
8
* fix which will be suppressed soon and never needed again.
9
* Author: Alan Watson <Alan.Watson@cern.ch> 17-5-06
10
*
11
********************************************************** */
12
13
#include "
TrigT1Interfaces/BitOp.h
"
14
#include "
TrigT1Interfaces/TrigT1CaloDefs.h
"
15
#include "
TrigT1Interfaces/RoIFormatUpdater.h
"
16
#include "GaudiKernel/MsgStream.h"
17
18
using namespace
std
;
19
20
namespace
LVL1
{
21
22
unsigned
int
RoIFormatUpdater::UpdateEMTauRoI
(
unsigned
int
RoIWord) {
23
// Check ionput is consistent with old format EMTau RoI
24
if
((RoIWord&0xf0000000)==0) {
25
unsigned
int
coord
= ((RoIWord&0x0fff0000)<<2);
26
unsigned
int
hits = (RoIWord&0x0000ffff);
27
return
coord
+hits;
28
}
29
else
{
30
cout <<
"EMTau RoI type not incorrect. Return RoIWord unmodified"
<< endl;
31
return
RoIWord;
32
}
33
}
34
35
unsigned
int
RoIFormatUpdater::UpdateJetEnergyRoI
(
unsigned
int
RoIWord) {
36
// What type of JetEnergy RoI is it?
37
unsigned
int
type
=
OldJetEnergyType
(RoIWord);
38
39
if
(
type
==
TrigT1CaloDefs::JetRoIWordType
) {
40
return
UpdateJetRoI
(RoIWord);
41
}
42
else
if
(
type
==
TrigT1CaloDefs::EnergyRoIWordType0
) {
43
return
UpdateEnergyRoI0
(RoIWord);
44
}
45
else
if
(
type
==
TrigT1CaloDefs::EnergyRoIWordType1
) {
46
return
UpdateEnergyRoI1
(RoIWord);
47
}
48
else
if
(
type
==
TrigT1CaloDefs::EnergyRoIWordType2
) {
49
return
UpdateEnergyRoI2
(RoIWord);
50
}
51
else
if
(
type
==
TrigT1CaloDefs::JetEtRoIWordType
) {
52
return
UpdateJetEtRoI
(RoIWord);
53
}
54
else
{
55
cout <<
"JetEnergy RoI type not recognised. Return RoIWord unmodified"
<< endl;
56
return
RoIWord;
57
}
58
}
59
60
unsigned
int
RoIFormatUpdater::OldJetEnergyType
(
unsigned
int
RoIWord) {
61
if
(
BitOp::getValue
( &RoIWord, 0xf0000000 ) == 1) {
62
return
TrigT1CaloDefs::JetRoIWordType
;
63
}
64
else
if
(
BitOp::getValue
( &RoIWord, 0xf0000000 ) == 3) {
65
int
subType =
BitOp::getValue
( &RoIWord, 0x0c000000 );
66
if
(subType == 0) {
67
return
TrigT1CaloDefs::EnergyRoIWordType0
;
68
}
69
else
if
(subType == 1) {
70
return
TrigT1CaloDefs::EnergyRoIWordType1
;
71
}
72
else
if
(subType == 2) {
73
return
TrigT1CaloDefs::EnergyRoIWordType2
;
74
}
75
}
76
else
if
(
BitOp::getValue
( &RoIWord, 0xf0000000 ) == 2) {
77
return
TrigT1CaloDefs::JetEtRoIWordType
;
78
}
79
return
9999;
// not recognised as an old-style JetEnergy RoI
80
}
81
82
unsigned
int
RoIFormatUpdater::UpdateJetRoI
(
unsigned
int
RoIWord) {
83
unsigned
int
header
=
84
(
static_cast<
unsigned
int
>
(
TrigT1CaloDefs::jetRoIType
)<<30) +
85
(
static_cast<
unsigned
int
>
(
TrigT1CaloDefs::jetRoI
)<<29);
86
unsigned
int
hits = (RoIWord&0x00000fff);
87
unsigned
int
fwdjet(0);
88
if
(RoIWord&0x00000f00) fwdjet = 1<<18;
89
90
// That was the easy bit. Unfortunately the coordinate format has
91
// also changed. This does make sense, but it isn't pretty!
92
unsigned
int
crate =
BitOp::getValue
( &RoIWord, 0x00200000);
93
unsigned
int
jem =
BitOp::getValue
( &RoIWord, 0x001e0000);
94
unsigned
int
row =
BitOp::getValue
( &RoIWord, 0x0001c000);
95
unsigned
int
col =
BitOp::getValue
( &RoIWord, 0x00003000);
96
unsigned
int
frame = 4*(col>>1) + (row>>1);
97
unsigned
int
rl = 2*(row%2) + (col%2);
98
unsigned
int
coord
= (crate<<9) + (jem<<5) +(frame<<2) + rl;
99
coord
= (
coord
<<19);
100
101
return
header
+
coord
+fwdjet+hits;
102
}
103
104
unsigned
int
RoIFormatUpdater::UpdateJetEtRoI
(
unsigned
int
RoIWord) {
105
unsigned
int
header
=
106
(
static_cast<
unsigned
int
>
(
TrigT1CaloDefs::jetRoIType
)<<30) +
107
(
static_cast<
unsigned
int
>
(
TrigT1CaloDefs::jetEtRoI
)<<29);
108
unsigned
int
hits = (RoIWord&0x0000000f);
109
return
header
+hits;
110
}
111
112
unsigned
int
RoIFormatUpdater::UpdateEnergyRoI0
(
unsigned
int
RoIWord) {
113
unsigned
int
header
= (
TrigT1CaloDefs::energyRoIType
<<30) + (
TrigT1CaloDefs::energyRoI0
<<28);
114
unsigned
int
Ex = (RoIWord&0x0000ffff);
115
return
header
+Ex;
116
}
117
118
unsigned
int
RoIFormatUpdater::UpdateEnergyRoI1
(
unsigned
int
RoIWord) {
119
unsigned
int
header
= (
TrigT1CaloDefs::energyRoIType
<<30) + (
TrigT1CaloDefs::energyRoI1
<<28);
120
unsigned
int
hits = (RoIWord&0x000f0000);
121
unsigned
int
Ey = (RoIWord&0x0000ffff);
122
return
header
+hits+Ey;
123
}
124
125
unsigned
int
RoIFormatUpdater::UpdateEnergyRoI2
(
unsigned
int
RoIWord) {
126
unsigned
int
header
= (
TrigT1CaloDefs::energyRoIType
<<30) + (
TrigT1CaloDefs::energyRoI2
<<28);
127
unsigned
int
hits = (RoIWord&0x00ff0000);
128
unsigned
int
Et = (RoIWord&0x0000ffff);
129
return
header
+hits+Et;
130
}
131
132
}
// namespace ROIB
BitOp.h
coord
double coord
Type of coordination system.
Definition
JetVoronoiDiagramHelpers.h:43
RoIFormatUpdater.h
TrigT1CaloDefs.h
BitOp::getValue
static unsigned int getValue(const unsigned int *uintValue, const unsigned int mask)
get the value in the input word represented by a bit pattern given as a bitmask
Definition
BitOp.cxx:47
LVL1::RoIFormatUpdater::UpdateJetRoI
static unsigned int UpdateJetRoI(unsigned int RoIWord)
Method to update Jet RoI word.
Definition
RoIFormatUpdater.cxx:82
LVL1::RoIFormatUpdater::UpdateJetEnergyRoI
static unsigned int UpdateJetEnergyRoI(unsigned int RoIWord)
Method to update Jet/Energy RoI word.
Definition
RoIFormatUpdater.cxx:35
LVL1::RoIFormatUpdater::UpdateEnergyRoI0
static unsigned int UpdateEnergyRoI0(unsigned int RoIWord)
Methods to update EnergySum RoI words.
Definition
RoIFormatUpdater.cxx:112
LVL1::RoIFormatUpdater::UpdateEnergyRoI1
static unsigned int UpdateEnergyRoI1(unsigned int RoIWord)
Definition
RoIFormatUpdater.cxx:118
LVL1::RoIFormatUpdater::UpdateJetEtRoI
static unsigned int UpdateJetEtRoI(unsigned int RoIWord)
Method to update JetEt RoI word.
Definition
RoIFormatUpdater.cxx:104
LVL1::RoIFormatUpdater::UpdateEnergyRoI2
static unsigned int UpdateEnergyRoI2(unsigned int RoIWord)
Definition
RoIFormatUpdater.cxx:125
LVL1::RoIFormatUpdater::UpdateEMTauRoI
static unsigned int UpdateEMTauRoI(unsigned int RoIWord)
Method to update EM/Tau RoI word.
Definition
RoIFormatUpdater.cxx:22
LVL1::RoIFormatUpdater::OldJetEnergyType
static unsigned int OldJetEnergyType(unsigned int RoIWord)
Method to identify (old-style) JetEnergy RoI type.
Definition
RoIFormatUpdater.cxx:60
LVL1::TrigT1CaloDefs::jetEtRoI
@ jetEtRoI
Definition
TrigT1CaloDefs.h:192
LVL1::TrigT1CaloDefs::jetRoI
@ jetRoI
Definition
TrigT1CaloDefs.h:191
LVL1::TrigT1CaloDefs::energyRoIType
@ energyRoIType
Definition
TrigT1CaloDefs.h:181
LVL1::TrigT1CaloDefs::jetRoIType
@ jetRoIType
Definition
TrigT1CaloDefs.h:180
LVL1::TrigT1CaloDefs::JetRoIWordType
@ JetRoIWordType
Definition
TrigT1CaloDefs.h:168
LVL1::TrigT1CaloDefs::EnergyRoIWordType2
@ EnergyRoIWordType2
Definition
TrigT1CaloDefs.h:172
LVL1::TrigT1CaloDefs::EnergyRoIWordType0
@ EnergyRoIWordType0
Definition
TrigT1CaloDefs.h:170
LVL1::TrigT1CaloDefs::JetEtRoIWordType
@ JetEtRoIWordType
Definition
TrigT1CaloDefs.h:169
LVL1::TrigT1CaloDefs::EnergyRoIWordType1
@ EnergyRoIWordType1
Definition
TrigT1CaloDefs.h:171
LVL1::TrigT1CaloDefs::energyRoI1
@ energyRoI1
Definition
TrigT1CaloDefs.h:197
LVL1::TrigT1CaloDefs::energyRoI0
@ energyRoI0
Definition
TrigT1CaloDefs.h:196
LVL1::TrigT1CaloDefs::energyRoI2
@ energyRoI2
Definition
TrigT1CaloDefs.h:198
header
Definition
hcg.cxx:529
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition
IZdcDataAccess.h:13
std
STL namespace.
type
Generated on
for ATLAS Offline Software by
1.17.0