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

#include <TGCSectorLogic.h>

Public Member Functions

 TGCSectorLogic (TGCArguments *, const TGCDatabaseManager *db, TGCRegionType regionIn, int id)
virtual ~TGCSectorLogic ()
 TGCSectorLogic (const TGCSectorLogic &right)
void getTrackSelectorOutput (std::shared_ptr< TGCTrackSelectorOut > &trackSelectorOut) const
int getTileMuonWord () const
int getInnerStationWord () const
void clockIn (const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, int bidIn, bool process=true)
int getId () const
int getModuleID () const
int getOctantID () const
int getSideID () const
TGCRegionType getRegion () const
void setWireHighPtBoard (int port, TGCHighPtBoard *highPtBoard)
void setStripHighPtBoard (TGCHighPtBoard *highPtBoard)
int getNumberOfWireHighPtBoard () const
void deleteHPBOut ()
TGCSSCControllergetSSCController ()
void setTMDB (std::shared_ptr< const LVL1TGC::TGCTMDB > tmdb)
void setNSW (std::shared_ptr< const LVL1TGC::TGCNSW > nsw)
void setBIS78 (std::shared_ptr< const LVL1TGC::TGCBIS78 > bis78)
void showResult ()
int getNumberOfSubSectorCluster () const
int getNumberOfSubSector () const
void dec2bin (int dec, char *binstr, int length)
int getBid () const
void setInnerTrackletSlots (const TGCInnerTrackletSlot *innerTrackletSlots[])
TGCArgumentstgcArgs ()
const TGCArgumentstgcArgs () const

Protected Types

enum  { MaxNumberOfWireHighPtBoard =2 }

Protected Member Functions

void collectInput ()
void doInnerCoincidence (const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, int SSCId, TGCRPhiCoincidenceOut *coincidenceOut)
void doInnerCoincidence (int SSCId, TGCRPhiCoincidenceOut *coincidenceOut)
void doTGCNSWCoincidence (TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCBIS78Coincidence (TGCRPhiCoincidenceOut *coincidenceOut)
bool doTILECoincidence (TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCEICoincidence (TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCFICoincidence (TGCRPhiCoincidenceOut *coincidenceOut)

Private Member Functions

TGCSectorLogicoperator= (const TGCSectorLogic &right)
bool hitTileMu (const uint8_t &mask, const uint8_t &hit6, const uint8_t &hit56) const

Private Attributes

int m_bid
int m_id
LVL1TGC::TGCSide m_sideId
int m_sectorId
int m_moduleId
int m_octantId
TGCRegionType m_region
int m_NumberOfWireHighPtBoard
bool m_useEIFI {false}
bool m_useTileMu {false}
bool m_useGoodMF {false}
bool m_nswSide {false}
TGCSSCController m_SSCController
TGCRPhiCoincidenceMatrix m_matrix
const LVL1TGC::TGCEIFICoincidenceMapm_mapEIFI
std::shared_ptr< const LVL1TGC::TGCTileMuCoincidenceLUTm_tileMuLUT
std::shared_ptr< const LVL1TGC::TGCTMDBm_pTMDB
std::shared_ptr< const LVL1TGC::TGCNSWm_nsw
std::shared_ptr< const TGCNSWCoincidenceMapm_mapNSW
std::shared_ptr< const LVL1TGC::TGCBIS78m_bis78
std::shared_ptr< const LVL1TGC::TGCBIS78CoincidenceMapm_mapBIS78
std::shared_ptr< const LVL1TGC::TGCGoodMFm_mapGoodMF
TGCTrackSelector m_trackSelector
std::shared_ptr< TGCTrackSelectorOutm_trackSelectorOut
int m_wordTileMuon
int m_wordInnerStation
TGCHighPtBoardm_wireHighPtBoard [MaxNumberOfWireHighPtBoard]
TGCHighPtChipOutm_wireHighPtChipOut [MaxNumberOfWireHighPtBoard]
TGCHighPtBoardm_stripHighPtBoard
TGCHighPtChipOutm_stripHighPtChipOut
const TGCInnerTrackletSlotm_innerTrackletSlots [TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR]
TGCArgumentsm_tgcArgs

Detailed Description

Definition at line 40 of file TGCSectorLogic.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
MaxNumberOfWireHighPtBoard 

Definition at line 88 of file TGCSectorLogic.h.

Constructor & Destructor Documentation

◆ TGCSectorLogic() [1/2]

LVL1TGCTrigger::TGCSectorLogic::TGCSectorLogic ( TGCArguments * tgcargs,
const TGCDatabaseManager * db,
TGCRegionType regionIn,
int id )

Definition at line 36 of file TGCSectorLogic.cxx.

38 : m_bid(0),
39 m_id(idIn),
40 m_region(regionIn),
42 m_SSCController(tgcargs,this),
43 m_matrix(tgcargs,this),
44 m_pTMDB(0),
45 m_trackSelector(this),
50 m_tgcArgs(tgcargs)
51{
52 m_sideId = static_cast<LVL1TGC::TGCSide>((idIn / NumberOfModule) / NumberOfOctant);
55
59 } else {
62 }
63
64 m_nswSide = (tgcArgs()->NSWSideInfo().find('A')!=std::string::npos && m_sideId == LVL1TGC::TGCSide::ASIDE)
65 || (tgcArgs()->NSWSideInfo().find('C')!=std::string::npos && m_sideId == LVL1TGC::TGCSide::CSIDE);
66
67 m_SSCController.setRegion(regionIn);
68
69 m_matrix.setSideId(m_sideId);
70 m_mapEIFI = db->getEIFICoincidenceMap(m_sideId);
71
73
74 m_matrix.setCoincidenceLUT(db->getBigWheelCoincidenceLUT());
75 m_tileMuLUT = db->getTileMuCoincidenceLUT();
76 m_useTileMu = (m_tileMuLUT != nullptr) && m_useTileMu;
77
78 m_mapGoodMF = db->getGoodMFMap();
79 m_mapNSW = db->getNSWCoincidenceMap(m_sideId, m_octantId, m_moduleId);
80 if(tgcArgs()->USE_BIS78()) m_mapBIS78 = db->getBIS78CoincidenceMap();
81
82 m_trackSelectorOut.reset(new TGCTrackSelectorOut());
83
84 for(int i=0; i<MaxNumberOfWireHighPtBoard; i++){
87 }
88
89 for(unsigned int iSlot=0; iSlot<TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR; iSlot++) {
90 m_innerTrackletSlots[iSlot] = 0;
91 }
92
94 if(m_mapEIFI == 0) m_useEIFI = false;
95 m_useGoodMF = (m_mapGoodMF != nullptr);
96 if(m_mapNSW == 0) tgcArgs()->set_USE_NSW(false);
97 if(m_mapBIS78 == 0) tgcArgs()->set_USE_BIS78(false);
98}
const std::string & NSWSideInfo() const
TGCHighPtChipOut * m_wireHighPtChipOut[MaxNumberOfWireHighPtBoard]
std::shared_ptr< const TGCNSWCoincidenceMap > m_mapNSW
TGCRPhiCoincidenceMatrix m_matrix
std::shared_ptr< const LVL1TGC::TGCBIS78CoincidenceMap > m_mapBIS78
const LVL1TGC::TGCEIFICoincidenceMap * m_mapEIFI
const TGCInnerTrackletSlot * m_innerTrackletSlots[TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR]
std::shared_ptr< TGCTrackSelectorOut > m_trackSelectorOut
std::shared_ptr< const LVL1TGC::TGCGoodMF > m_mapGoodMF
std::shared_ptr< const LVL1TGC::TGCTileMuCoincidenceLUT > m_tileMuLUT
TGCHighPtChipOut * m_stripHighPtChipOut
std::shared_ptr< const LVL1TGC::TGCTMDB > m_pTMDB
TGCHighPtBoard * m_wireHighPtBoard[MaxNumberOfWireHighPtBoard]
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:138
TGCSide
The sides of TGC (A- or C-side)

◆ ~TGCSectorLogic()

LVL1TGCTrigger::TGCSectorLogic::~TGCSectorLogic ( )
virtual

Definition at line 100 of file TGCSectorLogic.cxx.

101{}

◆ TGCSectorLogic() [2/2]

LVL1TGCTrigger::TGCSectorLogic::TGCSectorLogic ( const TGCSectorLogic & right)

Definition at line 251 of file TGCSectorLogic.cxx.

252 : m_bid(right.m_bid), m_id(right.m_id),
253 m_sideId(right.m_sideId),
254 m_sectorId(right.m_sectorId), m_moduleId(right.m_moduleId),
255 m_octantId(right.m_octantId),
256 m_region(right.m_region),
257 m_NumberOfWireHighPtBoard(right.m_NumberOfWireHighPtBoard),
258 m_useEIFI(right.m_useEIFI), m_useTileMu(right.m_useTileMu),
259 m_useGoodMF(right.m_useGoodMF), m_nswSide(right.m_nswSide),
260 m_SSCController(right.tgcArgs(),this),
261 m_matrix(right.tgcArgs(),this),
262 m_mapEIFI(right.m_mapEIFI),
263 m_pTMDB(right.m_pTMDB),
265 m_stripHighPtBoard(right.m_stripHighPtBoard),
267 m_tgcArgs(right.m_tgcArgs)
268{
269 for(int i=0; i<MaxNumberOfWireHighPtBoard; i++){
270 m_wireHighPtBoard[i] = 0;
272 }
273
274 for( int i = 0; i < m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
275 m_wireHighPtBoard[i] = right.m_wireHighPtBoard[i];
276 m_wireHighPtChipOut[i] = right.m_wireHighPtChipOut[i];
277 }
278
279 for (unsigned int iSlot=0; iSlot<TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR; iSlot++) {
280 m_innerTrackletSlots[iSlot] = right.m_innerTrackletSlots[iSlot];
281 }
282}

Member Function Documentation

◆ clockIn()

void LVL1TGCTrigger::TGCSectorLogic::clockIn ( const SG::ReadCondHandleKey< TGCTriggerData > & readCondKey,
int bidIn,
bool process = true )

Definition at line 137 of file TGCSectorLogic.cxx.

139{
140 // skip to process if want. (e.g. no hit in TGC)
141 if(!process) return;
142
143 m_bid=bidIn;
144
145 collectInput();
146
147 TGCSSCControllerOut* SSCCOut =
149#ifdef TGCDEBUG
150 SSCCOut->print();
151#endif
152 deleteHPBOut();
153
154 for(int SSCid=0; SSCid<getNumberOfSubSectorCluster(); SSCid+=1){
155 TGCRPhiCoincidenceOut* coincidenceOut = 0;
156 if(SSCCOut->hasHit(SSCid)){
157 m_matrix.clear();
158 m_matrix.setSSCId(SSCid);
159 m_matrix.inputR(SSCCOut->getR(SSCid),SSCCOut->getDR(SSCid),SSCCOut->getPtR(SSCid));
160 for(int phiposInSSC = 0 ;phiposInSSC < TGCSSCControllerOut::MaxNumberOfPhiInSSC; phiposInSSC++){
161 if(SSCCOut->hasHit(SSCid, phiposInSSC)){
162 m_matrix.inputPhi(SSCCOut->getPhi(SSCid,phiposInSSC),
163 SSCCOut->getDPhi(SSCid,phiposInSSC),
164 SSCCOut->getPtPhi(SSCid,phiposInSSC));
165 }
166 }
167 coincidenceOut = m_matrix.doCoincidence();
168 }
170 if(SSCCOut->hasHit(SSCid,true)){
171 m_matrix.clear();
172 m_matrix.setSSCId(SSCid);
173 m_matrix.inputR(SSCCOut->getR(SSCid),SSCCOut->getDR(SSCid),SSCCOut->getPtR(SSCid));
174 for(int phiposInSSC = 0 ;phiposInSSC < TGCSSCControllerOut::MaxNumberOfPhiInSSC; phiposInSSC++){
175 if(SSCCOut->hasHit(SSCid, phiposInSSC, true)){
176 m_matrix.inputPhi(SSCCOut->getPhi(SSCid,phiposInSSC,true),
177 SSCCOut->getDPhi(SSCid,phiposInSSC,true),
178 SSCCOut->getPtPhi(SSCid,phiposInSSC,true));
179 }
180 }
181
182 TGCRPhiCoincidenceOut* oredCoincidenceOut = m_matrix.doCoincidence();
183 if (oredCoincidenceOut) {
184 if(coincidenceOut) {
185 if (coincidenceOut->isSuperior(oredCoincidenceOut)) {
186 delete oredCoincidenceOut;
187 } else {
188 delete coincidenceOut;
189 coincidenceOut = oredCoincidenceOut;
190 }
191 } else {
192 coincidenceOut = oredCoincidenceOut;
193 }
194 }
195 }
196
197 if (coincidenceOut) {
198 if (m_useGoodMF) {
199 bool isgoodMF = m_mapGoodMF->test_GoodMF(m_moduleId,SSCid,coincidenceOut->getRoI());
200 coincidenceOut->setGoodMFFlag(isgoodMF);
201 }
202 }
203
205 // do coincidence with Inner Tracklet of EI, NSW, Tile, and/or RPC-BIS78
206 doInnerCoincidence(SSCid, coincidenceOut);
207
208 if (coincidenceOut) {
209 m_trackSelector.input(coincidenceOut);
210 }
211 }
212 if(SSCCOut!=0) delete SSCCOut;
213 SSCCOut=0;
214
215 // Track selector chooses up to 4 track candidates to be sent to MUCTPI.
217}
void doInnerCoincidence(const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, int SSCId, TGCRPhiCoincidenceOut *coincidenceOut)
const std::string process

◆ collectInput()

void LVL1TGCTrigger::TGCSectorLogic::collectInput ( )
protected

Definition at line 219 of file TGCSectorLogic.cxx.

220{
221 for(int i = 0; i < m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
222 m_wireHighPtChipOut[i] = m_wireHighPtBoard[i]->getOutput();
223 m_wireHighPtBoard[i]->eraseOutput();
224 }
225
227 m_stripHighPtBoard->eraseOutput();
228}

◆ dec2bin()

void LVL1TGCTrigger::TGCSectorLogic::dec2bin ( int dec,
char * binstr,
int length )

Definition at line 318 of file TGCSectorLogic.cxx.

319{
320 for (int i=0; i<length; i++){
321 if((dec>>i) & 1)
322 binstr[length-1-i] = '1';
323 else
324 binstr[length-1-i] = '0';
325 }
326 binstr[length] ='\0';
327}
double length(const pvec &v)
binstr(value, width)
Definition MenuUtils.py:7

◆ deleteHPBOut()

void LVL1TGCTrigger::TGCSectorLogic::deleteHPBOut ( )

Definition at line 230 of file TGCSectorLogic.cxx.

231{
234
235 int i;
236 for( i = 0; i < m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
237 if(m_wireHighPtChipOut[i]!=0) delete m_wireHighPtChipOut[i];
239 }
240}

◆ doInnerCoincidence() [1/2]

void LVL1TGCTrigger::TGCSectorLogic::doInnerCoincidence ( const SG::ReadCondHandleKey< TGCTriggerData > & readCondKey,
int SSCId,
TGCRPhiCoincidenceOut * coincidenceOut )
protected

◆ doInnerCoincidence() [2/2]

void LVL1TGCTrigger::TGCSectorLogic::doInnerCoincidence ( int SSCId,
TGCRPhiCoincidenceOut * coincidenceOut )
protected

Definition at line 337 of file TGCSectorLogic.cxx.

337 {
338 if (coincidenceOut == 0) return;
339
340 int pt = coincidenceOut->getpT();
341 if (pt==0) return;
342
343 if(SSCId <= 4 && m_region == TGCRegionType::ENDCAP){ //3 detectors are used to inner coincidnece in SSC#0~4 in Endcap;
344
345 // WHICH INNER COINCIDENCE
346 // select a inner station detector which is used in inner coincidence algorithm.
347 //Defenation of innerDetectorNumber :: enum{EI=0,TILE,BIS78};
348
349 /*int innerDetectorNumber = which_InnerCoincidence();*/ //this function will be implemented.
350
351 // The below section is a tmporary method. It will be replaced with WICHINNER COINCIDENCE.
352 int pos = 4*coincidenceOut->getR() + coincidenceOut->getPhi();
353 // check if inner is used for the roi
354 bool validEI = (m_mapEIFI->getFlagROI(pos, coincidenceOut->getIdSSC(), m_sectorId) == 1);
355 // check if TileMu is used for the roi
356 bool validTileMu = (m_tileMuLUT->getFlagROI(pos, coincidenceOut->getIdSSC(), m_sectorId, m_sideId) == 1);
357 bool validBIS78 = false;
358 if(tgcArgs()->USE_BIS78()) validBIS78=(m_mapBIS78->getFlagROI(pos, coincidenceOut->getIdSSC(), m_sectorId, m_sideId) == 1);
359
360 bool isEI=false;
361 bool isTILE=false;
362 bool isBIS78=false;
363 if(m_useEIFI && validEI){isEI=doTGCEICoincidence(coincidenceOut);}
364 if(m_useTileMu && validTileMu){isTILE=doTILECoincidence(coincidenceOut); }
365 if(validBIS78){isBIS78=doTGCBIS78Coincidence(coincidenceOut); }
366
367 coincidenceOut->setInnerCoincidenceFlag(isEI || isTILE || isBIS78 || (!m_useEIFI && !validEI && !m_useTileMu && !validTileMu && !tgcArgs()->USE_BIS78() && !validBIS78));
368 } else {
369 // NSW or FI are used to inner coincidnece in SSC#5~18 in Endcap and Forward region
370 int pos = 4*coincidenceOut->getR() + coincidenceOut->getPhi();
371 bool validFI = (m_mapEIFI->getFlagROI(pos, coincidenceOut->getIdSSC(), m_sectorId) == 1) && m_region == TGCRegionType::ENDCAP;
372
373 if(tgcArgs()->USE_NSW() && m_nswSide){
374 if(tgcArgs()->FORCE_NSW_COIN()){
375 coincidenceOut->setInnerCoincidenceFlag(true);
376 }
377 else{
378 doTGCNSWCoincidence(coincidenceOut);
379 }
380 }
381 else if(!m_nswSide && validFI){
382 if(m_useEIFI){
383 coincidenceOut->setInnerCoincidenceFlag( doTGCFICoincidence(coincidenceOut) );
384 }
385 } else {
386 coincidenceOut->setInnerCoincidenceFlag(true); // TBD
387 }
388 }
389}
bool doTILECoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCEICoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCFICoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
bool doTGCBIS78Coincidence(TGCRPhiCoincidenceOut *coincidenceOut)
void doTGCNSWCoincidence(TGCRPhiCoincidenceOut *coincidenceOut)

◆ doTGCBIS78Coincidence()

bool LVL1TGCTrigger::TGCSectorLogic::doTGCBIS78Coincidence ( TGCRPhiCoincidenceOut * coincidenceOut)
protected

Definition at line 402 of file TGCSectorLogic.cxx.

402 {
403 std::shared_ptr<const LVL1TGC::BIS78TrigOut> pBIS78Out = m_bis78->getOutput(m_sectorId);
404 if ( pBIS78Out.get() == 0 ) return false;
405 int pt=0;
406
407 pt = m_mapBIS78->TGCBIS78_pt(pBIS78Out.get(),
408 coincidenceOut->getRoI());
409
410 return (pt > 0);
411}
std::shared_ptr< const LVL1TGC::TGCBIS78 > m_bis78

◆ doTGCEICoincidence()

bool LVL1TGCTrigger::TGCSectorLogic::doTGCEICoincidence ( TGCRPhiCoincidenceOut * coincidenceOut)
protected

Definition at line 431 of file TGCSectorLogic.cxx.

431 {
432
433 bool isHitInner=false;
434 for(unsigned int iSlot=0;iSlot<TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR; iSlot++) {
435 const TGCInnerTrackletSlot* hit = m_innerTrackletSlots[iSlot];
436
437 for (size_t reg=0;reg< TGCInnerTrackletSlot::NUMBER_OF_REGIONS; reg++){
438
439 // Wire
440 bool isHitWire = false;
441 for (size_t bit=0; bit< TGCInnerTrackletSlot::NUMBER_OF_TRIGGER_BITS; bit++){
442 isHitWire = m_mapEIFI->getTriggerBit(iSlot, coincidenceOut->getIdSSC(), m_sectorId, reg, TGCInnerTrackletSlot::WIRE, bit)
443 && hit->getTriggerBit(reg,TGCInnerTrackletSlot::WIRE,bit) ;
444 if(isHitWire){break;}
445 }
446
447 // Strip
448 bool isHitStrip = false;
449 for (size_t bit=0;bit< TGCInnerTrackletSlot::NUMBER_OF_TRIGGER_BITS; bit++){
450 isHitStrip = m_mapEIFI->getTriggerBit(iSlot, coincidenceOut->getIdSSC(), m_sectorId, reg, TGCInnerTrackletSlot::STRIP, bit)
451 && hit->getTriggerBit(reg,TGCInnerTrackletSlot::STRIP,bit);
452 if(isHitStrip){break;}
453 }
454
455 isHitInner = isHitWire && isHitStrip;
456 if(isHitInner){
457 return true;
458 }
459 }
460
461 }
462
463 return false;
464}

◆ doTGCFICoincidence()

bool LVL1TGCTrigger::TGCSectorLogic::doTGCFICoincidence ( TGCRPhiCoincidenceOut * coincidenceOut)
protected

Definition at line 467 of file TGCSectorLogic.cxx.

467 {
468 return doTGCEICoincidence(coincidenceOut);
469}

◆ doTGCNSWCoincidence()

void LVL1TGCTrigger::TGCSectorLogic::doTGCNSWCoincidence ( TGCRPhiCoincidenceOut * coincidenceOut)
protected

Definition at line 392 of file TGCSectorLogic.cxx.

392 {
393 std::shared_ptr<const LVL1TGC::NSWTrigOut> pNSWOut = m_nsw->getOutput(m_region,m_sideId,m_sectorId);
394
395 // for now, if there is a hit at NSW and the side is included in the detector mask, turn on the inner coin flag
396 coincidenceOut->setInnerCoincidenceFlag( pNSWOut->getNSWeta().size()>0 && m_nswSide);
397 return;
398
399 // will implement NSW pT calculation later
400}
std::shared_ptr< const LVL1TGC::TGCNSW > m_nsw

◆ doTILECoincidence()

bool LVL1TGCTrigger::TGCSectorLogic::doTILECoincidence ( TGCRPhiCoincidenceOut * coincidenceOut)
protected

Definition at line 413 of file TGCSectorLogic.cxx.

414{
416 // The function is called for Run-3 algorithim, but the Run-2 algorithm is
417 // temporarily used for instance.
419
420 bool isHitTileMu=false;
422 uint8_t maskTM = (uint8_t)(m_tileMuLUT->getTrigMask(mod, coincidenceOut->getIdSSC(), m_sectorId, m_sideId));
423 std::shared_ptr<const LVL1TGC::TGCTMDBOut> tm = m_pTMDB->getOutput(m_sideId, m_sectorId, mod);
424 isHitTileMu = isHitTileMu || this->hitTileMu(maskTM, tm->getHit6(), tm->getHit56());
425 }
426
427 return isHitTileMu;
428}
bool hitTileMu(const uint8_t &mask, const uint8_t &hit6, const uint8_t &hit56) const

◆ getBid()

int LVL1TGCTrigger::TGCSectorLogic::getBid ( ) const
inline

Definition at line 80 of file TGCSectorLogic.h.

80{return m_bid;};

◆ getId()

int LVL1TGCTrigger::TGCSectorLogic::getId ( ) const
inline

Definition at line 171 of file TGCSectorLogic.h.

172{
173 return m_id;
174}

◆ getInnerStationWord()

int LVL1TGCTrigger::TGCSectorLogic::getInnerStationWord ( ) const
inline

Definition at line 202 of file TGCSectorLogic.h.

203{
204 return m_wordInnerStation;
205}

◆ getModuleID()

int LVL1TGCTrigger::TGCSectorLogic::getModuleID ( ) const
inline

Definition at line 177 of file TGCSectorLogic.h.

178{
179 return m_moduleId;
180}

◆ getNumberOfSubSector()

int LVL1TGCTrigger::TGCSectorLogic::getNumberOfSubSector ( ) const
inline

Definition at line 158 of file TGCSectorLogic.h.

159{
161}
static constexpr unsigned int kNumberOfEndcapRoI
The number of ROIs in a endcap trigger sector.
static constexpr unsigned int kNRoiInSSC
The default number of ROIs in SSC.

◆ getNumberOfSubSectorCluster()

int LVL1TGCTrigger::TGCSectorLogic::getNumberOfSubSectorCluster ( ) const
inline

Definition at line 152 of file TGCSectorLogic.h.

153{
155}
static constexpr unsigned int kNMaxSSC
The maximim number of SubSector-Clusters (SSC) (i.e.

◆ getNumberOfWireHighPtBoard()

int LVL1TGCTrigger::TGCSectorLogic::getNumberOfWireHighPtBoard ( ) const
inline

Definition at line 164 of file TGCSectorLogic.h.

165{
167}

◆ getOctantID()

int LVL1TGCTrigger::TGCSectorLogic::getOctantID ( ) const
inline

Definition at line 184 of file TGCSectorLogic.h.

185{
186 return m_octantId;
187}

◆ getRegion()

TGCRegionType LVL1TGCTrigger::TGCSectorLogic::getRegion ( ) const
inline

Definition at line 61 of file TGCSectorLogic.h.

61{ return m_region;};

◆ getSideID()

int LVL1TGCTrigger::TGCSectorLogic::getSideID ( ) const
inline

Definition at line 190 of file TGCSectorLogic.h.

191{
192 return m_sideId;
193}

◆ getSSCController()

TGCSSCController * LVL1TGCTrigger::TGCSectorLogic::getSSCController ( )
inline

Definition at line 68 of file TGCSectorLogic.h.

68{return &m_SSCController;};

◆ getTileMuonWord()

int LVL1TGCTrigger::TGCSectorLogic::getTileMuonWord ( ) const
inline

Definition at line 196 of file TGCSectorLogic.h.

197{
198 return m_wordTileMuon;
199}

◆ getTrackSelectorOutput()

void LVL1TGCTrigger::TGCSectorLogic::getTrackSelectorOutput ( std::shared_ptr< TGCTrackSelectorOut > & trackSelectorOut) const

Definition at line 132 of file TGCSectorLogic.cxx.

133{
134 trackSelectorOut=m_trackSelectorOut;
135}

◆ hitTileMu()

bool LVL1TGCTrigger::TGCSectorLogic::hitTileMu ( const uint8_t & mask,
const uint8_t & hit6,
const uint8_t & hit56 ) const
private

returns whether TMDBOut satisfies the Tile-CW mask (Run-2 algo.)

Parameters
[in]maskTrigger mask per TMDB module (3 bits)
[in]hit6TMDBOut for D6
[in]hit56TMDBOut for D5+D6

Definition at line 472 of file TGCSectorLogic.cxx.

◆ operator=()

TGCSectorLogic & LVL1TGCTrigger::TGCSectorLogic::operator= ( const TGCSectorLogic & right)
private

Definition at line 285 of file TGCSectorLogic.cxx.

286{
287 if ( this != &right ) {
288 m_tgcArgs = right.m_tgcArgs;
289 m_matrix = right.m_matrix;
290 m_bid =right.m_bid;
291 m_id =right.m_id;
292 m_sideId = right.m_sideId;
293 m_sectorId=right.m_sectorId;
294 m_moduleId=right.m_moduleId;
295 m_octantId=right.m_octantId;
296 m_region=right.m_region;
297 m_NumberOfWireHighPtBoard=right.m_NumberOfWireHighPtBoard;
298 m_mapEIFI=right.m_mapEIFI;
299 m_pTMDB=right.m_pTMDB;
302 m_stripHighPtBoard=right.m_stripHighPtBoard;
304 m_useEIFI=right.m_useEIFI;
305 m_useTileMu=right.m_useTileMu;
306 for( int i = 0; i < m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
307 m_wireHighPtBoard[i] = right.m_wireHighPtBoard[i];
308 m_wireHighPtChipOut[i] = right.m_wireHighPtChipOut[i];
309 }
310 for (unsigned int iSlot=0; iSlot<TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR; iSlot++) {
311 m_innerTrackletSlots[iSlot] = right.m_innerTrackletSlots[iSlot];
312 }
313 }
314 return *this;
315}

◆ setBIS78()

void LVL1TGCTrigger::TGCSectorLogic::setBIS78 ( std::shared_ptr< const LVL1TGC::TGCBIS78 > bis78)

Definition at line 115 of file TGCSectorLogic.cxx.

116{
117 m_bis78 = std::move(bis78);
118 if(m_bis78 == 0) tgcArgs()->set_USE_BIS78(false);
119}

◆ setInnerTrackletSlots()

void LVL1TGCTrigger::TGCSectorLogic::setInnerTrackletSlots ( const TGCInnerTrackletSlot * innerTrackletSlots[])

Definition at line 329 of file TGCSectorLogic.cxx.

330{
331 for(unsigned int iSlot=0; iSlot<TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR; iSlot++) {
332 m_innerTrackletSlots[iSlot] = innerTrackletSlots[iSlot];
333 }
334}

◆ setNSW()

void LVL1TGCTrigger::TGCSectorLogic::setNSW ( std::shared_ptr< const LVL1TGC::TGCNSW > nsw)

Definition at line 109 of file TGCSectorLogic.cxx.

110{
111 m_nsw = std::move(nsw);
112 if(m_nsw == 0) tgcArgs()->set_USE_NSW(false);
113}

◆ setStripHighPtBoard()

void LVL1TGCTrigger::TGCSectorLogic::setStripHighPtBoard ( TGCHighPtBoard * highPtBoard)

Definition at line 127 of file TGCSectorLogic.cxx.

128{
129 m_stripHighPtBoard = highPtBoard;
130}

◆ setTMDB()

void LVL1TGCTrigger::TGCSectorLogic::setTMDB ( std::shared_ptr< const LVL1TGC::TGCTMDB > tmdb)

Definition at line 103 of file TGCSectorLogic.cxx.

104{
105 m_pTMDB = std::move(tmdb);
106 if (m_pTMDB==0) m_useTileMu = false;
107}

◆ setWireHighPtBoard()

void LVL1TGCTrigger::TGCSectorLogic::setWireHighPtBoard ( int port,
TGCHighPtBoard * highPtBoard )

Definition at line 121 of file TGCSectorLogic.cxx.

122{
123 m_wireHighPtBoard[port] = highPtBoard;
125}

◆ showResult()

void LVL1TGCTrigger::TGCSectorLogic::showResult ( )

Definition at line 243 of file TGCSectorLogic.cxx.

244{
245 std::cout<<"#SL O"<<" BID:"<<m_bid
246 <<" region:"<<((m_region == TGCRegionType::FORWARD) ? "FWD" : "END")
247 <<" SLid:"<<m_id<<" ";
248}

◆ tgcArgs() [1/2]

TGCArguments * LVL1TGCTrigger::TGCSectorLogic::tgcArgs ( )
inline

Definition at line 84 of file TGCSectorLogic.h.

84{ return m_tgcArgs; }

◆ tgcArgs() [2/2]

const TGCArguments * LVL1TGCTrigger::TGCSectorLogic::tgcArgs ( ) const
inline

Definition at line 85 of file TGCSectorLogic.h.

85{ return m_tgcArgs; }

Member Data Documentation

◆ m_bid

int LVL1TGCTrigger::TGCSectorLogic::m_bid
private

Definition at line 108 of file TGCSectorLogic.h.

◆ m_bis78

std::shared_ptr<const LVL1TGC::TGCBIS78> LVL1TGCTrigger::TGCSectorLogic::m_bis78
private

Definition at line 131 of file TGCSectorLogic.h.

◆ m_id

int LVL1TGCTrigger::TGCSectorLogic::m_id
private

Definition at line 110 of file TGCSectorLogic.h.

◆ m_innerTrackletSlots

const TGCInnerTrackletSlot* LVL1TGCTrigger::TGCSectorLogic::m_innerTrackletSlots[TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR]
private

Definition at line 147 of file TGCSectorLogic.h.

◆ m_mapBIS78

std::shared_ptr<const LVL1TGC::TGCBIS78CoincidenceMap> LVL1TGCTrigger::TGCSectorLogic::m_mapBIS78
private

Definition at line 132 of file TGCSectorLogic.h.

◆ m_mapEIFI

const LVL1TGC::TGCEIFICoincidenceMap* LVL1TGCTrigger::TGCSectorLogic::m_mapEIFI
private

Definition at line 126 of file TGCSectorLogic.h.

◆ m_mapGoodMF

std::shared_ptr<const LVL1TGC::TGCGoodMF> LVL1TGCTrigger::TGCSectorLogic::m_mapGoodMF
private

Definition at line 133 of file TGCSectorLogic.h.

◆ m_mapNSW

std::shared_ptr<const TGCNSWCoincidenceMap> LVL1TGCTrigger::TGCSectorLogic::m_mapNSW
private

Definition at line 130 of file TGCSectorLogic.h.

◆ m_matrix

TGCRPhiCoincidenceMatrix LVL1TGCTrigger::TGCSectorLogic::m_matrix
private

Definition at line 125 of file TGCSectorLogic.h.

◆ m_moduleId

int LVL1TGCTrigger::TGCSectorLogic::m_moduleId
private

Definition at line 112 of file TGCSectorLogic.h.

◆ m_nsw

std::shared_ptr<const LVL1TGC::TGCNSW> LVL1TGCTrigger::TGCSectorLogic::m_nsw
private

Definition at line 129 of file TGCSectorLogic.h.

◆ m_nswSide

bool LVL1TGCTrigger::TGCSectorLogic::m_nswSide {false}
private

Definition at line 120 of file TGCSectorLogic.h.

120{false};

◆ m_NumberOfWireHighPtBoard

int LVL1TGCTrigger::TGCSectorLogic::m_NumberOfWireHighPtBoard
private

Definition at line 115 of file TGCSectorLogic.h.

◆ m_octantId

int LVL1TGCTrigger::TGCSectorLogic::m_octantId
private

Definition at line 113 of file TGCSectorLogic.h.

◆ m_pTMDB

std::shared_ptr<const LVL1TGC::TGCTMDB> LVL1TGCTrigger::TGCSectorLogic::m_pTMDB
private

Definition at line 128 of file TGCSectorLogic.h.

◆ m_region

TGCRegionType LVL1TGCTrigger::TGCSectorLogic::m_region
private

Definition at line 114 of file TGCSectorLogic.h.

◆ m_sectorId

int LVL1TGCTrigger::TGCSectorLogic::m_sectorId
private

Definition at line 112 of file TGCSectorLogic.h.

◆ m_sideId

LVL1TGC::TGCSide LVL1TGCTrigger::TGCSectorLogic::m_sideId
private

Definition at line 111 of file TGCSectorLogic.h.

◆ m_SSCController

TGCSSCController LVL1TGCTrigger::TGCSectorLogic::m_SSCController
private

Definition at line 122 of file TGCSectorLogic.h.

◆ m_stripHighPtBoard

TGCHighPtBoard* LVL1TGCTrigger::TGCSectorLogic::m_stripHighPtBoard
private

Definition at line 143 of file TGCSectorLogic.h.

◆ m_stripHighPtChipOut

TGCHighPtChipOut* LVL1TGCTrigger::TGCSectorLogic::m_stripHighPtChipOut
private

Definition at line 144 of file TGCSectorLogic.h.

◆ m_tgcArgs

TGCArguments* LVL1TGCTrigger::TGCSectorLogic::m_tgcArgs
private

Definition at line 148 of file TGCSectorLogic.h.

◆ m_tileMuLUT

std::shared_ptr<const LVL1TGC::TGCTileMuCoincidenceLUT> LVL1TGCTrigger::TGCSectorLogic::m_tileMuLUT
private

Definition at line 127 of file TGCSectorLogic.h.

◆ m_trackSelector

TGCTrackSelector LVL1TGCTrigger::TGCSectorLogic::m_trackSelector
private

Definition at line 135 of file TGCSectorLogic.h.

◆ m_trackSelectorOut

std::shared_ptr<TGCTrackSelectorOut> LVL1TGCTrigger::TGCSectorLogic::m_trackSelectorOut
private

Definition at line 136 of file TGCSectorLogic.h.

◆ m_useEIFI

bool LVL1TGCTrigger::TGCSectorLogic::m_useEIFI {false}
private

Definition at line 117 of file TGCSectorLogic.h.

117{false};

◆ m_useGoodMF

bool LVL1TGCTrigger::TGCSectorLogic::m_useGoodMF {false}
private

Definition at line 119 of file TGCSectorLogic.h.

119{false};

◆ m_useTileMu

bool LVL1TGCTrigger::TGCSectorLogic::m_useTileMu {false}
private

Definition at line 118 of file TGCSectorLogic.h.

118{false};

◆ m_wireHighPtBoard

TGCHighPtBoard* LVL1TGCTrigger::TGCSectorLogic::m_wireHighPtBoard[MaxNumberOfWireHighPtBoard]
private

Definition at line 141 of file TGCSectorLogic.h.

◆ m_wireHighPtChipOut

TGCHighPtChipOut* LVL1TGCTrigger::TGCSectorLogic::m_wireHighPtChipOut[MaxNumberOfWireHighPtBoard]
private

Definition at line 142 of file TGCSectorLogic.h.

◆ m_wordInnerStation

int LVL1TGCTrigger::TGCSectorLogic::m_wordInnerStation
private

Definition at line 139 of file TGCSectorLogic.h.

◆ m_wordTileMuon

int LVL1TGCTrigger::TGCSectorLogic::m_wordTileMuon
private

Definition at line 138 of file TGCSectorLogic.h.


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