ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
LVL1::CPMTobAlgorithm Class Reference

This is an internal class, used in the EM/Tau trigger. More...

#include <CPMTobAlgorithm.h>

Collaboration diagram for LVL1::CPMTobAlgorithm:

Public Member Functions

 CPMTobAlgorithm (double eta, double phi, const xAOD::CPMTowerMap_t *ttContainer, const TrigConf::L1Menu *l1menu, int slice=-1)
 
 ~CPMTobAlgorithm ()
 
double eta ()
 Accessors for TOB data. More...
 
double phi ()
 Returns phi coordinate of RoI, using standard ATLAS convention. More...
 
int EMClusET ()
 Returns EM cluster ET, limited to 8 bits. More...
 
int EMIsolWord ()
 Returns EM isolation word (5 bits) More...
 
int TauClusET ()
 Returns Tau cluster ET, limited to 8 bits. More...
 
int TauIsolWord ()
 Returns Tau isolation word (5 bits) More...
 
bool isEMRoI ()
 Report whether this passed as an EM TOB. More...
 
bool isTauRoI ()
 Report whether this passed as a Tau TOB. More...
 
bool isEtMax ()
 Does this window pass the local ET maximum condition. More...
 
int CoreET ()
 Additional information for reconstruction & performance studies. More...
 
int EMCoreET ()
 Returns EM core ET
More...
 
int HadCoreET ()
 Returns Had core ET (inner isolation sum) More...
 
int EMIsolET ()
 Returns EM isolation ET. More...
 
int HadIsolET ()
 Returns Had isolation ET. More...
 
int EMLUTClus ()
 Sums with the range & precision of isolation LUT inputs. More...
 
int EMLUTEMIsol ()
 Returns EM isolation ET with range and precision of EM LUT input. More...
 
int EMLUTHadVeto ()
 Returns Had veto ET with range and precision of EM LUT input. More...
 
int TauLUTClus ()
 Returns Tau cluster ET with range and precision of LUT input. More...
 
int TauLUTEMIsol ()
 Returns EM isolation ET with range and precision of Tau LUT input. More...
 
xAOD::CPMTobRoIEMCPMTobRoI ()
 Create CPMTobRoIs and return pointers to them. More...
 
xAOD::CPMTobRoITauCPMTobRoI ()
 Returns CPMTobRoI for TAU hypothesis, provided TAU Tob conditions passed. More...
 

Private Member Functions

void setRoICoord (double eta, double phi)
 threshold values More...
 
void testEtMax (const std::vector< unsigned int > &cores)
 Form all 2x2 clusters within window and test centre is a local ET maximum. More...
 
void emAlgorithm ()
 Check trigger condition and set hits if appropriate. More...
 
void tauAlgorithm ()
 Check trigger condition and set hits if appropriate. More...
 
xAOD::CPMTobRoIcreateTobRoI (int type)
 Create a pointer to a CPMTobRoI and return it. More...
 

Private Attributes

double m_refEta
 
double m_refPhi
 
const TrigConf::L1Menum_l1menu {nullptr}
 
double m_eta
 Algorithm results. More...
 
double m_phi
 
unsigned int m_Core
 
unsigned int m_EMClus
 
unsigned int m_TauClus
 
unsigned int m_EMIsolWord
 
unsigned int m_TauIsolWord
 
unsigned int m_EMCore
 
unsigned int m_EMIsol
 
unsigned int m_HadCore
 
unsigned int m_HadIsol
 
bool m_EtMax
 
bool m_EMThresh
 
bool m_TauThresh
 

Static Private Attributes

static const unsigned int m_maxClus = 0xFF
 Algorithm parameters. More...
 
static const unsigned int m_emLUT_ClusterFirstBit = 1
 
static const unsigned int m_emLUT_ClusterNBits = 6
 
static const unsigned int m_emLUT_EMIsolFirstBit = 0
 
static const unsigned int m_emLUT_EMIsolNBits = 4
 
static const unsigned int m_emLUT_HadVetoFirstBit = 0
 
static const unsigned int m_emLUT_HadVetoNBits = 3
 
static const unsigned int m_tauLUT_ClusterFirstBit = 1
 
static const unsigned int m_tauLUT_ClusterNBits = 7
 
static const unsigned int m_tauLUT_EMIsolFirstBit = 0
 
static const unsigned int m_tauLUT_EMIsolNBits = 6
 
static const unsigned int m_noIsol = 999
 
static const double m_maxEta = 2.5
 

Detailed Description

This is an internal class, used in the EM/Tau trigger.

The CPMTobAlgorithm:

Definition at line 43 of file CPMTobAlgorithm.h.

Constructor & Destructor Documentation

◆ CPMTobAlgorithm()

LVL1::CPMTobAlgorithm::CPMTobAlgorithm ( double  eta,
double  phi,
const xAOD::CPMTowerMap_t ttContainer,
const TrigConf::L1Menu l1menu,
int  slice = -1 
)

RoI coordinates are centre of window, while key classes are designed for TT coordinates - differ by 0.5* TT_size. Using wrong coordinate convention can lead to precision errors in key generation.

Offsetting by TT_size/4 will put coordinates inside reference TT whether input was reference TT coordinate or RoI centre coordinate. To be extra safe, the code below will then compute the centre of the reference tower.

This should all ensure consistent & safe key generation however the initial coordinate was specified.

Now loop over towers within window and form clusters.

Interesting one is the 9 RoI cores. The logic below fills these as an a 9-element std::vector. The ordering of the elements is as follows: 2 5 8 1 4 7 0 3 6 So the RoI "ET maximum" condition is that 4 >= 0-3, 4 > 5-8 If you picture the cores in a 3x3 array, cores[iphi][ieta], then the index in the vector above = iphi + 3*ieta.

Definition at line 47 of file CPMTobAlgorithm.cxx.

57 {
71  TriggerTowerKey get(phi-M_PI/128.,eta-0.025);
72  Coordinate refCoord = get.coord();
73  m_refEta = refCoord.eta();
74  m_refPhi = refCoord.phi();
75 
76  // Set coordinate of centre of RoI, starting from reference tower coordinate
78 
93  std::vector<unsigned int> emEt(4);
94  std::vector<unsigned int> cores(9);
95  for (int etaOffset = -1; etaOffset <= 2; etaOffset++) {
96  double tempEta = m_refEta + etaOffset*0.1;
97  for (int phiOffset = -1; phiOffset <= 2; phiOffset++) {
98  double tempPhi = m_refPhi + phiOffset*M_PI/32;
99  int key = get.ttKey(tempPhi, tempEta);
100  xAOD::CPMTowerMap_t::const_iterator tt = ttContainer->find(key);
101  if (tt != ttContainer->end() && fabs(tempEta) < m_maxEta) {
102  // Get the TT ET values once here, rather than repeat function calls
103  int emTT = 0;
104  int hadTT = 0;
105  if (slice < 0) { // Default to using peak slice
106  emTT = (tt->second)->emEnergy();
107  hadTT = (tt->second)->hadEnergy();
108  }
109  else { // Use user-specified slice
110  emTT = (tt->second)->emSliceEnergy(slice);
111  hadTT = (tt->second)->hadSliceEnergy(slice);
112  }
113  // EM Trigger Clusters and Core clusters
114  if (etaOffset >= 0 && etaOffset <= 1 && phiOffset >= 0 && phiOffset <= 1) {
115  emEt[phiOffset+2*etaOffset] = emTT;
116  m_EMCore += emTT;
117  m_HadCore += hadTT;
118  }
119  // Isolation sums
120  else {
121  m_EMIsol += emTT;
122  m_HadIsol += hadTT;
123  }
124  // Each tower is part of up to 4 RoI core clusters
125  if (etaOffset >= 0) {
126  if (phiOffset >= 0) cores[phiOffset+3*etaOffset] += emTT + hadTT;
127  if (phiOffset < 2) cores[phiOffset+3*etaOffset+1] += emTT + hadTT;
128  }
129  if (etaOffset < 2) {
130  if (phiOffset >= 0) cores[phiOffset+3*etaOffset+3] += emTT + hadTT;
131  if (phiOffset < 2) cores[phiOffset+3*etaOffset+4] += emTT + hadTT;
132  }
133 
134  }
135  } // phi offset loop
136  } // eta offset loop
137 
138  // Core of this window is cores[4]
139  m_Core = cores[4];
140 
141  // Form most energetic 2-tower EM cluster
142  m_EMClus = ( (emEt[0] > emEt[3]) ? emEt[0] : emEt[3] )
143  + ( (emEt[1] > emEt[2]) ? emEt[1] : emEt[2] );
144 
145  // Tau cluster
147 
148  // Check whether RoI condition is met.
149  testEtMax(cores);
150 
151  // test cluster and isolation conditions
152  emAlgorithm();
153  tauAlgorithm();
154 
155 }
156 
158 }
159 

◆ ~CPMTobAlgorithm()

LVL1::CPMTobAlgorithm::~CPMTobAlgorithm ( )

Definition at line 163 of file CPMTobAlgorithm.cxx.

Member Function Documentation

◆ CoreET()

int LVL1::CPMTobAlgorithm::CoreET ( )

Additional information for reconstruction & performance studies.

Returns RoI Core ET.

Definition at line 380 of file CPMTobAlgorithm.cxx.

380  : m_maxClus );
381 }
382 

◆ createTobRoI()

xAOD::CPMTobRoI * LVL1::CPMTobAlgorithm::createTobRoI ( int  type)
private

Create a pointer to a CPMTobRoI and return it.

This function does not check whether a valid RoI exists - that is left to the calling functions (but as this is a private method that should be enough)

Definition at line 500 of file CPMTobAlgorithm.cxx.

501  {
502  et = EMClusET();
503  isol = EMIsolWord();
504  }
505  else if (type == TrigT1CaloDefs::tauTobType) {
506  et = TauClusET();
507  isol = TauIsolWord();
508  }
509  else return pointer;
510 
511  // Need to calculate hardware coordinate
512  // Object coordinate is RoI centre, but this works better if use reference tower coord
513  float eta = m_eta - 0.05;
514  float phi = m_phi - M_PI/64;
515  if (phi < 0) phi += 2*M_PI;
516  Coordinate coord(phi, eta);
517  CoordToHardware convertor;
518 
519  int crate = convertor.cpCrate(coord);
520  int module = convertor.cpModule(coord);
521  int chip = convertor.cpModuleFPGA(coord);
522  int location = convertor.cpModuleLocalRoI(coord);
523 
524  /*
525  float phi = ( (m_phi >= 0) ? m_phi : 2.*M_PI + m_phi );
526  int crate = 2*phi/M_PI;
527  int module = (m_eta + 2.8)/0.4 + 1;
528  int iPhi = (phi - crate*M_PI/2)*32/M_PI;
529  int chip = iPhi/2;
530  int iEta = (m_eta + 2.8 - module*0.4)/0.1;
531  int iSide = iEta/2;
532  int location = (iSide << 2) + ((iPhi&1) << 1) + (iEta&1);
533  */
534 
535  pointer = new xAOD::CPMTobRoI;
536  pointer->makePrivateStore();
537  pointer->initialize(crate, module, chip, location, type, et, isol);
538 
539  return pointer;
540 
541 }
542 
543 
544 } // end of namespace bracket
545 
546 

◆ emAlgorithm()

void LVL1::CPMTobAlgorithm::emAlgorithm ( )
private

Check trigger condition and set hits if appropriate.

Disable isolation by default, then set cut if defined and in range. Expect parameters to be on 100 MeV scale whatever the digit scale, so need to rescale if digit scale differs. Also must rescale ET sums to same scale for comparison

Definition at line 211 of file CPMTobAlgorithm.cxx.

216  {1};
217  unsigned int tobPtMinEM{0};
218  emEnergyScale = m_l1menu->thrExtraInfo().EM().emScale();
219  tobPtMinEM = m_l1menu->thrExtraInfo().EM().ptMinToTopo();
220 
221  unsigned int thresh = tobPtMinEM * emEnergyScale;
222 
223  if (m_EMClus <= thresh) return;
224 
225  // Passed, so there is a TOB here
226  m_EMThresh = true;
227 
228  // Now calculate isolation word
229  // Define cluster and isolation values with appropriate scales and range for isolation LUT
230  unsigned int clusMask = ( (1<<m_emLUT_ClusterNBits)-1 )<<m_emLUT_ClusterFirstBit;
231  unsigned int emIsolMask = ( (1<<m_emLUT_EMIsolNBits) -1 )<<m_emLUT_EMIsolFirstBit;
232  unsigned int hadIsolMask = ( (1<<m_emLUT_HadVetoNBits)-1 )<<m_emLUT_HadVetoFirstBit;
233 
234  // If cluster overflows, set all threshold bits
235  if (m_EMClus >= clusMask) {
236  m_EMIsolWord = 0x1F;
237  return;
238  }
239 
240  // For consistency with LUT filling and menu parameters, convert ET sums to 100 MeV units
241  int clus = (( (m_EMClus < clusMask) ? (m_EMClus & clusMask) : clusMask ) * 10)/emEnergyScale;
242  int emIsol = (( (m_EMIsol < emIsolMask) ? (m_EMIsol & emIsolMask) : emIsolMask ) * 10)/emEnergyScale;
243  int hadVeto = (( (m_HadCore < hadIsolMask) ? (m_HadCore & hadIsolMask) : hadIsolMask ) * 10)/emEnergyScale;
244 
249  std::vector<int> emisolcuts(5,m_noIsol);
250  std::vector<int> hadisolcuts(5,m_noIsol);
251  for(size_t bit = 1; bit<=5; ++bit) {
252  const TrigConf::IsolationLegacy & iso = m_l1menu->thrExtraInfo().EM().isolation("EMIsoForEMthr", bit);
253  if(! iso.isDefined() ) {
254  continue;
255  }
256  int offset = iso.offset();
257  int slope = iso.slope();
258  int mincut = iso.mincut();
259  int upperlimit = iso.upperlimit()*10;
260  if (clus < upperlimit && bit >= 1 && bit <= 5) {
261  // As "slope" = 10* slope, rescale clus too to get fraction right.
262  int cut = offset + (slope != 0 ? 10*clus/slope : 0);
263  if (cut < mincut) cut = mincut;
264  emisolcuts[bit-1] = cut;
265  }
266  }
267  for(size_t bit = 1; bit<=5; ++bit) {
268  const TrigConf::IsolationLegacy & iso = m_l1menu->thrExtraInfo().EM().isolation("HAIsoForEMthr", bit);
269  if(! iso.isDefined() ) {
270  continue;
271  }
272  int offset = iso.offset();
273  int slope = iso.slope();
274  int mincut = iso.mincut();
275  int upperlimit = iso.upperlimit()*10;
276  if (clus < upperlimit && bit >= 1 && bit <= 5) {
277  // As "slope" = 10* slope, rescale clus too to get fraction right.
278  int cut = offset + (slope != 0 ? 10*clus/slope : 0);
279  if (cut < mincut) cut = mincut;
280  hadisolcuts[bit-1] = cut;
281  }
282  }
283 
284  // Set isolation bits
285  for (unsigned int isol = 0; isol < 5; ++isol) {
286  if (emIsol <= emisolcuts[isol] && hadVeto <= hadisolcuts[isol]) m_EMIsolWord += (1 << isol);
287  }
288 
289 }
290 
291 
294 
295  // Initialise to correct defaults, to be sure

◆ EMClusET()

int LVL1::CPMTobAlgorithm::EMClusET ( )

Returns EM cluster ET, limited to 8 bits.

Definition at line 385 of file CPMTobAlgorithm.cxx.

385  : m_maxClus );
386 }
387 

◆ EMCoreET()

int LVL1::CPMTobAlgorithm::EMCoreET ( )

Returns EM core ET

Definition at line 415 of file CPMTobAlgorithm.cxx.

◆ EMCPMTobRoI()

xAOD::CPMTobRoI * LVL1::CPMTobAlgorithm::EMCPMTobRoI ( )

Create CPMTobRoIs and return pointers to them.

Returns CPMTobRoI for EM hypothesis, provided EM Tob conditions passed.

Will return a null pointer if object does not pass hypothesis. It is the user's responsibility to check

Definition at line 475 of file CPMTobAlgorithm.cxx.

480  {
481 
482  xAOD::CPMTobRoI* pointer = 0;
483 

◆ EMIsolET()

int LVL1::CPMTobAlgorithm::EMIsolET ( )

Returns EM isolation ET.

Definition at line 405 of file CPMTobAlgorithm.cxx.

◆ EMIsolWord()

int LVL1::CPMTobAlgorithm::EMIsolWord ( )

Returns EM isolation word (5 bits)

Definition at line 395 of file CPMTobAlgorithm.cxx.

◆ EMLUTClus()

int LVL1::CPMTobAlgorithm::EMLUTClus ( )

Sums with the range & precision of isolation LUT inputs.

Returns EM cluster ET with range and precision of LUT input.

Definition at line 430 of file CPMTobAlgorithm.cxx.

431  {
432  int ET = (m_TauClus >> m_tauLUT_ClusterFirstBit);
433  if (ET > (1<<m_tauLUT_ClusterNBits) - 1) ET = (1<<m_tauLUT_ClusterNBits) - 1;
434  return (ET << m_tauLUT_ClusterFirstBit);

◆ EMLUTEMIsol()

int LVL1::CPMTobAlgorithm::EMLUTEMIsol ( )

Returns EM isolation ET with range and precision of EM LUT input.

Definition at line 444 of file CPMTobAlgorithm.cxx.

445  {
446  int ET = (m_HadCore >> m_emLUT_HadVetoFirstBit);
447  if (ET > (1<<m_emLUT_HadVetoNBits) - 1) ET = (1<<m_emLUT_HadVetoNBits) - 1;
448  return (ET << m_emLUT_HadVetoFirstBit);

◆ EMLUTHadVeto()

int LVL1::CPMTobAlgorithm::EMLUTHadVeto ( )

Returns Had veto ET with range and precision of EM LUT input.

Definition at line 451 of file CPMTobAlgorithm.cxx.

452  {
453  int ET = (m_EMIsol >> m_tauLUT_EMIsolFirstBit);
454  if (ET > (1<<m_tauLUT_EMIsolNBits) - 1) ET = (1<<m_tauLUT_EMIsolNBits) - 1;
455  return (ET << m_tauLUT_EMIsolFirstBit);

◆ eta()

double LVL1::CPMTobAlgorithm::eta ( )

Accessors for TOB data.

Returns eta coordinate of RoI.

Definition at line 465 of file CPMTobAlgorithm.cxx.

465  : m_phi - 2.*M_PI);
466 }
467 

◆ HadCoreET()

int LVL1::CPMTobAlgorithm::HadCoreET ( )

Returns Had core ET (inner isolation sum)

Definition at line 420 of file CPMTobAlgorithm.cxx.

◆ HadIsolET()

int LVL1::CPMTobAlgorithm::HadIsolET ( )

Returns Had isolation ET.

Definition at line 410 of file CPMTobAlgorithm.cxx.

◆ isEMRoI()

bool LVL1::CPMTobAlgorithm::isEMRoI ( )

Report whether this passed as an EM TOB.

Definition at line 362 of file CPMTobAlgorithm.cxx.

364  {
365 
366  bool passed = ( m_TauThresh && m_EtMax );
367 

◆ isEtMax()

bool LVL1::CPMTobAlgorithm::isEtMax ( )

Does this window pass the local ET maximum condition.

Definition at line 425 of file CPMTobAlgorithm.cxx.

◆ isTauRoI()

bool LVL1::CPMTobAlgorithm::isTauRoI ( )

Report whether this passed as a Tau TOB.

Definition at line 370 of file CPMTobAlgorithm.cxx.

374  {
375  return m_Core;

◆ phi()

double LVL1::CPMTobAlgorithm::phi ( )

Returns phi coordinate of RoI, using standard ATLAS convention.

Definition at line 470 of file CPMTobAlgorithm.cxx.

470  {
472  return pointer;

◆ setRoICoord()

void LVL1::CPMTobAlgorithm::setRoICoord ( double  eta,
double  phi 
)
private

threshold values

Compute RoI coordinate.

Input coordinate should be inside "reference tower" of window. Computes RoI coordinate as centre of 2x2 tower RoI core

Definition at line 168 of file CPMTobAlgorithm.cxx.

186  {
187 

◆ tauAlgorithm()

void LVL1::CPMTobAlgorithm::tauAlgorithm ( )
private

Check trigger condition and set hits if appropriate.

Definition at line 299 of file CPMTobAlgorithm.cxx.

304  {1};
305  unsigned int tobPtMinTau{0};
306  emEnergyScale = m_l1menu->thrExtraInfo().EM().emScale();
307  tobPtMinTau = m_l1menu->thrExtraInfo().TAU().ptMinToTopo();
308  unsigned int thresh = tobPtMinTau * emEnergyScale;
309 
310  if (m_TauClus <= thresh) return;
311 
312  // Passed, so there is a TOB here
313  m_TauThresh = true;
314 
315  // Now calculate isolation word
316  // Define cluster and isolation values with appropriate scales and range for isolation LUT
317  unsigned int clusMask = ( (1<<m_tauLUT_ClusterNBits)-1 )<<m_tauLUT_ClusterFirstBit;
318  unsigned int emIsolMask = ( (1<<m_tauLUT_EMIsolNBits) -1 )<<m_tauLUT_EMIsolFirstBit;
319 
320  // If cluster overflows, set all threshold bits
321  if (m_TauClus >= clusMask) {
322  m_TauIsolWord = 0x1F;
323  return;
324  }
325 
326  // Convert to 100 MeV units to match parameters
327  int clus = (( (m_TauClus < clusMask) ? (m_TauClus & clusMask) : clusMask ) * 10)/emEnergyScale;
328  int emIsol = (( (m_EMIsol < emIsolMask) ? (m_EMIsol & emIsolMask) : emIsolMask ) * 10)/emEnergyScale;
329 
330  // Get isolation values from menu (placeholder code - example logic)
331  std::vector<int> emisolcuts(5,m_noIsol);
332  for(size_t bit = 1; bit<=5; ++bit) {
333  const TrigConf::IsolationLegacy & iso = m_l1menu->thrExtraInfo().TAU().isolation("EMIsoForTAUthr", bit);
334  if(! iso.isDefined() ) {
335  continue;
336  }
337  int offset = iso.offset();
338  int slope = iso.slope();
339  int mincut = iso.mincut();
340  int upperlimit = iso.upperlimit()*10;
341  if (clus < upperlimit && bit >= 1 && bit <= 5) {
342  // As "slope" = 10* slope, rescale clus too to get fraction right.
343  int cut = offset + (slope != 0 ? 10*clus/slope : 0);
344  if (cut < mincut) cut = mincut;
345  emisolcuts[bit-1] = cut;
346  }
347  }
348 
349  // Set isolation bits
350  for (unsigned int isol = 0; isol < 5; ++isol)
351  if (emIsol <= emisolcuts[isol]) m_TauIsolWord += (1 << isol);
352 
353 }
354 
357 
358  bool passed = ( m_EMThresh && m_EtMax );
359 

◆ TauClusET()

int LVL1::CPMTobAlgorithm::TauClusET ( )

Returns Tau cluster ET, limited to 8 bits.

Definition at line 390 of file CPMTobAlgorithm.cxx.

◆ TauCPMTobRoI()

xAOD::CPMTobRoI * LVL1::CPMTobAlgorithm::TauCPMTobRoI ( )

Returns CPMTobRoI for TAU hypothesis, provided TAU Tob conditions passed.

Definition at line 486 of file CPMTobAlgorithm.cxx.

494  {

◆ TauIsolWord()

int LVL1::CPMTobAlgorithm::TauIsolWord ( )

Returns Tau isolation word (5 bits)

Definition at line 400 of file CPMTobAlgorithm.cxx.

◆ TauLUTClus()

int LVL1::CPMTobAlgorithm::TauLUTClus ( )

Returns Tau cluster ET with range and precision of LUT input.

Definition at line 437 of file CPMTobAlgorithm.cxx.

438  {
439  int ET = (m_EMIsol >> m_emLUT_EMIsolFirstBit);
440  if (ET > (1<<m_emLUT_EMIsolNBits) - 1) ET = (1<<m_emLUT_EMIsolNBits) - 1;
441  return (ET << m_emLUT_EMIsolFirstBit);

◆ TauLUTEMIsol()

int LVL1::CPMTobAlgorithm::TauLUTEMIsol ( )

Returns EM isolation ET with range and precision of Tau LUT input.

Definition at line 458 of file CPMTobAlgorithm.cxx.

459  {
460  return m_eta;
461 }
462 

◆ testEtMax()

void LVL1::CPMTobAlgorithm::testEtMax ( const std::vector< unsigned int > &  cores)
private

Form all 2x2 clusters within window and test centre is a local ET maximum.

Clusters form a list, arranged as
2 5 8
1 4 7
0 3 6
Then 4 = this window's RoI core, and ET max condition is
4 >= 0, 1, 2, 3 && 4 < 5, 6, 7, 8

Definition at line 192 of file CPMTobAlgorithm.cxx.

205  {
206 
207  // Initialise to correct defaults, to be sure

Member Data Documentation

◆ m_Core

unsigned int LVL1::CPMTobAlgorithm::m_Core
private

Definition at line 91 of file CPMTobAlgorithm.h.

◆ m_EMClus

unsigned int LVL1::CPMTobAlgorithm::m_EMClus
private

Definition at line 92 of file CPMTobAlgorithm.h.

◆ m_EMCore

unsigned int LVL1::CPMTobAlgorithm::m_EMCore
private

Definition at line 96 of file CPMTobAlgorithm.h.

◆ m_EMIsol

unsigned int LVL1::CPMTobAlgorithm::m_EMIsol
private

Definition at line 97 of file CPMTobAlgorithm.h.

◆ m_EMIsolWord

unsigned int LVL1::CPMTobAlgorithm::m_EMIsolWord
private

Definition at line 94 of file CPMTobAlgorithm.h.

◆ m_emLUT_ClusterFirstBit

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_ClusterFirstBit = 1
staticprivate

Definition at line 109 of file CPMTobAlgorithm.h.

◆ m_emLUT_ClusterNBits

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_ClusterNBits = 6
staticprivate

Definition at line 110 of file CPMTobAlgorithm.h.

◆ m_emLUT_EMIsolFirstBit

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_EMIsolFirstBit = 0
staticprivate

Definition at line 111 of file CPMTobAlgorithm.h.

◆ m_emLUT_EMIsolNBits

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_EMIsolNBits = 4
staticprivate

Definition at line 112 of file CPMTobAlgorithm.h.

◆ m_emLUT_HadVetoFirstBit

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_HadVetoFirstBit = 0
staticprivate

Definition at line 113 of file CPMTobAlgorithm.h.

◆ m_emLUT_HadVetoNBits

const unsigned int LVL1::CPMTobAlgorithm::m_emLUT_HadVetoNBits = 3
staticprivate

Definition at line 114 of file CPMTobAlgorithm.h.

◆ m_EMThresh

bool LVL1::CPMTobAlgorithm::m_EMThresh
private

Definition at line 101 of file CPMTobAlgorithm.h.

◆ m_eta

double LVL1::CPMTobAlgorithm::m_eta
private

Algorithm results.

Definition at line 89 of file CPMTobAlgorithm.h.

◆ m_EtMax

bool LVL1::CPMTobAlgorithm::m_EtMax
private

Definition at line 100 of file CPMTobAlgorithm.h.

◆ m_HadCore

unsigned int LVL1::CPMTobAlgorithm::m_HadCore
private

Definition at line 98 of file CPMTobAlgorithm.h.

◆ m_HadIsol

unsigned int LVL1::CPMTobAlgorithm::m_HadIsol
private

Definition at line 99 of file CPMTobAlgorithm.h.

◆ m_l1menu

const TrigConf::L1Menu* LVL1::CPMTobAlgorithm::m_l1menu {nullptr}
private

Definition at line 86 of file CPMTobAlgorithm.h.

◆ m_maxClus

const unsigned int LVL1::CPMTobAlgorithm::m_maxClus = 0xFF
staticprivate

Algorithm parameters.

Definition at line 107 of file CPMTobAlgorithm.h.

◆ m_maxEta

const double LVL1::CPMTobAlgorithm::m_maxEta = 2.5
staticprivate

Definition at line 123 of file CPMTobAlgorithm.h.

◆ m_noIsol

const unsigned int LVL1::CPMTobAlgorithm::m_noIsol = 999
staticprivate

Definition at line 121 of file CPMTobAlgorithm.h.

◆ m_phi

double LVL1::CPMTobAlgorithm::m_phi
private

Definition at line 90 of file CPMTobAlgorithm.h.

◆ m_refEta

double LVL1::CPMTobAlgorithm::m_refEta
private

Definition at line 84 of file CPMTobAlgorithm.h.

◆ m_refPhi

double LVL1::CPMTobAlgorithm::m_refPhi
private

Definition at line 85 of file CPMTobAlgorithm.h.

◆ m_TauClus

unsigned int LVL1::CPMTobAlgorithm::m_TauClus
private

Definition at line 93 of file CPMTobAlgorithm.h.

◆ m_TauIsolWord

unsigned int LVL1::CPMTobAlgorithm::m_TauIsolWord
private

Definition at line 95 of file CPMTobAlgorithm.h.

◆ m_tauLUT_ClusterFirstBit

const unsigned int LVL1::CPMTobAlgorithm::m_tauLUT_ClusterFirstBit = 1
staticprivate

Definition at line 116 of file CPMTobAlgorithm.h.

◆ m_tauLUT_ClusterNBits

const unsigned int LVL1::CPMTobAlgorithm::m_tauLUT_ClusterNBits = 7
staticprivate

Definition at line 117 of file CPMTobAlgorithm.h.

◆ m_tauLUT_EMIsolFirstBit

const unsigned int LVL1::CPMTobAlgorithm::m_tauLUT_EMIsolFirstBit = 0
staticprivate

Definition at line 118 of file CPMTobAlgorithm.h.

◆ m_tauLUT_EMIsolNBits

const unsigned int LVL1::CPMTobAlgorithm::m_tauLUT_EMIsolNBits = 6
staticprivate

Definition at line 119 of file CPMTobAlgorithm.h.

◆ m_TauThresh

bool LVL1::CPMTobAlgorithm::m_TauThresh
private

Definition at line 102 of file CPMTobAlgorithm.h.


The documentation for this class was generated from the following files:
LVL1::CPMTobAlgorithm::EMIsolWord
int EMIsolWord()
Returns EM isolation word (5 bits)
Definition: CPMTobAlgorithm.cxx:395
et
Extra patterns decribing particle interation process.
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
physval_make_web_display.thresh
thresh
Definition: physval_make_web_display.py:36
LVL1::CPMTobAlgorithm::m_phi
double m_phi
Definition: CPMTobAlgorithm.h:90
LVL1::CPMTobAlgorithm::~CPMTobAlgorithm
~CPMTobAlgorithm()
Definition: CPMTobAlgorithm.cxx:163
LVL1::CPMTobAlgorithm::m_emLUT_HadVetoFirstBit
static const unsigned int m_emLUT_HadVetoFirstBit
Definition: CPMTobAlgorithm.h:113
LVL1::CPMTobAlgorithm::setRoICoord
void setRoICoord(double eta, double phi)
threshold values
Definition: CPMTobAlgorithm.cxx:168
LVL1::CPMTobAlgorithm::tauAlgorithm
void tauAlgorithm()
Check trigger condition and set hits if appropriate.
Definition: CPMTobAlgorithm.cxx:299
TrigConf::L1Menu::thrExtraInfo
const L1ThrExtraInfo & thrExtraInfo() const
Access to extra info for threshold types.
Definition: L1Menu.cxx:307
LVL1::CPMTobAlgorithm::m_maxClus
static const unsigned int m_maxClus
Algorithm parameters.
Definition: CPMTobAlgorithm.h:107
M_PI
#define M_PI
Definition: ActiveFraction.h:11
LVL1::CPMTobAlgorithm::EMClusET
int EMClusET()
Returns EM cluster ET, limited to 8 bits.
Definition: CPMTobAlgorithm.cxx:385
LVL1::CPMTobAlgorithm::emAlgorithm
void emAlgorithm()
Check trigger condition and set hits if appropriate.
Definition: CPMTobAlgorithm.cxx:211
LVL1::CPMTobAlgorithm::TauClusET
int TauClusET()
Returns Tau cluster ET, limited to 8 bits.
Definition: CPMTobAlgorithm.cxx:390
TrigConf::L1ThrExtraInfo_EMTAULegacy::ptMinToTopo
float ptMinToTopo() const
Definition: L1ThrExtraInfo.h:82
TrigConf::IsolationLegacy
Definition: L1ThresholdBase.h:264
TrigConf::L1ThrExtraInfo::TAU
const L1ThrExtraInfo_EMTAULegacy & TAU() const
Definition: L1ThrExtraInfo.cxx:108
LVL1::CPMTobAlgorithm::TauIsolWord
int TauIsolWord()
Returns Tau isolation word (5 bits)
Definition: CPMTobAlgorithm.cxx:400
TrigConf::IsolationLegacy::offset
int offset() const
Definition: L1ThresholdBase.h:272
LVL1::CPMTobAlgorithm::phi
double phi()
Returns phi coordinate of RoI, using standard ATLAS convention.
Definition: CPMTobAlgorithm.cxx:470
LVL1::CPMTobAlgorithm::m_maxEta
static const double m_maxEta
Definition: CPMTobAlgorithm.h:123
TrigConf::IsolationLegacy::mincut
int mincut() const
Definition: L1ThresholdBase.h:274
LVL1::CPMTobAlgorithm::createTobRoI
xAOD::CPMTobRoI * createTobRoI(int type)
Create a pointer to a CPMTobRoI and return it.
Definition: CPMTobAlgorithm.cxx:500
LVL1::CPMTobAlgorithm::m_refPhi
double m_refPhi
Definition: CPMTobAlgorithm.h:85
LVL1::CPMTobAlgorithm::m_EMCore
unsigned int m_EMCore
Definition: CPMTobAlgorithm.h:96
python.PyAthena.module
module
Definition: PyAthena.py:131
LVL1::CPMTobAlgorithm::m_emLUT_EMIsolNBits
static const unsigned int m_emLUT_EMIsolNBits
Definition: CPMTobAlgorithm.h:112
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
LVL1::CPMTobAlgorithm::m_emLUT_ClusterNBits
static const unsigned int m_emLUT_ClusterNBits
Definition: CPMTobAlgorithm.h:110
LVL1::CPMTobAlgorithm::m_refEta
double m_refEta
Definition: CPMTobAlgorithm.h:84
LVL1::CPMTobAlgorithm::m_Core
unsigned int m_Core
Definition: CPMTobAlgorithm.h:91
TrigConf::L1ThrExtraInfo_EMTAULegacy::emScale
unsigned int emScale() const
Definition: L1ThrExtraInfo.h:81
LVL1::CPMTobAlgorithm::m_tauLUT_EMIsolFirstBit
static const unsigned int m_tauLUT_EMIsolFirstBit
Definition: CPMTobAlgorithm.h:118
BindingsTest.cut
cut
This script demonstrates how to call a C++ class from Python Also how to use PyROOT is shown.
Definition: BindingsTest.py:13
LVL1::CPMTobAlgorithm::m_noIsol
static const unsigned int m_noIsol
Definition: CPMTobAlgorithm.h:121
TrigConf::IsolationLegacy::slope
int slope() const
Definition: L1ThresholdBase.h:273
LVL1::TrigT1CaloDefs::tauTobType
@ tauTobType
Definition: TrigT1CaloDefs.h:163
TrigConf::L1ThrExtraInfo_EMTAULegacy::isolation
const IsolationLegacy & isolation(const std::string &thrType, size_t bit) const
EM legacy extra info.
Definition: L1ThrExtraInfo.cxx:208
LVL1::CPMTobAlgorithm::m_l1menu
const TrigConf::L1Menu * m_l1menu
Definition: CPMTobAlgorithm.h:86
LVL1::CPMTobAlgorithm::testEtMax
void testEtMax(const std::vector< unsigned int > &cores)
Form all 2x2 clusters within window and test centre is a local ET maximum.
Definition: CPMTobAlgorithm.cxx:192
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
LVL1::CPMTobAlgorithm::m_EMIsolWord
unsigned int m_EMIsolWord
Definition: CPMTobAlgorithm.h:94
LVL1::CPMTobAlgorithm::isEMRoI
bool isEMRoI()
Report whether this passed as an EM TOB.
Definition: CPMTobAlgorithm.cxx:362
JetVoronoiDiagramHelpers::coord
double coord
Definition: JetVoronoiDiagramHelpers.h:45
LVL1::CPMTobAlgorithm::m_tauLUT_EMIsolNBits
static const unsigned int m_tauLUT_EMIsolNBits
Definition: CPMTobAlgorithm.h:119
TrigConf::IsolationLegacy::isDefined
bool isDefined() const
Definition: L1ThresholdBase.h:270
LVL1::CPMTobAlgorithm::m_EtMax
bool m_EtMax
Definition: CPMTobAlgorithm.h:100
LVL1::CPMTobAlgorithm::eta
double eta()
Accessors for TOB data.
Definition: CPMTobAlgorithm.cxx:465
LVL1::CPMTobAlgorithm::m_HadIsol
unsigned int m_HadIsol
Definition: CPMTobAlgorithm.h:99
LVL1::CPMTobAlgorithm::m_tauLUT_ClusterFirstBit
static const unsigned int m_tauLUT_ClusterFirstBit
Definition: CPMTobAlgorithm.h:116
LVL1::CPMTobAlgorithm::m_emLUT_ClusterFirstBit
static const unsigned int m_emLUT_ClusterFirstBit
Definition: CPMTobAlgorithm.h:109
LVL1::CPMTobAlgorithm::m_TauClus
unsigned int m_TauClus
Definition: CPMTobAlgorithm.h:93
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
LVL1::TrigT1CaloDefs::emTobType
@ emTobType
Definition: TrigT1CaloDefs.h:162
LVL1::CPMTobAlgorithm::m_EMClus
unsigned int m_EMClus
Definition: CPMTobAlgorithm.h:92
TrigConf::IsolationLegacy::upperlimit
int upperlimit() const
Definition: L1ThresholdBase.h:275
LVL1::CPMTobAlgorithm::m_TauIsolWord
unsigned int m_TauIsolWord
Definition: CPMTobAlgorithm.h:95
LVL1::CPMTobAlgorithm::m_TauThresh
bool m_TauThresh
Definition: CPMTobAlgorithm.h:102
LVL1::CPMTobAlgorithm::m_HadCore
unsigned int m_HadCore
Definition: CPMTobAlgorithm.h:98
LVL1::CPMTobAlgorithm::m_emLUT_HadVetoNBits
static const unsigned int m_emLUT_HadVetoNBits
Definition: CPMTobAlgorithm.h:114
LVL1::CPMTobAlgorithm::m_EMIsol
unsigned int m_EMIsol
Definition: CPMTobAlgorithm.h:97
TrigConf::L1ThrExtraInfo::EM
const L1ThrExtraInfo_EMTAULegacy & EM() const
Definition: L1ThrExtraInfo.cxx:103
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
LVL1::CPMTobAlgorithm::m_tauLUT_ClusterNBits
static const unsigned int m_tauLUT_ClusterNBits
Definition: CPMTobAlgorithm.h:117
LVL1::CPMTobAlgorithm::m_EMThresh
bool m_EMThresh
Definition: CPMTobAlgorithm.h:101
LVL1::CPMTobAlgorithm::m_eta
double m_eta
Algorithm results.
Definition: CPMTobAlgorithm.h:89
xAOD::CPMTobRoI
CPMTobRoI_v1 CPMTobRoI
Define the latest version of the CPMTobRoI class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CPMTobRoI.h:17
xAOD::CPMTobRoI_v1
Description of CPMTobRoI_v1.
Definition: CPMTobRoI_v1.h:24
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
LVL1::CPMTobAlgorithm::m_emLUT_EMIsolFirstBit
static const unsigned int m_emLUT_EMIsolFirstBit
Definition: CPMTobAlgorithm.h:111