ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1TGC
src
TGCWireHighPtBoard.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
// ref. SOS063V07,S0S061V04
6
#include "
TrigT1TGC/TGCWireHighPtBoard.h
"
7
#include "
TrigT1TGC/TGCHighPtBoardOut.h
"
8
9
#include <iostream>
10
#include <cstdlib>
11
12
namespace
LVL1TGCTrigger
{
13
14
TGCWireHighPtBoard::TGCWireHighPtBoard
():
15
TGCHighPtBoard
()
16
{
17
m_maxDev
=15;
18
m_maxDevOred
=20;
19
m_nChOfTSBOut
= 96;
20
m_nChInTSBRegion
=
m_nChOfTSBOut
/3;
21
m_nChOfDSBOut
= 64;
22
m_nChOfDSBHit
= 3*
m_nChOfDSBOut
;
23
m_nChOfTSBHit
=
m_nChOfDSBHit
+ 2*
m_maxDevOred
;
24
}
25
26
void
TGCWireHighPtBoard::setDecoderIn
()
27
{
28
m_decoderInDSB
[
ChipA
][0] =
m_DSBOut
[
ChipA
][0];
29
m_decoderInDSB
[
ChipA
][1] =
m_DSBOut
[
ChipA
][1];
30
m_decoderInDSB
[
ChipA
][2] =
m_DSBOut
[
ChipA
][2];
31
32
m_decoderInDSB
[
ChipB
][0] =
m_DSBOut
[
ChipB
][0];
33
m_decoderInDSB
[
ChipB
][1] =
m_DSBOut
[
ChipB
][1];
34
m_decoderInDSB
[
ChipB
][2] =
m_DSBOut
[
ChipB
][2];
35
36
if
(
m_adjacentHPB
[0]){
37
m_decoderInTSB
[
ChipA
][0] =
m_adjacentHPB
[0]->getTSBOut(
ChipB
,1);
38
}
39
m_decoderInTSB
[
ChipA
][1] =
m_TSBOut
[
ChipA
][0];
40
m_decoderInTSB
[
ChipA
][2] =
m_TSBOut
[
ChipA
][1];
41
m_decoderInTSB
[
ChipA
][3] =
m_TSBOut
[
ChipB
][0];
42
43
m_decoderInTSB
[
ChipB
][0] =
m_TSBOut
[
ChipA
][1];
44
m_decoderInTSB
[
ChipB
][1] =
m_TSBOut
[
ChipB
][0];
45
m_decoderInTSB
[
ChipB
][2] =
m_TSBOut
[
ChipB
][1];
46
if
(
m_adjacentHPB
[1]){
47
m_decoderInTSB
[
ChipB
][3] =
m_adjacentHPB
[1]->getTSBOut(
ChipA
,0);
48
}
49
}
50
51
void
TGCWireHighPtBoard::clearDecoderIn
()
52
{
53
int
chip,j;
54
for
( chip=0; chip<
NumberOfChip
; chip+=1){
55
for
( j=0; j<
NDecoderInTSB
; j+=1)
m_decoderInTSB
[chip][j]=0;
56
for
( j=0; j<
NDecoderInDSB
; j+=1)
m_decoderInDSB
[chip][j]=0;
57
}
58
}
59
60
void
TGCWireHighPtBoard::decodeSlaveBoardOut
(
int
chip,
61
TGCHitPattern
* tHit,
62
TGCHitPattern
* dHit)
63
{
64
int
block,j,ch;
65
66
// for TripletSlaveBoard
67
#ifdef TGCCOUT
68
std::cout <<
"#--Wire decodeSlaveBoardOut()"
<< std::endl;
69
std::cout <<
"Triplet"
<< std::endl;
70
#endif
71
for
( j=0; j<
NDecoderInTSB
; j+=1)
72
if
(
m_decoderInTSB
[chip][j]!=0){
73
#ifdef TGCCOUT
74
std::cout <<
"index:"
<< j <<
"/"
<<
NDecoderInTSB
-1 <<
" in a chip "
;
75
std::cout<<
"WHPB:decoderInTSB["
<<chip<<
"]["
<<j<<
"]:"
;
76
m_decoderInTSB
[chip][j]->print();
77
#endif
78
for
( block=0; block<
m_decoderInTSB
[chip][j]->getNumberOfData(); block+=1)
79
if
(
m_decoderInTSB
[chip][j]->getHit(block)){
80
ch=
m_nChOfTSBHit
/2+(j-2)*
m_nChOfTSBOut
81
+block*
m_nChInTSBRegion
+
m_decoderInTSB
[chip][j]->getPos(block);
82
if
((ch>=0)&&(ch<
m_nChOfTSBHit
)) tHit->
onChannel
(ch);
83
}
84
}
85
86
// for DoubletSlaveBoard
87
#ifdef TGCCOUT
88
std::cout <<
"Doublet"
<< std::endl;
89
#endif
90
for
( j=0; j<
NDecoderInDSB
; j+=1)
91
if
(
m_decoderInDSB
[chip][j]!=0){
92
#ifdef TGCCOUT
93
std::cout <<
"index:"
<< j <<
"/"
<<
NDecoderInDSB
-1 <<
" in a chip "
;
94
std::cout<<
"WHPB:decoderInDSB["
<<chip<<
"]["
<<j<<
"]:"
;
95
m_decoderInDSB
[chip][j]->print();
96
#endif
97
for
( block=0; block<
m_decoderInDSB
[chip][j]->getNumberOfData(); block+=1)
98
if
(
m_decoderInDSB
[chip][j]->getHit(block)){
99
dHit->
onChannel
(j*
m_nChOfDSBOut
100
+
m_nChOfDSBOut
/2*block+
m_decoderInDSB
[chip][j]->getPos(block));
101
}
102
}
103
}
104
105
void
TGCWireHighPtBoard::doCoincidenceMatrix
(
int
chip,
106
int
block,
107
const
TGCHitPattern
* tHit,
108
const
TGCHitPattern
* dHit)
109
{
110
// ref. SOS062V05
111
int
Oring;
112
int
nChUnitOfDSBHit=
m_nChOfDSBHit
/
NBlockOfDSBChannel
;
//ch in a AB CD
113
// int nChSubUnitOfDSBHit = nChUnitOfDSBHit / 2; //ch in a A B C D
114
115
#ifdef TGCCOUT
116
std::cout <<
"# Wire doCoincidenceMatrix() chip:"
<< chip <<
" block:"
<< block << std::endl;
117
#endif
118
int
dev, DevOrg, ich, DSBCh, TSBCh, ior;
119
for
(dev=0; dev <=
m_maxDev
; dev++){
120
for
(ich=0; ich < nChUnitOfDSBHit; ich++){
121
if
(dev>2*
m_maxDev
-
m_maxDevOred
){
122
Oring = 1;
123
DevOrg = 2*
m_maxDev
-
m_maxDevOred
+ (dev - (2*
m_maxDev
-
m_maxDevOred
))*2 - 1;
124
}
else
{
125
Oring = 0;
126
DevOrg = dev;
127
}
128
for
(ior = 0; ior <= Oring; ior++){
129
DSBCh = nChUnitOfDSBHit*block + ich;
130
TSBCh = DSBCh +
m_priorSign
*(DevOrg + ior) +
m_maxDevOred
;
131
if
(tHit->
getChannel
(TSBCh) && dHit->
getChannel
(DSBCh)){
132
#ifdef TGCDEBUG
133
std::cout <<
"HighPt"
<< std::endl
134
<<
" th&&dh==1 priorSign*dev:"
<<
m_priorSign
135
<<
"*"
<< dev
136
<<
" DSBCh:"
<< DSBCh
137
<<
" TSBCh:"
<< TSBCh << std::endl;
138
#endif
139
// channel of dev>2*m_maxDev-m_maxDevOred is ored.
140
m_highPtBoardOut
->setPt(chip,block,
PtHigh
);
141
m_highPtBoardOut
->setHit(chip,block,
true
);
142
m_highPtBoardOut
->setDev(chip,block,
m_priorSign
*dev);
143
m_highPtBoardOut
->setPos(chip,block,ich/(
m_nChOfDSBOut
/4));
144
return
;
145
}
146
}
147
}
148
// for dR of opposite sign
149
if
(dev){
150
for
(ich=0; ich < nChUnitOfDSBHit; ich++){
151
if
(dev>2*
m_maxDev
-
m_maxDevOred
){
152
Oring = 1;
153
DevOrg = 2*
m_maxDev
-
m_maxDevOred
+ (dev - (2*
m_maxDev
-
m_maxDevOred
))*2 - 1;
154
}
else
{
155
Oring = 0;
156
DevOrg = dev;
157
}
158
for
(ior = 0; ior <= Oring; ior++){
159
DSBCh = nChUnitOfDSBHit*block + ich;
160
TSBCh = DSBCh -
m_priorSign
*(DevOrg + ior) +
m_maxDevOred
;
161
if
(tHit->
getChannel
(TSBCh) && dHit->
getChannel
(DSBCh)){
162
#ifdef TGCDEBUG
163
std::cout <<
"HighPt"
<< std::endl
164
<<
" th&&dh==1 priorSign*dev:"
<< -
m_priorSign
165
<<
"*"
<< dev
166
<<
" DSBCh:"
<< DSBCh
167
<<
" TSBCh:"
<< TSBCh << std::endl;
168
#endif
169
// channel of dev>2*m_maxDev-m_maxDevOred is ored.
170
m_highPtBoardOut
->setPos(chip,block,ich/(
m_nChOfDSBOut
/4));
171
m_highPtBoardOut
->setDev(chip,block,-
m_priorSign
*dev);
172
m_highPtBoardOut
->setPt(chip,block,
PtHigh
);
173
m_highPtBoardOut
->setHit(chip,block,
true
);
174
return
;
175
}
176
}
177
}
178
}
179
}
180
}
181
182
}
//end of namespace bracket
TGCHighPtBoardOut.h
TGCWireHighPtBoard.h
LVL1TGCTrigger::TGCHighPtBoard::TGCHighPtBoard
TGCHighPtBoard()
Definition
TGCHighPtBoard.cxx:14
LVL1TGCTrigger::TGCHighPtBoard::m_priorSign
int m_priorSign
Definition
TGCHighPtBoard.h:106
LVL1TGCTrigger::TGCHighPtBoard::m_maxDevOred
int m_maxDevOred
Definition
TGCHighPtBoard.h:109
LVL1TGCTrigger::TGCHighPtBoard::m_nChInTSBRegion
int m_nChInTSBRegion
Definition
TGCHighPtBoard.h:114
LVL1TGCTrigger::TGCHighPtBoard::m_highPtBoardOut
TGCHighPtBoardOut * m_highPtBoardOut
Definition
TGCHighPtBoard.h:89
LVL1TGCTrigger::TGCHighPtBoard::m_maxDev
int m_maxDev
Definition
TGCHighPtBoard.h:108
LVL1TGCTrigger::TGCHighPtBoard::m_nChOfDSBOut
int m_nChOfDSBOut
Definition
TGCHighPtBoard.h:111
LVL1TGCTrigger::TGCHighPtBoard::m_nChOfTSBOut
int m_nChOfTSBOut
Definition
TGCHighPtBoard.h:110
LVL1TGCTrigger::TGCHighPtBoard::m_DSBOut
TGCSlaveBoardOut * m_DSBOut[NumberOfChip][s_NumberOfDSBOut]
Definition
TGCHighPtBoard.h:94
LVL1TGCTrigger::TGCHighPtBoard::m_decoderInTSB
TGCSlaveBoardOut * m_decoderInTSB[NumberOfChip][NDecoderInTSB]
Definition
TGCHighPtBoard.h:97
LVL1TGCTrigger::TGCHighPtBoard::m_nChOfDSBHit
int m_nChOfDSBHit
Definition
TGCHighPtBoard.h:112
LVL1TGCTrigger::TGCHighPtBoard::m_nChOfTSBHit
int m_nChOfTSBHit
Definition
TGCHighPtBoard.h:113
LVL1TGCTrigger::TGCHighPtBoard::m_adjacentHPB
TGCHighPtBoard * m_adjacentHPB[NumberOfAdjacentHPB]
Definition
TGCHighPtBoard.h:96
LVL1TGCTrigger::TGCHighPtBoard::m_TSBOut
TGCSlaveBoardOut * m_TSBOut[NumberOfChip][s_NumberOfTSBOut]
Definition
TGCHighPtBoard.h:95
LVL1TGCTrigger::TGCHighPtBoard::m_decoderInDSB
TGCSlaveBoardOut * m_decoderInDSB[NumberOfChip][NDecoderInDSB]
Definition
TGCHighPtBoard.h:98
LVL1TGCTrigger::TGCHitPattern
Definition
TGCHitPattern.h:11
LVL1TGCTrigger::TGCHitPattern::getChannel
bool getChannel(int iChannel) const
Definition
TGCHitPattern.cxx:64
LVL1TGCTrigger::TGCHitPattern::onChannel
void onChannel(int iChannel)
Definition
TGCHitPattern.h:55
LVL1TGCTrigger::TGCWireHighPtBoard::TGCWireHighPtBoard
TGCWireHighPtBoard()
Definition
TGCWireHighPtBoard.cxx:14
LVL1TGCTrigger::TGCWireHighPtBoard::doCoincidenceMatrix
virtual void doCoincidenceMatrix(int chip, int block, const TGCHitPattern *tHit, const TGCHitPattern *dHit)
Definition
TGCWireHighPtBoard.cxx:105
LVL1TGCTrigger::TGCWireHighPtBoard::setDecoderIn
virtual void setDecoderIn()
Definition
TGCWireHighPtBoard.cxx:26
LVL1TGCTrigger::TGCWireHighPtBoard::decodeSlaveBoardOut
virtual void decodeSlaveBoardOut(int chip, TGCHitPattern *tHit, TGCHitPattern *dHit)
Definition
TGCWireHighPtBoard.cxx:60
LVL1TGCTrigger::TGCWireHighPtBoard::clearDecoderIn
virtual void clearDecoderIn()
Definition
TGCWireHighPtBoard.cxx:51
LVL1TGCTrigger
Definition
LVL1TGCTrigger.cxx:48
LVL1TGCTrigger::NBlockOfDSBChannel
const int NBlockOfDSBChannel
Definition
TGCHighPtBoard.h:21
LVL1TGCTrigger::NDecoderInDSB
const int NDecoderInDSB
Definition
TGCHighPtBoard.h:23
LVL1TGCTrigger::NumberOfChip
const int NumberOfChip
Definition
TGCHighPtBoard.h:20
LVL1TGCTrigger::PtHigh
const int PtHigh
Definition
TGCHighPtBoard.h:17
LVL1TGCTrigger::ChipB
@ ChipB
Definition
TGCHighPtBoard.h:26
LVL1TGCTrigger::ChipA
@ ChipA
Definition
TGCHighPtBoard.h:26
LVL1TGCTrigger::NDecoderInTSB
const int NDecoderInTSB
Definition
TGCHighPtBoard.h:22
Generated on
for ATLAS Offline Software by
1.17.0