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

#include <TGCSector.h>

Public Types

enum  TGCHighPtBoardType { WHPB =0 , SHPB , NumberOfHighPtBoardType }
enum  TGCPatchPanelType {
  NOPP =-1 , WTPP =0 , WDPP , STPP ,
  SDPP , WIPP , SIPP , NumberOfPatchPanelType
}

Public Member Functions

 TGCSector (TGCArguments *, int idIn, TGCRegionType type, TGCForwardBackwardType forwardBackward, const TGCDatabaseManager *db, std::shared_ptr< const LVL1TGC::TGCTMDB > tmdb, std::shared_ptr< const LVL1TGC::TGCNSW > nsw, std::shared_ptr< const LVL1TGC::TGCBIS78 > bis78)
 TGCSector ()
virtual ~TGCSector ()
bool hasHit () const
void clearNumberOfHit ()
int distributeSignal (const TGCASDOut *asdOut)
TGCPatchPanelgetPP (int type, int index) const
TGCSlaveBoardgetSB (int type, int index) const
TGCHighPtBoardgetHPB (int type, int index) const
TGCSectorLogicgetSL ()
unsigned int getNumberOfPP (int type) const
unsigned int getNumberOfSB (int type) const
unsigned int getNumberOfHPB (int type) const
TGCRegionType getRegionType () const
int getId () const
void dumpModule ()
LVL1TGC::TGCSide getSideId () const
int getOctantId () const
int getModuleId () const
TGCArgumentstgcArgs ()
const TGCArgumentstgcArgs () const

Private Member Functions

 TGCSector (const TGCSector &right)=delete
TGCSectoroperator= (const TGCSector &right)=delete
std::shared_ptr< const LVL1TGC::TGCTMDBgetTMDB () const
std::shared_ptr< const LVL1TGC::TGCNSWgetNSW () const
std::shared_ptr< const LVL1TGC::TGCBIS78getBIS78 () const
int getPatchPanelType (TGCSignalType signal, int layer) const
void setModule (const TGCConnectionPPToSL *connection)
void connectPPToSB (const TGCConnectionPPToSB *connection)
void connectSBToHPB (const TGCConnectionSBToHPB *connection)
void connectHPBToSL (const TGCConnectionHPBToSL *connection)
void connectAdjacentPP ()
void connectAdjacentHPB ()

Private Attributes

int m_id {0}
TGCRegionType m_regionType
LVL1TGC::TGCSide m_sideId {LVL1TGC::TGCSide::ASIDE}
int m_numberOfHit
int m_octantId
int m_moduleId
TGCForwardBackwardType m_forwardBackward
const TGCConnectionASDToPPm_ASDToPP [NumberOfPatchPanelType]
std::vector< TGCPatchPanel * > m_PP [NumberOfPatchPanelType]
std::vector< TGCSlaveBoard * > m_SB [NumberOfSlaveBoardType]
std::vector< TGCHighPtBoard * > m_HPB [NumberOfHighPtBoardType]
TGCSectorLogicm_SL
std::shared_ptr< const LVL1TGC::TGCTMDBm_TMDB
std::shared_ptr< const LVL1TGC::TGCNSWm_NSW
std::shared_ptr< const LVL1TGC::TGCBIS78m_BIS78
TGCArgumentsm_tgcArgs
const TGCDatabaseManagerm_dbMgr

Friends

void TGCTimingManager::startPatchPanel (TGCSector *sector, TGCDatabaseManager *db)
void TGCTimingManager::startSlaveBoard (TGCSector *sector)
void TGCTimingManager::startHighPtBoard (TGCSector *sector)
void TGCTimingManager::startSectorLogic (TGCSector *sector)

Detailed Description

Definition at line 30 of file TGCSector.h.

Member Enumeration Documentation

◆ TGCHighPtBoardType

Enumerator
WHPB 
SHPB 
NumberOfHighPtBoardType 

Definition at line 33 of file TGCSector.h.

◆ TGCPatchPanelType

Constructor & Destructor Documentation

◆ TGCSector() [1/3]

LVL1TGCTrigger::TGCSector::TGCSector ( LVL1TGCTrigger::TGCArguments * tgcargs,
int idIn,
TGCRegionType type,
TGCForwardBackwardType forwardBackward,
const TGCDatabaseManager * db,
std::shared_ptr< const LVL1TGC::TGCTMDB > tmdb,
std::shared_ptr< const LVL1TGC::TGCNSW > nsw,
std::shared_ptr< const LVL1TGC::TGCBIS78 > bis78 )

Definition at line 110 of file TGCSector.cxx.

117 : m_id(idIn), m_regionType(type), m_numberOfHit(0),
118 m_TMDB(std::move(tm)), m_NSW(std::move(nsw)), m_BIS78(std::move(bis78)),
119 m_tgcArgs(tgcargs), m_dbMgr(db)
120{
124 m_forwardBackward = forwardBackward;
125
126 int i;
127 if (m_moduleId < 9) {
128 for( i=0; i<=SDPP; i+=1) {
129 m_ASDToPP[i] = db->getConnectionASDToPP((TGCRegionType)m_regionType, i, forwardBackward);
130 }
131 for( i=WIPP; i<NumberOfPatchPanelType; i+=1) m_ASDToPP[i]=0;
132 } else {
133 // Inner Module
134 for( i=0; i<=SDPP; i+=1) m_ASDToPP[i]=0;
135 for( i=WIPP; i<NumberOfPatchPanelType; i+=1) {
136 m_ASDToPP[i] = db->getConnectionASDToPP((TGCRegionType)m_regionType, i, forwardBackward);
137 }
138 }
139
140 const TGCConnectionPPToSL* PPToSL = db->getConnectionPPToSL(m_regionType);
141 // make PatchPanel Boards, Slave Boards, HighPt Boards, SectorLogic.
142 setModule(PPToSL);
143 // dumpModule();
144
145 if (m_moduleId < 9) {
146 // set TMDB
147 m_SL->setTMDB(m_TMDB);
148
149 // set NSW
150 m_SL->setNSW(m_NSW);
151
152 // set BIS78
153 m_SL->setBIS78(m_BIS78);
154 }
155
156 // set connection between boards;
157 connectPPToSB(PPToSL->getPPToSB());
158 if (m_moduleId < 9) {
160 connectSBToHPB(PPToSL->getSBToHPB());
161 connectHPBToSL(PPToSL->getHPBToSL());
163 }
164}
void connectPPToSB(const TGCConnectionPPToSB *connection)
LVL1TGC::TGCSide m_sideId
Definition TGCSector.h:105
std::shared_ptr< const LVL1TGC::TGCBIS78 > m_BIS78
Definition TGCSector.h:120
TGCArguments * m_tgcArgs
Definition TGCSector.h:122
void setModule(const TGCConnectionPPToSL *connection)
TGCSectorLogic * m_SL
Definition TGCSector.h:117
TGCRegionType m_regionType
Definition TGCSector.h:104
std::shared_ptr< const LVL1TGC::TGCTMDB > m_TMDB
Definition TGCSector.h:118
void connectSBToHPB(const TGCConnectionSBToHPB *connection)
const TGCDatabaseManager * m_dbMgr
Definition TGCSector.h:123
TGCForwardBackwardType m_forwardBackward
Definition TGCSector.h:110
const TGCConnectionASDToPP * m_ASDToPP[NumberOfPatchPanelType]
Definition TGCSector.h:111
std::shared_ptr< const LVL1TGC::TGCNSW > m_NSW
Definition TGCSector.h:119
void connectHPBToSL(const TGCConnectionHPBToSL *connection)
TGCSide
The sides of TGC (A- or C-side)

◆ TGCSector() [2/3]

LVL1TGCTrigger::TGCSector::TGCSector ( )

Definition at line 90 of file TGCSector.cxx.

92 m_numberOfHit(0),
93 m_octantId(0), m_moduleId(0),
95 m_SL(0), m_TMDB(0), m_NSW(0),m_BIS78(0),
96 m_tgcArgs(nullptr), m_dbMgr(nullptr)
97{
98 for(unsigned int iPatchPanelType=0; iPatchPanelType<NumberOfPatchPanelType; iPatchPanelType++) {
99 m_ASDToPP[iPatchPanelType] = 0;
100 m_PP[iPatchPanelType].clear();
101 }
102 for(unsigned int iSlaveBoardType=0; iSlaveBoardType<NumberOfSlaveBoardType; iSlaveBoardType++) {
103 m_SB[iSlaveBoardType].clear();
104 }
105 for(unsigned int iHighPtBoardType=0; iHighPtBoardType<NumberOfHighPtBoardType; iHighPtBoardType++) {
106 m_HPB[iHighPtBoardType].clear();
107 }
108}
std::vector< TGCHighPtBoard * > m_HPB[NumberOfHighPtBoardType]
Definition TGCSector.h:115
std::vector< TGCPatchPanel * > m_PP[NumberOfPatchPanelType]
Definition TGCSector.h:113
std::vector< TGCSlaveBoard * > m_SB[NumberOfSlaveBoardType]
Definition TGCSector.h:114

◆ TGCSector() [3/3]

LVL1TGCTrigger::TGCSector::TGCSector ( const TGCSector & right)
privatedelete

◆ ~TGCSector()

LVL1TGCTrigger::TGCSector::~TGCSector ( )
virtual

Definition at line 379 of file TGCSector.cxx.

380{
381 // Don't delete m_ASDToPP! 22 May 2001 (MT, KH)
382 for (int i=0; i < NumberOfPatchPanelType; i++) {
383 for (unsigned int j=0; j<m_PP[i].size(); j++) {
384 if (m_PP[i][j] != nullptr) delete m_PP[i][j];
385 }
386 m_PP[i].clear();
387 }
388
389 for (int i=0; i < NumberOfSlaveBoardType; i++) {
390 for (unsigned int j=0; j < m_SB[i].size(); j+=1) {
391 if(m_SB[i][j] != nullptr) delete m_SB[i][j];
392 }
393 m_SB[i].clear();
394 }
395
396 for(int i=0; i<NumberOfHighPtBoardType; i+=1){
397 for(unsigned int j=0; j < m_HPB[i].size(); j+=1) {
398 if(m_HPB[i][j] != nullptr) delete m_HPB[i][j];
399 }
400 m_HPB[i].clear();
401 }
402 if (m_SL) delete m_SL;
403 m_SL = 0;
404}

Member Function Documentation

◆ clearNumberOfHit()

void LVL1TGCTrigger::TGCSector::clearNumberOfHit ( )
inline

Definition at line 132 of file TGCSector.h.

133{ m_numberOfHit = 0;}

◆ connectAdjacentHPB()

void LVL1TGCTrigger::TGCSector::connectAdjacentHPB ( )
private

Definition at line 359 of file TGCSector.cxx.

360{
361 switch(m_regionType){
363 // assume there are only two WireHighPtBoards.
364 if((m_HPB[WHPB][1]) && (m_HPB[WHPB][0])){
365 m_HPB[WHPB][0]->setAdjacentHPB(1,m_HPB[WHPB][1]);
366 m_HPB[WHPB][1]->setAdjacentHPB(0,m_HPB[WHPB][0]);
367 }
368 break;
370 if(m_HPB[WHPB][0]){
371 m_HPB[WHPB][0]->setAdjacentHPB(1,0);
372 }
373 break;
374 default:
375 break;
376 }
377}

◆ connectAdjacentPP()

void LVL1TGCTrigger::TGCSector::connectAdjacentPP ( )
private

Definition at line 295 of file TGCSector.cxx.

296{
297 for (unsigned int iPP = 1; iPP < m_PP[WDPP].size(); iPP++) {
298 m_PP[WDPP][iPP-1]->setAdjacentPP(1,m_PP[WDPP][iPP]);
299 m_PP[WDPP][iPP]->setAdjacentPP(0,m_PP[WDPP][iPP-1]);
300 }
301
302 for (unsigned int iPP = 1; iPP < m_PP[WTPP].size(); iPP++) {
303 m_PP[WTPP][iPP-1]->setAdjacentPP(1,m_PP[WTPP][iPP]);
304 m_PP[WTPP][iPP]->setAdjacentPP(0,m_PP[WTPP][iPP-1]);
305 }
306
307 for (unsigned int iPP = 1; iPP < m_PP[STPP].size(); iPP++) {
308 m_PP[STPP][iPP-1]->setAdjacentPP(1,m_PP[STPP][iPP]);
309 m_PP[STPP][iPP]->setAdjacentPP(0,m_PP[STPP][iPP-1]);
310 }
311
312 for (unsigned int iPP = 1; iPP < m_PP[SDPP].size(); iPP++) {
313 m_PP[SDPP][iPP-1]->setAdjacentPP(1,m_PP[SDPP][iPP]);
314 m_PP[SDPP][iPP]->setAdjacentPP(0,m_PP[SDPP][iPP-1]);
315 }
316
317 for (int i=0; i<=SDPP; i++) {
318 for (TGCPatchPanel* ppasic : m_PP[i]) {
319 ppasic->connect();
320 }
321 }
322}

◆ connectHPBToSL()

void LVL1TGCTrigger::TGCSector::connectHPBToSL ( const TGCConnectionHPBToSL * connection)
private

Definition at line 346 of file TGCSector.cxx.

347{
348 if (!m_SL) return;
349
350 // set pointers of HighPtBoard to connect to SectorLogic
351 for (unsigned int iHPB = 0; iHPB < m_HPB[WHPB].size(); iHPB++){
352 m_SL->setWireHighPtBoard(connection->getSLPortToHPB(WHPB,iHPB), m_HPB[WHPB].at(iHPB));
353 }
354 for (unsigned int iHPB = 0; iHPB < m_HPB[SHPB].size(); iHPB++) {
355 m_SL->setStripHighPtBoard(m_HPB[SHPB].at(iHPB));
356 }
357}

◆ connectPPToSB()

void LVL1TGCTrigger::TGCSector::connectPPToSB ( const TGCConnectionPPToSB * connection)
private

Definition at line 256 of file TGCSector.cxx.

257{
258 int iPort;
259 int startType, endType;
260 if (m_moduleId <9) {
261 startType =0;
262 endType = SDPP;
263 } else {
264 startType = WIPP;
265 endType = SIPP;
266 }
267
268 // set a Slave Board ID to connect for each Patch Panel.
269 // find the Slave Board and give a pointer of the Patch Panel to it.
270 for (int i=startType; i <= endType; i++) {
271#ifdef TGCDEBUG
272 std::cerr << "connectionPPToSB :"
273 << " module:" << m_moduleId
274 << " type: " << i
275 << " #PP=" << m_PP[i].size()
276 << " #SB=" << m_SB[i].size()
277 << std::endl;
278#endif
279 for(unsigned int iPP = 0; iPP < m_PP[i].size(); iPP++) {
280 for ( iPort = 0; iPort < connection->getNumberOfPort(); iPort += 1) {
281 m_PP[i][iPP]->setIdSlaveBoard(iPort,connection->getSBIdToPP(i,iPort,iPP));
282 for (unsigned int iSB = 0; iSB < m_SB[i].size(); iSB++) {
283 if (m_PP[i][iPP]->getIdSlaveBoard(iPort) == m_SB[i][iSB]->getId()) {
284 m_SB[i][iSB]->setPatchPanel(m_PP[i][iPP]);
285 break;
286 }
287 } // m_SB loop
288 } // Port loop
289 } // m_PP loop
290 } // type loop
291
292}

◆ connectSBToHPB()

void LVL1TGCTrigger::TGCSector::connectSBToHPB ( const TGCConnectionSBToHPB * connection)
private

Definition at line 324 of file TGCSector.cxx.

325{
326 for (int i=0; i < NumberOfSlaveBoardType; i++) {
327 if ( i==WISB ) continue; // Inner m_SB is not connected to m_HPB
328 if ( i==SISB ) continue; // Inner m_SB is not connected to m_HPB
329
330 for (unsigned int iSB = 0; iSB < m_SB[i].size(); iSB++) {
331 m_SB[i][iSB]->setIdHighPtBoard(connection->getHPBIdToSB(i,iSB));
332 int type = i/2; // ! assume HighPtBoardType=SlaveBoardType/2
333 for (unsigned int iHPB = 0; iHPB < m_HPB[type].size(); iHPB += 1){
334 if ( m_SB[i][iSB]->getIdHighPtBoard() == m_HPB[type].at(iHPB)->getId()) {
335 if((i==WDSB)||(i==SDSB))
336 m_HPB[type].at(iHPB)->setDSB(connection->getHPBPortToSB(i,iSB),m_SB[i][iSB]);
337 else if((i==WTSB)||(i==STSB))
338 m_HPB[type].at(iHPB)->setTSB(connection->getHPBPortToSB(i,iSB),m_SB[i][iSB]);
339 break;
340 }
341 }
342 }
343 }
344}

◆ distributeSignal()

int LVL1TGCTrigger::TGCSector::distributeSignal ( const TGCASDOut * asdOut)

Definition at line 34 of file TGCSector.cxx.

35{
36 int idPP,conPP,chPP;
37
38 TGCSignalType signalType = ASDOut->GetSignalType();
39
40 TGCReadoutIndex readoutIndex;
41 readoutIndex = ASDOut->GetTGCReadoutIndex();
42
43 int layer = readoutIndex.GetLayerNumber();
44 int rNumber = readoutIndex.GetRNumber();
45 int ch = ASDOut->GetHitID();
46
47 int PPType = getPatchPanelType(signalType,layer);
48 int notFound;
49 if (PPType<0){
50 notFound = -1;
51 } else {
52 notFound = m_ASDToPP[PPType]->getConnection(m_sideId,layer,rNumber,ch,&idPP,&conPP,&chPP);
53 }
54
55 if (tgcArgs()->MSGLEVEL() <= MSG::DEBUG) {
56 MsgStream log(Athena::getMessageSvc(), "LVL1TGCTrigger::TGCSector");
57 if (!notFound) {
58 log << MSG::DEBUG
59 << "signalType= " << ((signalType == WIRE) ? "Wire" : "Strip")
60 <<" layer= " <<layer <<" rNumber= " <<rNumber <<" ch= "<< ch
61 <<"id(PP)= " <<idPP <<" connector(PP)= " <<conPP <<" ch(PP)= " <<chPP
62 <<endmsg;
63 }
64 }
65
66 if(!notFound){
67 m_PP[PPType][idPP]->setASDOut(chPP,conPP,ASDOut);
69 return 0;
70 }
71 return -1;
72}
#define endmsg
TGCArguments * tgcArgs()
Definition TGCSector.h:79
int getPatchPanelType(TGCSignalType signal, int layer) const
Definition TGCSector.cxx:74
IMessageSvc * getMessageSvc(bool quiet=false)
@ layer
Definition HitInfo.h:79

◆ dumpModule()

void LVL1TGCTrigger::TGCSector::dumpModule ( )

Definition at line 406 of file TGCSector.cxx.

407{
408 std::cout << "Side:" << m_sideId << " Octant:" << m_octantId
409 << " ModuleId:" << m_moduleId << std::endl;
410
411 std::cout << "PatchPanel NumberOfPatchPanelType: " << NumberOfPatchPanelType << std::endl;
412 for (int j=0; j < NumberOfPatchPanelType; j++) {
413 std::cout << "numberOfPP(index in a type): " << m_PP[j].size() << std::endl;
414 for (TGCPatchPanel* ppasic : m_PP[j]) {
415 std::cout << " Type:" << ppasic->getType();
416 std::cout << " Id:" << ppasic->getId();
417 std::cout << " Region:" << (ppasic->getRegion()==TGCRegionType::FORWARD ? "FWD" : "END");
418 std::cout << ((ppasic->getRegion() == TGCRegionType::ENDCAP) ? ":Endcap" : ":Forward") << std::endl;
419 }
420 }
421
422 std::cout << "SlaveBoard NumberOfSlaveBoardType: " << NumberOfSlaveBoardType << std::endl;
423 for (int j=0; j < NumberOfSlaveBoardType; j++) {
424 std::cout << "numberOfSB(index in a type): " << m_SB[j].size() << std::endl;
425 for (unsigned int i=0; i < m_SB[j].size(); i++) { // index in a type
426 std::cout << " Type:" << m_SB[j][i]->getType();
427 std::cout << " Id:" << m_SB[j][i]->getId();
428 std::cout << " Region: " << ((m_SB[j][i]->getRegion() == TGCRegionType::ENDCAP) ? "Endcap" : "Forward") << std::endl;
429 }
430 }
431
432 std::cout << "HighPtBoard NumberOfHighPtBoardType:" << NumberOfHighPtBoardType << std::endl;
433 for(int j=0; j<NumberOfHighPtBoardType; j+=1){
434 std::cout << "numberOfHPB(index in a type):" << m_HPB[j].size() << std::endl;
435 for(unsigned int i=0; i < m_HPB[j].size(); i+=1) {
436 std::cout << " Type:" << m_HPB[j][i]->getType();
437 std::cout << " Id:" << m_HPB[j][i]->getId();
438 std::cout << " Region:" << (m_HPB[j][i]->getRegion()==TGCRegionType::ENDCAP ? "Endcap" : "Forward") << std::endl;
439 }
440 }
441
442 std::cout << "SectorLogic" << std::endl;
443 if (m_SL) {
444 std::cout << "SL:" << m_SL << std::endl;
445 std::cout << " Id:" << m_SL->getId();
446 std::cout << " Region:";
447 if(m_SL->getRegion()==TGCRegionType::ENDCAP) {
448 std::cout << "Endcap" << std::endl;
449 }else{
450 std::cout << "Forward" << std::endl;
451 }
452 } else {
453 std::cout << "NO SL" << std::endl;
454 }
455}

◆ getBIS78()

std::shared_ptr< const LVL1TGC::TGCBIS78 > LVL1TGCTrigger::TGCSector::getBIS78 ( ) const
inlineprivate

Definition at line 85 of file TGCSector.h.

85{ return m_BIS78; }

◆ getHPB()

TGCHighPtBoard * LVL1TGCTrigger::TGCSector::getHPB ( int type,
int index ) const
inline

Definition at line 147 of file TGCSector.h.

148{
149 if ((type<0) || (index<0)) return 0;
150 return m_HPB[type].at(index);
151}

◆ getId()

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

Definition at line 173 of file TGCSector.h.

174{ return m_id;}

◆ getModuleId()

int LVL1TGCTrigger::TGCSector::getModuleId ( ) const
inline

Definition at line 77 of file TGCSector.h.

77{ return m_moduleId; }

◆ getNSW()

std::shared_ptr< const LVL1TGC::TGCNSW > LVL1TGCTrigger::TGCSector::getNSW ( ) const
inlineprivate

Definition at line 84 of file TGCSector.h.

84{ return m_NSW; }

◆ getNumberOfHPB()

unsigned int LVL1TGCTrigger::TGCSector::getNumberOfHPB ( int type) const
inline

Definition at line 164 of file TGCSector.h.

165{ if (type<0) return -1;
166 return m_HPB[type].size();
167}

◆ getNumberOfPP()

unsigned int LVL1TGCTrigger::TGCSector::getNumberOfPP ( int type) const
inline

Definition at line 153 of file TGCSector.h.

154{
155 if (type<0) return -1;
156 return m_PP[type].size();
157}

◆ getNumberOfSB()

unsigned int LVL1TGCTrigger::TGCSector::getNumberOfSB ( int type) const
inline

Definition at line 159 of file TGCSector.h.

160{ if (type<0) return -1;
161 return m_SB[type].size();
162}

◆ getOctantId()

int LVL1TGCTrigger::TGCSector::getOctantId ( ) const
inline

Definition at line 76 of file TGCSector.h.

76{ return m_octantId; }

◆ getPatchPanelType()

int LVL1TGCTrigger::TGCSector::getPatchPanelType ( TGCSignalType signal,
int layer ) const
private

Definition at line 74 of file TGCSector.cxx.

75{
76 if((layer>=0)&&(layer<=2)){
77 if (signal == WIRE) return WTPP;
78 else return STPP;
79 } else if((layer>=3)&&(layer<=6)){
80 if (signal == WIRE) return WDPP;
81 else return SDPP;
82 } else if (layer<=8) {
83 if (signal == WIRE) return WIPP;
84 else return SIPP;
85 } else {
86 return NOPP;
87 }
88}

◆ getPP()

TGCPatchPanel * LVL1TGCTrigger::TGCSector::getPP ( int type,
int index ) const
inline

Definition at line 135 of file TGCSector.h.

136{
137 if ((type<0) || (index<0)) return 0;
138 return m_PP[type].at(index);
139}

◆ getRegionType()

TGCRegionType LVL1TGCTrigger::TGCSector::getRegionType ( ) const
inline

Definition at line 169 of file TGCSector.h.

170{ return m_regionType;}

◆ getSB()

TGCSlaveBoard * LVL1TGCTrigger::TGCSector::getSB ( int type,
int index ) const
inline

Definition at line 141 of file TGCSector.h.

142{
143 if ((type<0) || (index<0)) return 0;
144 return m_SB[type].at(index);
145}

◆ getSideId()

LVL1TGC::TGCSide LVL1TGCTrigger::TGCSector::getSideId ( ) const
inline

Definition at line 75 of file TGCSector.h.

75{ return m_sideId; }

◆ getSL()

TGCSectorLogic * LVL1TGCTrigger::TGCSector::getSL ( )
inline

Definition at line 65 of file TGCSector.h.

65{ return m_SL; }

◆ getTMDB()

std::shared_ptr< const LVL1TGC::TGCTMDB > LVL1TGCTrigger::TGCSector::getTMDB ( ) const
inlineprivate

Definition at line 83 of file TGCSector.h.

83{ return m_TMDB; }

◆ hasHit()

bool LVL1TGCTrigger::TGCSector::hasHit ( ) const
inline

Definition at line 127 of file TGCSector.h.

128{
129 return (m_numberOfHit>0);
130}

◆ operator=()

TGCSector & LVL1TGCTrigger::TGCSector::operator= ( const TGCSector & right)
privatedelete

◆ setModule()

void LVL1TGCTrigger::TGCSector::setModule ( const TGCConnectionPPToSL * connection)
private

Definition at line 166 of file TGCSector.cxx.

167{
168 if (m_moduleId <9) { // BW Sectors
169 // PP ASIC
170 for (int jpp=0; jpp <= SDPP; jpp++) {
171 m_PP[jpp].resize(connection->getPPToSB()->getNumber(jpp));
172 for (unsigned int i=0; i < m_PP[jpp].size(); i++) {
173 if (jpp==WTPP) { m_PP[jpp][i] = new TGCWireTripletPP(tgcArgs()); }
174 else if(jpp==WDPP) { m_PP[jpp][i] = new TGCWireDoubletPP(tgcArgs()); }
175 else if(jpp==STPP) { m_PP[jpp][i] = new TGCStripTripletPP(tgcArgs());}
176 else if(jpp==SDPP) { m_PP[jpp][i] = new TGCStripDoubletPP(tgcArgs());}
177 m_PP[jpp][i]->setId(connection->getPPToSB()->getId(jpp,i));
178 m_PP[jpp][i]->setType(jpp);
179 m_PP[jpp][i]->setRegion(m_regionType);
180 }
181 }
182 for (int jpp=WIPP; jpp<NumberOfPatchPanelType; jpp++) {
183 m_PP[jpp].clear();
184 }
185
186 // SLB
187 for (int jsb=0; jsb <= SDSB; jsb++) {
188 m_SB[jsb].resize(connection->getSBToHPB()->getNumber(jsb));
189 for (unsigned int i=0; i < m_SB[jsb].size(); i++) {
190 if (jsb == WTSB) { m_SB[jsb][i] = new TGCWireTripletSB(); }
191 else if (jsb == WDSB) { m_SB[jsb][i] = new TGCWireDoubletSB(); }
192 else if (jsb == STSB) { m_SB[jsb][i] = new TGCStripTripletSB();}
193 else if (jsb == SDSB) { m_SB[jsb][i] = new TGCStripDoubletSB();}
194 m_SB[jsb][i]->setId(connection->getSBToHPB()->getId(jsb,i));
195 m_SB[jsb][i]->setType(jsb);
196 m_SB[jsb][i]->setRegion(m_regionType);
197 }
198 }
199 for (int jsb=WISB; jsb < NumberOfSlaveBoardType; jsb++) {
200 m_SB[jsb].clear();
201 }
202
203 // HPT
204 for (int jhp=0; jhp<NumberOfHighPtBoardType; jhp++) {
205 m_HPB[jhp].resize(connection->getHPBToSL()->getNumber(jhp));
206 for (unsigned int i=0; i < m_HPB[jhp].size(); i++) {
207 if(jhp == WHPB) m_HPB[jhp][i] = new TGCWireHighPtBoard;
208 if(jhp == SHPB) m_HPB[jhp][i] = new TGCStripHighPtBoard;
209 m_HPB[jhp][i]->setId(connection->getHPBToSL()->getId(jhp,i));
210 m_HPB[jhp][i]->setType(jhp);
211 m_HPB[jhp][i]->setRegion(m_regionType);
212 }
213 }
214
215 // Sector Logic
216 m_SL = new TGCSectorLogic(tgcArgs(), m_dbMgr, m_regionType, m_id);
217 m_SL->getSSCController()->setNumberOfWireHighPtBoard(connection->getHPBToSL()->getNumber(WHPB));
218 } else { // Inner Small Wheel
219 // PP ASIC
220 for (int jpp=0; jpp <= SDPP; jpp++) {
221 m_PP[jpp].clear();
222 }
223 for (int jpp=WIPP; jpp < NumberOfPatchPanelType; jpp++) {
224 m_PP[jpp].resize(connection->getPPToSB()->getNumber(jpp));
225 for (unsigned int i=0; i < m_PP[jpp].size(); i++) {
226 if (jpp == WIPP) { m_PP[jpp][i] = new TGCWireInnerPP(tgcArgs()); }
227 else if (jpp == SIPP) { m_PP[jpp][i] = new TGCStripInnerPP(tgcArgs()); }
228 m_PP[jpp][i]->setId(connection->getPPToSB()->getId(jpp,i));
229 m_PP[jpp][i]->setType(jpp);
230 m_PP[jpp][i]->setRegion(m_regionType);
231 }
232 }
233
234 // SLB
235 for (int jsb=0; jsb<=SDSB; jsb+=1) {
236 m_SB[jsb].clear();
237 }
238 for (int jsb=WISB; jsb<NumberOfSlaveBoardType; jsb++) {
239 m_SB[jsb].resize(1);
240 m_SB[jsb][0] = new TGCInnerSB();
241 m_SB[jsb][0]->setType(jsb);
242 m_SB[jsb][0]->setRegion(m_regionType);
243 m_SB[jsb][0]->setId(0);
244 }
245
246 // HPT
247 for(int jhp=0; jhp<NumberOfHighPtBoardType; jhp+=1){
248 m_HPB[jhp].clear();
249 }
250
251 // no specific Sector Logic
252 m_SL = 0;
253 }
254}
class TGCPatchPanel TGCStripTripletPP
class TGCPatchPanel TGCStripInnerPP
class TGCPatchPanel TGCWireTripletPP
class TGCPatchPanel TGCWireInnerPP
class TGCPatchPanel TGCStripDoubletPP
class TGCPatchPanel TGCWireDoubletPP

◆ tgcArgs() [1/2]

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

Definition at line 79 of file TGCSector.h.

79{ return m_tgcArgs; }

◆ tgcArgs() [2/2]

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

Definition at line 80 of file TGCSector.h.

80{ return m_tgcArgs; }

◆ TGCTimingManager::startHighPtBoard

◆ TGCTimingManager::startPatchPanel

◆ TGCTimingManager::startSectorLogic

◆ TGCTimingManager::startSlaveBoard

Member Data Documentation

◆ m_ASDToPP

const TGCConnectionASDToPP* LVL1TGCTrigger::TGCSector::m_ASDToPP[NumberOfPatchPanelType]
private

Definition at line 111 of file TGCSector.h.

◆ m_BIS78

std::shared_ptr<const LVL1TGC::TGCBIS78> LVL1TGCTrigger::TGCSector::m_BIS78
private

Definition at line 120 of file TGCSector.h.

◆ m_dbMgr

const TGCDatabaseManager* LVL1TGCTrigger::TGCSector::m_dbMgr
private

Definition at line 123 of file TGCSector.h.

◆ m_forwardBackward

TGCForwardBackwardType LVL1TGCTrigger::TGCSector::m_forwardBackward
private

Definition at line 110 of file TGCSector.h.

◆ m_HPB

std::vector<TGCHighPtBoard*> LVL1TGCTrigger::TGCSector::m_HPB[NumberOfHighPtBoardType]
private

Definition at line 115 of file TGCSector.h.

◆ m_id

int LVL1TGCTrigger::TGCSector::m_id {0}
private

Definition at line 103 of file TGCSector.h.

103{0};

◆ m_moduleId

int LVL1TGCTrigger::TGCSector::m_moduleId
private

Definition at line 108 of file TGCSector.h.

◆ m_NSW

std::shared_ptr<const LVL1TGC::TGCNSW> LVL1TGCTrigger::TGCSector::m_NSW
private

Definition at line 119 of file TGCSector.h.

◆ m_numberOfHit

int LVL1TGCTrigger::TGCSector::m_numberOfHit
private

Definition at line 106 of file TGCSector.h.

◆ m_octantId

int LVL1TGCTrigger::TGCSector::m_octantId
private

Definition at line 107 of file TGCSector.h.

◆ m_PP

std::vector<TGCPatchPanel*> LVL1TGCTrigger::TGCSector::m_PP[NumberOfPatchPanelType]
private

Definition at line 113 of file TGCSector.h.

◆ m_regionType

TGCRegionType LVL1TGCTrigger::TGCSector::m_regionType
private

Definition at line 104 of file TGCSector.h.

◆ m_SB

std::vector<TGCSlaveBoard*> LVL1TGCTrigger::TGCSector::m_SB[NumberOfSlaveBoardType]
private

Definition at line 114 of file TGCSector.h.

◆ m_sideId

LVL1TGC::TGCSide LVL1TGCTrigger::TGCSector::m_sideId {LVL1TGC::TGCSide::ASIDE}
private

Definition at line 105 of file TGCSector.h.

◆ m_SL

TGCSectorLogic* LVL1TGCTrigger::TGCSector::m_SL
private

Definition at line 117 of file TGCSector.h.

◆ m_tgcArgs

TGCArguments* LVL1TGCTrigger::TGCSector::m_tgcArgs
private

Definition at line 122 of file TGCSector.h.

◆ m_TMDB

std::shared_ptr<const LVL1TGC::TGCTMDB> LVL1TGCTrigger::TGCSector::m_TMDB
private

Definition at line 118 of file TGCSector.h.


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