ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1TGC
src
TGCWireTripletSB.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// ref. SOS051V07,S0S052V06
6
#include "
TrigT1TGC/TGCWireTripletSB.h
"
7
#include "
TrigT1TGC/TGCPatchPanel.h
"
8
#include "
TrigT1TGC/TGCPatchPanelOut.h
"
9
#include <iostream>
10
#include <cstdlib>
11
12
namespace
LVL1TGCTrigger
{
13
14
TGCWireTripletSB::TGCWireTripletSB
()
15
:
TGCSlaveBoard
()
16
{}
17
18
void
TGCWireTripletSB::createSlaveBoardOut
()
19
{
20
if
(
m_coincidenceOut
!=0){
21
if
(
m_slaveBoardOut
!= 0 )
delete
m_slaveBoardOut
;
22
m_slaveBoardOut
=
new
TGCSlaveBoardOut
(
this
,
m_bid
);
23
m_slaveBoardOut
->clear();
24
m_slaveBoardOut
->setNumberOfData(
s_NumberOfWireTripletSBData
);
25
26
// fill SlaveBoardOut.
27
// select largest R hit in each sections.
28
int
lengthOfSection = (
m_coincidenceOut
->getLength() - 2*
s_NChAdjInWTSB
)/
s_NumberOfWireTripletSBData
;
29
int
i,j;
30
for
( i=0; i<
s_NumberOfWireTripletSBData
; i+=1){
// i=0:a 1:b 2:c
31
m_slaveBoardOut
->setPos(i,-1);
32
m_slaveBoardOut
->setPos(i,0);
33
m_slaveBoardOut
->setHit(i,
false
);
34
for
( j=0; j<lengthOfSection; j+=1) {
35
if
(
m_coincidenceOut
->getChannel(
s_NChAdjInWTSB
+ j + i*lengthOfSection)){
36
m_slaveBoardOut
->setPos(i,j);
37
m_slaveBoardOut
->setHit(i,
true
);
38
break
;
39
}
40
}
41
if
(
m_slaveBoardOut
->getHit(i)){
42
m_slaveBoardOut
->setbPos(i,
m_slaveBoardOut
->getPos(i));
43
}
44
}
45
}
46
}
47
48
void
TGCWireTripletSB::doCoincidence
()
49
{
50
const
TGCHitPattern
* pattern[2];
51
// pattern[0] has hit pattern of layer0[36-71].
52
// pattern[1] has hit pattern of layer1[0-35] and layer2[36-71] .
53
pattern[0] =
m_patchPanelOut
->getHitPattern(0);
54
pattern[1] =
m_patchPanelOut
->getHitPattern(1);
55
56
if
(pattern[1] != 0) {
// necessary for 2/3 coincidence.
57
const
int
unitLength = pattern[1]->getLength() / 2;
58
const
int
totalLength = 3 * unitLength;
59
60
m_lengthOfCoincidenceOut
=
s_LengthOfWTSBCoincidenceOut
;
61
if
(
m_coincidenceOut
!= 0)
delete
m_coincidenceOut
;
62
m_coincidenceOut
=
new
TGCHitPattern
(
m_lengthOfCoincidenceOut
);
63
64
// rearrange bit pattern for coincidence.
65
std::vector<bool> b(totalLength);
66
for
(
int
i=0; i < unitLength; i++) {
67
if
(pattern[0] != 0) {
68
b[3*i] = pattern[0]->getChannel(i+unitLength);
//layer0(smallest in eta)
69
}
else
{
70
b[3*i] = 0;
71
}
72
if
(pattern[1] != 0) {
73
b[3*i+1] = pattern[1]->getChannel(i);
// layer1
74
b[3*i+2] = pattern[1]->getChannel(i+unitLength);
//layer2
75
}
else
{
76
b[3*i+1] = 0;
77
b[3*i+2] = 0;
78
}
79
}
80
81
// perform 2/3 coincidence
82
std::vector<bool> output(totalLength);
83
for
(
int
i=0; i < totalLength-8; i++) {
84
output[i] = (b[i+3] && b[i+5] && !b[i+1] && !b[i+7]) ||
85
(b[i+3] && b[i+4] && !b[i+2]) ||
86
(b[i+4] && b[i+5] && !b[i+6]) ||
87
(b[i+6] && b[i+2] && b[i+4] && !b[i+3] && !b[i+5] && !b[i+1] && !b[i+7]);
88
}
89
90
int
base
= 0;
91
for
(
int
i=0; i<
m_lengthOfCoincidenceOut
; i++) {
92
m_coincidenceOut
->setChannel(i, output[i+
base
]);
93
}
94
}
95
}
96
97
TGCWireTripletSB
&
TGCWireTripletSB::operator=
(
const
TGCWireTripletSB
& right)
98
{
99
if
(
this
!= &right ) {
100
m_id
= right.
m_id
;
101
m_bid
= right.
m_bid
;
102
m_idHighPtBoard
= right.
m_idHighPtBoard
;
103
m_type
= right.
m_type
;
104
m_lengthOfCoincidenceOut
= right.
m_lengthOfCoincidenceOut
;
105
*
m_slaveBoardOut
= *right.
m_slaveBoardOut
;
106
*
m_patchPanel
= *right.
m_patchPanel
;
107
*
m_patchPanelOut
= *right.
m_patchPanelOut
;
108
109
if
(
m_lengthOfCoincidenceOut
> 0) {
110
if
(
m_coincidenceOut
)
delete
m_coincidenceOut
;
111
m_coincidenceOut
=
new
TGCHitPattern
(
m_lengthOfCoincidenceOut
);
112
}
113
}
114
return
*
this
;
115
}
116
117
118
119
}
//end of namespace bracket
TGCPatchPanelOut.h
TGCPatchPanel.h
TGCWireTripletSB.h
LVL1TGCTrigger::TGCHitPattern
Definition
TGCHitPattern.h:11
LVL1TGCTrigger::TGCSlaveBoardOut
Definition
TGCSlaveBoardOut.h:20
LVL1TGCTrigger::TGCSlaveBoard::m_id
int m_id
Definition
TGCSlaveBoard.h:76
LVL1TGCTrigger::TGCSlaveBoard::m_slaveBoardOut
TGCSlaveBoardOut * m_slaveBoardOut
Definition
TGCSlaveBoard.h:74
LVL1TGCTrigger::TGCSlaveBoard::m_idHighPtBoard
int m_idHighPtBoard
Definition
TGCSlaveBoard.h:78
LVL1TGCTrigger::TGCSlaveBoard::m_patchPanelOut
TGCPatchPanelOut * m_patchPanelOut
Definition
TGCSlaveBoard.h:83
LVL1TGCTrigger::TGCSlaveBoard::m_patchPanel
TGCPatchPanel * m_patchPanel
Definition
TGCSlaveBoard.h:82
LVL1TGCTrigger::TGCSlaveBoard::m_lengthOfCoincidenceOut
int m_lengthOfCoincidenceOut
Definition
TGCSlaveBoard.h:72
LVL1TGCTrigger::TGCSlaveBoard::TGCSlaveBoard
TGCSlaveBoard()
Definition
TGCSlaveBoard.cxx:16
LVL1TGCTrigger::TGCSlaveBoard::m_coincidenceOut
TGCHitPattern * m_coincidenceOut
Definition
TGCSlaveBoard.h:73
LVL1TGCTrigger::TGCSlaveBoard::m_type
int m_type
Definition
TGCSlaveBoard.h:79
LVL1TGCTrigger::TGCSlaveBoard::m_bid
int m_bid
Definition
TGCSlaveBoard.h:77
LVL1TGCTrigger::TGCWireTripletSB::TGCWireTripletSB
TGCWireTripletSB()
Definition
TGCWireTripletSB.cxx:14
LVL1TGCTrigger::TGCWireTripletSB::doCoincidence
virtual void doCoincidence()
Definition
TGCWireTripletSB.cxx:48
LVL1TGCTrigger::TGCWireTripletSB::s_NumberOfWireTripletSBData
static constexpr int s_NumberOfWireTripletSBData
Definition
TGCWireTripletSB.h:17
LVL1TGCTrigger::TGCWireTripletSB::createSlaveBoardOut
virtual void createSlaveBoardOut()
Definition
TGCWireTripletSB.cxx:18
LVL1TGCTrigger::TGCWireTripletSB::TGCWireTripletSB
TGCWireTripletSB(const TGCWireTripletSB &right)=delete
LVL1TGCTrigger::TGCWireTripletSB::s_LengthOfWTSBCoincidenceOut
static constexpr int s_LengthOfWTSBCoincidenceOut
Definition
TGCWireTripletSB.h:15
LVL1TGCTrigger::TGCWireTripletSB::operator=
TGCWireTripletSB & operator=(const TGCWireTripletSB &right)
Definition
TGCWireTripletSB.cxx:97
LVL1TGCTrigger::TGCWireTripletSB::s_NChAdjInWTSB
static constexpr int s_NChAdjInWTSB
Definition
TGCWireTripletSB.h:16
base
std::string base
Definition
hcg.cxx:83
LVL1TGCTrigger
Definition
LVL1TGCTrigger.cxx:48
Generated on
for ATLAS Offline Software by
1.17.0