ATLAS Offline Software
Loading...
Searching...
No Matches
SectorL Class Reference

#include <SectorL.h>

Inheritance diagram for SectorL:
Collaboration diagram for SectorL:

Public Member Functions

 SectorL (int run, int event, CMAword debug, ubit16 subsys, ubit16 sect, uint NOBXS)
 ~SectorL ()
void load (ubit16 padAdd, ubit16 BX, ubit16 RoIAdd, ubit16 pT, ubit16 OPL, ubit16 overlapPhi, ubit16 overlapEta, ubit16 RoiAmbiguity, ubit16 BCIDcounter)
void execute ()
ubit16 numberOfBunches ()
ubit16 sectorAddress ()
CMAword output (ubit16 i)
CMAword outputToMuCTPI ()
ObjectType tag () const
const std::string & name () const
virtual void Print (std::ostream &, bool) const

Private Member Functions

void storePT (ubit16 i, ubit16 j, ubit16 k)

Private Attributes

int m_run
 array lengths were dependant on NOBXS were updated to assume this is at most 8
int m_event
ubit16 m_nBunMax
ubit16 m_subsystem
ubit16 m_sector
ubit16 m_maxNumPads
ubit16 m_numOfPads [8]
ubit16 m_padData
ubit16 m_sectorInput [8][10][8]
ubit16 m_numberOfRoIs [8]
ubit16 m_sectorOut [8][10]
ubit16 m_pTArray [8][2][2]
CMAword m_sectorOutput [8]
ObjectType m_tag
std::string m_name

Detailed Description

Definition at line 11 of file SectorL.h.

Constructor & Destructor Documentation

◆ SectorL()

SectorL::SectorL ( int run,
int event,
CMAword debug,
ubit16 subsys,
ubit16 sect,
uint NOBXS )

Definition at line 18 of file SectorL.cxx.

18 : BaseObject(Hardware, "SectorLogic") {
19 ubit16 i, j, k;
20 m_padData = 7;
21 m_maxNumPads = 10;
22 m_nBunMax = NOBXS;
23
24 for (i = 0; i < m_nBunMax; i++) { m_numOfPads[i] = 0; }
25
26 m_run = run;
27 m_event = event;
28 m_subsystem = subsys;
29 m_sector = sect;
30
31 for (i = 0; i < m_nBunMax; i++) {
32 m_numberOfRoIs[i] = 0;
33 m_sectorOutput[i] = 0;
34 for (k = 0; k < 10; k++) { m_sectorOut[i][k] = 0; }
35 for (k = 0; k < 2; k++) {
36 m_pTArray[i][k][0] = 0;
37 m_pTArray[i][k][1] = 0;
38 } // end-of-for(k
39 for (j = 0; j < m_maxNumPads; j++) {
40 for (k = 0; k < m_padData; k++) { m_sectorInput[i][j][k] = 0; } // end-of-for(k
41 }
42 }
43} // end-of-SectorL::SectorL
@ Hardware
Definition BaseObject.h:11
unsigned short int ubit16
BaseObject(ObjectType, const std::string &)
Definition BaseObject.cxx:7
ubit16 m_padData
Definition SectorL.h:32
ubit16 m_numOfPads[8]
Definition SectorL.h:31
ubit16 m_sector
Definition SectorL.h:29
ubit16 m_maxNumPads
Definition SectorL.h:30
ubit16 m_subsystem
Definition SectorL.h:28
ubit16 m_nBunMax
Definition SectorL.h:27
ubit16 m_sectorOut[8][10]
Definition SectorL.h:35
ubit16 m_numberOfRoIs[8]
Definition SectorL.h:34
int m_run
array lengths were dependant on NOBXS were updated to assume this is at most 8
Definition SectorL.h:25
int m_event
Definition SectorL.h:26
ubit16 m_pTArray[8][2][2]
Definition SectorL.h:36
CMAword m_sectorOutput[8]
Definition SectorL.h:37
ubit16 m_sectorInput[8][10][8]
Definition SectorL.h:33

◆ ~SectorL()

SectorL::~SectorL ( )

Definition at line 45 of file SectorL.cxx.

45{} // end-of-SectorL::~SectorL

Member Function Documentation

◆ execute()

void SectorL::execute ( )

Definition at line 64 of file SectorL.cxx.

64 {
65 //
66 // temporary code to fill at least partially the output
67 // buffer of the sector logic
68 //
69 ubit16 i, j, k;
70 for (i = 0; i < m_nBunMax; i++) {
71 for (j = 0; j < m_numOfPads[i]; j++) {
72 if (m_sectorInput[i][j][2]) m_numberOfRoIs[i]++;
73 // if(m_sectorInput[i][j][2]) {
74 // cout<<" Bunch "<<i<<" PadInd "<<j<<" PT "<<m_sectorInput[i][j][2]
75 // <<endl;
76 // }//end-of-if(m_sectorInput[i][j][2]
77 for (k = 0; k < 2; k++) {
78 if (m_sectorInput[i][j][2] > m_pTArray[i][k][0]) {
79 storePT(i, j, k);
80 break;
81 } // end-of-if(m_sector
82 } // end-of-for(k
83 } // end-of-for(j
84 } // end-of-for(i
85 //
86 // for(i=0; i<m_nBunMax; i++) {
87 // cout<<" pTArray[0] pT= "<<m_pTArray[i][0][0]
88 // <<" padInd= "<<m_pTArray[i][0][1]<<endl
89 // <<" pTArray[1] pT= "<<m_pTArray[i][1][0]
90 // <<" padInd= "<<m_pTArray[i][1][1]<<endl
91 // <<" number of RoIs= "<<m_numberOfRoIs[i]<<endl;
92 //}
93 //
94 // now fill the output buffer
95 //
96 for (i = 0; i < m_nBunMax; i++) {
97 // TEMP: use m_sectorOut[i][8] and [9] to store OVL1 and OVL2
98
99 m_sectorOut[i][8] = 0;
100 m_sectorOut[i][9] = 0;
101
102 if (m_numberOfRoIs[i] > 2) m_sectorOut[i][0] = 1;
103 if (m_numberOfRoIs[i]) {
104 ubit16 padInd = m_pTArray[i][0][1];
105 m_sectorOut[i][1] = 4 * m_sectorInput[i][padInd][0] + m_sectorInput[i][padInd][1] + 1;
106 m_sectorOut[i][3] = m_sectorInput[i][padInd][2];
107 m_sectorOut[i][8] = m_sectorInput[i][padInd][4] + 2 * m_sectorInput[i][padInd][5];
108
109 if (m_numberOfRoIs[i] > 1) {
110 ubit16 padInd = m_pTArray[i][1][1];
111 m_sectorOut[i][2] = 4 * m_sectorInput[i][padInd][0] + m_sectorInput[i][padInd][1] + 1;
112 m_sectorOut[i][4] = m_sectorInput[i][padInd][2];
113 m_sectorOut[i][9] = m_sectorInput[i][padInd][4] + 2 * m_sectorInput[i][padInd][5];
114
115 } // end-of-if(m_numberOfRoIs[i]>1)
116 } // end-of-if(m_numberOfRoIs[i])
117 m_sectorOut[i][5] = 0; //>1 Candidate ROI1
118 m_sectorOut[i][6] = 0; //>1 Candidate ROI2
119 m_sectorOut[i][7] = 0; // BCID
120 // m_sectorOut[i][8] = 0;//candidate1 sign
121 // m_sectorOut[i][9] = 0;//candidate2 sign
122 if (!m_sectorOut[i][3]) m_sectorOut[i][3] = 7;
123 if (!m_sectorOut[i][4]) m_sectorOut[i][4] = 7;
124
125 // cout<<" Bunch ID "<<i<<endl
126 // <<" >2 Candidates in a sector "<<m_sectorOut[i][0]<<endl
127 // <<" ROI 1 "<<m_sectorOut[i][1]<<endl
128 // <<" ROI 2 "<<m_sectorOut[i][2]<<endl
129 // <<" PT1 "<<m_sectorOut[i][3]<<endl
130 // <<" PT2 "<<m_sectorOut[i][4]<<endl
131 // <<" >1 Candidate ROI1 "<<m_sectorOut[i][5]<<endl
132 // <<" >1 Candidate ROI2 "<<m_sectorOut[i][6]<<endl
133 // <<" BCID counter "<<m_sectorOut[i][7]<<endl
134 // <<" Candidate1 sign "<<m_sectorOut[i][8]<<endl
135 // <<" Candidate2 sign "<<m_sectorOut[i][9]<<endl;
136 //
137 // now fille the Sector Logic Output word
138 //
140 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][1] << 1); // ROI1
141 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][2] << 10); // ROI2
142 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][3] << 19); // PT1
143 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][4] << 22); // PT2
144 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][5] << 25); // more than 1 _1
145 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][6] << 26); // more than 1 _2
146 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][7] << 27); // BX
147 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][8] << 8); // OVL1
148 m_sectorOutput[i] = m_sectorOutput[i] | (m_sectorOut[i][9] << 17); // OVL2
149 }
150} // end-of-SectorL::execute
void storePT(ubit16 i, ubit16 j, ubit16 k)
Definition SectorL.cxx:152

◆ load()

void SectorL::load ( ubit16 padAdd,
ubit16 BX,
ubit16 RoIAdd,
ubit16 pT,
ubit16 OPL,
ubit16 overlapPhi,
ubit16 overlapEta,
ubit16 RoiAmbiguity,
ubit16 BCIDcounter )

Definition at line 47 of file SectorL.cxx.

48 {
49 if (padAdd < 10 && RoIAdd < 4 && pT < 7 && OPL < 2 && overlapPhi < 2 && overlapEta < 2 && RoIAmbiguity < 2) {
50 m_sectorInput[BX][m_numOfPads[BX]][0] = padAdd;
51 m_sectorInput[BX][m_numOfPads[BX]][1] = RoIAdd;
52 m_sectorInput[BX][m_numOfPads[BX]][2] = pT;
53 m_sectorInput[BX][m_numOfPads[BX]][3] = OPL;
54 m_sectorInput[BX][m_numOfPads[BX]][4] = overlapPhi;
55 m_sectorInput[BX][m_numOfPads[BX]][5] = overlapEta;
56 m_sectorInput[BX][m_numOfPads[BX]][6] = RoIAmbiguity;
57 m_sectorInput[BX][m_numOfPads[BX]][7] = BCIDcounter;
58 m_numOfPads[BX]++;
59 } else {
60 throw std::out_of_range("problems loading Pad Output Data");
61 }
62} // end-of-SectorL::load

◆ name()

const std::string & BaseObject::name ( ) const
inlineinherited

Definition at line 23 of file BaseObject.h.

23{ return m_name; }
std::string m_name
Definition BaseObject.h:16

◆ numberOfBunches()

ubit16 SectorL::numberOfBunches ( )
inline

Definition at line 18 of file SectorL.h.

18{ return m_nBunMax; };

◆ output()

CMAword SectorL::output ( ubit16 i)

Definition at line 164 of file SectorL.cxx.

164 {
165 if (i < m_nBunMax) {
166 return m_sectorOutput[i];
167 } else {
168 return 0xffffffff;
169 }
170}

◆ outputToMuCTPI()

CMAword SectorL::outputToMuCTPI ( )
inline

Definition at line 21 of file SectorL.h.

21{ return output(m_nBunMax / 2); };
CMAword output(ubit16 i)
Definition SectorL.cxx:164

◆ Print()

◆ sectorAddress()

ubit16 SectorL::sectorAddress ( )
inline

Definition at line 19 of file SectorL.h.

19{ return m_sector; };

◆ storePT()

void SectorL::storePT ( ubit16 i,
ubit16 j,
ubit16 k )
private

Definition at line 152 of file SectorL.cxx.

152 {
153 if (!modeInd) {
154 m_pTArray[bunch][1][0] = m_pTArray[bunch][0][0]; // copy pT
155 m_pTArray[bunch][1][1] = m_pTArray[bunch][0][1]; // copy padAdd
156 m_pTArray[bunch][0][0] = m_sectorInput[bunch][padInd][2];
157 m_pTArray[bunch][0][1] = padInd;
158 } else {
159 m_pTArray[bunch][1][0] = m_sectorInput[bunch][padInd][2];
160 m_pTArray[bunch][1][1] = padInd;
161 }
162}

◆ tag()

ObjectType BaseObject::tag ( ) const
inlineinherited

Definition at line 22 of file BaseObject.h.

22{ return m_tag; }
ObjectType m_tag
Definition BaseObject.h:15

Member Data Documentation

◆ m_event

int SectorL::m_event
private

Definition at line 26 of file SectorL.h.

◆ m_maxNumPads

ubit16 SectorL::m_maxNumPads
private

Definition at line 30 of file SectorL.h.

◆ m_name

std::string BaseObject::m_name
privateinherited

Definition at line 16 of file BaseObject.h.

◆ m_nBunMax

ubit16 SectorL::m_nBunMax
private

Definition at line 27 of file SectorL.h.

◆ m_numberOfRoIs

ubit16 SectorL::m_numberOfRoIs[8]
private

Definition at line 34 of file SectorL.h.

◆ m_numOfPads

ubit16 SectorL::m_numOfPads[8]
private

Definition at line 31 of file SectorL.h.

◆ m_padData

ubit16 SectorL::m_padData
private

Definition at line 32 of file SectorL.h.

◆ m_pTArray

ubit16 SectorL::m_pTArray[8][2][2]
private

Definition at line 36 of file SectorL.h.

◆ m_run

int SectorL::m_run
private

array lengths were dependant on NOBXS were updated to assume this is at most 8

Definition at line 25 of file SectorL.h.

◆ m_sector

ubit16 SectorL::m_sector
private

Definition at line 29 of file SectorL.h.

◆ m_sectorInput

ubit16 SectorL::m_sectorInput[8][10][8]
private

Definition at line 33 of file SectorL.h.

◆ m_sectorOut

ubit16 SectorL::m_sectorOut[8][10]
private

Definition at line 35 of file SectorL.h.

◆ m_sectorOutput

CMAword SectorL::m_sectorOutput[8]
private

Definition at line 37 of file SectorL.h.

◆ m_subsystem

ubit16 SectorL::m_subsystem
private

Definition at line 28 of file SectorL.h.

◆ m_tag

ObjectType BaseObject::m_tag
privateinherited

Definition at line 15 of file BaseObject.h.


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