ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1::JetEnergyModuleKey Class Reference

The JetEnergyModuleKey object provides the key for each trigger tower depending on its eta-phi coords. More...

#include <JetEnergyModuleKey.h>

Inheritance diagram for LVL1::JetEnergyModuleKey:
Collaboration diagram for LVL1::JetEnergyModuleKey:

Public Types

enum  JEMRegion { MidJEM =0 , LeftEndJEM =1 , RightEndJEM =2 , JEMRegionERROR =999 }

Public Member Functions

 JetEnergyModuleKey ()
 constructs a JetEnergyModuleKey object
virtual ~JetEnergyModuleKey ()
unsigned int jemKey (const xAOD::JetElement *jetElement)
 returns the key of the passed Coordinate
unsigned int jemKey (unsigned int crate, unsigned int module)
 calculates key from crate and module index
std::vector< unsigned int > jeKeys (unsigned int crate, unsigned int module)
 calculates keys of all JetElements in given crate and module
std::vector< CoordinatejeCoords (unsigned int crate, unsigned int module)
 returns coordinates of all JetElements in given crate and module
unsigned int row (const Coordinate &coord) const
 returns the phi row of a coord within the JEM that contains it.
unsigned int row (const xAOD::JetElement *jetElement) const
 returns the phi row of a coord within the JEM that contains it.
double rowPhiCoord (unsigned int row, const Coordinate &jemCoord)
 returns the phi coord of the row of the JEM at the coordinates passed
double dPhi (const Coordinate &coord) const
 height
double dEta (const Coordinate &coord) const
 width
JEMRegion region (const Coordinate &coord) const
 region
unsigned int col (const Coordinate &coord)
 return row of passed coordinate
unsigned int jem (const Coordinate &coord) const
 returns ID of JEP module (i.e.
virtual double eta () const
 returns the centre of the TT at eta_coord:
virtual double phi () const
 returns phi coordinate of centre of relevant trigger tower.
unsigned int key (double phi, double eta)
 calculates a map key from passed phi, eta coordinates
unsigned int key (const Coordinate &coord)
 returns the key of the passed Coordinate
Coordinate coord () const
 return central coords of current key value.

Protected Member Functions

ICoordinateconvertCoordsToIntegers (double phi, double eta)
 converts the coordinates and corrects for overflows etc.
virtual int sign (int temp) const
 returns -1 if temp is -ve and +1 if it is +ve.
virtual int sign (double temp) const
 returns -1 if temp is -ve and +1 if it is +ve.
int round (double a) const
 rounds number to nearest whole number
int sharpRound (double a) const
 rounds number as follows (-1.0 to 0.0) -> -1, (0.0 to 1.0) -> 0, (1.0 to 2.0)->1 etc.
int sharpRound2 (int a, int b) const
 divides a/b and returns a number as follows (where +b means +ve b): if 0
void setupThisKeyValues ()

Protected Attributes

int m_iphi
 integer phi coord
int m_ieta
 integer eta coord
double m_eta
 eta coordinate of key
double m_phi
 phi coordinate of key
int m_phiBin
 phi bin
int m_etaBin
 eta bin
double m_centralPhi
 this is the coordinate of the centre of the relevant trigger tower.
double m_centralEta
 this is the coordinate of the centre of the relevant trigger tower.
bool m_debug
 turns DEBUG code on and off

Private Member Functions

BinAndCoordcalculateTriggerBin (ICoordinate *iCoord)
 converts integer phi, eta coordinates to phi, eta trigger bins, and central coords
void setBins (ICoordinate *iCoord, unsigned int &phiBin, int &etaBin)
 sets the eta and phi bins
unsigned int midJEMEtaCol (const Coordinate &coord) const
 No descriptions.
unsigned int leftEndJEMEtaCol (const Coordinate &coord) const
 returns eta row of JEMs 0, or 8
unsigned int rightEndJEMEtaCol (const Coordinate &coord) const
 returns eta row of JEMs 7 or 15
unsigned int phiQuadrant (const double phi) const
 returns the quadrant number associated with the phi coordinate, 0 - 90 = 0 90 - 180 = 1 180-270 = 2 270-360 = 3

Private Attributes

bool m_debugModuleKey
 set to true to turn debugging info on

Detailed Description

The JetEnergyModuleKey object provides the key for each trigger tower depending on its eta-phi coords.

The key is an integer number that uniquely identifies each tower, and is needed by the STL map container: the map holds trigger towers and we retrieve them using their keys.

Author
Edward Moyse

Definition at line 35 of file JetEnergyModuleKey.h.

Member Enumeration Documentation

◆ JEMRegion

Enumerator
MidJEM 
LeftEndJEM 
RightEndJEM 
JEMRegionERROR 

Definition at line 38 of file JetEnergyModuleKey.h.

Constructor & Destructor Documentation

◆ JetEnergyModuleKey()

LVL1::JetEnergyModuleKey::JetEnergyModuleKey ( )

constructs a JetEnergyModuleKey object

Definition at line 36 of file JetEnergyModuleKey.cxx.

37 if (m_debugModuleKey) std::cout << "JetEnergyModuleKey: m_debugModuleKey output turned on...."<<std::endl;
38}
bool m_debugModuleKey
set to true to turn debugging info on
KeyUtilities()
the constructor is protected so a user can never make a KeyUtilities object

◆ ~JetEnergyModuleKey()

LVL1::JetEnergyModuleKey::~JetEnergyModuleKey ( )
virtual

Definition at line 40 of file JetEnergyModuleKey.cxx.

40 {
41}

Member Function Documentation

◆ calculateTriggerBin()

LVL1::BinAndCoord * LVL1::JetEnergyModuleKey::calculateTriggerBin ( ICoordinate * iCoord)
privatevirtual

converts integer phi, eta coordinates to phi, eta trigger bins, and central coords

converts integer phi, eta coordinates to phi, eta trigger bins.

Returns coordinates of centre of JEs

Implements LVL1::KeyUtilities.

Definition at line 246 of file JetEnergyModuleKey.cxx.

246 {
247// double phiBinWidth=((2*M_PI)/64.0);
248 int abs_ieta=abs(iCoord->eta() );
249 int sign=( iCoord->eta() )/abs_ieta;
250
251 int etaBin=0; unsigned int phiBin=0;
252 setBins(iCoord,phiBin,etaBin);
253
254 double centralPhi=( (static_cast<double>(phiBin))*TrigT1CaloDefs::jemPhiSize )
256 double centralEta=0.0;
257 if ((etaBin>-4)&&(etaBin<4)){
258 centralEta=(static_cast<double>(etaBin)*(TrigT1CaloDefs::jemEtaSize) )
260 }else{
261 centralEta=3.65*sign;//centre of end JEMs
262 }
263 if (m_debugModuleKey){
264 std::cout << "JetEnergyModuleKey: start calcTrigBin"<<std::endl;
265 std::cout << "phi, eta : ("<<m_phi<<", "<<m_eta<<")"<<std::endl;
266 std::cout << "iphi, ieta : ("<<( iCoord->phi() )<<", "<<( iCoord->eta() )<<")"<<std::endl;
267 std::cout << "abs_ieta : ("<<abs_ieta<<" and sign : "<<sign<<std::endl;
268 std::cout << "central : ("<<centralPhi<<", "<<centralEta<<")"
269 << "bin : ("<<phiBin<<","<<etaBin<<")"<<std::endl;
270 }
271
272 Coordinate* centralCoords = new Coordinate(centralPhi, centralEta);
273 if (m_debugModuleKey) std::cout <<" JetEnergyModuleKey : created coord "<<(*centralCoords)<<std::endl;
274 return new BinAndCoord(phiBin,etaBin,centralCoords);
275}
void setBins(ICoordinate *iCoord, unsigned int &phiBin, int &etaBin)
sets the eta and phi bins
virtual int sign(int temp) const
returns -1 if temp is -ve and +1 if it is +ve.
double m_phi
phi coordinate of key
double m_eta
eta coordinate of key
static const double jemPhiSize
static const double jemEtaSize
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setPhiMap phiBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin

◆ col()

unsigned int LVL1::JetEnergyModuleKey::col ( const Coordinate & coord)

return row of passed coordinate

Definition at line 214 of file JetEnergyModuleKey.cxx.

214 {
215 switch (region(coord)){
216 case MidJEM :
217 return midJEMEtaCol(coord);
218 case LeftEndJEM :
219 return leftEndJEMEtaCol(coord);
220 case RightEndJEM :
221 return rightEndJEMEtaCol(coord);
222 default:
223 std::cerr << "JetEnergyModuleKey::etaColumn UNKNOWN REGION"<<std::endl;
224 }
225 return static_cast<unsigned int>(JEMRegionERROR);
226}
unsigned int midJEMEtaCol(const Coordinate &coord) const
No descriptions.
unsigned int leftEndJEMEtaCol(const Coordinate &coord) const
returns eta row of JEMs 0, or 8
unsigned int rightEndJEMEtaCol(const Coordinate &coord) const
returns eta row of JEMs 7 or 15
JEMRegion region(const Coordinate &coord) const
region
Coordinate coord() const
return central coords of current key value.

◆ convertCoordsToIntegers()

ICoordinate * LVL1::KeyUtilities::convertCoordsToIntegers ( double phi,
double eta )
protectedinherited

converts the coordinates and corrects for overflows etc.

For instance, if phi is negative this routine converts to the equivalent positive position.

For instance, if phi is negative this routine converts to the equivalent positive position. *todo tidy up a bit.

Definition at line 105 of file KeyUtilities.cxx.

105 {
106
107 double phiBinWidth=((2*M_PI)/64.0);
108 // there are a maximum of 64 cells in the phi direction
109 // stretching from 0 to ~2*PI.
110 if (m_debug) std::cout << "KU : (phi, eta) ("<<phi<<","<<eta<<")"<<std::endl;
111 int iphi=sharpRound(phi/phiBinWidth);
112 int ieta=0;
113
114 // Now check that m_iphi is between 0 and 64.
115 iphi = iphi%64;
116 if (iphi<0) iphi = 64+iphi;
117
118 // Make m_ieta symmetrical:
119 // o no cell at m_ieta=0
120 // o first cells at +-1
121 // o last cells at about +- 50
122 // this gives us a more useful numerical symmetry.
123
124 // So to get integer value we do:
125 int temp_sign=sign(eta);
126 double temp_abs=eta*temp_sign;
127
128 double temp_double=(temp_abs*10.0+1.0)*temp_sign;
129 if (m_debug) std::cout << "KU : temp_abs, temp_sign, temp_double : "<<temp_abs<<","<<temp_sign<<","<<temp_double<<std::endl;
130// if (m_eta>=0.0){
131// temp_double=m_eta*10.0+1.0;
132// }else{
133// temp_double=m_eta*10.0-1.0;
134// }
135
136 ieta=static_cast<int>(temp_double);
137 if (m_debug) std::cout << "KU : (iphi, ieta) ("<<iphi<<","<<ieta<<")"<<std::endl;
138 ICoordinate* iCoord=new ICoordinate(iphi, ieta, eta);
139 return iCoord;
140}
#define M_PI
virtual double eta() const
returns the centre of the TT at eta_coord:
virtual double phi() const
returns phi coordinate of centre of relevant trigger tower.
int sharpRound(double a) const
rounds number as follows (-1.0 to 0.0) -> -1, (0.0 to 1.0) -> 0, (1.0 to 2.0)->1 etc.
bool m_debug
turns DEBUG code on and off

◆ coord()

LVL1::Coordinate LVL1::KeyUtilities::coord ( ) const
inherited

return central coords of current key value.

Definition at line 199 of file KeyUtilities.cxx.

199 {
200 return Coordinate(m_centralPhi,m_centralEta);
201}
double m_centralEta
this is the coordinate of the centre of the relevant trigger tower.
double m_centralPhi
this is the coordinate of the centre of the relevant trigger tower.

◆ dEta()

double LVL1::JetEnergyModuleKey::dEta ( const Coordinate & coord) const
virtual

width

return width of JE

Implements LVL1::KeyUtilities.

Definition at line 175 of file JetEnergyModuleKey.cxx.

175 {
176 if (region(coord) == MidJEM) return 0.8;
178 return 2.5;//end JEMs cover 2.4-4.9
179 return 0.0;
180}

◆ dPhi()

double LVL1::JetEnergyModuleKey::dPhi ( const Coordinate & coord) const
virtual

height

return height of JEM

Implements LVL1::KeyUtilities.

Definition at line 170 of file JetEnergyModuleKey.cxx.

170 {
171 return M_PI/2;// one quadrant
172}

◆ eta()

double LVL1::KeyUtilities::eta ( ) const
virtualinherited

returns the centre of the TT at eta_coord:

returns the eta coord of the centre of the relevent trigger tower

Definition at line 145 of file KeyUtilities.cxx.

145 {
146 return m_centralEta;
147}

◆ jeCoords()

std::vector< Coordinate > LVL1::JetEnergyModuleKey::jeCoords ( unsigned int crate,
unsigned int module )

returns coordinates of all JetElements in given crate and module

returns coordinates of all JetElements in passed crate+module

Get keys for core JetElement locations in this module
Algorithm: start from bottom-left JetElement coordinate in JEM
Then step up by 8 elements in phi (4 in FCAL)
Increment eta and repeat
Do so for all 4 eta bins in JEM

Definition at line 79 of file JetEnergyModuleKey.cxx.

79 {
80 std::vector<Coordinate> coords;
81
82 // Protection
83 if (crate > 1 || module > 15) return coords;
84
90
91 int top = ( module < 8 ? 0 : 1 );
92 double phiStart = crate*TrigT1CaloDefs::jemPhiSize
95 double etaStart;
96 // Central JEMs are easy
97 if ( (module%8) > 0) {
98 etaStart = (module%8)*TrigT1CaloDefs::jemEtaSize - 3.1;
99 }
100 // -ive eta end
101 else {
103 }
104
105 // First coordinate for this JEM
106 Coordinate startCol(phiStart, etaStart);
107 // Nested incrementation of eta and phi
108 CoordToHardware cth;
109 JetElementKey get(0.,0.);
110 while (cth.jepModule( startCol ) == module) {
111 Coordinate next = get.getCentre(startCol);
112 while (cth.jepCrate( next ) == crate) {
113 coords.push_back(next);
114 next = get.upPhi(next);
115 }
116 startCol = get.rightEta(startCol);
117 if (startCol.eta() == TrigT1CaloDefs::RegionERROREtaCentre) break;
118 }
119
120 return coords;
121}
@ top
static const double Region5EtaCentre
static const double RegionERROREtaCentre
static const double Region0Height
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ jeKeys()

std::vector< unsigned int > LVL1::JetEnergyModuleKey::jeKeys ( unsigned int crate,
unsigned int module )

calculates keys of all JetElements in given crate and module

returns JetElementKeys of all JetElements in passed crate+module

Definition at line 59 of file JetEnergyModuleKey.cxx.

59 {
60 std::vector<unsigned int> keys;
61
62 // Protection
63 if (crate > 1 || module > 15) return keys;
64
65 // First get coordinates
66 std::vector<Coordinate> coords = jeCoords(crate, module);
67
68 // Then calculate keys
69 JetElementKey get(0.,0.);
70 for (const Coordinate& c : coords) {
71 keys.push_back(get.jeKey(c));
72 }
73
74 return keys;
75}
std::vector< Coordinate > jeCoords(unsigned int crate, unsigned int module)
returns coordinates of all JetElements in given crate and module

◆ jem()

unsigned int LVL1::JetEnergyModuleKey::jem ( const Coordinate & coord) const

returns ID of JEP module (i.e.

Returns JEM number for coordinate.

JEM) There are 16 JEMS per crate, and 8 JEMS per quadrant. The central 6 JEMS cover the barrel, JEMs 0,7,8 & 15 extend over the FCAL as well. (each crate contains JEMS for opposite quadrants, so one crate might have JEMs 0-7 in quadrant 0 and JEMs 8-15 in quadrant 2)

Definition at line 229 of file JetEnergyModuleKey.cxx.

229 {
230 double min=3.2; double jemEtaWidth=0.8;
231 unsigned int crateModifier=(phiQuadrant(coord.phi())/2);
232 //=0 for quad 0&1, =1 for quad 2&3
233
234 double temp = (coord.eta()+min)/jemEtaWidth;
235 int jem = static_cast<int>(temp);
236 jem=(jem < 0 ? 0 : jem);
237 jem=(jem > 7 ? 7 : jem);
238
239 jem+=(8*crateModifier);
240 return static_cast<unsigned int>(jem);
241}
#define min(a, b)
Definition cfImp.cxx:40
unsigned int phiQuadrant(const double phi) const
returns the quadrant number associated with the phi coordinate, 0 - 90 = 0 90 - 180 = 1 180-270 = 2 2...
unsigned int jem(const Coordinate &coord) const
returns ID of JEP module (i.e.

◆ jemKey() [1/2]

unsigned int LVL1::JetEnergyModuleKey::jemKey ( const xAOD::JetElement * jetElement)

returns the key of the passed Coordinate

returns trigger tower key of passed Coordinate

Definition at line 44 of file JetEnergyModuleKey.cxx.

44 {
45 return key(jetElement->phi(), jetElement->eta());
46}
unsigned int key(double phi, double eta)
calculates a map key from passed phi, eta coordinates
float phi() const
get phi (note that for L1Calo phi runs from 0 to 2pi)
float eta() const
get eta

◆ jemKey() [2/2]

unsigned int LVL1::JetEnergyModuleKey::jemKey ( unsigned int crate,
unsigned int module )

calculates key from crate and module index

returns trigger tower key of passed crate+module

Definition at line 51 of file JetEnergyModuleKey.cxx.

51 {
52 double eta = ((module%8)+0.5)*TrigT1CaloDefs::jemEtaSize - 3.2;
53 int quadrant = crate + ((module>7) ? 2 : 0);
54 double phi = (quadrant+0.5)*TrigT1CaloDefs::jemPhiSize;
55 return key(phi, eta);
56}

◆ key() [1/2]

unsigned int LVL1::KeyUtilities::key ( const Coordinate & coord)
inherited

returns the key of the passed Coordinate

returns trigger tower key of passed Coordinate

Definition at line 96 of file KeyUtilities.cxx.

96 {
97 return key(coord.phi(), coord.eta());
98}

◆ key() [2/2]

unsigned int LVL1::KeyUtilities::key ( double phi,
double eta )
inherited

calculates a map key from passed phi, eta coordinates

returns key

calculates a map key from passed phi, eta coordinates

Definition at line 77 of file KeyUtilities.cxx.

77 {
78 m_eta=eta;
79 m_phi=phi;
80 ICoordinate* iCoord = convertCoordsToIntegers(m_phi, m_eta);
81 BinAndCoord* bandc = calculateTriggerBin(iCoord);
82 if (m_debug) std::cout << "KU : key: got bandc "<<std::endl;
83 m_phiBin=bandc->phiBin();
84 m_etaBin=bandc->etaBin();
85 m_centralPhi=bandc->coords()->phi();
86 m_centralEta=bandc->coords()->eta();
87 delete bandc;
88 delete iCoord;
89 int temp=((m_etaBin+50)<<6) + m_phiBin;
90
91 if (m_debug) std::cout << "KU : key: returning - "<<temp<<std::endl;
92 return static_cast<unsigned int>(temp);
93}
virtual BinAndCoord * calculateTriggerBin(ICoordinate *iCoord)=0
converts integer phi, eta coordinates to phi, eta trigger bins.
ICoordinate * convertCoordsToIntegers(double phi, double eta)
converts the coordinates and corrects for overflows etc.

◆ leftEndJEMEtaCol()

unsigned int LVL1::JetEnergyModuleKey::leftEndJEMEtaCol ( const Coordinate & coord) const
private

returns eta row of JEMs 0, or 8

returns eta row of JEMs 0,7,8 or 15

Definition at line 294 of file JetEnergyModuleKey.cxx.

294 {
295 // left hand end first
296 JetElementKey get;
297 switch (get.jeRegion( coord )){
299 return 3;
300 break;
302 return 2;
303 break;
305 return 1;
306 break;
308 return 0;
309 break;
311 // here to stop compiler warnings
312 break;
314 // here to stop compiler warnings
315 break;
316 }
317 return static_cast<unsigned int>(JEMRegionERROR);
318}

◆ midJEMEtaCol()

unsigned int LVL1::JetEnergyModuleKey::midJEMEtaCol ( const Coordinate & coord) const
private

No descriptions.

Definition at line 278 of file JetEnergyModuleKey.cxx.

278 {
279 double etaWidth=0.2;//only true for middle JEMS
280 double JEMEtaSize=0.8;
281// unsigned int columnsPerJEM= 4;
282 int etaBin=( jem(coord)%8)-4;//bins range from -4 to +3
283 double etaMin=(etaBin*JEMEtaSize);
284
285 double temp =(coord.eta()-etaMin)/etaWidth;
286 int colNum=sharpRound(temp);
287
288 colNum=(colNum < 0 ? 0 : colNum);//sorts out any rounding errors
289 colNum=(colNum > 3 ? 3 : colNum);
290
291 return colNum;
292}

◆ phi()

double LVL1::KeyUtilities::phi ( ) const
virtualinherited

returns phi coordinate of centre of relevant trigger tower.

returns phi coordinate of the centre of the relevent trigger tower.

Definition at line 154 of file KeyUtilities.cxx.

154 {
155 return m_centralPhi;
156}

◆ phiQuadrant()

unsigned int LVL1::JetEnergyModuleKey::phiQuadrant ( const double phi) const
private

returns the quadrant number associated with the phi coordinate, 0 - 90 = 0 90 - 180 = 1 180-270 = 2 270-360 = 3

Definition at line 354 of file JetEnergyModuleKey.cxx.

354 {
355 double temp = phi/(M_PI/2);
356 unsigned int quad = static_cast<unsigned int>(temp);
357 quad=(quad > 3 ? 0 : quad);
358
359 return static_cast<unsigned int>(quad);
360}

◆ region()

LVL1::JetEnergyModuleKey::JEMRegion LVL1::JetEnergyModuleKey::region ( const Coordinate & coord) const

region

r

Definition at line 187 of file JetEnergyModuleKey.cxx.

187 {
188 double absEta=fabs(coord.eta());
189 if (absEta<=2.4) return MidJEM;
190 if ((coord.eta()>2.4)&&(coord.eta()<=4.9))return RightEndJEM;
191 if ((coord.eta()>=-4.9)&&(coord.eta()<-2.4))return LeftEndJEM;
192 std::cerr << "JetEnergyModuleKey::region ... Unknown region!"<<std::endl
193 << "Coordinate is ("<<coord.phi()<<", "<<coord.eta()<<")"
194 <<std::endl;
195 return JEMRegionERROR;
196}
bool absEta(const xAOD::TauJet &tau, float &out)

◆ rightEndJEMEtaCol()

unsigned int LVL1::JetEnergyModuleKey::rightEndJEMEtaCol ( const Coordinate & coord) const
private

returns eta row of JEMs 7 or 15

returns eta row of JEMs 0,7,8 or 15

Definition at line 321 of file JetEnergyModuleKey.cxx.

321 {
322 // left hand end first
323 JetElementKey get;
324 switch (get.jeRegion( coord )){
326 return 0;
327 break;
329 return 1;
330 break;
332 return 2;
333 break;
335 return 3;
336 break;
338 // here to stop compiler warnings
339 break;
341 // here to stop compiler warnings
342 break;
343 }
344 return static_cast<unsigned int>(JEMRegionERROR);
345}

◆ round()

int LVL1::KeyUtilities::round ( double a) const
protectedinherited

rounds number to nearest whole number

Definition at line 180 of file KeyUtilities.cxx.

180 {
181 return static_cast<int>(a<0.0?ceil(a-0.5):a>0.0?floor(a+0.5):0.0);
182}
static Double_t a

◆ row() [1/2]

unsigned int LVL1::JetEnergyModuleKey::row ( const Coordinate & coord) const

returns the phi row of a coord within the JEM that contains it.

Used in energy trigger (JEM)

Definition at line 124 of file JetEnergyModuleKey.cxx.

124 {
125 double phi=coord.phi();
126 double rowHeight=TrigT1CaloDefs::jemPhiSize/8.0;
127
128 unsigned int rowsPerJEM = 8u;
129 int rowNum=static_cast<int>(phi/rowHeight);
130 rowNum=rowNum%rowsPerJEM;
131 return rowNum;
132}

◆ row() [2/2]

unsigned int LVL1::JetEnergyModuleKey::row ( const xAOD::JetElement * JE) const

returns the phi row of a coord within the JEM that contains it.

Used in energy trigger (JEM)

Definition at line 136 of file JetEnergyModuleKey.cxx.

136 {
137 Coordinate coord(JE->phi(), JE->eta());
138 return row( coord );
139}
unsigned int row(const Coordinate &coord) const
returns the phi row of a coord within the JEM that contains it.

◆ rowPhiCoord()

double LVL1::JetEnergyModuleKey::rowPhiCoord ( unsigned int row,
const Coordinate & jemCoord )

returns the phi coord of the row of the JEM at the coordinates passed

Definition at line 143 of file JetEnergyModuleKey.cxx.

143 {
144 //not sure how to do this.
145 //should really reuse code, but above is tied to KU stuff. Probably way to go though.
146
147 ICoordinate* iCoord = convertCoordsToIntegers(jemCoord.phi(), jemCoord.eta());
148 int etaBin=0; unsigned int phiBin=0;
149 setBins(iCoord,phiBin,etaBin);
150 // now work out row coord.
151
152 if (rowNum>7){
153 std::cerr << "ERROR!!! JetEnergyModuleKey::rowPhiCoord exceeds allowed range. Row, "<<rowNum
154 <<" will be set to zero"<<std::endl;
155 rowNum=0;
156 }
157 double phi =( (static_cast<double>(phiBin))*TrigT1CaloDefs::jemPhiSize ); //bot of JEM
158 phi+= static_cast<double>( rowNum )*0.2+0.1; //mid of row
159 delete iCoord;
160 if (m_debugModuleKey){
161 if ( (phi<(jemCoord.phi()-0.8))||(phi>(jemCoord.phi()+0.8) ) ){
162 std::cerr << "ERROR!!! JetEnergyModuleKey::rowPhiCoord phi of row is "<<phi
163 <<" in a JEM at ("<<jemCoord.phi()<<", "<<jemCoord.eta()<<")"<<std::endl;
164 }//endif phi sensible
165 }//endif debug
166 return phi;
167}

◆ setBins()

void LVL1::JetEnergyModuleKey::setBins ( ICoordinate * iCoord,
unsigned int & phiBin,
int & etaBin )
private

sets the eta and phi bins

Definition at line 201 of file JetEnergyModuleKey.cxx.

201 {
202 unsigned int iPhiSize=16 ; // =PI/2 * 10
203 phiBin=( iCoord->phi() )/(iPhiSize);
204 int iEtaSize=8;// JEMs are 0.8 in eta, i.e ietaSize=8
205 etaBin=sharpRound2(iCoord->eta(),iEtaSize);
206 // the above calculation fails since end JEMs are larger, so ....
207 etaBin=(etaBin < -4 ? -4 : etaBin); // etaBin=-5
208 etaBin=(etaBin > 4 ? 4 : etaBin); // belongs to the JEM in etaBin=-4
209
210 return;
211}
int sharpRound2(int a, int b) const
divides a/b and returns a number as follows (where +b means +ve b): if 0

◆ setupThisKeyValues()

void LVL1::KeyUtilities::setupThisKeyValues ( )
protectedinherited

Definition at line 168 of file KeyUtilities.cxx.

168 {
169 ICoordinate* iCoord = convertCoordsToIntegers(m_phi, m_eta);
170 BinAndCoord* bandc = calculateTriggerBin(iCoord);
171 m_phiBin=bandc->phiBin();
172 m_etaBin=bandc->etaBin();
173 m_centralPhi=bandc->coords()->phi();
174 m_centralEta=bandc->coords()->eta();
175 delete bandc;
176 delete iCoord;
177}

◆ sharpRound()

int LVL1::KeyUtilities::sharpRound ( double a) const
protectedinherited

rounds number as follows (-1.0 to 0.0) -> -1, (0.0 to 1.0) -> 0, (1.0 to 2.0)->1 etc.

Definition at line 185 of file KeyUtilities.cxx.

185 {
186 return static_cast<int>(a<0.0?(a-1.0):a>0.0?(a):0.0);
187}

◆ sharpRound2()

int LVL1::KeyUtilities::sharpRound2 ( int a,
int b ) const
protectedinherited

divides a/b and returns a number as follows (where +b means +ve b): if 0

Definition at line 189 of file KeyUtilities.cxx.

189 {
190 int temp=(abs(a)-1)/b+1;
191 return temp*sign(a);
192}

◆ sign() [1/2]

int LVL1::KeyUtilities::sign ( double temp) const
protectedvirtualinherited

returns -1 if temp is -ve and +1 if it is +ve.

returns 0 if temp =0

Definition at line 164 of file KeyUtilities.cxx.

164 {
165 return ((temp >= 0.0) ? 1 : -1);
166}

◆ sign() [2/2]

int LVL1::KeyUtilities::sign ( int temp) const
protectedvirtualinherited

returns -1 if temp is -ve and +1 if it is +ve.

returns 0 if temp =0

Definition at line 159 of file KeyUtilities.cxx.

159 {
160 return ((temp >= 0) ? 1 : -1);
161}

Member Data Documentation

◆ m_centralEta

double LVL1::KeyUtilities::m_centralEta
protectedinherited

this is the coordinate of the centre of the relevant trigger tower.

Definition at line 112 of file KeyUtilities.h.

◆ m_centralPhi

double LVL1::KeyUtilities::m_centralPhi
protectedinherited

this is the coordinate of the centre of the relevant trigger tower.

Definition at line 109 of file KeyUtilities.h.

◆ m_debug

bool LVL1::KeyUtilities::m_debug
protectedinherited

turns DEBUG code on and off

Definition at line 114 of file KeyUtilities.h.

◆ m_debugModuleKey

bool LVL1::JetEnergyModuleKey::m_debugModuleKey
private

set to true to turn debugging info on

Definition at line 100 of file JetEnergyModuleKey.h.

◆ m_eta

double LVL1::KeyUtilities::m_eta
protectedinherited

eta coordinate of key

Definition at line 100 of file KeyUtilities.h.

◆ m_etaBin

int LVL1::KeyUtilities::m_etaBin
protectedinherited

eta bin

Definition at line 106 of file KeyUtilities.h.

◆ m_ieta

int LVL1::KeyUtilities::m_ieta
protectedinherited

integer eta coord

Definition at line 98 of file KeyUtilities.h.

◆ m_iphi

int LVL1::KeyUtilities::m_iphi
protectedinherited

integer phi coord

Definition at line 96 of file KeyUtilities.h.

◆ m_phi

double LVL1::KeyUtilities::m_phi
protectedinherited

phi coordinate of key

Definition at line 102 of file KeyUtilities.h.

◆ m_phiBin

int LVL1::KeyUtilities::m_phiBin
protectedinherited

phi bin

Definition at line 104 of file KeyUtilities.h.


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