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

#include <TGCWireHighPtBoard.h>

Inheritance diagram for LVL1TGCTrigger::TGCWireHighPtBoard:
Collaboration diagram for LVL1TGCTrigger::TGCWireHighPtBoard:

Public Member Functions

 TGCWireHighPtBoard ()
virtual ~TGCWireHighPtBoard ()
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 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 ()
void collectInput ()
void createHighPtChipOut ()
void createHighPtBoardOut ()
void createLowPtBoardOut ()
void doCoincidence ()
void trackSelector (int chip, int ptIn)
virtual void highLowSelector (int chip)
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 14 of file TGCWireHighPtBoard.h.

Constructor & Destructor Documentation

◆ TGCWireHighPtBoard()

◆ ~TGCWireHighPtBoard()

virtual LVL1TGCTrigger::TGCWireHighPtBoard::~TGCWireHighPtBoard ( )
inlinevirtual

Definition at line 18 of file TGCWireHighPtBoard.h.

18{};

Member Function Documentation

◆ clearDecoderIn()

void LVL1TGCTrigger::TGCWireHighPtBoard::clearDecoderIn ( )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 51 of file TGCWireHighPtBoard.cxx.

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}
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::TGCWireHighPtBoard::decodeSlaveBoardOut ( int chip,
TGCHitPattern * tHit,
TGCHitPattern * dHit )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 60 of file TGCWireHighPtBoard.cxx.

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)){
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}

◆ 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}

◆ 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::TGCWireHighPtBoard::doCoincidenceMatrix ( int chip,
int block,
const TGCHitPattern * tHit,
const TGCHitPattern * dHit )
protectedvirtual

Implements LVL1TGCTrigger::TGCHighPtBoard.

Definition at line 105 of file TGCWireHighPtBoard.cxx.

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
116std::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}

◆ 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}

◆ 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::TGCHighPtBoard::highLowSelector ( int chip)
protectedvirtualinherited

Reimplemented in LVL1TGCTrigger::TGCStripHighPtBoard.

Definition at line 274 of file TGCHighPtBoard.cxx.

275{
276 int iblock;
277 int highPt1stBlock, highPt2ndBlock;
278 int lowPt1stBlock, lowPt2ndBlock;
279 int pos, dev;
280 // Get 1st, 2nd candidate block for High-PT
281 highPt1stBlock = -1;
282 highPt2ndBlock = -1;
283 for(iblock=0;iblock<NBlockOfDSBChannel;iblock+=1){
284 switch (m_highPtBoardOut->getSel(chip,iblock)){
285 case 0: // No Hit
286 break;
287 case 1: // 1st candidate
288 highPt1stBlock = iblock;
289 break;
290 case 2: // 2nd candidate
291 highPt2ndBlock = iblock;
292 break;
293 default:
294 break;
295 }
296 }
297 // Get 1st, 2nd candidate block for Low-PT
298 lowPt1stBlock = -1;
299 lowPt2ndBlock = -1;
300 for(iblock=0;iblock<NBlockOfDSBChannel;iblock+=1){
301 switch (m_lowPtBoardOut->getSel(chip,iblock)){
302 case 0: // No Hit
303 break;
304 case 1: // 1st candidate
305 lowPt1stBlock = iblock;
306 break;
307 case 2: // 2nd candidate
308 lowPt2ndBlock = iblock;
309 break;
310 default:
311 break;
312 }
313 }
314
315 if (highPt1stBlock < 0){ //No HPT Matrix Output
316 if (lowPt1stBlock >= 0){
317 // LPT 1st
318 pos=m_lowPtBoardOut->getPos(chip,lowPt1stBlock);
319 dev=m_lowPtBoardOut->getDev(chip,lowPt1stBlock);
321 m_highPtChipOut->setSel(chip,FirstCandidate,1);
322 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
323 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
324 m_highPtChipOut->setHitID(chip,FirstCandidate,lowPt1stBlock);
325 }
326 if (lowPt2ndBlock >= 0){
327 // LPT 2nd
328 pos=m_lowPtBoardOut->getPos(chip,lowPt2ndBlock);
329 dev=m_lowPtBoardOut->getDev(chip,lowPt2ndBlock);
331 m_highPtChipOut->setSel(chip,SecondCandidate,2);
332 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
333 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
334 m_highPtChipOut->setHitID(chip,SecondCandidate,lowPt2ndBlock);
335 }
336 return;
337 } else if (highPt2ndBlock < 0){ // 1 HPT Matrix Output
338 // HPT 1st
339 pos=m_highPtBoardOut->getPos(chip,highPt1stBlock);
340 dev=m_highPtBoardOut->getDev(chip,highPt1stBlock);
342 m_highPtChipOut->setSel(chip,FirstCandidate,1);
343 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
344 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
345 m_highPtChipOut->setHitID(chip,FirstCandidate,highPt1stBlock);
346
347 if ((lowPt1stBlock >= 0) &&
348 !((lowPt1stBlock == highPt1stBlock) && ((m_lowPtBoardOut->getPos(chip,lowPt1stBlock)) == (m_highPtBoardOut->getPos(chip,highPt1stBlock))))
349 ){ //for vi }
350 // LPT 1st (as 2nd candidate)
351 pos=m_lowPtBoardOut->getPos(chip,lowPt1stBlock);
352 dev=m_lowPtBoardOut->getDev(chip,lowPt1stBlock);
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,lowPt1stBlock);
358 return;
359 } else if ((lowPt2ndBlock >= 0) &&
360 !((lowPt2ndBlock == highPt1stBlock) && ((m_lowPtBoardOut->getPos(chip,lowPt2ndBlock)) == (m_highPtBoardOut->getPos(chip,highPt1stBlock))))
361 ){
362
363 // LPT 2nd (as 2nd candidate)
364 pos=m_lowPtBoardOut->getPos(chip,lowPt2ndBlock);
365 dev=m_lowPtBoardOut->getDev(chip,lowPt2ndBlock);
367 m_highPtChipOut->setSel(chip,SecondCandidate,2);
368 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
369 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
370 m_highPtChipOut->setHitID(chip,SecondCandidate,lowPt2ndBlock);
371 return;
372 }
373 } else { // 2 HPT Matrix Outputs
374 // HPT 1st
375 pos=m_highPtBoardOut->getPos(chip,highPt1stBlock);
376 dev=m_highPtBoardOut->getDev(chip,highPt1stBlock);
378 m_highPtChipOut->setSel(chip,FirstCandidate,1);
379 m_highPtChipOut->setDev(chip,FirstCandidate,dev);
380 m_highPtChipOut->setPos(chip,FirstCandidate,pos);
381 m_highPtChipOut->setHitID(chip,FirstCandidate,highPt1stBlock);
382 // HPT 2nd
383 pos=m_highPtBoardOut->getPos(chip,highPt2ndBlock);
384 dev=m_highPtBoardOut->getDev(chip,highPt2ndBlock);
386 m_highPtChipOut->setSel(chip,SecondCandidate,2);
387 m_highPtChipOut->setDev(chip,SecondCandidate,dev);
388 m_highPtChipOut->setPos(chip,SecondCandidate,pos);
389 m_highPtChipOut->setHitID(chip,SecondCandidate,highPt2ndBlock);
390 }
391}

◆ 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::TGCWireHighPtBoard::setDecoderIn ( )
protectedvirtual

◆ 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: