ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1TGCTrigger::TGCStripHighPtBoard Class Reference

#include <TGCStripHighPtBoard.h>

Inheritance diagram for LVL1TGCTrigger::TGCStripHighPtBoard:
Collaboration diagram for LVL1TGCTrigger::TGCStripHighPtBoard:

Public Member Functions

 TGCStripHighPtBoard ()
virtual ~TGCStripHighPtBoard ()
void clockIn (int bidIn)
TGCHighPtChipOutgetOutput ()
void eraseOutput ()
int getId () const
void setId (int idIn)
int getType () const
void setType (int typeIn)
TGCRegionType getRegion () const
void setRegion (const TGCRegionType regionIn)
void setDSB (int connector, TGCSlaveBoard *SBIn)
void setTSB (int connector, TGCSlaveBoard *SBIn)
TGCSlaveBoardOutgetTSBOut (int chip, int port)
void setAdjacentHPB (int side, TGCHighPtBoard *hpt)
void showResult () const

Protected Member Functions

virtual void highLowSelector (int chip)
virtual void decodeSlaveBoardOut (int chip, TGCHitPattern *tHit, TGCHitPattern *dHit)
virtual void doCoincidenceMatrix (int chip, int block, const TGCHitPattern *tHit, const TGCHitPattern *dHit)
virtual void setDecoderIn ()
virtual void clearDecoderIn ()
TGCSlaveBoardOutdivideTSBOut (int iSet, TGCSlaveBoardOut *SBOut)
int getNonLinearDelta (int dev) const
void collectInput ()
void createHighPtChipOut ()
void createHighPtBoardOut ()
void createLowPtBoardOut ()
void doCoincidence ()
void trackSelector (int chip, int ptIn)
void deleteSlaveBoardOut ()
void loadLowPtOutput (int chip, int block, TGCSlaveBoardOut *dataDSB)
void eraseHighPtOutput ()
void eraseLowPtOutput ()

Protected Attributes

TGCHighPtChipOutm_highPtChipOut
TGCHighPtBoardOutm_highPtBoardOut
TGCHighPtBoardOutm_lowPtBoardOut
TGCSlaveBoardm_DSB [NumberOfChip][s_NumberOfDSBOut]
TGCSlaveBoardm_TSB [NumberOfChip][s_NumberOfTSBOut]
TGCSlaveBoardOutm_DSBOut [NumberOfChip][s_NumberOfDSBOut]
TGCSlaveBoardOutm_TSBOut [NumberOfChip][s_NumberOfTSBOut]
TGCHighPtBoardm_adjacentHPB [NumberOfAdjacentHPB]
TGCSlaveBoardOutm_decoderInTSB [NumberOfChip][NDecoderInTSB]
TGCSlaveBoardOutm_decoderInDSB [NumberOfChip][NDecoderInDSB]
int m_id
int m_bid
int m_idSectorLogic
int m_type
TGCRegionType m_region {TGCRegionType::FORWARD}
int m_priorSign
int m_maxNumberOfHPBData
int m_maxDev
int m_maxDevOred
int m_nChOfTSBOut
int m_nChOfDSBOut
int m_nChOfDSBHit
int m_nChOfTSBHit
int m_nChInTSBRegion

Static Private Attributes

static constexpr int s_NumberOfTSBOut = 2
static constexpr int s_NumberOfDSBOut = 3

Detailed Description

Definition at line 17 of file TGCStripHighPtBoard.h.

Constructor & Destructor Documentation

◆ TGCStripHighPtBoard()

◆ ~TGCStripHighPtBoard()

virtual LVL1TGCTrigger::TGCStripHighPtBoard::~TGCStripHighPtBoard ( )
inlinevirtual

Definition at line 21 of file TGCStripHighPtBoard.h.

21{};

Member Function Documentation

◆ clearDecoderIn()

void LVL1TGCTrigger::TGCStripHighPtBoard::clearDecoderIn ( )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 70 of file TGCStripHighPtBoard.cxx.

71{
73 if(m_decoderInTSB[ChipA][0]) delete m_decoderInTSB[ChipA][0];
74 if(m_decoderInTSB[ChipA][1]) delete m_decoderInTSB[ChipA][1];
75 if(m_decoderInTSB[ChipA][2]) delete m_decoderInTSB[ChipA][2];
76 if(m_decoderInTSB[ChipB][0]) delete m_decoderInTSB[ChipB][0];
77 if(m_decoderInTSB[ChipB][1]) delete m_decoderInTSB[ChipB][1];
78 }
79 int chip,j;
80 for( chip=0; chip<NumberOfChip; chip+=1){
81 for( j=0; j<NDecoderInTSB; j+=1) m_decoderInTSB[chip][j]=0;
82 for( j=0; j<NDecoderInDSB; j+=1) m_decoderInDSB[chip][j]=0;
83 }
84}
TGCSlaveBoardOut * m_decoderInTSB[NumberOfChip][NDecoderInTSB]
TGCSlaveBoardOut * m_decoderInDSB[NumberOfChip][NDecoderInDSB]
const int NDecoderInDSB
const int NumberOfChip
const int NDecoderInTSB

◆ clockIn()

void LVL1TGCTrigger::TGCHighPtBoard::clockIn ( int bidIn)
inherited

Definition at line 77 of file TGCHighPtBoard.cxx.

78{
79 if(m_bid!=bidIn){
80#ifdef TGCCOUT
81 std::cout << "#TGCHighPtBoard::clockIn collect" << std::endl;
82#endif
83 m_bid = bidIn;
86 return;
87 }else{
88#ifdef TGCCOUT
89 std::cout << "#TGCHighPtBoard::clockIn BID:" << m_bid
90 << " TYPE:" << ((m_type==WHPB) ? "WHPB" : "SHPB" )
91 << " ID:" << m_id
92 << " REGION:" << ( (m_region==TGCRegionType::FORWARD) ? "FWD" : "END")
93 <<std::endl;
94#endif
95 createHighPtChipOut(); //Feeds to SL
96 createHighPtBoardOut(); //Internal Use
97 createLowPtBoardOut(); //Internal Use
99 showResult();
102 }
103 return;
104}

◆ collectInput()

void LVL1TGCTrigger::TGCHighPtBoard::collectInput ( )
protectedinherited

Definition at line 125 of file TGCHighPtBoard.cxx.

126{
127 int i,j;
128 for( j=0; j<NumberOfChip; j+=1){
129 for( i=0; i<s_NumberOfDSBOut; i+=1)
130 if(m_DSB[j][i]){
131 m_DSBOut[j][i]=m_DSB[j][i]->getOutput();
132 m_DSB[j][i]->eraseOutput();
133 if(m_DSBOut[j][i]) m_DSBOut[j][i]->print();
134 }
135 for( i=0; i<s_NumberOfTSBOut; i+=1)
136 if(m_TSB[j][i]){
137 m_TSBOut[j][i]=m_TSB[j][i]->getOutput();
138 m_TSB[j][i]->eraseOutput();
139 if(m_TSBOut[j][i]) m_TSBOut[j][i]->print();
140 }
141 }
142}
static constexpr int s_NumberOfTSBOut
TGCSlaveBoard * m_DSB[NumberOfChip][s_NumberOfDSBOut]
TGCSlaveBoard * m_TSB[NumberOfChip][s_NumberOfTSBOut]
static constexpr int s_NumberOfDSBOut
TGCSlaveBoardOut * m_DSBOut[NumberOfChip][s_NumberOfDSBOut]
TGCSlaveBoardOut * m_TSBOut[NumberOfChip][s_NumberOfTSBOut]

◆ createHighPtBoardOut()

void LVL1TGCTrigger::TGCHighPtBoard::createHighPtBoardOut ( )
protectedinherited

Definition at line 400 of file TGCHighPtBoard.cxx.

401{
402 if( m_highPtBoardOut != 0 ) delete m_highPtBoardOut;
403 m_highPtBoardOut = new TGCHighPtBoardOut(this, m_bid);
404 m_highPtBoardOut->clear();
405}
TGCHighPtBoardOut * m_highPtBoardOut

◆ createHighPtChipOut()

void LVL1TGCTrigger::TGCHighPtBoard::createHighPtChipOut ( )
protectedinherited

Definition at line 393 of file TGCHighPtBoard.cxx.

394{
395 if( m_highPtChipOut != 0 ) delete m_highPtChipOut;
396 m_highPtChipOut = new TGCHighPtChipOut(this, m_bid);
397 m_highPtChipOut->clear();
398}
TGCHighPtChipOut * m_highPtChipOut

◆ createLowPtBoardOut()

void LVL1TGCTrigger::TGCHighPtBoard::createLowPtBoardOut ( )
protectedinherited

Definition at line 407 of file TGCHighPtBoard.cxx.

408{
409 if( m_lowPtBoardOut != 0 ) delete m_lowPtBoardOut;
410 m_lowPtBoardOut = new TGCHighPtBoardOut(this, m_bid);
411 m_lowPtBoardOut->clear();
412}
TGCHighPtBoardOut * m_lowPtBoardOut

◆ decodeSlaveBoardOut()

void LVL1TGCTrigger::TGCStripHighPtBoard::decodeSlaveBoardOut ( int chip,
TGCHitPattern * tHit,
TGCHitPattern * dHit )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 124 of file TGCStripHighPtBoard.cxx.

127{
128 int block,j,ch;
129 // input from TripletSlaveBoard
130#ifdef TGCCOUT
131 std::cout << "#--Strip decodeSlaveBoardOut()" << std::endl;
132 std::cout << "Triplet" << std::endl;
133#endif
134
135 for( j=0; j<NDecoderInSTSB; j+=1) {
136 if(m_decoderInTSB[chip][j]!=0) {
137#ifdef TGCCOUT
138 std::cout << "index:" << j << "/" << NDecoderInSTSB-1 << " in a chip ";
139 std::cout<<"SHPB:decoderInTSB["<<chip<<"]["<<j<<"]:";
140 m_decoderInTSB[chip][j]->print();
141#endif
142 for( block=0; block<m_decoderInTSB[chip][j]->getNumberOfData(); block+=1) {
143 if(m_decoderInTSB[chip][j]->getHit(block)) {
144 // input to the 2nd Decoder.
145 if(j>0) {
147 +m_decoderInTSB[chip][j]->getPos(block);
148 if((ch>=0)&&(ch<m_nChOfTSBHit))
149 tHit->onChannel(ch);
150#ifdef TGCCOUT
151 else
152 std::cout<<"decodeSlaveBoardOut ch= "<<ch<<std::endl;
153#endif
154 }
155
156 // input to the 2nd Decoder.
158 +m_decoderInTSB[chip][j]->getPos(block);
159 if((ch>=0)&&(ch<m_nChOfTSBHit))
160 tHit->onChannel(ch);
161#ifdef TGCCOUT
162 else
163 std::cout<<"decodeSlaveBoardOut ch= "<<ch<<std::endl;
164#endif
165 // input to the 1st Decoder.
166 if(j<NDecoderInSTSB){
168 +m_decoderInTSB[chip][j]->getPos(block);
169 if((ch>=0)&&(ch<m_nChOfTSBHit))
170 tHit->onChannel(ch);
171#ifdef TGCCOUT
172 else
173 std::cout<<"decodeSlaveBoardOut ch= "<<ch<<std::endl;
174#endif
175 }
176 }
177 }
178 }
179 }
180
181 // input from DoubletSlaveBoard.
182#ifdef TGCCOUT
183 std::cout << "Doublet" << std::endl;
184#endif
185 for( j=0; j<NDecoderInDSB; j+=1){
186 if(m_decoderInDSB[chip][j]!=0) {
187#ifdef TGCCOUT
188 std::cout << "index:" << j << "/" << NDecoderInDSB-1 << " in a chip ";
189 std::cout<<"SHPB:decoderInDSB["<<chip<<"]["<<j<<"]:";
190 m_decoderInDSB[chip][j]->print();
191#endif
192 for( block=0; block<m_decoderInDSB[chip][j]->getNumberOfData(); block+=1) {
193 if(m_decoderInDSB[chip][j]->getHit(block))
194 dHit->onChannel(j*m_nChOfDSBOut+m_nChOfDSBOut/2*block
195 +m_decoderInDSB[chip][j]->getPos(block));
196 }
197 }
198 }
199}
const int NDecoderInSTSB

◆ deleteSlaveBoardOut()

void LVL1TGCTrigger::TGCHighPtBoard::deleteSlaveBoardOut ( )
protectedinherited

Definition at line 106 of file TGCHighPtBoard.cxx.

107{
108 int i,j;
109 for( j=0; j<NumberOfChip; j+=1){
110 for( i=0; i<s_NumberOfDSBOut; i+=1){
111 if(m_DSBOut[j][i]!=0){
112 delete m_DSBOut[j][i];
113 m_DSBOut[j][i]=0;
114 }
115 }
116 for( i=0; i<s_NumberOfTSBOut; i+=1){
117 if(m_TSBOut[j][i]!=0){
118 delete m_TSBOut[j][i];
119 m_TSBOut[j][i]=0;
120 }
121 }
122 }
123}

◆ divideTSBOut()

TGCSlaveBoardOut * LVL1TGCTrigger::TGCStripHighPtBoard::divideTSBOut ( int iSet,
TGCSlaveBoardOut * SBOut )
protected

Definition at line 86 of file TGCStripHighPtBoard.cxx.

88{
89 // divide output of TripletSlaveBoard to distribute to decoder channels.
90 // SBOut out
91 // a -> (iSet=0)
92 // b -> (iSet=0)
93 // c -> (iSet=0)
94 // d -> (iSet=0)
95 // a -> (iSet=1)
96 // b -> (iSet=1)
97 // c -> (iSet=1)
98 // d -> (iSet=1)
99
100 if(SBOut!=0)
101 {
102 TGCSlaveBoardOut* out =
103 new TGCSlaveBoardOut(SBOut->getOrigin(), SBOut->getBid());
104 int nData = SBOut->getNumberOfData();// total number of block
105 out->setNumberOfData(nData/2);
106
107 int i;
108 for( i=0; i< out->getNumberOfData(); i+=1)
109 {
110 out->setDev(i,SBOut->getDev((nData/2)*iSet+i));
111 out->setPos(i,SBOut->getPos((nData/2)*iSet+i));
112 out->setHit(i,SBOut->getHit((nData/2)*iSet+i));
113 out->setbPos(i,SBOut->getPos((nData/2)*iSet+i));
114 }
115 return out;
116 }
117 else
118 {
119 return 0;
120 }
121}

◆ doCoincidence()

void LVL1TGCTrigger::TGCHighPtBoard::doCoincidence ( )
protectedinherited

Definition at line 170 of file TGCHighPtBoard.cxx.

171{
172 int chip;
173
174 setDecoderIn();
175
176 for( chip=0; chip<NumberOfChip; chip+=1){
177 TGCHitPattern* TSBHit = new TGCHitPattern (m_nChOfTSBHit);
178 TGCHitPattern* DSBHit = new TGCHitPattern (m_nChOfDSBHit);
179
180 decodeSlaveBoardOut(chip, TSBHit, DSBHit);
181
182 int block;
183 for(block=0; block < NBlockOfDSBChannel; block++){
184 doCoincidenceMatrix(chip, block, TSBHit, DSBHit);
185 if(m_decoderInDSB[chip][block/2])
186 if(m_decoderInDSB[chip][block/2]->getHit(block%2)){
187 m_decoderInDSB[chip][block/2]->print(block%2);
188 }
189 // load SLB outputs to lowpTOutput
190 loadLowPtOutput(chip, block, m_decoderInDSB[chip][block/2]);
191 }
192 trackSelector(chip,PtHigh);
193 trackSelector(chip,PtLow);
194 highLowSelector(chip);
195
196 delete TSBHit;
197 TSBHit=0;
198 delete DSBHit;
199 DSBHit=0;
200 }
201
203}
virtual void clearDecoderIn()=0
virtual void doCoincidenceMatrix(int chip, int block, const TGCHitPattern *tHit, const TGCHitPattern *dHit)=0
virtual void decodeSlaveBoardOut(int chip, TGCHitPattern *tHit, TGCHitPattern *dHit)=0
virtual void highLowSelector(int chip)
void loadLowPtOutput(int chip, int block, TGCSlaveBoardOut *dataDSB)
void trackSelector(int chip, int ptIn)
const int NBlockOfDSBChannel

◆ doCoincidenceMatrix()

void LVL1TGCTrigger::TGCStripHighPtBoard::doCoincidenceMatrix ( int chip,
int block,
const TGCHitPattern * tHit,
const TGCHitPattern * dHit )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 201 of file TGCStripHighPtBoard.cxx.

205{
206 int nChUnitOfDSBHit=m_nChOfDSBHit/NBlockOfDSBChannel;
207 int maxTSBCh=(block+1)*nChUnitOfDSBHit;
208 int minTSBCh=block*nChUnitOfDSBHit;
209#ifdef TGCCOUT
210 std::cout << "# Strip doCoincidenceMatrix() chip:" << chip << " block:" << block << std::endl;
211#endif
212 for(int dev=0; dev<=m_maxDev; dev+=1) {
213 // convert Nonlinear dPhi
214 int dp = getNonLinearDelta(dev);
215 if (dp<0) continue;
216
217 int Oring, DevOrg;
218 int DSBCh, TSBCh;
219 for (int isgn=1; isgn >-2; isgn-=2) {
220 if ( (dev==0) && (isgn==-1) ) continue;
221 for(int i=0; i<nChUnitOfDSBHit; i+=1) {
222 //total ch from doublet in a block
223 if(dev>2*m_maxDev-m_maxDevOred){
224 Oring = 1;
225 DevOrg = 2*m_maxDev-m_maxDevOred + (dev - (2*m_maxDev-m_maxDevOred))*2 - 1;
226 } else {
227 Oring = 0;
228 DevOrg = dev;
229 }
230 for(int ior = 0; ior <= Oring; ior++) {
231 DSBCh = nChUnitOfDSBHit*block + i;
232 TSBCh = DSBCh + isgn*m_priorSign*(DevOrg + ior);
233 if ( ((isgn>0) && ( (block%2==0)||((block%2==1)&&(TSBCh<maxTSBCh)) ) ) || // dphi>=0
234 ((isgn<0) && ( (block%2==1)||((block%2==0)&&(TSBCh>=minTSBCh)) ) ) ){ // dphi<0
235 if(tHit->getChannel(TSBCh) && dHit->getChannel(DSBCh)) {
236#ifdef TGCDEBUG
237 std::cout<< "HighPt" << std::endl
238 << " th&&dh==1 priorSign*dev:" << m_priorSign
239 << "*" << dev
240 << " DSBCh:" << DSBCh
241 << " TSBCh:" << TSBCh << std::endl;
242#endif
243 m_highPtBoardOut->setPt(chip,block,PtHigh);
244 m_highPtBoardOut->setHit(chip,block,true);
245 m_highPtBoardOut->setDev(chip,block,isgn*m_priorSign*dp);
246 // assume that a unit of position is quarter of nch of DSB.
247 m_highPtBoardOut->setPos(chip,block,i/(m_nChOfDSBOut/4)); // !
248 return;
249 }
250 }
251 } // loop ior
252 } // loop i
253 } //loop isgn
254
255 } //loop dev
256 m_highPtBoardOut->setHit(chip,block,false);
257}

◆ eraseHighPtOutput()

void LVL1TGCTrigger::TGCHighPtBoard::eraseHighPtOutput ( )
protectedinherited

Definition at line 154 of file TGCHighPtBoard.cxx.

155{
156 if(m_highPtBoardOut!=0){
157 delete m_highPtBoardOut;
159 }
160}

◆ eraseLowPtOutput()

void LVL1TGCTrigger::TGCHighPtBoard::eraseLowPtOutput ( )
protectedinherited

Definition at line 162 of file TGCHighPtBoard.cxx.

163{
164 if(m_lowPtBoardOut!=0){
165 delete m_lowPtBoardOut;
167 }
168}

◆ eraseOutput()

void LVL1TGCTrigger::TGCHighPtBoard::eraseOutput ( )
inherited

Definition at line 149 of file TGCHighPtBoard.cxx.

150{
152}

◆ getId()

int LVL1TGCTrigger::TGCHighPtBoard::getId ( ) const
inlineinherited

Definition at line 124 of file TGCHighPtBoard.h.

125{
126 return m_id;
127}

◆ getNonLinearDelta()

int LVL1TGCTrigger::TGCStripHighPtBoard::getNonLinearDelta ( int dev) const
protected

Definition at line 384 of file TGCStripHighPtBoard.cxx.

385{
386 if (dev >=12) return 8; // set dev=8 in case of out of range
387 else if (dev >=10) return 7;
388 else if (dev >=8) return 6;
389 else if (dev >=6) return 5;
390 else if (dev >=4) return 4;
391 else return dev;
392}

◆ getOutput()

TGCHighPtChipOut * LVL1TGCTrigger::TGCHighPtBoard::getOutput ( )
inherited

Definition at line 144 of file TGCHighPtBoard.cxx.

145{
146 return m_highPtChipOut;
147}

◆ getRegion()

TGCRegionType LVL1TGCTrigger::TGCHighPtBoard::getRegion ( ) const
inlineinherited

Definition at line 50 of file TGCHighPtBoard.h.

50{ return m_region;}

◆ getTSBOut()

TGCSlaveBoardOut * LVL1TGCTrigger::TGCHighPtBoard::getTSBOut ( int chip,
int port )
inherited

Definition at line 225 of file TGCHighPtBoard.cxx.

226{
227 return m_TSBOut[chip][port];
228}

◆ getType()

int LVL1TGCTrigger::TGCHighPtBoard::getType ( ) const
inlineinherited

Definition at line 130 of file TGCHighPtBoard.h.

131{
132 return m_type;
133}

◆ highLowSelector()

void LVL1TGCTrigger::TGCStripHighPtBoard::highLowSelector ( int chip)
protectedvirtual

Reimplemented from LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 259 of file TGCStripHighPtBoard.cxx.

260{
261 int iblock;
262 int highPt1stBlock, highPt2ndBlock;
263 int lowPt1stBlock, lowPt2ndBlock;
264 int pos, dev;
265 // Get 1st, 2nd candidate block for High-PT
266 highPt1stBlock = -1;
267 highPt2ndBlock = -1;
268 for(iblock=0;iblock<NBlockOfDSBChannel;iblock+=1){
269 switch (m_highPtBoardOut->getSel(chip,iblock)){
270 case 0: // No Hit
271 break;
272 case 1: // 1st candidate
273 highPt1stBlock = iblock;
274 break;
275 case 2: // 2nd candidate
276 highPt2ndBlock = iblock;
277 break;
278 default:
279 break;
280 }
281 }
282 // Get 1st, 2nd candidate block for Low-PT
283 lowPt1stBlock = -1;
284 lowPt2ndBlock = -1;
285 for(iblock=0;iblock<NBlockOfDSBChannel;iblock+=1){
286 switch (m_lowPtBoardOut->getSel(chip,iblock)){
287 case 0: // No Hit
288 break;
289 case 1: // 1st candidate
290 lowPt1stBlock = iblock;
291 break;
292 case 2: // 2nd candidate
293 lowPt2ndBlock = iblock;
294 break;
295 default:
296 break;
297 }
298 }
299
300 if (highPt1stBlock < 0){ //No HPT Matrix Output
301 if (lowPt1stBlock >= 0){
302 // LPT 1st
303 pos=m_lowPtBoardOut->getPos(chip,lowPt1stBlock);
304 dev=m_lowPtBoardOut->getDev(chip,lowPt1stBlock);
306 m_highPtChipOut->setSel(chip,FirstCandidate,1);
307 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
308 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
309 m_highPtChipOut->setHitID(chip,FirstCandidate,lowPt1stBlock);
310 }
311 if (lowPt2ndBlock >= 0){
312 // LPT 2nd
313 pos=m_lowPtBoardOut->getPos(chip,lowPt2ndBlock);
314 dev=m_lowPtBoardOut->getDev(chip,lowPt2ndBlock);
316 m_highPtChipOut->setSel(chip,SecondCandidate,2);
317 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
318 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
319 m_highPtChipOut->setHitID(chip,SecondCandidate,lowPt2ndBlock);
320 }
321 return;
322 } else if (highPt2ndBlock < 0){ // 1 HPT Matrix Output
323 // HPT 1st
324 pos=m_highPtBoardOut->getPos(chip,highPt1stBlock);
325 dev=m_highPtBoardOut->getDev(chip,highPt1stBlock);
326 if ((dev>-8) && (dev<8)) { // check if |dev|<8
328 m_highPtChipOut->setSel(chip,FirstCandidate,1);
329 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
330 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
331 m_highPtChipOut->setHitID(chip,FirstCandidate,highPt1stBlock);
332 }
333
334 if ((lowPt1stBlock >= 0) &&
335 !((lowPt1stBlock == highPt1stBlock) && ((m_lowPtBoardOut->getPos(chip,lowPt1stBlock)) == (m_highPtBoardOut->getPos(chip,highPt1stBlock))))
336 ){ //for vi }
337 // LPT 1st (as 2nd candidate)
338 pos=m_lowPtBoardOut->getPos(chip,lowPt1stBlock);
339 dev=m_lowPtBoardOut->getDev(chip,lowPt1stBlock);
341 m_highPtChipOut->setSel(chip,SecondCandidate,2);
342 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
343 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
344 m_highPtChipOut->setHitID(chip,SecondCandidate,lowPt1stBlock);
345 return;
346 } else if ((lowPt2ndBlock >= 0) &&
347 !((lowPt2ndBlock == highPt1stBlock) && ((m_lowPtBoardOut->getPos(chip,lowPt2ndBlock)) == (m_highPtBoardOut->getPos(chip,highPt1stBlock))))
348 ){
349
350 // LPT 2nd (as 2nd candidate)
351 pos=m_lowPtBoardOut->getPos(chip,lowPt2ndBlock);
352 dev=m_lowPtBoardOut->getDev(chip,lowPt2ndBlock);
354 m_highPtChipOut->setSel(chip,SecondCandidate,2);
355 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
356 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
357 m_highPtChipOut->setHitID(chip,SecondCandidate,lowPt2ndBlock);
358 return;
359 }
360 } else { // 2 HPT Matrix Outputs
361 // HPT 1st
362 pos=m_highPtBoardOut->getPos(chip,highPt1stBlock);
363 dev=m_highPtBoardOut->getDev(chip,highPt1stBlock);
364 if ((dev>-8) && (dev<8)) { // check if |dev|<8
366 m_highPtChipOut->setSel(chip,FirstCandidate,1);
367 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
368 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
369 m_highPtChipOut->setHitID(chip,FirstCandidate,highPt1stBlock);
370 }
371 // HPT 2nd
372 pos=m_highPtBoardOut->getPos(chip,highPt2ndBlock);
373 dev=m_highPtBoardOut->getDev(chip,highPt2ndBlock);
374 if ((dev>-8) && (dev<8)) { // check if |dev|<8
376 m_highPtChipOut->setSel(chip,SecondCandidate,2);
377 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
378 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
379 m_highPtChipOut->setHitID(chip,SecondCandidate,highPt2ndBlock);
380 }
381 }
382}

◆ loadLowPtOutput()

void LVL1TGCTrigger::TGCHighPtBoard::loadLowPtOutput ( int chip,
int block,
TGCSlaveBoardOut * dataDSB )
protectedinherited

Definition at line 206 of file TGCHighPtBoard.cxx.

208{
209 if(dataDSB!=0){
210 if(dataDSB->getHit(block%2)){
211 int pos=dataDSB->getPos(block%2);
212 int dev=dataDSB->getDev(block%2);
213 m_lowPtBoardOut->setPt(chip,block,PtLow);
214 m_lowPtBoardOut->setHit(chip,block,true);
215 m_lowPtBoardOut->setDev(chip,block,dev);
216 m_lowPtBoardOut->setPos(chip,block,pos/(m_nChOfDSBOut/4)); // !
217 }else{
218 m_lowPtBoardOut->setHit(chip,block,false);
219 }
220 }else{
221 m_lowPtBoardOut->setHit(chip,block,false);
222 }
223}

◆ setAdjacentHPB()

void LVL1TGCTrigger::TGCHighPtBoard::setAdjacentHPB ( int side,
TGCHighPtBoard * hpt )
inlineinherited

Definition at line 56 of file TGCHighPtBoard.h.

56{ m_adjacentHPB[side]=hpt;};
TGCHighPtBoard * m_adjacentHPB[NumberOfAdjacentHPB]

◆ setDecoderIn()

void LVL1TGCTrigger::TGCStripHighPtBoard::setDecoderIn ( )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 24 of file TGCStripHighPtBoard.cxx.

25{
30
34
38 m_decoderInTSB[ChipA][3] = 0;
39
42 m_decoderInTSB[ChipB][2] = 0;
43 m_decoderInTSB[ChipB][3] = 0;
44
45 }
46
48 m_decoderInDSB[ChipA][0] = 0;
50 m_decoderInDSB[ChipA][2] = 0;
51
52 m_decoderInDSB[ChipB][0] = 0;
53 m_decoderInDSB[ChipB][1] = 0;
54 m_decoderInDSB[ChipB][2] = 0;
55
56
57 m_decoderInTSB[ChipA][0] = 0;
59 m_decoderInTSB[ChipA][2] = 0;
60 m_decoderInTSB[ChipA][3] = 0;
61
62 m_decoderInTSB[ChipB][0] = 0;
63 m_decoderInTSB[ChipB][1] = 0;
64 m_decoderInTSB[ChipB][2] = 0;
65 m_decoderInTSB[ChipB][3] = 0;
66
67 }
68}
TGCSlaveBoardOut * divideTSBOut(int iSet, TGCSlaveBoardOut *SBOut)

◆ setDSB()

void LVL1TGCTrigger::TGCHighPtBoard::setDSB ( int connector,
TGCSlaveBoard * SBIn )
inlineinherited

Definition at line 136 of file TGCHighPtBoard.h.

137{
138 int port = connector % s_NumberOfDSBOut;
139 int chip = connector / s_NumberOfDSBOut;
140 m_DSB[chip][port] = SBIn;
141}

◆ setId()

void LVL1TGCTrigger::TGCHighPtBoard::setId ( int idIn)
inlineinherited

Definition at line 118 of file TGCHighPtBoard.h.

119{
120 m_id = idIn;
121}

◆ setRegion()

void LVL1TGCTrigger::TGCHighPtBoard::setRegion ( const TGCRegionType regionIn)
inlineinherited

Definition at line 51 of file TGCHighPtBoard.h.

51{ m_region = regionIn;}

◆ setTSB()

void LVL1TGCTrigger::TGCHighPtBoard::setTSB ( int connector,
TGCSlaveBoard * SBIn )
inlineinherited

Definition at line 144 of file TGCHighPtBoard.h.

145{
146 int port = connector % s_NumberOfTSBOut;
147 int chip = connector / s_NumberOfTSBOut;
148 m_TSB[chip][port] = SBIn;
149}

◆ setType()

void LVL1TGCTrigger::TGCHighPtBoard::setType ( int typeIn)
inlineinherited

Definition at line 49 of file TGCHighPtBoard.h.

49{ m_type=typeIn;}

◆ showResult()

void LVL1TGCTrigger::TGCHighPtBoard::showResult ( ) const
inherited

Definition at line 415 of file TGCHighPtBoard.cxx.

416{
417
418#ifdef TGCCOUT
419 int i,j,k, chip, iBlock, iCandidate;
420 std::cout << "#HighPtBoard::showResult()" << std::endl;
421 std::cout<<"#HPB [Input] bid=" << m_bid;
422 std::cout.width(2);
423 std::cout << " type=" << ((m_type==WHPB) ? "WHPB" : "SHPB" );
424 std::cout.width(2);
425 std::cout << " region=" << ( (m_region==TGCRegionType::FORWARD) ? "FWD" : "END");
426 std::cout.width(2);
427 std::cout << " id=" << m_id << std::endl;
428 for( j=0; j<s_NumberOfTSBOut; j+=1){
429 for( i=0; i<NumberOfChip; i+=1){
430 if(m_TSBOut[i][j]!=0){
431 for( k=0; k<m_TSBOut[i][j]->getNumberOfData(); k+=1)
432 if(m_TSBOut[i][j]->getHit(k)){
433 std::cout << "\t[";
434 std::cout.width(2);
435 std::cout << "type=" << m_TSBOut[i][j]->getOrigin()->getTypeName(m_TSBOut[i][j]->getOrigin()->getType());
436 std::cout.width(2);
437 std::cout << " region=" << ((m_TSBOut[i][j]->getOrigin()->getRegion()==TGCRegionType::ENDCAP) ? "END" : "FWD");
438 std::cout.width(2);
439 std::cout << " id=" <<m_TSBOut[i][j]->getOrigin()->getId();
440 std::cout.width(2);
441 std::cout << " iChip=" << i;
442 std::cout.width(2);
443 std::cout << " iTSBOut=" << j;
444 std::cout.width(2);
445 std::cout << " k=" << k;
446 std::cout.width(3);
447 std::cout << " pos=" << m_TSBOut[i][j]->getPos(k);
448 std::cout << "]" << std::endl;
449 }
450 }
451 if(m_DSBOut[i][j]!=0){
452 for( k=0; k<m_DSBOut[i][j]->getNumberOfData(); k+=1)
453 if(m_DSBOut[i][j]->getHit(k)){
454 std::cout<<"\t[";
455 std::cout.width(2);
456 std::cout << "type=" << m_DSBOut[i][j]->getOrigin()->getTypeName(m_DSBOut[i][j]->getOrigin()->getType());
457 std::cout.width(2);
458 std::cout << " region=" <<((m_DSBOut[i][j]->getOrigin()->getRegion()==TGCRegionType::ENDCAP) ? "END" : "FWD");
459 std::cout.width(2);
460 std::cout << " id=" <<m_DSBOut[i][j]->getOrigin()->getId();
461 std::cout.width(2);
462 std::cout << " i=" << i;
463 std::cout.width(2);
464 std::cout << " j=" << j;
465 std::cout.width(2);
466 std::cout << " k=" << k;
467 std::cout.width(3);
468 std::cout << " pos=" << m_DSBOut[i][j]->getPos(k);
469 std::cout.width(3);
470 std::cout << " dev=" << m_DSBOut[i][j]->getDev(k);
471 std::cout << "]" << std::endl;
472 }
473 }
474 }
475 }
476 std::cout<<std::endl;
477
478 std::cout << "#HPB [Intermediate] bid=" << m_bid;
479 std::cout.width(2);
480 std::cout << " type=" << ((m_type==WHPB) ? "WHPB" : "SHPB" );
481 std::cout.width(2);
482 std::cout << " region=" << ( (m_region==TGCRegionType::FORWARD) ? "FWD" : "END");
483 std::cout.width(2);
484 std::cout << " id=" << m_id << std::endl;
485 for( chip=0; chip<NumberOfChip; chip+=1){
486 std::cout<<"\t[";
487 std::cout.width(2);
488 std::cout << "iChip=" << chip << "]" << std::endl;
489
490 // m_highPtBoardOut
491 for(iBlock=0; iBlock<NBlockOfDSBChannel; iBlock+=1){
492 std::cout<<"\t [highPtBoardOut: ";
493 std::cout.width(2);
494 std::cout << "block=" << iBlock;
495 if(m_highPtBoardOut->getHit(chip,iBlock)){
496 std::cout.width(2);
497 std::cout << " pos=" << m_highPtBoardOut->getPos(chip,iBlock);
498 std::cout.width(4);
499 std::cout << " dev=" << m_highPtBoardOut->getDev(chip,iBlock);
500 }
501 std::cout << "]" << std::endl;
502 }
503
504 // m_lowPtBoardOut
505 for(iBlock=0; iBlock<NBlockOfDSBChannel; iBlock+=1){
506 std::cout<<"\t [lowPtBoardOut: ";
507 std::cout.width(2);
508 std::cout << "block=" << iBlock;
509 if(m_lowPtBoardOut->getHit(chip,iBlock)){
510 std::cout.width(2);
511 std::cout << " pos=" << m_lowPtBoardOut->getPos(chip,iBlock);
512 std::cout.width(4);
513 std::cout << " dev=" << m_lowPtBoardOut->getDev(chip,iBlock);
514 }
515 std::cout << "]" << std::endl;
516 }
517 }
518
519 std::cout << "#HPB [Output] bid=" << m_bid;
520 std::cout.width(2);
521 std::cout << " type=" << ((m_type==WHPB) ? "WHPB" : "SHPB" );
522 std::cout.width(2);
523 std::cout << " region=" << ( (m_region==TGCRegionType::FORWARD) ? "FWD" : "END");
524 std::cout.width(2);
525 std::cout << " id=" << m_id << std::endl;
526 for( chip=0; chip<NumberOfChip; chip+=1){
527 std::cout<<"\t[";
528 std::cout.width(2);
529 std::cout << "iChip=" << chip << "]" << std::endl;
530 for( iCandidate=0; iCandidate<2; iCandidate+=1){
531 if(m_highPtChipOut->getSel(chip,iCandidate)){
532 std::cout<<"\t [";
533 std::cout.width(2);
534 std::cout << "HitID=" << m_highPtChipOut->getHitID(chip,iCandidate);
535 std::cout << " Sel:" << m_highPtChipOut->getSel(chip,iCandidate);
536 if(m_highPtChipOut->getPt(chip,iCandidate)==PtHigh)
537 std::cout<<" Pt:1[high]";
538 else
539 std::cout<<" Pt:0[low ]";
540 std::cout.width(2);
541 std::cout << " pos=" << m_highPtChipOut->getPos(chip,iCandidate);
542 std::cout.width(4);
543 std::cout << " dev=" << m_highPtChipOut->getDev(chip,iCandidate);
544 std::cout << "]" << std::endl;
545 }
546 }
547 }
548#endif
549}
TGCRegionType getRegion() const

◆ trackSelector()

void LVL1TGCTrigger::TGCHighPtBoard::trackSelector ( int chip,
int ptIn )
protectedinherited

Definition at line 230 of file TGCHighPtBoard.cxx.

231{
232 int i,iblock,a,b;
233 int dev[NBlockOfDSBChannel];
234 int block[NBlockOfDSBChannel];
235
236 for( iblock=0; iblock<NBlockOfDSBChannel; iblock+=1){
237 block[iblock]=iblock;
238 if(ptIn==PtHigh){
239 if(m_highPtBoardOut->getHit(chip,iblock)) dev[iblock]=m_highPtBoardOut->getDev(chip,iblock);
240 else dev[iblock]=99;
241 } else { // Low-Pt track
242 if(m_lowPtBoardOut->getHit(chip,iblock)){
243 dev[iblock]=abs(m_lowPtBoardOut->getDev(chip,iblock))+m_maxDev+1;
244 if(m_lowPtBoardOut->getDev(chip,iblock)<0) dev[iblock]=-dev[iblock];
245 } else dev[iblock]=99;
246 }
247 }
248
249 // sort in ascending order of |dev|.
250 for(iblock=1;iblock<NBlockOfDSBChannel;iblock+=1){
251 a=dev[iblock];
252 b=block[iblock];
253 i=iblock-1;
254 while((i>=0)&&((abs(dev[i])>abs(a))||((abs(dev[i])==abs(a))&&(dev[i]!=a)&&(m_priorSign*dev[i]<0)))){
255 dev[i+1]=dev[i];
256 block[i+1]=block[i];
257 i--;
258 }
259 dev[i+1]=a;
260 block[i+1]=b;
261 }
262
263 for(iblock=0;iblock<m_maxNumberOfHPBData;iblock+=1){
264 if(ptIn==PtHigh){
265 if(m_highPtBoardOut->getHit(chip,block[iblock]))
266 m_highPtBoardOut->setSel(chip,block[iblock],iblock+1);
267 } else { // Low-Pt track
268 if(m_lowPtBoardOut->getHit(chip,block[iblock]))
269 m_lowPtBoardOut->setSel(chip,block[iblock],iblock+1);
270 }
271 }
272}
static Double_t a

Member Data Documentation

◆ m_adjacentHPB

TGCHighPtBoard* LVL1TGCTrigger::TGCHighPtBoard::m_adjacentHPB[NumberOfAdjacentHPB]
protectedinherited

Definition at line 96 of file TGCHighPtBoard.h.

◆ m_bid

int LVL1TGCTrigger::TGCHighPtBoard::m_bid
protectedinherited

Definition at line 101 of file TGCHighPtBoard.h.

◆ m_decoderInDSB

TGCSlaveBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_decoderInDSB[NumberOfChip][NDecoderInDSB]
protectedinherited

Definition at line 98 of file TGCHighPtBoard.h.

◆ m_decoderInTSB

TGCSlaveBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_decoderInTSB[NumberOfChip][NDecoderInTSB]
protectedinherited

Definition at line 97 of file TGCHighPtBoard.h.

◆ m_DSB

TGCSlaveBoard* LVL1TGCTrigger::TGCHighPtBoard::m_DSB[NumberOfChip][s_NumberOfDSBOut]
protectedinherited

Definition at line 92 of file TGCHighPtBoard.h.

◆ m_DSBOut

TGCSlaveBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_DSBOut[NumberOfChip][s_NumberOfDSBOut]
protectedinherited

Definition at line 94 of file TGCHighPtBoard.h.

◆ m_highPtBoardOut

TGCHighPtBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_highPtBoardOut
protectedinherited

Definition at line 89 of file TGCHighPtBoard.h.

◆ m_highPtChipOut

TGCHighPtChipOut* LVL1TGCTrigger::TGCHighPtBoard::m_highPtChipOut
protectedinherited

Definition at line 87 of file TGCHighPtBoard.h.

◆ m_id

int LVL1TGCTrigger::TGCHighPtBoard::m_id
protectedinherited

Definition at line 100 of file TGCHighPtBoard.h.

◆ m_idSectorLogic

int LVL1TGCTrigger::TGCHighPtBoard::m_idSectorLogic
protectedinherited

Definition at line 102 of file TGCHighPtBoard.h.

◆ m_lowPtBoardOut

TGCHighPtBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_lowPtBoardOut
protectedinherited

Definition at line 90 of file TGCHighPtBoard.h.

◆ m_maxDev

int LVL1TGCTrigger::TGCHighPtBoard::m_maxDev
protectedinherited

Definition at line 108 of file TGCHighPtBoard.h.

◆ m_maxDevOred

int LVL1TGCTrigger::TGCHighPtBoard::m_maxDevOred
protectedinherited

Definition at line 109 of file TGCHighPtBoard.h.

◆ m_maxNumberOfHPBData

int LVL1TGCTrigger::TGCHighPtBoard::m_maxNumberOfHPBData
protectedinherited

Definition at line 107 of file TGCHighPtBoard.h.

◆ m_nChInTSBRegion

int LVL1TGCTrigger::TGCHighPtBoard::m_nChInTSBRegion
protectedinherited

Definition at line 114 of file TGCHighPtBoard.h.

◆ m_nChOfDSBHit

int LVL1TGCTrigger::TGCHighPtBoard::m_nChOfDSBHit
protectedinherited

Definition at line 112 of file TGCHighPtBoard.h.

◆ m_nChOfDSBOut

int LVL1TGCTrigger::TGCHighPtBoard::m_nChOfDSBOut
protectedinherited

Definition at line 111 of file TGCHighPtBoard.h.

◆ m_nChOfTSBHit

int LVL1TGCTrigger::TGCHighPtBoard::m_nChOfTSBHit
protectedinherited

Definition at line 113 of file TGCHighPtBoard.h.

◆ m_nChOfTSBOut

int LVL1TGCTrigger::TGCHighPtBoard::m_nChOfTSBOut
protectedinherited

Definition at line 110 of file TGCHighPtBoard.h.

◆ m_priorSign

int LVL1TGCTrigger::TGCHighPtBoard::m_priorSign
protectedinherited

Definition at line 106 of file TGCHighPtBoard.h.

◆ m_region

TGCRegionType LVL1TGCTrigger::TGCHighPtBoard::m_region {TGCRegionType::FORWARD}
protectedinherited

Definition at line 104 of file TGCHighPtBoard.h.

◆ m_TSB

TGCSlaveBoard* LVL1TGCTrigger::TGCHighPtBoard::m_TSB[NumberOfChip][s_NumberOfTSBOut]
protectedinherited

Definition at line 93 of file TGCHighPtBoard.h.

◆ m_TSBOut

TGCSlaveBoardOut* LVL1TGCTrigger::TGCHighPtBoard::m_TSBOut[NumberOfChip][s_NumberOfTSBOut]
protectedinherited

Definition at line 95 of file TGCHighPtBoard.h.

◆ m_type

int LVL1TGCTrigger::TGCHighPtBoard::m_type
protectedinherited

Definition at line 103 of file TGCHighPtBoard.h.

◆ s_NumberOfDSBOut

int LVL1TGCTrigger::TGCHighPtBoard::s_NumberOfDSBOut = 3
staticconstexprprivateinherited

Definition at line 37 of file TGCHighPtBoard.h.

◆ s_NumberOfTSBOut

int LVL1TGCTrigger::TGCHighPtBoard::s_NumberOfTSBOut = 2
staticconstexprprivateinherited

Definition at line 36 of file TGCHighPtBoard.h.


The documentation for this class was generated from the following files: