ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1TGC
src
TGCElectronicsSystem.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 "
TrigT1TGC/TGCElectronicsSystem.h
"
6
#include "
TrigT1TGC/TGCASDOut.h
"
7
#include "
TrigT1TGC/TGCDatabaseManager.h
"
8
#include "
TrigT1TGC/TGCSector.h
"
9
#include "
TrigT1TGC/TGCEvent.h
"
10
11
#include <iostream>
12
#include <vector>
13
14
namespace
LVL1TGCTrigger
{
15
16
void
TGCElectronicsSystem::distributeSignal
(
LVL1TGCTrigger::TGCEvent
* event)
17
{
18
const
std::vector<LVL1TGCTrigger::TGCASDOut*>& vecASDOut=
event
->GetASDOutVector();
19
event
=0;
20
size_t
i;
21
for
( i=0; i< vecASDOut.size(); i++) {
22
const
LVL1TGCTrigger::TGCASDOut
* asd= vecASDOut[i];
23
int
side = asd->
GetTGCReadoutIndex
().
GetSideNumber
();
24
int
octant = asd->
GetTGCReadoutIndex
().
GetOctantNumber
();
25
int
module = asd->
GetTGCReadoutIndex
().
GetModuleNumber
();
26
27
if
(
getSector
(side, octant, module)) {
28
if
(side <
LVL1TGC::kNSide
&& octant <
NumberOfOctant
)
29
getSector
(side, octant, module)->
distributeSignal
(asd);
30
}
31
asd = 0;
32
}
33
34
}
35
36
TGCElectronicsSystem::TGCElectronicsSystem
()
37
:
m_DB
(0),
38
m_tgcArgs
(nullptr)
39
{
40
for
(
int
side=0; side <
LVL1TGC::kNSide
; side++) {
41
for
(
int
oct=0; oct <
NumberOfOctant
; oct++) {
42
for
(
int
mod=0; mod <
NumberOfModule
; mod++) {
43
m_sector
[side][oct][mod]=0;
44
}
// loop module
45
}
// loop octant
46
}
//loop side
47
48
}
49
50
TGCElectronicsSystem::TGCElectronicsSystem
(
TGCArguments
* tgcargs,
51
TGCDatabaseManager
* database)
52
:
m_DB
(database),
53
m_tgcArgs
(tgcargs)
54
{
55
// TMDB
56
m_tmdb
.reset(
new
LVL1TGC::TGCTMDB
());
57
58
// NSW
59
if
(tgcargs->
USE_NSW
()){
60
m_nsw.reset(new LVL1TGC::TGCNSW());
61
}
62
63
// RPC BIS78
64
if
(tgcargs->
USE_BIS78
()){
65
m_bis78.reset(new LVL1TGC::TGCBIS78());
66
}
67
68
int
SectorId;
69
LVL1TGCTrigger::TGCRegionType
RegionType;
70
LVL1TGCTrigger::TGCForwardBackwardType
forwardBackward;
71
for (
int
side=0; side <
LVL1TGC::kNSide
; side++) {
72
for
(
int
oct=0; oct <
NumberOfOctant
; oct++){
73
for
(
int
mod=0; mod <
NumberOfModule
; mod++){
74
SectorId =
getSectorId
(side,oct,mod);
75
RegionType =
getRegionType
(mod);
76
forwardBackward =
getForwardBackward
(side,oct,mod);
77
m_sector
[side][oct][mod] =
new
TGCSector
(
tgcArgs
(),SectorId, RegionType,
78
forwardBackward,
79
m_DB
,
80
m_tmdb
,
81
m_nsw
,
82
m_bis78
);
83
}
// loop module
84
}
// loop octant
85
}
//loop side
86
}
87
88
LVL1TGCTrigger::TGCRegionType
TGCElectronicsSystem::getRegionType
(
int
mod)
const
89
{
90
// Module:
91
// <----phi-----
92
// 7 6 4 3 1 0 Endcap
93
// 8 5 2 Forward
94
//
95
// Inner
96
// <----phi-----
97
// 11 10 9 Endcap
98
// 14 13 12 Forward
99
100
if
(mod<9)
101
if
(mod%3==2)
return
LVL1TGCTrigger::TGCRegionType::FORWARD
;
102
else
return
LVL1TGCTrigger::TGCRegionType::ENDCAP
;
103
else
if
(mod<12)
104
return
LVL1TGCTrigger::TGCRegionType::ENDCAP
;
105
else
106
return
LVL1TGCTrigger::TGCRegionType::FORWARD
;
107
}
108
109
TGCForwardBackwardType
TGCElectronicsSystem::getForwardBackward
(
int
side,
int
oct,
int
mod)
const
110
{
111
bool
isEndcap =
false
;
112
bool
isInner =
false
;
113
int
sec=-1;
114
if
(mod<9){
115
if
(mod%3==2)
116
sec = mod/3+oct*3;
117
if
(mod%3==0||mod%3==1){
118
sec = mod-mod/3+oct*6;
119
isEndcap =
true
;
120
}
121
}
else
if
(mod<12){
122
isEndcap =
true
;
123
isInner =
true
;
124
sec = mod%3+oct*3;
125
}
else
{
126
isInner =
true
;
127
sec = mod%3+oct*3;
128
}
129
130
TGCForwardBackwardType
forwardBackward =
ForwardSector
;
131
132
// for new cabling service
133
// A-side : side == 0
134
// C-side : side == 1
135
bool
isAside = (side ==0);
136
137
// backward/Forward definition is same
138
// because strip layer is swapped in default
139
if
( isEndcap ){
140
if
(!isInner){
141
if
(isAside) {
142
if
(sec%2==0) forwardBackward =
ForwardSector
;
143
else
forwardBackward =
BackwardSector
;
144
}
else
{
145
if
(sec%2==1) forwardBackward =
ForwardSector
;
146
else
forwardBackward =
BackwardSector
;
147
}
148
}
else
{
149
// EI
150
// Special case of EI11
151
if
(sec == 15) {
152
if
(isAside ) forwardBackward =
ForwardSector
;
153
else
forwardBackward =
BackwardSector
;
154
}
else
if
(sec == 16) {
155
if
(isAside ) forwardBackward =
BackwardSector
;
156
else
forwardBackward =
ForwardSector
;
157
}
else
{
158
if
(isAside) {
159
if
(sec%3==2) forwardBackward =
BackwardSector
;
160
else
forwardBackward =
ForwardSector
;
161
}
else
{
162
if
(sec%3!=2) forwardBackward =
BackwardSector
;
163
else
forwardBackward =
ForwardSector
;
164
}
165
}
166
}
167
}
else
{
168
if
(isAside) forwardBackward =
BackwardSector
;
// all Backward
169
else
forwardBackward =
ForwardSector
;
// all Forward
170
}
171
return
forwardBackward;
172
}
173
174
int
TGCElectronicsSystem::getSectorId
(
int
side,
int
oct,
int
mod)
const
175
{
176
return
NumberOfModule
*
NumberOfOctant
*side+
NumberOfModule
*oct+mod;
177
}
178
179
TGCSector
*
TGCElectronicsSystem::getSector
(
const
LVL1TGCTrigger::TGCReadoutIndex
&
index
)
const
180
{
181
if
(
index
.GetSideNumber()<0)
return
0;
182
return
m_sector
[
index
.GetSideNumber()][
index
.GetOctantNumber()][
index
.GetModuleNumber()];
183
}
184
185
TGCElectronicsSystem::~TGCElectronicsSystem
()
186
{
187
for
(
int
i=0; i <
LVL1TGC::kNSide
; i++) {
188
for
(
int
j=0; j <
NumberOfOctant
; j++) {
189
for
(
int
k=0; k <
NumberOfModule
; k++) {
190
if
(
m_sector
[i][j][k]!=0)
delete
m_sector
[i][j][k];
191
m_sector
[i][j][k]=0;
192
}
// loop module
193
}
// loop octant
194
}
// loop side
195
}
196
197
198
}
//end of namespace bracket
TGCASDOut.h
TGCDatabaseManager.h
TGCElectronicsSystem.h
TGCEvent.h
TGCSector.h
LVL1TGCTrigger::TGCASDOut
Definition
TGCASDOut.h:12
LVL1TGCTrigger::TGCASDOut::GetTGCReadoutIndex
const TGCReadoutIndex & GetTGCReadoutIndex() const
Definition
TGCASDOut.h:33
LVL1TGCTrigger::TGCArguments
Definition
TGCArguments.h:12
LVL1TGCTrigger::TGCArguments::USE_BIS78
bool USE_BIS78() const
Definition
TGCArguments.cxx:50
LVL1TGCTrigger::TGCArguments::USE_NSW
bool USE_NSW() const
Definition
TGCArguments.cxx:47
LVL1TGCTrigger::TGCDatabaseManager
Definition
TGCDatabaseManager.h:39
LVL1TGCTrigger::TGCElectronicsSystem::m_sector
TGCSector * m_sector[LVL1TGC::kNSide][NumberOfOctant][NumberOfModule]
Definition
TGCElectronicsSystem.h:64
LVL1TGCTrigger::TGCElectronicsSystem::TGCElectronicsSystem
TGCElectronicsSystem()
Definition
TGCElectronicsSystem.cxx:36
LVL1TGCTrigger::TGCElectronicsSystem::m_bis78
std::shared_ptr< LVL1TGC::TGCBIS78 > m_bis78
Definition
TGCElectronicsSystem.h:68
LVL1TGCTrigger::TGCElectronicsSystem::m_tmdb
std::shared_ptr< LVL1TGC::TGCTMDB > m_tmdb
Definition
TGCElectronicsSystem.h:66
LVL1TGCTrigger::TGCElectronicsSystem::tgcArgs
TGCArguments * tgcArgs()
Definition
TGCElectronicsSystem.h:53
LVL1TGCTrigger::TGCElectronicsSystem::getRegionType
TGCRegionType getRegionType(int mod) const
Definition
TGCElectronicsSystem.cxx:88
LVL1TGCTrigger::TGCElectronicsSystem::getSector
TGCSector * getSector(const TGCReadoutIndex &index) const
Definition
TGCElectronicsSystem.cxx:179
LVL1TGCTrigger::TGCElectronicsSystem::~TGCElectronicsSystem
virtual ~TGCElectronicsSystem()
Definition
TGCElectronicsSystem.cxx:185
LVL1TGCTrigger::TGCElectronicsSystem::getSectorId
int getSectorId(int side, int oct, int mod) const
Definition
TGCElectronicsSystem.cxx:174
LVL1TGCTrigger::TGCElectronicsSystem::distributeSignal
void distributeSignal(TGCEvent *event)
Definition
TGCElectronicsSystem.cxx:16
LVL1TGCTrigger::TGCElectronicsSystem::m_nsw
std::shared_ptr< LVL1TGC::TGCNSW > m_nsw
Definition
TGCElectronicsSystem.h:67
LVL1TGCTrigger::TGCElectronicsSystem::m_tgcArgs
TGCArguments * m_tgcArgs
Definition
TGCElectronicsSystem.h:70
LVL1TGCTrigger::TGCElectronicsSystem::m_DB
TGCDatabaseManager * m_DB
Definition
TGCElectronicsSystem.h:63
LVL1TGCTrigger::TGCElectronicsSystem::getForwardBackward
TGCForwardBackwardType getForwardBackward(int side, int oct, int mod) const
Definition
TGCElectronicsSystem.cxx:109
LVL1TGCTrigger::TGCEvent
Definition
TGCEvent.h:15
LVL1TGCTrigger::TGCReadoutIndex
Definition
TGCReadoutIndex.h:13
LVL1TGCTrigger::TGCReadoutIndex::GetOctantNumber
int GetOctantNumber() const
Definition
TGCReadoutIndex.h:55
LVL1TGCTrigger::TGCReadoutIndex::GetSideNumber
int GetSideNumber() const
Definition
TGCReadoutIndex.h:52
LVL1TGCTrigger::TGCReadoutIndex::GetModuleNumber
int GetModuleNumber() const
Definition
TGCReadoutIndex.h:56
LVL1TGCTrigger::TGCSector
Definition
TGCSector.h:31
LVL1TGCTrigger::TGCSector::distributeSignal
int distributeSignal(const TGCASDOut *asdOut)
Definition
TGCSector.cxx:34
LVL1TGC::TGCTMDB
Definition
TGCTMDB.h:19
LVL1TGCTrigger
Definition
LVL1TGCTrigger.cxx:48
LVL1TGCTrigger::TGCForwardBackwardType
TGCForwardBackwardType
Definition
TGCNumbering.h:59
LVL1TGCTrigger::BackwardSector
@ BackwardSector
Definition
TGCNumbering.h:59
LVL1TGCTrigger::ForwardSector
@ ForwardSector
Definition
TGCNumbering.h:59
LVL1TGCTrigger::TGCRegionType
TGCRegionType
Definition
TGCNumbering.h:49
LVL1TGCTrigger::TGCRegionType::FORWARD
@ FORWARD
Definition
TGCNumbering.h:49
LVL1TGCTrigger::TGCRegionType::ENDCAP
@ ENDCAP
Definition
TGCNumbering.h:49
LVL1TGCTrigger::NumberOfModule
const int NumberOfModule
Definition
TGCElectronicsSystem.h:22
LVL1TGCTrigger::NumberOfOctant
const int NumberOfOctant
Definition
TGCElectronicsSystem.h:21
LVL1TGC::kNSide
@ kNSide
Definition
TGCNumbering.h:16
index
Definition
index.py:1
Generated on
for ATLAS Offline Software by
1.17.0