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

#include <Run2TriggerTowerMaker.h>

Inheritance diagram for LVL1::Run2TriggerTowerMaker:
Collaboration diagram for LVL1::Run2TriggerTowerMaker:

Public Member Functions

 Run2TriggerTowerMaker (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~Run2TriggerTowerMaker ()
 
 Run2TriggerTowerMaker (const Run2TriggerTowerMaker &)=delete
 
Run2TriggerTowerMakeroperator= (const Run2TriggerTowerMaker &)=delete
 
StatusCode initialize ()
 
StatusCode execute ()
 Checks that the Cell Type is supported (terminates with errors if not) and calls relevant routine to look for the cells. More...
 
StatusCode finalize ()
 
void handle (const Incident &)
 Best if initialisation which uses COOL-derived values is done here rather than in initialize() More...
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

enum  CellTypes { CELL =1, TRIGGERTOWERS =2, TTL1 =3, SIZE =4 }
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

L1CaloCoolChannelId channelId (double eta, double phi, int layer)
 Compute L1CaloCoolChannelId (including support for old geometries) More...
 
StatusCode getTriggerTowers ()
 gets collection of input TriggerTowers for reprocessing More...
 
StatusCode getCaloTowers ()
 fetch Calorimeter Towers More...
 
void digitize (const EventContext &ctx)
 Convert analogue pulses to digits. More...
 
StatusCode preProcess (int bcid, float mu)
 Simulate PreProcessing on analogue amplitudes. More...
 
StatusCode preProcessTower (int bcid, float mu, xAOD::TriggerTower *tower)
 
virtual StatusCode addOverlay (int bcid, float mu)
 Add overlay data. More...
 
virtual StatusCode addOverlay (int bcid, float mu, xAOD::TriggerTower *sigTT, xAOD::TriggerTower *ovTT)
 Add the overlay TriggerTower to the signal TriggerTower. More...
 
StatusCode preProcessTower_getLutIn (int bcid, float mu, xAOD::TriggerTower *tower, const L1CaloPprChanCalib *db, const std::vector< int > &digits, std::vector< int > &output)
 PreProcess up to LUT in. More...
 
StatusCode calcLutOutCP (const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
 calculate LUT out More...
 
StatusCode calcLutOutJEP (const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
 
void calcCombinedLUT (const std::vector< int > &sigIN, const int sigSlope, const int sigOffset, const std::vector< int > &ovIN, const int ovSlope, const int ovOffset, const int ovNoiseCut, std::vector< int > &output)
 
bool IsDeadChannel (const L1CaloPpmDeadChannels *db) const
 Database helper functions for dead and disabled towers. More...
 
bool IsDisabledChannel (const L1CaloDisabledTowers *db) const
 
bool IsGoodTower (const xAOD::TriggerTower *tt, const L1CaloPpmDeadChannelsContainer *dead, const L1CaloDisabledTowersContainer *disabled) const
 
void normaliseDigits (const std::vector< int > &sigDigits, const std::vector< int > &ovDigits, std::vector< int > &normDigits)
 normalise the number of ADC digits for overlay More...
 
StatusCode store ()
 Stores Trigger Towers in the TES, at a location defined in m_outputLocation. More...
 
void processLArTowers (const LArTTL1Container *)
 extract amplitudes from TTL1 More...
 
void processTileTowers (const TileTTL1Container *)
 
double IDeta (const Identifier &id, const CaloLVL1_ID *caloId)
 functions to extract eta, phi coordinates from calo tower identifiers More...
 
double IDphi (const Identifier &id, const CaloLVL1_ID *caloId)
 
std::vector< int > ADC (CLHEP::HepRandomEngine *rndmADCs, L1CaloCoolChannelId channel, const std::vector< double > &amps) const
 Functions to simulate processing of tower signals. More...
 
int EtRange (int et, unsigned short bcidEnergyRangeLow, unsigned short bcidEnergyRangeHigh) const
 
int etaToElement (float feta, int layer) const
 
int non_linear_lut (int lutin, unsigned short offset, unsigned short slope, unsigned short noiseCut, unsigned short scale, short par1, short par2, short par3, short par4)
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

std::string m_digiEngine
 
int m_cellType
 
double m_adcVar
 
double m_adcStep
 
double m_gainCorr
 
bool m_decorateFIR
 
bool m_ZeroSuppress
 
bool m_requireAllCalos
 
SG::ReadCondHandleKey< L1CaloPprChanCalibContainerm_chanCalibKey {this,"ChanCalibFolderKey","/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib","PprChanCalib key"}
 
SG::ReadCondHandleKey< L1CaloPprChanDefaultsContainerm_chanDefaultsKey {this,"ChanDefaultsFolderKey","/TRIGGER/L1Calo/V2/Configuration/PprChanDefaults","PprChanDefaults key"}
 
SG::ReadCondHandleKey< L1CaloDisabledTowersContainerm_disabledTowersKey {this,"DisabledTowersFolderKey","/TRIGGER/L1Calo/V2/Conditions/DisabledTowers","DisabledTowers key"}
 
SG::ReadCondHandleKey< L1CaloPpmDeadChannelsContainerm_deadChannelsKey {this,"DeadChannelsFolderKey","/TRIGGER/L1Calo/V2/Calibration/PpmDeadChannels","PpmDeadChannels key"}
 
std::string m_chanCalibKeyoverlay
 
std::string m_chanDefaultsKeyoverlay
 
std::string m_disabledTowersKeyoverlay
 
std::string m_deadChannelsKeyoverlay
 
ServiceHandle< IAthRNGSvcm_rngSvc
 
ATHRNG::RNGWrapperm_rndmADCs
 
ToolHandle< IL1TriggerTowerToolm_TTtool {this,"TTTool","LVL1::L1TriggerTowerTool/L1TriggerTowerTool", "The trigger tower tool"}
 
ToolHandle< IL1CaloMappingToolm_mappingTool
 
ToolHandle< LVL1BS::ITrigT1CaloDataAccessV2m_bstowertool
 
const CaloLVL1_IDm_caloId
 
double m_cpLutScale
 
double m_jepLutScale
 
double m_TileToMeV
 
double m_TileTTL1Ped
 
bool m_isDataReprocessing
 
bool m_doOverlay
 
bool m_isReco
 
const L1CaloPprChanCalibContainerm_chanCalibContainer = nullptr
 
const L1CaloDisabledTowersContainerm_disabledTowersContainer = nullptr
 
const L1CaloPpmDeadChannelsContainerm_deadChannelsContainer = nullptr
 
L1CaloPprChanDefaults m_chanDefaults
 
L1CaloPprChanCalibContainerm_chanCalibContaineroverlay = nullptr
 
L1CaloDisabledTowersContainerm_disabledTowersContaineroverlay = nullptr
 
L1CaloPpmDeadChannelsContainerm_deadChannelsContaineroverlay = nullptr
 
L1CaloPprChanDefaults m_chanDefaultsoverlay
 
std::unique_ptr< xAOD::TriggerTowerContainerm_xaodTowers
 
std::unique_ptr< xAOD::TriggerTowerAuxContainerm_xaodTowersAux
 
std::vector< std::vector< double > > m_xaodTowersAmps
 
std::size_t m_curIndex = 0u
 
std::array< double, m_maxIetaBinsm_sinThetaHash
 instead of calculating the expression: double theta =2. More...
 
SG::ReadHandleKey< xAOD::EventInfom_xaodevtKey
 
SG::ReadDecorHandleKey< xAOD::EventInfom_actMuKey { this, "actualInteractionsPerCrossingKey", "EventInfo.actualInteractionsPerCrossing", "Decoration for actual interactions per crossing" }
 
SG::ReadHandleKey< xAOD::TriggerTowerContainerm_inputTTLocation
 
SG::WriteHandleKey< xAOD::TriggerTowerContainerm_outputLocation
 
SG::WriteHandleKey< xAOD::TriggerTowerContainerm_outputLocationRerun
 
SG::ReadHandleKey< LArTTL1Containerm_EmTTL1ContainerName
 
SG::ReadHandleKey< LArTTL1Containerm_HadTTL1ContainerName
 
SG::ReadHandleKey< TileTTL1Containerm_TileTTL1ContainerName
 
SG::ReadHandleKey< TrigConf::L1Menum_L1MenuKey { this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" }
 
DataObjIDColl m_extendedExtraObjects
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Static Private Attributes

constexpr static int s_FIRLENGTH = 5
 
constexpr static int s_MEV = 1000
 
constexpr static unsigned int m_maxIetaBins = 51
 

Detailed Description

Definition at line 89 of file Run2TriggerTowerMaker.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ CellTypes

Enumerator
CELL 
TRIGGERTOWERS 
TTL1 
SIZE 

Definition at line 118 of file Run2TriggerTowerMaker.h.

118 {CELL=1, TRIGGERTOWERS=2, TTL1=3, SIZE=4};

Constructor & Destructor Documentation

◆ Run2TriggerTowerMaker() [1/2]

LVL1::Run2TriggerTowerMaker::Run2TriggerTowerMaker ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 81 of file Run2TriggerTowerMaker.cxx.

82  : AthAlgorithm(name, pSvcLocator),
83  m_rngSvc("AthRNGSvc", name),
84  m_rndmADCs(0),
85  m_mappingTool("LVL1::PpmMappingTool/PpmMappingTool", this),
86  m_bstowertool("LVL1BS__TrigT1CaloDataAccessV2/TrigT1CaloDataAccessV2", this),
87  m_caloId(0),
88  m_cpLutScale(1.),
89  m_jepLutScale(1.),
90  m_TileToMeV(s_MEV/4.1), // Scale for converting ET -> counts
91  m_TileTTL1Ped(0.), // TileTTL1 pedestal value - need to subtract if set non-zero
92  m_isDataReprocessing(false),
93  m_doOverlay(false), m_isReco(false)
94  {
95  declareProperty("xAODEventInfoKey", m_xaodevtKey=std::string{"EventInfo"});
96  declareProperty("RngSvc", m_rngSvc, "Random number service");
97  declareProperty("DigiEngine", m_digiEngine = "TrigT1CaloSim_Digitization");
98 
99  declareProperty("L1TriggerTowerTool", m_TTtool);
100  declareProperty("PpmMappingTool", m_mappingTool);
101 
103  declareProperty("EmTTL1ContainerName",m_EmTTL1ContainerName= "LArTTL1EM");
104  declareProperty("HadTTL1ContainerName",m_HadTTL1ContainerName= "LArTTL1HAD");
105  declareProperty("TileTTL1ContainerName",m_TileTTL1ContainerName= "TileTTL1Cnt");
106  declareProperty("RequireAllCalos",m_requireAllCalos=true,"Should EM,Had and Tile all be available?");
107 
110  declareProperty("CellType", m_cellType = TTL1);
111 
112  // ADC simulation
113  declareProperty("ADCStep", m_adcStep=250.);
114  declareProperty("ADCNoise", m_adcVar=0.65);
115  declareProperty("CalibrationUncertainty", m_gainCorr=0.);
116 
117  declareProperty("DoOverlay",m_doOverlay = false);
118  declareProperty("IsReco",m_isReco = false);
119 
120  declareProperty("DecorateFIR", m_decorateFIR = false, "Add FIR values to the xAOD::TriggerTowers");
121 
122  declareProperty("ZeroSuppress", m_ZeroSuppress = true, "Do not save towers with 0 energy");
123 
124  declareProperty("ChanCalibFolderKeyoverlay",m_chanCalibKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Calibration/Physics/PprChanCalib","PprChanCalib key for overlay");
125  declareProperty("ChanDefaultsFolderKeyoverlay",m_chanDefaultsKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Configuration/PprChanDefaults","PprChanDefaults key for overlay");
126  declareProperty("DisabledTowersFolderKeyoverlay",m_disabledTowersKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Conditions/DisabledTowers","DisabledTowers key for overlay");
127  declareProperty("DeadChannelsFolderKeyoverlay",m_deadChannelsKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Calibration/PpmDeadChannels","PpmDeadChannels key for overlay");
128 
129  // Create hash table for E->ET conversions
130  /* Fill table with dummy values */
131  m_sinThetaHash.fill(-1.);
132 
133  /* set values for barrel region with granularity of 0.1*/
134  for(unsigned int i = 0; i < 25; i++) {
135  m_sinThetaHash[i] = 1.0/cosh((i+0.5)* 0.1);
136  }
137 
138  /* set values for EndCap with granularity of 0.2 except tt by |3.2|
139  eta values are are: 2.6, 2.8, 3.0, 3.15 */
140  m_sinThetaHash[26] = 1.0/cosh(2.6);
141  m_sinThetaHash[28] = 1.0/cosh(2.8);
142  m_sinThetaHash[30] = 1.0/cosh(3.0);
143  m_sinThetaHash[31] = 1.0/cosh(3.15);
144 
145  /* fcal granularity is 0.425 */
146  m_sinThetaHash[ (unsigned int)(32 + (0.5*0.425)*10.) ] = 1.0/cosh(3.2 + 0.5*0.425);
147  m_sinThetaHash[ (unsigned int)(32 + (1.5*0.425)*10.) ] = 1.0/cosh(3.2 + 1.5*0.425);
148  m_sinThetaHash[ (unsigned int)(32 + (2.5*0.425)*10.) ] = 1.0/cosh(3.2 + 2.5*0.425);
149  m_sinThetaHash[ (unsigned int)(32 + (3.5*0.425)*10.) ] = 1.0/cosh(3.2 + 3.5*0.425);
150  }

◆ ~Run2TriggerTowerMaker()

LVL1::Run2TriggerTowerMaker::~Run2TriggerTowerMaker ( )
virtual

Definition at line 152 of file Run2TriggerTowerMaker.cxx.

152 {}

◆ Run2TriggerTowerMaker() [2/2]

LVL1::Run2TriggerTowerMaker::Run2TriggerTowerMaker ( const Run2TriggerTowerMaker )
delete

Member Function Documentation

◆ ADC()

std::vector< int > LVL1::Run2TriggerTowerMaker::ADC ( CLHEP::HepRandomEngine *  rndmADCs,
L1CaloCoolChannelId  channel,
const std::vector< double > &  amps 
) const
private

Functions to simulate processing of tower signals.

Definition at line 1144 of file Run2TriggerTowerMaker.cxx.

1146  {
1147  auto* chanCalib = m_chanCalibContainer->pprChanCalib(channel);
1148  if(!chanCalib) { ATH_MSG_WARNING("No database entry for tower " << channel.id()); return {}; }
1149  double ped = chanCalib->pedMean();
1150 
1151  // dice the calibration uncertainty if requested
1152  double adcCal = (m_gainCorr > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs, 1., m_gainCorr) : 1.;
1153 
1154  std::vector<int> digits;
1155  const int nSamples = amps.size();
1156  digits.reserve(nSamples);
1157  for(int i = 0; i < nSamples; ++i) {
1158  // dice the adc noise if requested
1159  double adcNoise = (m_adcVar > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs,0.,m_adcVar) : 0.;
1160 
1161  int digit = int((amps[i]*adcCal/m_adcStep) + ped + adcNoise);
1162  if(digit > ADCMAX) digit = ADCMAX;
1163  if(digit < 0) digit = 0;
1164  digits.push_back(digit);
1165  }
1166  return digits;
1167  }

◆ addOverlay() [1/2]

StatusCode LVL1::Run2TriggerTowerMaker::addOverlay ( int  bcid,
float  mu 
)
privatevirtual

Add overlay data.

Definition at line 392 of file Run2TriggerTowerMaker.cxx.

393  {
394  // Get the overlay data TTs from Bytestream
396  xAOD::TriggerTowerAuxContainer overlayDataTTsAux;
397  overlayDataTTs->setStore( &overlayDataTTsAux );
398  ATH_CHECK( m_bstowertool->loadTriggerTowers(*overlayDataTTs) ); // use L1Calo tool to fill xAOD::TriggerTowerContainer from BS
399 
400  // put the overlay data TTs into a map
401  std::unordered_map<uint32_t,xAOD::TriggerTower*> overlayMap;
403 
404  // decorate the overlay TTs to indicate if they have been used or not
405  char decor_ttNotUsedInOverlay = 0;
406  char decor_ttUsedInOverlay = 1;
407  static const SG::Decorator<char> decor ("addedToSignal");
408  for (auto tt:*overlayDataTTs) {
409  // Let's exclude all dead and disabled towers
411  decor(*tt) = decor_ttNotUsedInOverlay;
412  overlayMap.insert( std::make_pair( tt->coolId() , tt ) );
413  }
414  }
415 
416  // What is the size of the primary LUT readout?
417  bool findSizeOfPrimaryLUT(true);
418  unsigned int sizeOfPrimaryLUT(0);
419  uint8_t peakOfPrimary(0);
420 
421  // Loop over primary TTs, match overlay TTs, and add LUT values
422  for (auto tt:*m_xaodTowers) {
423 
424  // find size of primary LUT readout for first TT
425  if (findSizeOfPrimaryLUT) {
426  findSizeOfPrimaryLUT = false;
427  sizeOfPrimaryLUT = tt->lut_cp().size();
428  peakOfPrimary = tt->peak();
429  }
430 
431  // Do we have a matching overlay tower?
432  Itr match = overlayMap.find( tt->coolId() );
433  if (match != overlayMap.end()) {
434 
435  ATH_CHECK( addOverlay(bcid,mu,tt,(*match).second) );
436 
437  // Let the overlay TT know that it has been used
438  decor(*match->second) = decor_ttUsedInOverlay;
439 
440  } // end of match
441  } // end of loop over primary TTs
442 
443  // Now we need to add all overlay TTs that have not been used so far
444  for (Itr i=overlayMap.begin();i!=overlayMap.end();++i) {
445  xAOD::TriggerTower* tt = (*i).second;
446  if (decor(*tt) == decor_ttNotUsedInOverlay) {
447  // Ensure that LUT vectors are the same size as the primary TTs
448  std::vector<uint8_t> overlay_lut_cp(sizeOfPrimaryLUT,0.);
449  std::vector<uint8_t> overlay_lut_jep(sizeOfPrimaryLUT,0.);
450 
451  // Fill the LUT vectors
452  overlay_lut_cp.at(peakOfPrimary) = tt->cpET();
453  overlay_lut_jep.at(peakOfPrimary) = tt->jepET();
454 
455  // Set the LUT vectors and peak
456  tt->setPeak( peakOfPrimary );
457  tt->setLut_cp( overlay_lut_cp );
458  tt->setLut_jep( overlay_lut_jep );
459 
460  // add the overlay TT to the primary TT
461  m_xaodTowers->push_back( tt );
462  }
463  }
464 
465  // Should be done!!!
466  return StatusCode::SUCCESS;
467  }

◆ addOverlay() [2/2]

StatusCode LVL1::Run2TriggerTowerMaker::addOverlay ( int  bcid,
float  mu,
xAOD::TriggerTower sigTT,
xAOD::TriggerTower ovTT 
)
privatevirtual

Add the overlay TriggerTower to the signal TriggerTower.

Definition at line 470 of file Run2TriggerTowerMaker.cxx.

471  {
472  // Get the relevant databases
475 
476  if (!sigDB) {
477  ATH_MSG_ERROR("Cannot find signal DB for tower 0x"<<std::hex<<sigTT->coolId()<<std::dec<<" Aborting...");
478  return StatusCode::FAILURE;
479  }
480 
481  if (!ovDB) {
482  ATH_MSG_ERROR("Cannot find overlay DB for tower 0x"<<std::hex<<ovTT->coolId()<<std::dec<<" Aborting...");
483  return StatusCode::FAILURE;
484  }
485 
486  // Let's begin with the same number of ADC samples
487  // retrieve signal and overlay digits
488  std::vector<int> sigDigits( std::begin(sigTT->adc()) , std::end(sigTT->adc()) );
489  std::vector<int> ovDigits( std::begin(ovTT->adc()) , std::end(ovTT->adc()) );
490  std::vector<int> normOverlayDigits;
491  normaliseDigits(sigDigits,ovDigits,normOverlayDigits);
492 
493  // Get LUT input
494  std::vector<int> sigLutIn,ovLutIn;
495  ATH_CHECK( preProcessTower_getLutIn(bcid,mu,sigTT,sigDB,sigDigits,sigLutIn) );
496  ATH_CHECK( preProcessTower_getLutIn(bcid,mu,ovTT,ovDB,normOverlayDigits,ovLutIn) );
497 
498  // LUT ouput
499  std::vector<int> lutOut_cp,lutOut_jep;
500  ATH_CHECK( calcLutOutCP(sigLutIn,sigDB,ovLutIn,ovDB,lutOut_cp) );
501  ATH_CHECK( calcLutOutJEP(sigLutIn,sigDB,ovLutIn,ovDB,lutOut_jep) );
502 
503  // Not doing BCID yet.. can be added at a later date
504 
505  std::size_t peak = lutOut_jep.size()/2; // both cp & jep have the same length
506  std::vector<uint_least8_t> etResultVectorCp { uint8_t(lutOut_cp[peak]) };
507  std::vector<uint_least8_t> etResultVectorJep { uint8_t(lutOut_jep[peak]) };
508 
509  sigTT->setLut_cp(std::move(etResultVectorCp));
510  sigTT->setLut_jep(std::move(etResultVectorJep));
511 
512  return StatusCode::SUCCESS;
513  }

◆ calcCombinedLUT()

void LVL1::Run2TriggerTowerMaker::calcCombinedLUT ( const std::vector< int > &  sigIN,
const int  sigSlope,
const int  sigOffset,
const std::vector< int > &  ovIN,
const int  ovSlope,
const int  ovOffset,
const int  ovNoiseCut,
std::vector< int > &  output 
)
private

Definition at line 557 of file Run2TriggerTowerMaker.cxx.

559  {
560  // Modified version of TrigT1CaloTools/src/L1TriggerTowerTool
561 
562  // (1) Calculate the Et conversion for the signal and the overlay
563  // (2) Combine the Et's
564  // (3) apply noise cut on combined Et sum
565  // (4) apply bitshift
566 
567  output.clear();
568  output.reserve(sigIN.size()); // avoid frequent reallocations
569 
570  for (unsigned int i=0;i<sigIN.size();++i) {
571  int out(0);
572  int signal = sigIN[i];
573  int overlay = ovIN[i];
574 
575  int outSig = signal*sigSlope - sigOffset; // Et conversion for signal
576  int outOv = overlay*ovSlope - ovOffset; // Et conversion for overlay
577  int outTmp = outSig + outOv; // Combined Et
578 
579  // Noise cut from overlay
580  if (outTmp >= ovNoiseCut) {
581  out = (outSig + outOv + 2048)>>12; // pedestal and bitshift
582  }
583 
584  // keep things in range
585  if (out < 0) out = 0;
586  if (out > 255) out = 255;
587 
588  output.push_back( out );
589  }
590  }

◆ calcLutOutCP()

StatusCode LVL1::Run2TriggerTowerMaker::calcLutOutCP ( const std::vector< int > &  sigLutIn,
const L1CaloPprChanCalib sigDB,
const std::vector< int > &  ovLutIn,
const L1CaloPprChanCalib ovDB,
std::vector< int > &  output 
)
private

calculate LUT out

Definition at line 515 of file Run2TriggerTowerMaker.cxx.

516  {
517  if (sigDB->lutCpStrategy() > 2 || ovDB->lutCpStrategy() > 2) {
518  ATH_MSG_ERROR("Cannot process calcLutOutCP as lutCpStrategy > 2");
519  return StatusCode::FAILURE;
520  }
521 
522  double sigScale = (sigDB->lutCpStrategy() == 0) ? 1. : m_cpLutScale;
523  double sigSlope = sigScale * sigDB->lutCpSlope();
524  double sigOffset = sigScale * sigDB->lutCpOffset();
525 
526  double ovScale = (ovDB->lutCpStrategy() == 0) ? 1. : m_cpLutScale;
527  double ovSlope = ovScale * ovDB->lutCpSlope();
528  double ovOffset = ovScale * ovDB->lutCpOffset();
529  double ovNoiseCut = ovScale * ovDB->lutCpNoiseCut();
530 
531  calcCombinedLUT(sigLutIn,sigSlope,sigOffset,ovLutIn,ovSlope,ovOffset,ovNoiseCut,output);
532 
533  return StatusCode::SUCCESS;
534  }

◆ calcLutOutJEP()

StatusCode LVL1::Run2TriggerTowerMaker::calcLutOutJEP ( const std::vector< int > &  sigLutIn,
const L1CaloPprChanCalib sigDB,
const std::vector< int > &  ovLutIn,
const L1CaloPprChanCalib ovDB,
std::vector< int > &  output 
)
private

Definition at line 536 of file Run2TriggerTowerMaker.cxx.

537  {
538  if (sigDB->lutJepStrategy() > 2 || ovDB->lutJepStrategy() > 2) {
539  ATH_MSG_ERROR("Cannot process calcLutOutJEP as lutJepStrategy > 2");
540  return StatusCode::FAILURE;
541  }
542 
543  double sigScale = (sigDB->lutJepStrategy() == 0) ? 1. : m_jepLutScale;
544  double sigSlope = sigScale * sigDB->lutJepSlope();
545  double sigOffset = sigScale * sigDB->lutJepOffset();
546 
547  double ovScale = (ovDB->lutCpStrategy() == 0) ? 1. : m_jepLutScale;
548  double ovSlope = ovScale * ovDB->lutJepSlope();
549  double ovOffset = ovScale * ovDB->lutJepOffset();
550  double ovNoiseCut = ovScale * ovDB->lutJepNoiseCut();
551 
552  calcCombinedLUT(sigLutIn,sigSlope,sigOffset,ovLutIn,ovSlope,ovOffset,ovNoiseCut,output);
553 
554  return StatusCode::SUCCESS;
555  }

◆ channelId()

L1CaloCoolChannelId LVL1::Run2TriggerTowerMaker::channelId ( double  eta,
double  phi,
int  layer 
)
private

Compute L1CaloCoolChannelId (including support for old geometries)

Function to compute L1CaloCoolChannelId from eta/phi/layer.

Unlike L1TriggerTowerTool::channelID this function can cope with old geometries (hence the hard-coded numbers). So don't remove this until all ATLAS-CSC datasets are irrevokably deprecated

Definition at line 1212 of file Run2TriggerTowerMaker.cxx.

1213  {
1214  int crate, module, channel;
1215  m_mappingTool->mapping(eta, phi, layer, crate, module, channel);
1216  int slot = module + 5;
1217  int pin = channel % 16;
1218  int asic = channel / 16;
1219  return L1CaloCoolChannelId(crate, L1CaloModuleType::Ppm, slot, pin, asic, false);
1220  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ digitize()

void LVL1::Run2TriggerTowerMaker::digitize ( const EventContext &  ctx)
private

Convert analogue pulses to digits.

Digitize pulses and store results back in xAOD::TriggerTowers.

Definition at line 1130 of file Run2TriggerTowerMaker.cxx.

1131  {
1132  CLHEP::HepRandomEngine* rndmADCs = m_rndmADCs->getEngine (ctx);
1133 
1134  // Loop over all existing towers and digitize pulses
1135  for(auto tower : *m_xaodTowers) {
1136  // First process EM layer
1137  L1CaloCoolChannelId id(tower->coolId());
1138  std::vector<int> digits = ADC(rndmADCs, id, m_xaodTowersAmps[tower->index()]); // ADC simulation
1139  tower->setAdc(std::vector<uint16_t>(std::begin(digits), std::end(digits)));
1140  tower->setAdcPeak(digits.size()/2);
1141  }
1142  }

◆ etaToElement()

int LVL1::Run2TriggerTowerMaker::etaToElement ( float  feta,
int  layer 
) const
private

Get integer eta bin

Definition at line 1222 of file Run2TriggerTowerMaker.cxx.

1223  {
1224  constexpr static int NELEMENTS = 33;
1226  float shiftedEta = feta + 4.9;
1227  uint eta = (uint)floor(shiftedEta*10.0);
1228  if(fabs(shiftedEta*10.0 - (uint)(eta+1)) < 0.01) eta++;
1229  if(fabs(shiftedEta) < 0.01) eta = 0;
1230 
1231  constexpr int nBins = 16;
1232  constexpr uint map[nBins] = {2,6,10,14,17,19,21,23,75,77,79,80,83,87,91,95};
1233  int element = -1;
1234  if(eta > 23 && eta < 74) {
1235  element = eta - 16;
1236  } else {
1237  for(int i = 0; i < nBins; i++) {
1238  if(eta == map[i]) {
1239  if(i < 8) element = i;
1240  else element = i + 50;
1241  break;
1242  }
1243  }
1244  }
1245  if (layer == 1 && (element == 0 || element == 64)) element = 1; // FCal2-2
1246  else if (layer == 1 && (element == 1 || element == 65)) element = 0; // FCal3-2
1247  else if (layer == 1 && (element == 2 || element == 62)) element = 3; // FCal2-1
1248  else if (layer == 1 && (element == 3 || element == 63)) element = 2; // FCal3-1
1249  else if (element > 32) element = 65-element;
1250 
1251  // element 29 = FCal2-1, element 30 = FCal3-1, element 31 = FCal2-2, element 32 = FCal3-2
1252  element = NELEMENTS-element-1;
1253 
1254  return element;
1255  }

◆ EtRange()

int LVL1::Run2TriggerTowerMaker::EtRange ( int  et,
unsigned short  bcidEnergyRangeLow,
unsigned short  bcidEnergyRangeHigh 
) const
private

Definition at line 1169 of file Run2TriggerTowerMaker.cxx.

1170  {
1171  if(et < bcidEnergyRangeLow) return 0;
1172  if(et < bcidEnergyRangeHigh) return 1;
1173  return 2;
1174  }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode LVL1::Run2TriggerTowerMaker::execute ( )

Checks that the Cell Type is supported (terminates with errors if not) and calls relevant routine to look for the cells.

Definition at line 303 of file Run2TriggerTowerMaker.cxx.

303  {
304  ATH_MSG_VERBOSE("Executing");
305 
306  if (m_isReco && m_doOverlay) return StatusCode::SUCCESS; // nothing to to, since we did overlay and made towers during digi
307 
308 
309  // retrieve conditions
311  CHECK(pprCalibCont.isValid());
312  m_chanCalibContainer = (*pprCalibCont);
314  CHECK(pprDisabledTowers.isValid());
315  m_disabledTowersContainer = (*pprDisabledTowers);
317  CHECK(pprDeadTowers.isValid());
318  m_deadChannelsContainer = (*pprDeadTowers);
320  CHECK(pprChanDefaults.isValid());
321  auto* defaults = pprChanDefaults->pprChanDefaults(0); // non-owning ptr
322  if(!defaults) {
323  ATH_MSG_ERROR("Could not retrieve channel 0 PprChanDefaults folder. Aborting ...");
324  throw std::runtime_error("Run2TriggerTowerMaker: channel 0 of PprChanDefaults not accesible");
325  }
327 
328  const EventContext& ctx = Gaudi::Hive::currentContext();
330 
333  m_xaodTowers->setStore(m_xaodTowersAux.get());
334  m_xaodTowers->resize(7168); // avoid frequent reallocations
335  m_curIndex = 0u;
336 
337  switch(m_cellType) {
338  case TRIGGERTOWERS:
339  ATH_MSG_VERBOSE("Looking for TriggerTower input");
341  break;
342  case TTL1:
343  ATH_MSG_VERBOSE("Looking for calo towers");
345  digitize(ctx); // digitisation
346  break;
347  default:
348  ATH_MSG_ERROR("Unsupported Cell Type!!!!!!"); return StatusCode::FAILURE;
349  }
350 
353  ATH_CHECK(evt.isValid());
354  ATH_CHECK(muDecor.isPresent());
355  const float mu = muDecor(0);
356 
357  ATH_CHECK(preProcess(evt->bcid(), mu)); // FIR, BCID etc
358 
359  if (m_doOverlay) {
360  ATH_CHECK( addOverlay(evt->bcid(), mu) );
361  }
362 
363  // store them thar trigger towers
364  ATH_CHECK(store());
365 
366  return StatusCode::SUCCESS;
367  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode LVL1::Run2TriggerTowerMaker::finalize ( )

Definition at line 295 of file Run2TriggerTowerMaker.cxx.

295  {
296  ATH_MSG_DEBUG("Finalizing");
297  return StatusCode::SUCCESS;
298  }

◆ getCaloTowers()

StatusCode LVL1::Run2TriggerTowerMaker::getCaloTowers ( )
private

fetch Calorimeter Towers

fetches LAr & Tile calorimeter towers

If < 7168 towers in input data will be unallocated pointers in vector.

Definition at line 961 of file Run2TriggerTowerMaker.cxx.

962  {
963  // Find LAr towers in TES
964  StatusCode sc1 = StatusCode::SUCCESS;
966  if(!EMTowers.isValid()){
967  ATH_MSG_WARNING("EM LArTTL1Container not found");
968  sc1 = StatusCode::FAILURE;
969  }
970 
971  StatusCode sc2 = StatusCode::SUCCESS;
973  if(!HECTowers.isValid()){
974  ATH_MSG_WARNING("Had LArTTL1Container not found");
975  sc2 = StatusCode::FAILURE;
976  }
977 
978  // Find Tile towers in TES
979  StatusCode sc3 = StatusCode::SUCCESS;
981  if(!TileTowers.isValid()){
982  ATH_MSG_WARNING("Tile LArTTL1Container not found");
983  sc3 = StatusCode::FAILURE;
984  }
985 
986  if(m_requireAllCalos && ((sc1==StatusCode::FAILURE) ||
987  (sc2==StatusCode::FAILURE) ||
988  (sc3==StatusCode::FAILURE))) {
989  ATH_MSG_ERROR("Can't find calo towers - stopping processing" << endmsg
990  << "Found Em LArTTL1 : "<<sc1 << endmsg
991  << "Found Had LArTTL1 : "<<sc2 << endmsg
992  << "Found TileTTL1 : "<<sc3<< endmsg
993  );
994  return StatusCode::FAILURE;
995  }
996 
997  // lets now try to create some trigger towers
998  if(sc1 == StatusCode::SUCCESS) {
999  processLArTowers(EMTowers.cptr());
1000  }
1001  if(sc2 == StatusCode::SUCCESS) {
1002  processLArTowers(HECTowers.cptr());
1003  }
1004  if(sc3 == StatusCode::SUCCESS) {
1005  processTileTowers(TileTowers.cptr());
1006  }
1007 
1009  // /// So clean-up m_xaodTowers before these cause problems later.
1010  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
1011  [](const xAOD::TriggerTower* tt){return (tt == 0);}),
1012  m_xaodTowers->end());
1013 
1014  // Remove dead and disabled towers
1015  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
1016  [this](const xAOD::TriggerTower* tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
1017  m_xaodTowers->end());
1018 
1019  return StatusCode::SUCCESS;
1020  }

◆ getTriggerTowers()

StatusCode LVL1::Run2TriggerTowerMaker::getTriggerTowers ( )
private

gets collection of input TriggerTowers for reprocessing

gets TriggerTowers from input collection and copies ADC digits into xAOD::TriggerTowers for reprocessing

If < 7168 towers in input data will be unallocated pointers in vector.

Definition at line 934 of file Run2TriggerTowerMaker.cxx.

935  {
936  ATH_MSG_INFO("Retrieve input TriggerTowers " << m_inputTTLocation.key());
938  ATH_CHECK(inputTTs.isValid());
939  ATH_MSG_INFO("Found " << inputTTs->size() << " input TriggerTowers");
940 
941  for(const xAOD::TriggerTower* tower : *inputTTs) {
942  xAOD::TriggerTower* t = (*m_xaodTowers)[m_curIndex++] = new xAOD::TriggerTower;
943  *t = *tower;
944  }
945 
947  // /// So clean-up m_xaodTowers before these cause problems later.
948  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
949  [](const xAOD::TriggerTower* tt){return (tt == 0);}),
950  m_xaodTowers->end());
951 
952  // Remove dead and disabled towers
953  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
954  [this](const xAOD::TriggerTower* tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
955  m_xaodTowers->end());
956 
957  return StatusCode::SUCCESS;
958  } // end of getTriggerTowers()

◆ handle()

void LVL1::Run2TriggerTowerMaker::handle ( const Incident &  inc)

Best if initialisation which uses COOL-derived values is done here rather than in initialize()

Get global scales from configSvc

globalScale is number of GeV/count. As code is already written to use MeV/count, safest thing here is to convert:

Definition at line 214 of file Run2TriggerTowerMaker.cxx.

215  {
216  if(inc.type() != "BeginRun") return;
218 
219  auto l1Menu = SG::makeHandle( m_L1MenuKey );
220  m_cpLutScale = l1Menu->thrExtraInfo().EM().emScale();
221  m_jepLutScale = l1Menu->thrExtraInfo().JET().jetScale();
222 
223  ATH_MSG_INFO("REGTEST CP scale = " << m_cpLutScale << " count/GeV");
224  ATH_MSG_INFO("REGTEST JEP scale = " << m_jepLutScale << " count/GeV");
225 
228 
229 
230 
231 
232  if (m_doOverlay) {
233 
234  throw std::runtime_error("Overlay no longer supported in Run2TriggerTowerMaker");
235 
236  // Leaving this code commented here as a reminder of what functionality might need to be added to L1CaloCondAlg
237  // if we want to restart supporting overlay
238 
239 // if (! m_condSvc->retrieve(m_chanCalibContaineroverlay, m_chanCalibKeyoverlay).isSuccess()){ATH_MSG_ERROR("failed!");}
240 // ATH_MSG_INFO("Loading "<<m_chanCalibKeyoverlay<<" into m_chanCalibContaineroverlay");
241 // if (! m_condSvc->retrieve(m_disabledTowersContaineroverlay, m_disabledTowersKeyoverlay).isSuccess()){ATH_MSG_ERROR("failed!");}
242 // if (! m_condSvc->retrieve(m_deadChannelsContaineroverlay, m_deadChannelsKeyoverlay).isSuccess()){ATH_MSG_ERROR("failed!");}
243 // L1CaloPprChanDefaultsContainer *cDCoverlay = nullptr;
244 // if (! m_condSvc->retrieve(cDCoverlay, m_chanDefaultsKeyoverlay).isSuccess()){ATH_MSG_ERROR("failed!");}
245 // if(!m_chanCalibContaineroverlay || !cDCoverlay ||
246 // !m_disabledTowersContaineroverlay || !m_deadChannelsContaineroverlay) {
247 // ATH_MSG_ERROR("Could not retrieve database containers for overlay. Aborting ...");
248 // throw std::runtime_error("Run2TriggerTowerMaker: database container for overlay not accesible");
249 // }
250 //
251 // auto* defaultsoverlay = cDCoverlay->pprChanDefaults(0); // non-owning ptr
252 // if(!defaultsoverlay) {
253 // ATH_MSG_ERROR("Could not retrieve channel 0 PprChanDefaults folder for overlay. Aborting ...");
254 // throw std::runtime_error("Run2TriggerTowerMaker: channel 0 of PprChanDefaults for overlay not accesible");
255 // }
256 // m_chanDefaultsoverlay = *defaultsoverlay;
257 
258  }
259 
260  const TileInfo* tileInfo = nullptr;
261  if(detStore()->retrieve(tileInfo, "TileInfo").isFailure()) {
262  ATH_MSG_ERROR("Failed to find TileInfo");
263  m_TileToMeV = s_MEV/4.1;
264  }
265 
266  m_TileToMeV = s_MEV/tileInfo->TTL1Calib({});
267  ATH_MSG_DEBUG("Tile TTL1 calibration scale = " << tileInfo->TTL1Calib({}));
268  m_TileTTL1Ped = tileInfo->TTL1Ped({});
269  ATH_MSG_DEBUG("Tile TTL1 pedestal value = " << m_TileTTL1Ped);
270 
271  // try to determine wheter we run on data or on simulation
272  const xAOD::EventInfo* evtinfo{nullptr};
273  if(evtStore()->retrieve(evtinfo)!=StatusCode::SUCCESS) {
274  ATH_MSG_WARNING("Could not determine if input file is data or simulation. Will assume simulation.");
275  }
276  else {
277  bool isData = !(evtinfo->eventTypeBitmask()&xAOD::EventInfo::IS_SIMULATION);
278  m_isDataReprocessing = isData;
280  ATH_MSG_INFO("Detected data reprocessing. Will take pedestal correction values from input trigger towers.");
281  } else {
282  ATH_MSG_VERBOSE("No data reprocessing - running normal simulation.");
283  }
284  }
285 
286  // If this is an overlay job, we will handle this in a different way
287  if (m_doOverlay) {
288  m_isDataReprocessing = false;
289  ATH_MSG_INFO("L1Calo overlay job - setting m_isDataReprocessing to false");
290  }
291 
292 
293  }

◆ IDeta()

double LVL1::Run2TriggerTowerMaker::IDeta ( const Identifier id,
const CaloLVL1_ID caloId 
)
private

functions to extract eta, phi coordinates from calo tower identifiers

Definition at line 1176 of file Run2TriggerTowerMaker.cxx.

1177  {
1178  int region = l1id->region(id);
1179  int ieta = l1id->eta(id);
1180  int sign = l1id->pos_neg_z(id);
1181 
1182  double gran[4] = {0.1, 0.2, 0.1, 0.425};
1183  double offset[4] = {0., 2.5, 3.1, 3.2};
1184  double eta;
1185 
1186  if(region>=0 && region<=3) {
1187  eta = sign* (((ieta+0.5) * gran[region]) + offset[region]);
1188  }
1189  else {
1190  eta = 0.;
1191  }
1192 
1193  return eta;
1194  }

◆ IDphi()

double LVL1::Run2TriggerTowerMaker::IDphi ( const Identifier id,
const CaloLVL1_ID caloId 
)
private

Definition at line 1197 of file Run2TriggerTowerMaker.cxx.

1198  {
1199  Identifier regId = l1id->region_id(id);
1200 
1201  double phiMax = l1id->phi_max(regId);
1202  int iphi = l1id->phi(id);
1203  double phi = (iphi+0.5)*2*M_PI/(phiMax+1);
1204 
1205  return phi;
1206  }

◆ initialize()

StatusCode LVL1::Run2TriggerTowerMaker::initialize ( )

Definition at line 154 of file Run2TriggerTowerMaker.cxx.

155  {
156  ATH_MSG_DEBUG("Initialising");
157 
159  ATH_CHECK(m_mappingTool.retrieve());
160  ATH_CHECK(m_TTtool.retrieve());
161  ATH_CHECK(m_rngSvc.retrieve());
162  ATH_CHECK(m_bstowertool.retrieve());
163 
164  m_rndmADCs = m_rngSvc->getEngine(this, m_digiEngine);
165  if(!m_rndmADCs) {
166  ATH_MSG_ERROR("Failed to retrieve random engine");
167  return StatusCode::FAILURE;
168  }
169 
170  // Listen for BeginRun
171  ServiceHandle<IIncidentSvc> incSvc("IncidentSvc",name());
172  ATH_CHECK(incSvc.retrieve());
173  incSvc->addListener(this, "BeginRun");
174 
175  // reserve enough storage for the amps
176  m_xaodTowersAmps.assign(7168, std::vector<double>());
177 
179  ATH_CHECK(m_actMuKey.initialize());
180 
181  ATH_CHECK(m_inputTTLocation.initialize());
182 
185  ATH_CHECK(m_TileTTL1ContainerName.initialize());
186  ATH_CHECK(m_outputLocation.initialize());
187 
188  ATH_CHECK(m_outputLocationRerun.initialize());
189 
190  //Rerun on trigger towers
191  if (m_cellType == TRIGGERTOWERS) {
196  }
197  //Start from RDO inputs
198  else if (m_cellType == TTL1) {
201  }
202 
208 
209  return StatusCode::SUCCESS;
210  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ IsDeadChannel()

bool LVL1::Run2TriggerTowerMaker::IsDeadChannel ( const L1CaloPpmDeadChannels db) const
private

Database helper functions for dead and disabled towers.

Definition at line 370 of file Run2TriggerTowerMaker.cxx.

371  {
372  if (!db) return false; // No DB entry - assume that this is not a dead channel
373  if (db->errorCode() > 0 || db->noiseCut() > 0) return true; // We do not want these
374  return false;
375  }

◆ IsDisabledChannel()

bool LVL1::Run2TriggerTowerMaker::IsDisabledChannel ( const L1CaloDisabledTowers db) const
private

Definition at line 377 of file Run2TriggerTowerMaker.cxx.

378  {
379  if (!db) return false; // No DB entry - assume that this is not a disabled channel
380  if (db->disabledBits() > 0) return true; // We do not want these
381  return false;
382  }

◆ IsGoodTower()

bool LVL1::Run2TriggerTowerMaker::IsGoodTower ( const xAOD::TriggerTower tt,
const L1CaloPpmDeadChannelsContainer dead,
const L1CaloDisabledTowersContainer disabled 
) const
private

Definition at line 384 of file Run2TriggerTowerMaker.cxx.

385  {
386  bool isDead = IsDeadChannel(dead->ppmDeadChannels(tt->coolId()));
387  bool isDisabled = IsDisabledChannel(disabled->disabledTowers(tt->coolId()));
388  if (!isDead && !isDisabled) return true;
389  return false;
390  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ non_linear_lut()

int LVL1::Run2TriggerTowerMaker::non_linear_lut ( int  lutin,
unsigned short  offset,
unsigned short  slope,
unsigned short  noiseCut,
unsigned short  scale,
short  par1,
short  par2,
short  par3,
short  par4 
)
private

Definition at line 1261 of file Run2TriggerTowerMaker.cxx.

1261  {
1262  // turn shorts into double (database fields are shorts ... )
1263 
1264  // turn shorts into double
1265  double nll_slope = 0.001 * scale;
1266  double nll_offset = 0.001 * par1;
1267  double nll_ampl = 0.001 * par2;
1268  double nll_expo = 0.;
1269  if(par3) {
1270  nll_expo = -1. / (4096 * 0.001*par3);
1271  } else {
1272  nll_ampl = 0.;
1273  }
1274  double nll_noise = 0.001 * par4;
1275 
1276  // noise cut
1277  if (lutin * slope < offset + nll_noise * noiseCut) {
1278  return 0;
1279  }
1280 
1281  // actual calculation
1282  int output = int((((int)(2048 + nll_slope * (lutin * slope - offset)))>>12) + nll_offset + nll_ampl * std::exp(nll_expo * (lutin * slope - offset)));
1283  if(output >= 255) return 255;
1284  if(output < 0) return 0;
1285  return output;
1286  }

◆ normaliseDigits()

void LVL1::Run2TriggerTowerMaker::normaliseDigits ( const std::vector< int > &  sigDigits,
const std::vector< int > &  ovDigits,
std::vector< int > &  normDigits 
)
private

normalise the number of ADC digits for overlay

Definition at line 642 of file Run2TriggerTowerMaker.cxx.

643  {
644 
645  // 3 possible cases:
646  // Case 1.) Signal MC and overlay data have same number of digits - easy peasy lemon squeezy
647  // Case 2.) Signal MC is larger - pad the overlay digits
648  // Case 3.) Signal MC is smaller - crop the overlay digits
649 
650  // Case 1.)
651  if (sigDigits.size() == ovDigits.size()) {
652  for (auto x:ovDigits) normDigits.push_back( x );
653  }
654 
655  // Case 2.)
656  if (sigDigits.size() > ovDigits.size()) {
657  unsigned int pad = (sigDigits.size() - ovDigits.size()) / 2;
658  for (unsigned int x=0;x<pad;++x) normDigits.push_back( 32 );
659  for (auto x:ovDigits) normDigits.push_back( x );
660  for (unsigned int x=0;x<pad;++x) normDigits.push_back( 32 );
661  }
662 
663 
664  // Case 3.)
665  if (sigDigits.size() < ovDigits.size()) {
666  unsigned int offset = (ovDigits.size() - sigDigits.size()) / 2;
667  for (unsigned int x=0;x<sigDigits.size();++x) {
668  unsigned int pos = x + offset;
669  normDigits.push_back( ovDigits[pos] );
670  }
671  }
672 
673  }

◆ operator=()

Run2TriggerTowerMaker& LVL1::Run2TriggerTowerMaker::operator= ( const Run2TriggerTowerMaker )
delete

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ preProcess()

StatusCode LVL1::Run2TriggerTowerMaker::preProcess ( int  bcid,
float  mu 
)
private

Simulate PreProcessing on analogue amplitudes.

Emulate FIR filter, bunch-crossing identification & LUT, and create & fill TriggerTowers.

Definition at line 678 of file Run2TriggerTowerMaker.cxx.

679  {
680  // Loop over all existing towers and simulate preprocessor functions
681  for(auto tower : *m_xaodTowers) {
683  }
684  return StatusCode::SUCCESS;
685  }

◆ preProcessTower()

StatusCode LVL1::Run2TriggerTowerMaker::preProcessTower ( int  bcid,
float  mu,
xAOD::TriggerTower tower 
)
private

retrieve digits

process tower – digitial filter

dynamic pedestal correction

BCID algorithms (only possible if 7 slices readout)

In simulation external BCID is always zero, but for consistency with data we need to add it to the TriggerTower objects

Definition at line 687 of file Run2TriggerTowerMaker.cxx.

688  {
689 
690  const L1CaloPprChanCalib* chanCalib = m_chanCalibContainer->pprChanCalib(tower->coolId());
691 
692  if (!chanCalib) {
693  ATH_MSG_ERROR("Tower with coolId 0x"<<std::hex<<tower->coolId()<<std::dec<<" Not in database! Aborting ...");
694  return StatusCode::FAILURE;
695  }
696 
697  // pedestal correction
698  int pedCorrectionStrategy(0);
699  // Regular job - no overlay
700  if (!m_doOverlay) {
701  if (chanCalib->pedFirSum() && !m_isDataReprocessing) pedCorrectionStrategy = 1; // simulation
702  if (chanCalib->pedFirSum() && m_isDataReprocessing) pedCorrectionStrategy = 2; // data reprocessing
703  }
704  if (m_doOverlay) {
705  pedCorrectionStrategy = chanCalib->lutCpStrategy();
706  }
707 
709  std::vector<int> digits(std::begin(tower->adc()), std::end(tower->adc()));
710 
712  std::vector<int> fir;
713  m_TTtool->fir(digits,
714  { chanCalib->firCoeff5(), chanCalib->firCoeff4(), chanCalib->firCoeff3(),
715  chanCalib->firCoeff2(), chanCalib->firCoeff1() }, // reverse order in database
716  fir);
717 
719  std::vector<int16_t> correction;
720  // a few cases follow
721  // 1.) simulation and pedestal correction enabled
722  // 2.) data reprocessing and pedestal correction enabled
723  // 3.) pedestal correction disabled
724 
725  // old method - now deprecated
726 // if(chanCalib->pedFirSum() && !m_isDataReprocessing) {
727 
728  // new method
729  if (pedCorrectionStrategy == 1) {
730  // case 1.) (database "abuses" pedFirSum to steer pedestal correction)
731  // apply the parameterized pedestal correction
732  int firPed = (chanCalib->firCoeff5() + chanCalib->firCoeff4() + chanCalib->firCoeff3() +
733  chanCalib->firCoeff2() + chanCalib->firCoeff1()) * int(chanCalib->pedMean() + 0.5);
734  m_TTtool->pedestalCorrection(fir,
735  firPed,
736  etaToElement(tower->eta(), tower->layer()),
737  tower->layer(),
738  bcid,
739  mu,
740  correction);
741  }
742 
743  // old method - now deprecated
744  //else if(chanCalib->pedFirSum() && m_isDataReprocessing) {
745  if (pedCorrectionStrategy == 2) {
746 
747  // case 2.) (database "abuses" pedFirSum to steer pedestal correction)
748  // apply the recorded pedestal correction
749  if(!tower->correctionEnabled().empty() && tower->correctionEnabled().front()) {
750  std::size_t offset = (fir.size() - tower->correction().size())/2;
751 
752  for(std::size_t i = offset, e = fir.size() - offset; i != e; ++i) {
753  correction.push_back(tower->correction()[i-offset]);
754  fir[i] -= tower->correction()[i-offset];
755  }
756  ATH_MSG_VERBOSE("::correction: (from data");
757  printVec(this->msg(MSG::VERBOSE), correction);
758  } // in case the correction wasn't enabled in the readout nothing has to be done
759  }
760 
761  // Case 3.) not yet implemented (will it ever be....??)
762 
763  std::vector<int> lutIn;
764  m_TTtool->dropBits(fir, chanCalib->firStartBit(), lutIn);
765 
766  // linear LUTs - CP
767  std::vector<int> lutOut_cp;
768  ATH_MSG_VERBOSE("::cp-lut: strategy: " << chanCalib->lutCpStrategy());
769  if(chanCalib->lutCpStrategy() < 3) {
770  // for new strategy lutSlope, lutOffset and lutNoiseCut are in units of LUTOut
771  // and need to be multiplied by the scale factor
772  double scale = (chanCalib->lutCpStrategy() == 0) ? 1. : m_cpLutScale;
773 
774  m_TTtool->lut(lutIn,
775  scale * chanCalib->lutCpSlope(),
776  scale * chanCalib->lutCpOffset(),
777  scale * chanCalib->lutCpNoiseCut(),
778  32 /* unused */,
779  chanCalib->lutCpStrategy() > 0,
780  false, // TODO - disabled?
781  lutOut_cp);
782  } else if(chanCalib->lutCpStrategy() == 3) {
783  for(auto l : lutIn) lutOut_cp.push_back(non_linear_lut(l, chanCalib->lutCpOffset(), chanCalib->lutCpSlope(), chanCalib->lutCpNoiseCut(), chanCalib->lutCpScale(), chanCalib->lutCpPar1(), chanCalib->lutCpPar2(), chanCalib->lutCpPar3(), chanCalib->lutCpPar4()));
784  }
785  ATH_MSG_VERBOSE("::cp-lut: lut:");
786  printVec(this->msg(MSG::VERBOSE), lutOut_cp);
787 
788 
789  // linear LUTs - JEP
790  std::vector<int> lutOut_jep;
791  ATH_MSG_VERBOSE("::jep-lut: strategy: " << chanCalib->lutJepStrategy());
792  if(chanCalib->lutJepStrategy() < 3) {
793  // for new strategy lutSlope, lutOffset and lutNoiseCut are in units of LUTOut
794  // and need to be multiplied by the scale factor
795  double scale = (chanCalib->lutJepStrategy() == 0) ? 1. : m_jepLutScale;
796 
797  m_TTtool->lut(lutIn,
798  scale * chanCalib->lutJepSlope(),
799  scale * chanCalib->lutJepOffset(),
800  scale * chanCalib->lutJepNoiseCut(),
801  32 /* unused */,
802  chanCalib->lutJepStrategy() > 0,
803  false, // TODO - disabled?
804  lutOut_jep);
805  } else if(chanCalib->lutJepStrategy() == 3) {
806  for(auto l : lutIn) lutOut_jep.push_back(non_linear_lut(l, chanCalib->lutJepOffset(), chanCalib->lutJepSlope(), chanCalib->lutJepNoiseCut(), chanCalib->lutJepScale(), chanCalib->lutJepPar1(), chanCalib->lutJepPar2(), chanCalib->lutJepPar3(), chanCalib->lutJepPar4()));
807  }
808  ATH_MSG_VERBOSE("::jep-lut: lut:");
809  printVec(this->msg(MSG::VERBOSE), lutOut_jep);
810 
811 
813  std::vector<int> BCIDOut;
814  if(!m_isDataReprocessing || tower->adc().size() >= 7) {
815  m_TTtool->bcid(fir, digits,
817  chanCalib->satBcidThreshLow(),
818  chanCalib->satBcidThreshHigh(),
819  chanCalib->satBcidLevel(),
820  BCIDOut);
821  } else {
822  // in data reprocessing with less than 7 slices take decision from data
823  BCIDOut.assign(tower->bcidVec().begin(), tower->bcidVec().end());
824  ATH_MSG_VERBOSE("::bcidOut: (from data):");
825  printVec(this->msg(MSG::VERBOSE), BCIDOut);
826  }
827 
828  std::size_t peak = lutOut_jep.size()/2; // both cp & jep have the same length
829  std::vector<uint_least8_t> etResultVectorCp { uint8_t(lutOut_cp[peak]) };
830  ATH_MSG_VERBOSE("::etResultVector: cp:");
831  printVec(this->msg(MSG::VERBOSE), etResultVectorCp);
832  std::vector<uint_least8_t> etResultVectorJep { uint8_t(lutOut_jep[peak]) };
833  ATH_MSG_VERBOSE("::etResultVector: jep:");
834  printVec(this->msg(MSG::VERBOSE), etResultVectorJep);
835 
836  // identify BCID range
837  int range;
838  if(!(m_chanDefaults.decisionSource() & 0x1)) {
839  range = EtRange(digits[digits.size()/2], chanCalib->bcidEnergyRangeLow(), chanCalib->bcidEnergyRangeHigh());
840  } else {
841  range = EtRange(fir[fir.size()/2], chanCalib->bcidEnergyRangeLow(), chanCalib->bcidEnergyRangeHigh());
842  }
843  ATH_MSG_VERBOSE("::range: " << range);
844 
845  // correct BCID for this range?
846  std::array<int, 3> bcidDecision {
848  };
849  ATH_MSG_VERBOSE("::bcidDecision:");
850  printVec(this->msg(MSG::VERBOSE), bcidDecision);
851 
852  std::array<int, 3> satOverride {
854  };
855  ATH_MSG_VERBOSE("::satOverride:");
856  printVec(this->msg(MSG::VERBOSE), satOverride);
857 
858  if((bcidDecision[range]) & (0x1 << (BCIDOut[BCIDOut.size()/2]))) {
859  if((satOverride[range]) & 0x1) {
860  // return saturation if set
861  etResultVectorCp[0] = SATURATIONVALUE;
862  etResultVectorJep[0] = SATURATIONVALUE;
863  }
864  } else {
865  // zero if fail BCID
866  etResultVectorCp[0] = 0;
867  etResultVectorJep[0] = 0;
868  }
869 
870  // Overlay protection
871  if (m_inputTTLocation.key() == "NoneForOverlay") return StatusCode::SUCCESS;
872 
873  tower->setLut_cp(std::move(etResultVectorCp));
874  tower->setLut_jep(std::move(etResultVectorJep));
875  tower->setBcidVec({uint8_t(BCIDOut[BCIDOut.size()/2])});
876  ATH_MSG_VERBOSE("::set bcidVec:");
877  printVec(this->msg(MSG::VERBOSE), tower->bcidVec());
878  tower->setPeak(0u); // we only added one item to etResultVector
879  if(m_decorateFIR) firDecorator(*tower) = fir[fir.size()/2];
880 
883  tower->setBcidExt(std::vector<uint8_t>(tower->adc().size(), 0u));
884 
885  // fill the pedestal correction
886  if(chanCalib->pedFirSum()) {
887  // online database abuses pedFirSum to steer pedestal correction
888  tower->setCorrectionEnabled(std::vector<uint8_t>(tower->lut_cp().size(), 1u));
889  tower->setCorrection(std::vector<int16_t>(tower->lut_cp().size(),
890  correction[correction.size()/2]));
891  ATH_MSG_VERBOSE("::set correction:");
892  printVec(this->msg(MSG::VERBOSE), tower->correction());
893  } else {
894  tower->setCorrectionEnabled(std::vector<uint8_t>(tower->lut_cp().size(), 0u));
895  tower->setCorrection(std::vector<int16_t>(tower->lut_cp().size(), 0u));
896  }
897  return StatusCode::SUCCESS;
898  }

◆ preProcessTower_getLutIn()

StatusCode LVL1::Run2TriggerTowerMaker::preProcessTower_getLutIn ( int  bcid,
float  mu,
xAOD::TriggerTower tower,
const L1CaloPprChanCalib db,
const std::vector< int > &  digits,
std::vector< int > &  output 
)
private

PreProcess up to LUT in.

Definition at line 592 of file Run2TriggerTowerMaker.cxx.

593  {
594  // factorised version of Run2TriggerTowerMaker::preProcessTower
595 
596  // process tower -- digital filter
597  std::vector<int> fir;
598  m_TTtool->fir(digits,
599  {db->firCoeff5(),db->firCoeff4(),db->firCoeff3(),db->firCoeff2(),db->firCoeff1()}, // reverse order in database
600  fir);
601 
602  // pedestal correction
603  int pedCorrectionStrategy = db->lutCpStrategy();
604  std::vector<int16_t> correction;
605 
606  // 1.) simulation and pedestal correction enabled
607  if (pedCorrectionStrategy == 1) {
608 // cout<<"Using Simulation pedCorrectionStrategy"<<endl;
609  // case 1.) (database "abuses" pedFirSum to steer pedestal correction)
610  // apply the parameterized pedestal correction
611  int firPed = (db->firCoeff5() + db->firCoeff4() + db->firCoeff3() +
612  db->firCoeff2() + db->firCoeff1()) * int(db->pedMean() + 0.5);
613  m_TTtool->pedestalCorrection(fir,
614  firPed,
615  etaToElement(tower->eta(), tower->layer()),
616  tower->layer(),
617  bcid,
618  mu,
619  correction);
620  }
621 
622  // 2.) data reprocessing and pedestal correction enabled
623  if (pedCorrectionStrategy == 2) {
624 // cout<<"Using data pedCorrectionStrategy"<<endl;
625  // case 2.) (database "abuses" pedFirSum to steer pedestal correction)
626  // apply the recorded pedestal correction
627  if(!tower->correctionEnabled().empty() && tower->correctionEnabled().front()) {
628  std::size_t offset = (fir.size() - tower->correction().size())/2;
629 
630  for(std::size_t i = offset, e = fir.size() - offset; i != e; ++i) {
631  correction.push_back(tower->correction()[i-offset]);
632  fir[i] -= tower->correction()[i-offset];
633  }
634  }
635  }
636 
637  m_TTtool->dropBits(fir, db->firStartBit(), output);
638 
639  return StatusCode::SUCCESS;
640  }

◆ processLArTowers()

void LVL1::Run2TriggerTowerMaker::processLArTowers ( const LArTTL1Container towers)
private

extract amplitudes from TTL1

steps over Calo towers and creates/fills trigger towers

Definition at line 1023 of file Run2TriggerTowerMaker.cxx.

1024  {
1025  int towerNumber=0;
1026  for(const LArTTL1* tower : *towers){
1027  ATH_MSG_VERBOSE("Looking at retrieved tower number "<<towerNumber++<<" ***********");
1028 
1029  // Obtain identifier
1030  Identifier id = tower->ttOfflineID();
1031  double eta = IDeta(id, m_caloId);
1032  double phi = IDphi(id, m_caloId);
1033  int layer = int(m_caloId->sampling(id) != 0);
1034  L1CaloCoolChannelId coolId = channelId(eta, phi, layer);
1035 
1036  // Tower amplitudes and type
1037  int nsamples = tower->nsamples();
1038  std::vector<float> tower_amps = tower->samples();
1039 
1040  // Now calibrate tower_amps then fill TriggerTower amplitude vector
1041  // TTL1 should have 7 samples, but this little kludge handles other
1042  // eventualities, provided peak is in centre of the pulse
1043  int offset = (nsamples - (s_FIRLENGTH+2))/2;
1044  std::vector<double> amps(s_FIRLENGTH+2);
1045 
1046  ATH_MSG_VERBOSE("nsamples = " << nsamples << " offset = " << offset);
1047 
1048  for(int i = 0; i < s_FIRLENGTH+2; i++) {
1049  int j = i + offset;
1050  if(j >= 0 && j < nsamples) {
1051  amps[i] = tower_amps[j];
1052  }
1053  else {
1054  amps[i] = 0.;
1055  }
1056  ATH_MSG_VERBOSE("amps[" << i << "] = " << amps[i]);
1057  }
1058 
1059  // Create TriggerTower
1060  xAOD::TriggerTower* t = (*m_xaodTowers)[m_curIndex++] = new xAOD::TriggerTower;
1061  t->setCoolId(coolId.id());
1062  t->setEta(eta);
1063  t->setPhi(phi);
1064  m_xaodTowersAmps[t->index()] = std::move(amps);
1065  } // end for loop
1066  }

◆ processTileTowers()

void LVL1::Run2TriggerTowerMaker::processTileTowers ( const TileTTL1Container towers)
private

Definition at line 1068 of file Run2TriggerTowerMaker.cxx.

1069  {
1070  // Step over all towers
1071  int towerNumber=0;
1072  for(const TileTTL1* tower : *towers) {
1073  ATH_MSG_VERBOSE("Looking at retrieved tower number "<<towerNumber++<<" ***********");
1074 
1075  // Obtain identifier
1076  Identifier id = tower->TTL1_ID();
1077  double cal = m_TileToMeV;//calib(id, m_caloId)*m_TileToMeV;
1078 
1079  // Check this tower is used by the trigger
1080  // don't use gap or mbias scinitllators
1081  if(m_caloId->is_tile(id)) {
1082  double tower_eta = IDeta(id, m_caloId);
1083  double tower_phi = IDphi(id, m_caloId);
1084 
1085  // need to convert tower energy to E_t later
1086  unsigned Ieta = unsigned(fabs(tower_eta)*10.0);
1087  if(Ieta >= m_maxIetaBins){
1088  ATH_MSG_WARNING("TileTTL1 with invalid index for m_sinThetaHash: Ieta = " << Ieta);
1089  Ieta = 0u;
1090  }
1091 
1092  /* Extract amplitudes and rescale according to tower eta */
1093  int nsamples = tower->nsamples();
1094  std::vector<float> tower_amps = tower->fsamples();
1095 
1096  /* Debug message */
1097  ATH_MSG_VERBOSE(" nsamples = " << nsamples);
1098 
1099  // Want 7 samples, but this little kludge allows us to accept other
1100  // numbers, provided peak is in centre of the pulse
1101  int offset = (nsamples - (s_FIRLENGTH+2))/2;
1102  std::vector<double> amps(s_FIRLENGTH+2);
1103  for(int i = 0; i < 7; i++) {
1104  int j = i + offset;
1105  if(j >= 0 && j < nsamples) {
1106  amps[i] = (tower_amps[j]-m_TileTTL1Ped)*m_sinThetaHash[Ieta]*cal; // rescale to MeV
1107  }
1108  else {
1109  amps[i] = 0.;
1110  }
1111  /* Debug message */
1112  ATH_MSG_VERBOSE("amps[" << i << "] = " << amps[i]);
1113  }
1114 
1115  // Create TriggerTower
1116  // m_xaodTowers->push_back(new xAOD::TriggerTower);
1117  // auto t = m_xaodTowers->back();
1118  xAOD::TriggerTower* t = (*m_xaodTowers)[m_curIndex++] = new xAOD::TriggerTower;
1119  t->setCoolId(channelId(tower_eta, tower_phi, 1).id());
1120  t->setEta(tower_eta);
1121  t->setPhi(tower_phi);
1122  m_xaodTowersAmps[t->index()] = std::move(amps);
1123  } // end check on whether tower is used
1124  } // end for loop
1125 
1126  return;
1127  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ store()

StatusCode LVL1::Run2TriggerTowerMaker::store ( )
private

Stores Trigger Towers in the TES, at a location defined in m_outputLocation.

Returns FAILURE if the towers could not be saved.

Returns FAILURE if the towers could not be saved.

Definition at line 905 of file Run2TriggerTowerMaker.cxx.

906  {
907  ATH_MSG_DEBUG("Storing TTs in DataVector");
908  if(m_ZeroSuppress) {
909  // remove trigger towers whose energy is 0
910  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
911  [](const xAOD::TriggerTower* tt){
912  return tt->cpET() == 0 && tt->jepET() == 0;
913  }),
914  m_xaodTowers->end());
915  }
916 
917 
918 
919  if (m_cellType == TRIGGERTOWERS) {
921  ATH_CHECK(output.record(std::move(m_xaodTowers), std::move(m_xaodTowersAux)));
922  }
923  else if (m_cellType == TTL1) {
925  ATH_CHECK(output.record(std::move(m_xaodTowers), std::move(m_xaodTowersAux)));
926  }
927 
928  return StatusCode::SUCCESS;
929  } // end of LVL1::Run2TriggerTowerMaker::store(){

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_actMuKey

SG::ReadDecorHandleKey<xAOD::EventInfo> LVL1::Run2TriggerTowerMaker::m_actMuKey { this, "actualInteractionsPerCrossingKey", "EventInfo.actualInteractionsPerCrossing", "Decoration for actual interactions per crossing" }
private

Definition at line 266 of file Run2TriggerTowerMaker.h.

◆ m_adcStep

double LVL1::Run2TriggerTowerMaker::m_adcStep
private

Definition at line 131 of file Run2TriggerTowerMaker.h.

◆ m_adcVar

double LVL1::Run2TriggerTowerMaker::m_adcVar
private

Definition at line 128 of file Run2TriggerTowerMaker.h.

◆ m_bstowertool

ToolHandle<LVL1BS::ITrigT1CaloDataAccessV2> LVL1::Run2TriggerTowerMaker::m_bstowertool
private

Definition at line 157 of file Run2TriggerTowerMaker.h.

◆ m_caloId

const CaloLVL1_ID* LVL1::Run2TriggerTowerMaker::m_caloId
private

Definition at line 159 of file Run2TriggerTowerMaker.h.

◆ m_cellType

int LVL1::Run2TriggerTowerMaker::m_cellType
private

Definition at line 125 of file Run2TriggerTowerMaker.h.

◆ m_chanCalibContainer

const L1CaloPprChanCalibContainer* LVL1::Run2TriggerTowerMaker::m_chanCalibContainer = nullptr
private

Definition at line 177 of file Run2TriggerTowerMaker.h.

◆ m_chanCalibContaineroverlay

L1CaloPprChanCalibContainer* LVL1::Run2TriggerTowerMaker::m_chanCalibContaineroverlay = nullptr
private

Definition at line 181 of file Run2TriggerTowerMaker.h.

◆ m_chanCalibKey

SG::ReadCondHandleKey<L1CaloPprChanCalibContainer> LVL1::Run2TriggerTowerMaker::m_chanCalibKey {this,"ChanCalibFolderKey","/TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib","PprChanCalib key"}
private

Definition at line 142 of file Run2TriggerTowerMaker.h.

◆ m_chanCalibKeyoverlay

std::string LVL1::Run2TriggerTowerMaker::m_chanCalibKeyoverlay
private

Definition at line 146 of file Run2TriggerTowerMaker.h.

◆ m_chanDefaults

L1CaloPprChanDefaults LVL1::Run2TriggerTowerMaker::m_chanDefaults
private

Definition at line 180 of file Run2TriggerTowerMaker.h.

◆ m_chanDefaultsKey

SG::ReadCondHandleKey<L1CaloPprChanDefaultsContainer> LVL1::Run2TriggerTowerMaker::m_chanDefaultsKey {this,"ChanDefaultsFolderKey","/TRIGGER/L1Calo/V2/Configuration/PprChanDefaults","PprChanDefaults key"}
private

Definition at line 143 of file Run2TriggerTowerMaker.h.

◆ m_chanDefaultsKeyoverlay

std::string LVL1::Run2TriggerTowerMaker::m_chanDefaultsKeyoverlay
private

Definition at line 147 of file Run2TriggerTowerMaker.h.

◆ m_chanDefaultsoverlay

L1CaloPprChanDefaults LVL1::Run2TriggerTowerMaker::m_chanDefaultsoverlay
private

Definition at line 184 of file Run2TriggerTowerMaker.h.

◆ m_cpLutScale

double LVL1::Run2TriggerTowerMaker::m_cpLutScale
private

Definition at line 162 of file Run2TriggerTowerMaker.h.

◆ m_curIndex

std::size_t LVL1::Run2TriggerTowerMaker::m_curIndex = 0u
private

Definition at line 189 of file Run2TriggerTowerMaker.h.

◆ m_deadChannelsContainer

const L1CaloPpmDeadChannelsContainer* LVL1::Run2TriggerTowerMaker::m_deadChannelsContainer = nullptr
private

Definition at line 179 of file Run2TriggerTowerMaker.h.

◆ m_deadChannelsContaineroverlay

L1CaloPpmDeadChannelsContainer* LVL1::Run2TriggerTowerMaker::m_deadChannelsContaineroverlay = nullptr
private

Definition at line 183 of file Run2TriggerTowerMaker.h.

◆ m_deadChannelsKey

SG::ReadCondHandleKey<L1CaloPpmDeadChannelsContainer> LVL1::Run2TriggerTowerMaker::m_deadChannelsKey {this,"DeadChannelsFolderKey","/TRIGGER/L1Calo/V2/Calibration/PpmDeadChannels","PpmDeadChannels key"}
private

Definition at line 145 of file Run2TriggerTowerMaker.h.

◆ m_deadChannelsKeyoverlay

std::string LVL1::Run2TriggerTowerMaker::m_deadChannelsKeyoverlay
private

Definition at line 149 of file Run2TriggerTowerMaker.h.

◆ m_decorateFIR

bool LVL1::Run2TriggerTowerMaker::m_decorateFIR
private

Definition at line 133 of file Run2TriggerTowerMaker.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_digiEngine

std::string LVL1::Run2TriggerTowerMaker::m_digiEngine
private

Definition at line 122 of file Run2TriggerTowerMaker.h.

◆ m_disabledTowersContainer

const L1CaloDisabledTowersContainer* LVL1::Run2TriggerTowerMaker::m_disabledTowersContainer = nullptr
private

Definition at line 178 of file Run2TriggerTowerMaker.h.

◆ m_disabledTowersContaineroverlay

L1CaloDisabledTowersContainer* LVL1::Run2TriggerTowerMaker::m_disabledTowersContaineroverlay = nullptr
private

Definition at line 182 of file Run2TriggerTowerMaker.h.

◆ m_disabledTowersKey

SG::ReadCondHandleKey<L1CaloDisabledTowersContainer> LVL1::Run2TriggerTowerMaker::m_disabledTowersKey {this,"DisabledTowersFolderKey","/TRIGGER/L1Calo/V2/Conditions/DisabledTowers","DisabledTowers key"}
private

Definition at line 144 of file Run2TriggerTowerMaker.h.

◆ m_disabledTowersKeyoverlay

std::string LVL1::Run2TriggerTowerMaker::m_disabledTowersKeyoverlay
private

Definition at line 148 of file Run2TriggerTowerMaker.h.

◆ m_doOverlay

bool LVL1::Run2TriggerTowerMaker::m_doOverlay
private

Definition at line 173 of file Run2TriggerTowerMaker.h.

◆ m_EmTTL1ContainerName

SG::ReadHandleKey<LArTTL1Container> LVL1::Run2TriggerTowerMaker::m_EmTTL1ContainerName
private

Definition at line 276 of file Run2TriggerTowerMaker.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_gainCorr

double LVL1::Run2TriggerTowerMaker::m_gainCorr
private

Definition at line 132 of file Run2TriggerTowerMaker.h.

◆ m_HadTTL1ContainerName

SG::ReadHandleKey<LArTTL1Container> LVL1::Run2TriggerTowerMaker::m_HadTTL1ContainerName
private

Definition at line 277 of file Run2TriggerTowerMaker.h.

◆ m_inputTTLocation

SG::ReadHandleKey<xAOD::TriggerTowerContainer> LVL1::Run2TriggerTowerMaker::m_inputTTLocation
private

Definition at line 269 of file Run2TriggerTowerMaker.h.

◆ m_isDataReprocessing

bool LVL1::Run2TriggerTowerMaker::m_isDataReprocessing
private

Definition at line 171 of file Run2TriggerTowerMaker.h.

◆ m_isReco

bool LVL1::Run2TriggerTowerMaker::m_isReco
private

Definition at line 174 of file Run2TriggerTowerMaker.h.

◆ m_jepLutScale

double LVL1::Run2TriggerTowerMaker::m_jepLutScale
private

Definition at line 163 of file Run2TriggerTowerMaker.h.

◆ m_L1MenuKey

SG::ReadHandleKey<TrigConf::L1Menu> LVL1::Run2TriggerTowerMaker::m_L1MenuKey { this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu", "L1 Menu" }
private

Definition at line 280 of file Run2TriggerTowerMaker.h.

◆ m_mappingTool

ToolHandle<IL1CaloMappingTool> LVL1::Run2TriggerTowerMaker::m_mappingTool
private

Definition at line 156 of file Run2TriggerTowerMaker.h.

◆ m_maxIetaBins

constexpr static unsigned int LVL1::Run2TriggerTowerMaker::m_maxIetaBins = 51
staticconstexprprivate

Definition at line 115 of file Run2TriggerTowerMaker.h.

◆ m_outputLocation

SG::WriteHandleKey<xAOD::TriggerTowerContainer> LVL1::Run2TriggerTowerMaker::m_outputLocation
private

Definition at line 271 of file Run2TriggerTowerMaker.h.

◆ m_outputLocationRerun

SG::WriteHandleKey<xAOD::TriggerTowerContainer> LVL1::Run2TriggerTowerMaker::m_outputLocationRerun
private

Definition at line 273 of file Run2TriggerTowerMaker.h.

◆ m_requireAllCalos

bool LVL1::Run2TriggerTowerMaker::m_requireAllCalos
private

Definition at line 139 of file Run2TriggerTowerMaker.h.

◆ m_rndmADCs

ATHRNG::RNGWrapper* LVL1::Run2TriggerTowerMaker::m_rndmADCs
private

Definition at line 153 of file Run2TriggerTowerMaker.h.

◆ m_rngSvc

ServiceHandle<IAthRNGSvc> LVL1::Run2TriggerTowerMaker::m_rngSvc
private

Definition at line 152 of file Run2TriggerTowerMaker.h.

◆ m_sinThetaHash

std::array<double, m_maxIetaBins> LVL1::Run2TriggerTowerMaker::m_sinThetaHash
private

instead of calculating the expression: double theta =2.

*atan(exp(-fabs(cell_eta))); cell_energy=sin(theta)*cell_energy; for each em and had TT again, we will use a hash table

Definition at line 197 of file Run2TriggerTowerMaker.h.

◆ m_TileToMeV

double LVL1::Run2TriggerTowerMaker::m_TileToMeV
private

Definition at line 165 of file Run2TriggerTowerMaker.h.

◆ m_TileTTL1ContainerName

SG::ReadHandleKey<TileTTL1Container> LVL1::Run2TriggerTowerMaker::m_TileTTL1ContainerName
private

Definition at line 278 of file Run2TriggerTowerMaker.h.

◆ m_TileTTL1Ped

double LVL1::Run2TriggerTowerMaker::m_TileTTL1Ped
private

Definition at line 167 of file Run2TriggerTowerMaker.h.

◆ m_TTtool

ToolHandle<IL1TriggerTowerTool> LVL1::Run2TriggerTowerMaker::m_TTtool {this,"TTTool","LVL1::L1TriggerTowerTool/L1TriggerTowerTool", "The trigger tower tool"}
private

Definition at line 155 of file Run2TriggerTowerMaker.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xaodevtKey

SG::ReadHandleKey<xAOD::EventInfo> LVL1::Run2TriggerTowerMaker::m_xaodevtKey
private

Definition at line 265 of file Run2TriggerTowerMaker.h.

◆ m_xaodTowers

std::unique_ptr<xAOD::TriggerTowerContainer> LVL1::Run2TriggerTowerMaker::m_xaodTowers
private

Definition at line 186 of file Run2TriggerTowerMaker.h.

◆ m_xaodTowersAmps

std::vector<std::vector<double> > LVL1::Run2TriggerTowerMaker::m_xaodTowersAmps
private

Definition at line 188 of file Run2TriggerTowerMaker.h.

◆ m_xaodTowersAux

std::unique_ptr<xAOD::TriggerTowerAuxContainer> LVL1::Run2TriggerTowerMaker::m_xaodTowersAux
private

Definition at line 187 of file Run2TriggerTowerMaker.h.

◆ m_ZeroSuppress

bool LVL1::Run2TriggerTowerMaker::m_ZeroSuppress
private

Definition at line 136 of file Run2TriggerTowerMaker.h.

◆ s_FIRLENGTH

constexpr static int LVL1::Run2TriggerTowerMaker::s_FIRLENGTH = 5
staticconstexprprivate

Definition at line 113 of file Run2TriggerTowerMaker.h.

◆ s_MEV

constexpr static int LVL1::Run2TriggerTowerMaker::s_MEV = 1000
staticconstexprprivate

Definition at line 114 of file Run2TriggerTowerMaker.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::TriggerTower_v2::correctionEnabled
const std::vector< uint8_t > & correctionEnabled() const
get correctionEnabled
LVL1::Run2TriggerTowerMaker::m_deadChannelsContainer
const L1CaloPpmDeadChannelsContainer * m_deadChannelsContainer
Definition: Run2TriggerTowerMaker.h:179
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
LVL1::Run2TriggerTowerMaker::m_curIndex
std::size_t m_curIndex
Definition: Run2TriggerTowerMaker.h:189
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
LVL1::Run2TriggerTowerMaker::calcLutOutCP
StatusCode calcLutOutCP(const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
calculate LUT out
Definition: Run2TriggerTowerMaker.cxx:515
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
LVL1::Run2TriggerTowerMaker::store
StatusCode store()
Stores Trigger Towers in the TES, at a location defined in m_outputLocation.
Definition: Run2TriggerTowerMaker.cxx:905
test_pyathena.eta
eta
Definition: test_pyathena.py:10
LVL1::Run2TriggerTowerMaker::m_adcStep
double m_adcStep
Definition: Run2TriggerTowerMaker.h:131
LVL1::Run2TriggerTowerMaker::preProcess
StatusCode preProcess(int bcid, float mu)
Simulate PreProcessing on analogue amplitudes.
Definition: Run2TriggerTowerMaker.cxx:678
et
Extra patterns decribing particle interation process.
LVL1::Run2TriggerTowerMaker::m_EmTTL1ContainerName
SG::ReadHandleKey< LArTTL1Container > m_EmTTL1ContainerName
Definition: Run2TriggerTowerMaker.h:276
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
LVL1::Run2TriggerTowerMaker::processLArTowers
void processLArTowers(const LArTTL1Container *)
extract amplitudes from TTL1
Definition: Run2TriggerTowerMaker.cxx:1023
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
LVL1::Run2TriggerTowerMaker::m_chanDefaultsKeyoverlay
std::string m_chanDefaultsKeyoverlay
Definition: Run2TriggerTowerMaker.h:147
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
L1CaloPprChanCalib::lutCpStrategy
unsigned short lutCpStrategy() const
Definition: L1CaloPprChanCalib.h:39
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
L1CaloPprChanCalib::satBcidThreshLow
unsigned short satBcidThreshLow() const
Definition: L1CaloPprChanCalib.h:28
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
L1CaloPprChanCalib::lutCpSlope
unsigned short lutCpSlope() const
Definition: L1CaloPprChanCalib.h:42
xAOD::TriggerTower_v2::lut_cp
const std::vector< uint8_t > & lut_cp() const
get lut_cp
LVL1::Run2TriggerTowerMaker::addOverlay
virtual StatusCode addOverlay(int bcid, float mu)
Add overlay data.
Definition: Run2TriggerTowerMaker.cxx:392
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:43
L1CaloPprChanCalib::lutCpPar2
short lutCpPar2() const
Definition: L1CaloPprChanCalib.h:44
L1CaloPprChanDefaults::bcidDecision1
int bcidDecision1() const
Definition: L1CaloPprChanDefaults.h:23
LVL1::Run2TriggerTowerMaker::ADC
std::vector< int > ADC(CLHEP::HepRandomEngine *rndmADCs, L1CaloCoolChannelId channel, const std::vector< double > &amps) const
Functions to simulate processing of tower signals.
Definition: Run2TriggerTowerMaker.cxx:1144
AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
LVL1::Run2TriggerTowerMaker::normaliseDigits
void normaliseDigits(const std::vector< int > &sigDigits, const std::vector< int > &ovDigits, std::vector< int > &normDigits)
normalise the number of ADC digits for overlay
Definition: Run2TriggerTowerMaker.cxx:642
L1CaloPprChanCalib::firCoeff3
short firCoeff3() const
Definition: L1CaloPprChanCalib.h:36
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
L1CaloPprChanCalib::pedFirSum
unsigned int pedFirSum() const
Definition: L1CaloPprChanCalib.h:26
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
TileTTL1
Definition: TileTTL1.h:26
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
L1CaloPprChanCalib::lutJepNoiseCut
unsigned short lutJepNoiseCut() const
Definition: L1CaloPprChanCalib.h:50
xAOD::TriggerTower_v2::correction
const std::vector< int16_t > & correction() const
get correction
LVL1::Run2TriggerTowerMaker::m_doOverlay
bool m_doOverlay
Definition: Run2TriggerTowerMaker.h:173
xAOD::TriggerTower_v2::setBcidVec
void setBcidVec(const std::vector< uint8_t > &)
set bcidVec
LVL1::Run2TriggerTowerMaker::preProcessTower
StatusCode preProcessTower(int bcid, float mu, xAOD::TriggerTower *tower)
Definition: Run2TriggerTowerMaker.cxx:687
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
LVL1::Run2TriggerTowerMaker::calcLutOutJEP
StatusCode calcLutOutJEP(const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
Definition: Run2TriggerTowerMaker.cxx:536
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
LVL1::Run2TriggerTowerMaker::m_rndmADCs
ATHRNG::RNGWrapper * m_rndmADCs
Definition: Run2TriggerTowerMaker.h:153
TileInfo
Definition: TileInfo.h:49
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
LVL1::Run2TriggerTowerMaker::m_xaodTowersAmps
std::vector< std::vector< double > > m_xaodTowersAmps
Definition: Run2TriggerTowerMaker.h:188
LVL1::Run2TriggerTowerMaker::m_jepLutScale
double m_jepLutScale
Definition: Run2TriggerTowerMaker.h:163
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
LVL1::Run2TriggerTowerMaker::s_FIRLENGTH
constexpr static int s_FIRLENGTH
Definition: Run2TriggerTowerMaker.h:113
LVL1::Run2TriggerTowerMaker::m_TileTTL1ContainerName
SG::ReadHandleKey< TileTTL1Container > m_TileTTL1ContainerName
Definition: Run2TriggerTowerMaker.h:278
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
x
#define x
L1CaloPprChanCalib::bcidEnergyRangeLow
unsigned short bcidEnergyRangeLow() const
Definition: L1CaloPprChanCalib.h:31
xAOD::TriggerTower_v2::bcidVec
const std::vector< uint8_t > & bcidVec() const
get bcidVec
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
LVL1::Run2TriggerTowerMaker::m_TileTTL1Ped
double m_TileTTL1Ped
Definition: Run2TriggerTowerMaker.h:167
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
LVL1::Run2TriggerTowerMaker::EtRange
int EtRange(int et, unsigned short bcidEnergyRangeLow, unsigned short bcidEnergyRangeHigh) const
Definition: Run2TriggerTowerMaker.cxx:1169
LVL1::Run2TriggerTowerMaker::TRIGGERTOWERS
@ TRIGGERTOWERS
Definition: Run2TriggerTowerMaker.h:118
L1CaloPprChanCalib::lutJepPar1
short lutJepPar1() const
Definition: L1CaloPprChanCalib.h:52
L1CaloPprChanDefaults::peakFinderCond
int peakFinderCond() const
Definition: L1CaloPprChanDefaults.h:29
LVL1::Run2TriggerTowerMaker::preProcessTower_getLutIn
StatusCode preProcessTower_getLutIn(int bcid, float mu, xAOD::TriggerTower *tower, const L1CaloPprChanCalib *db, const std::vector< int > &digits, std::vector< int > &output)
PreProcess up to LUT in.
Definition: Run2TriggerTowerMaker.cxx:592
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LVL1::Run2TriggerTowerMaker::m_TTtool
ToolHandle< IL1TriggerTowerTool > m_TTtool
Definition: Run2TriggerTowerMaker.h:155
LVL1::Run2TriggerTowerMaker::channelId
L1CaloCoolChannelId channelId(double eta, double phi, int layer)
Compute L1CaloCoolChannelId (including support for old geometries)
Definition: Run2TriggerTowerMaker.cxx:1212
L1CaloPprChanCalib::lutJepPar3
short lutJepPar3() const
Definition: L1CaloPprChanCalib.h:54
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
L1CaloPprChanCalib::firCoeff4
short firCoeff4() const
Definition: L1CaloPprChanCalib.h:37
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
tools.zlumi_mc_cf.correction
def correction(mu, runmode, campaign, run=None)
Definition: zlumi_mc_cf.py:4
LVL1::Run2TriggerTowerMaker::m_disabledTowersKeyoverlay
std::string m_disabledTowersKeyoverlay
Definition: Run2TriggerTowerMaker.h:148
python.PyAthena.module
module
Definition: PyAthena.py:131
Cut::signal
@ signal
Definition: SUSYToolsAlg.cxx:67
L1CaloPprChanCalib::satBcidThreshHigh
unsigned short satBcidThreshHigh() const
Definition: L1CaloPprChanCalib.h:29
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
L1CaloPprChanCalib::lutCpOffset
unsigned short lutCpOffset() const
Definition: L1CaloPprChanCalib.h:40
LVL1::Run2TriggerTowerMaker::m_L1MenuKey
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
Definition: Run2TriggerTowerMaker.h:280
LVL1::Run2TriggerTowerMaker::IsDisabledChannel
bool IsDisabledChannel(const L1CaloDisabledTowers *db) const
Definition: Run2TriggerTowerMaker.cxx:377
LVL1::Run2TriggerTowerMaker::m_xaodTowersAux
std::unique_ptr< xAOD::TriggerTowerAuxContainer > m_xaodTowersAux
Definition: Run2TriggerTowerMaker.h:187
LVL1::Run2TriggerTowerMaker::s_MEV
constexpr static int s_MEV
Definition: Run2TriggerTowerMaker.h:114
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
LVL1::Run2TriggerTowerMaker::m_chanDefaults
L1CaloPprChanDefaults m_chanDefaults
Definition: Run2TriggerTowerMaker.h:180
xAOD::TriggerTower_v2::setPeak
void setPeak(uint8_t)
set peak
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1::Run2TriggerTowerMaker::m_chanCalibKey
SG::ReadCondHandleKey< L1CaloPprChanCalibContainer > m_chanCalibKey
Definition: Run2TriggerTowerMaker.h:142
LVL1::Run2TriggerTowerMaker::IDeta
double IDeta(const Identifier &id, const CaloLVL1_ID *caloId)
functions to extract eta, phi coordinates from calo tower identifiers
Definition: Run2TriggerTowerMaker.cxx:1176
LVL1::Run2TriggerTowerMaker::m_isDataReprocessing
bool m_isDataReprocessing
Definition: Run2TriggerTowerMaker.h:171
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
SG::Decorator< char >
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
LVL1::Run2TriggerTowerMaker::m_deadChannelsKeyoverlay
std::string m_deadChannelsKeyoverlay
Definition: Run2TriggerTowerMaker.h:149
L1CaloPprChanCalib::lutJepPar4
short lutJepPar4() const
Definition: L1CaloPprChanCalib.h:55
LVL1::Run2TriggerTowerMaker::m_xaodevtKey
SG::ReadHandleKey< xAOD::EventInfo > m_xaodevtKey
Definition: Run2TriggerTowerMaker.h:265
L1CaloPpmDeadChannelsContainer::ppmDeadChannels
const L1CaloPpmDeadChannels * ppmDeadChannels(unsigned int channelId) const
Definition: L1CaloPpmDeadChannelsContainer.cxx:72
lumiFormat.i
int i
Definition: lumiFormat.py:85
L1CaloPprChanCalib::firCoeff2
short firCoeff2() const
Definition: L1CaloPprChanCalib.h:35
L1CaloPprChanCalib::lutJepOffset
unsigned short lutJepOffset() const
Definition: L1CaloPprChanCalib.h:49
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LVL1::Run2TriggerTowerMaker::IsDeadChannel
bool IsDeadChannel(const L1CaloPpmDeadChannels *db) const
Database helper functions for dead and disabled towers.
Definition: Run2TriggerTowerMaker.cxx:370
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
xAOD::TriggerTower_v2::layer
int layer() const
get layer ( 0 = EM, 1 = Had, 2 = FCAL23) - to be confirmed
Definition: TriggerTower_v2.cxx:121
L1CaloPprChanCalib::firCoeff5
short firCoeff5() const
Definition: L1CaloPprChanCalib.h:38
xAOD::TriggerTower_v2
Description of TriggerTower_v2.
Definition: TriggerTower_v2.h:49
L1CaloPprChanCalib::satBcidLevel
unsigned short satBcidLevel() const
Definition: L1CaloPprChanCalib.h:30
TileInfo::TTL1Ped
double TTL1Ped(const Identifier &) const
Returns the pedestal (in mV) for TTL1 adcs.
Definition: TileInfo.h:139
xAOD::TriggerTower_v2::eta
virtual double eta() const final
The pseudorapidity ( ) of the particle.
Definition: TriggerTower_v2.cxx:210
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
LVL1::Run2TriggerTowerMaker::m_digiEngine
std::string m_digiEngine
Definition: Run2TriggerTowerMaker.h:122
L1CaloCoolChannelId::id
unsigned int id() const
Definition: L1CaloCoolChannelId.h:32
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
L1CaloPprChanDefaults::bcidDecision3
int bcidDecision3() const
Definition: L1CaloPprChanDefaults.h:27
L1CaloPprChanDefaults::satOverride2
int satOverride2() const
Definition: L1CaloPprChanDefaults.h:26
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::TriggerTower_v2::coolId
uint32_t coolId() const
Tower identifiers.
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LVL1::Run2TriggerTowerMaker::m_actMuKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actMuKey
Definition: Run2TriggerTowerMaker.h:266
SCT_Monitoring::disabled
@ disabled
Definition: SCT_MonitoringNumbers.h:60
L1CaloPprChanCalib::lutCpScale
unsigned short lutCpScale() const
Definition: L1CaloPprChanCalib.h:47
L1CaloPprChanCalib::lutJepSlope
unsigned short lutJepSlope() const
Definition: L1CaloPprChanCalib.h:51
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::TriggerTowerAuxContainer_v2
AuxContainer for TriggerTower_v2.
Definition: TriggerTowerAuxContainer_v2.h:28
LVL1::Run2TriggerTowerMaker::TTL1
@ TTL1
Definition: Run2TriggerTowerMaker.h:118
L1CaloPprChanCalib
Folder <-> Object mapping for /TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib .
Definition: L1CaloPprChanCalib.h:17
LVL1::Run2TriggerTowerMaker::SIZE
@ SIZE
Definition: Run2TriggerTowerMaker.h:118
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
xAOD::TriggerTower_v2::setCorrection
void setCorrection(const std::vector< int16_t > &)
set correction
LVL1::Run2TriggerTowerMaker::m_cpLutScale
double m_cpLutScale
Definition: Run2TriggerTowerMaker.h:162
L1CaloPprChanCalib::firCoeff1
short firCoeff1() const
Definition: L1CaloPprChanCalib.h:34
LVL1::Run2TriggerTowerMaker::IDphi
double IDphi(const Identifier &id, const CaloLVL1_ID *caloId)
Definition: Run2TriggerTowerMaker.cxx:1197
LVL1::Run2TriggerTowerMaker::etaToElement
int etaToElement(float feta, int layer) const
Definition: Run2TriggerTowerMaker.cxx:1222
L1CaloPprChanCalib::bcidEnergyRangeHigh
unsigned short bcidEnergyRangeHigh() const
Definition: L1CaloPprChanCalib.h:32
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge.output
output
Definition: merge.py:17
L1CaloPprChanCalib::lutCpPar1
short lutCpPar1() const
Definition: L1CaloPprChanCalib.h:43
xAOD::TriggerTowerContainer
TriggerTowerContainer_v2 TriggerTowerContainer
Define the latest version of the TriggerTower container.
Definition: TriggerTowerContainer.h:15
dumpTgcDigiJitter.nBins
list nBins
Definition: dumpTgcDigiJitter.py:29
LVL1::Run2TriggerTowerMaker::m_TileToMeV
double m_TileToMeV
Definition: Run2TriggerTowerMaker.h:165
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
L1CaloPprChanCalib::lutCpNoiseCut
unsigned short lutCpNoiseCut() const
Definition: L1CaloPprChanCalib.h:41
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LVL1::Run2TriggerTowerMaker::non_linear_lut
int non_linear_lut(int lutin, unsigned short offset, unsigned short slope, unsigned short noiseCut, unsigned short scale, short par1, short par2, short par3, short par4)
Definition: Run2TriggerTowerMaker.cxx:1261
LVL1::Run2TriggerTowerMaker::m_rngSvc
ServiceHandle< IAthRNGSvc > m_rngSvc
Definition: Run2TriggerTowerMaker.h:152
LVL1::Run2TriggerTowerMaker::getTriggerTowers
StatusCode getTriggerTowers()
gets collection of input TriggerTowers for reprocessing
Definition: Run2TriggerTowerMaker.cxx:934
L1CaloPprChanCalib::firStartBit
unsigned short firStartBit() const
Definition: L1CaloPprChanCalib.h:33
L1CaloPprChanCalib::lutJepScale
unsigned short lutJepScale() const
Definition: L1CaloPprChanCalib.h:56
LVL1::Run2TriggerTowerMaker::m_xaodTowers
std::unique_ptr< xAOD::TriggerTowerContainer > m_xaodTowers
Definition: Run2TriggerTowerMaker.h:186
LVL1::Run2TriggerTowerMaker::m_mappingTool
ToolHandle< IL1CaloMappingTool > m_mappingTool
Definition: Run2TriggerTowerMaker.h:156
LVL1::Run2TriggerTowerMaker::m_caloId
const CaloLVL1_ID * m_caloId
Definition: Run2TriggerTowerMaker.h:159
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Base_Fragment.defaults
dictionary defaults
This includes now the top quark, the leptons and the bosons.
Definition: GeneratorFilters/share/common/Base_Fragment.py:79
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
xAOD::TriggerTower_v2::setLut_cp
void setLut_cp(const std::vector< uint8_t > &)
set lut_cp
LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation
static const std::string xAODTriggerTowerLocation
Definition: TrigT1CaloDefs.h:36
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
xAOD::TriggerTower_v2::setLut_jep
void setLut_jep(const std::vector< uint8_t > &)
set lut_jep
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
Example_ReadSampleNoise.ped
ped
Definition: Example_ReadSampleNoise.py:45
LVL1::Run2TriggerTowerMaker::processTileTowers
void processTileTowers(const TileTTL1Container *)
Definition: Run2TriggerTowerMaker.cxx:1068
LVL1::Run2TriggerTowerMaker::m_disabledTowersContaineroverlay
L1CaloDisabledTowersContainer * m_disabledTowersContaineroverlay
Definition: Run2TriggerTowerMaker.h:182
L1CaloPprChanCalibContainer::pprChanCalib
const L1CaloPprChanCalib * pprChanCalib(unsigned int channelId) const
Definition: L1CaloPprChanCalibContainer.cxx:170
ReadOfcFromCool.nsamples
nsamples
Definition: ReadOfcFromCool.py:115
LVL1::Run2TriggerTowerMaker::m_sinThetaHash
std::array< double, m_maxIetaBins > m_sinThetaHash
instead of calculating the expression: double theta =2.
Definition: Run2TriggerTowerMaker.h:197
L1CaloCoolChannelId
Definition: L1CaloCoolChannelId.h:10
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
LVL1::Run2TriggerTowerMaker::m_outputLocation
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocation
Definition: Run2TriggerTowerMaker.h:271
LVL1::Run2TriggerTowerMaker::m_isReco
bool m_isReco
Definition: Run2TriggerTowerMaker.h:174
L1CaloModuleType::Ppm
@ Ppm
Definition: L1CaloModuleType.h:17
LVL1::Run2TriggerTowerMaker::calcCombinedLUT
void calcCombinedLUT(const std::vector< int > &sigIN, const int sigSlope, const int sigOffset, const std::vector< int > &ovIN, const int ovSlope, const int ovOffset, const int ovNoiseCut, std::vector< int > &output)
Definition: Run2TriggerTowerMaker.cxx:557
a
TList * a
Definition: liststreamerinfos.cxx:10
L1CaloPprChanCalib::lutJepStrategy
unsigned short lutJepStrategy() const
Definition: L1CaloPprChanCalib.h:48
h
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
LVL1::Run2TriggerTowerMaker::m_disabledTowersContainer
const L1CaloDisabledTowersContainer * m_disabledTowersContainer
Definition: Run2TriggerTowerMaker.h:178
RunTileMonitoring.towers
towers
Definition: RunTileMonitoring.py:133
LVL1::Run2TriggerTowerMaker::m_decorateFIR
bool m_decorateFIR
Definition: Run2TriggerTowerMaker.h:133
LVL1::Run2TriggerTowerMaker::getCaloTowers
StatusCode getCaloTowers()
fetch Calorimeter Towers
Definition: Run2TriggerTowerMaker.cxx:961
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LVL1::Run2TriggerTowerMaker::m_adcVar
double m_adcVar
Definition: Run2TriggerTowerMaker.h:128
L1CaloPprChanCalib::lutCpPar4
short lutCpPar4() const
Definition: L1CaloPprChanCalib.h:46
LVL1::Run2TriggerTowerMaker::m_chanCalibContaineroverlay
L1CaloPprChanCalibContainer * m_chanCalibContaineroverlay
Definition: Run2TriggerTowerMaker.h:181
xAOD::TriggerTower_v2::setCorrectionEnabled
void setCorrectionEnabled(const std::vector< uint8_t > &)
set correctionEnabled
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LVL1::Run2TriggerTowerMaker::m_deadChannelsKey
SG::ReadCondHandleKey< L1CaloPpmDeadChannelsContainer > m_deadChannelsKey
Definition: Run2TriggerTowerMaker.h:145
LVL1::Run2TriggerTowerMaker::m_disabledTowersKey
SG::ReadCondHandleKey< L1CaloDisabledTowersContainer > m_disabledTowersKey
Definition: Run2TriggerTowerMaker.h:144
CaloLVL1_ID::sampling
int sampling(const Identifier id) const
return sampling according to :
Definition: CaloLVL1_ID.h:641
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
LVL1::Run2TriggerTowerMaker::m_chanCalibKeyoverlay
std::string m_chanCalibKeyoverlay
Definition: Run2TriggerTowerMaker.h:146
LVL1::Run2TriggerTowerMaker::m_cellType
int m_cellType
Definition: Run2TriggerTowerMaker.h:125
L1CaloPprChanCalib::lutCpPar3
short lutCpPar3() const
Definition: L1CaloPprChanCalib.h:45
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
LVL1::Run2TriggerTowerMaker::m_chanCalibContainer
const L1CaloPprChanCalibContainer * m_chanCalibContainer
Definition: Run2TriggerTowerMaker.h:177
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:70
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LVL1::Run2TriggerTowerMaker::m_requireAllCalos
bool m_requireAllCalos
Definition: Run2TriggerTowerMaker.h:139
L1CaloPprChanDefaults::satOverride3
int satOverride3() const
Definition: L1CaloPprChanDefaults.h:28
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
L1CaloPprChanDefaults::decisionSource
int decisionSource() const
Definition: L1CaloPprChanDefaults.h:30
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
xAOD::TriggerTower_v2::setBcidExt
void setBcidExt(const std::vector< uint8_t > &)
set bcidExt
LVL1::Run2TriggerTowerMaker::m_maxIetaBins
constexpr static unsigned int m_maxIetaBins
Definition: Run2TriggerTowerMaker.h:115
L1CaloPprChanCalib::lutJepPar2
short lutJepPar2() const
Definition: L1CaloPprChanCalib.h:53
LVL1::Run2TriggerTowerMaker::m_bstowertool
ToolHandle< LVL1BS::ITrigT1CaloDataAccessV2 > m_bstowertool
Definition: Run2TriggerTowerMaker.h:157
LVL1::Run2TriggerTowerMaker::digitize
void digitize(const EventContext &ctx)
Convert analogue pulses to digits.
Definition: Run2TriggerTowerMaker.cxx:1130
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
LVL1::Run2TriggerTowerMaker::m_HadTTL1ContainerName
SG::ReadHandleKey< LArTTL1Container > m_HadTTL1ContainerName
Definition: Run2TriggerTowerMaker.h:277
overlay
bool overlay
Definition: listroot.cxx:42
CaloLVL1_ID::is_tile
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
Definition: CaloLVL1_ID.h:672
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
LVL1::TrigT1CaloDefs::xAODTriggerTowerRerunLocation
static const std::string xAODTriggerTowerRerunLocation
Definition: TrigT1CaloDefs.h:37
LVL1::Run2TriggerTowerMaker::m_ZeroSuppress
bool m_ZeroSuppress
Definition: Run2TriggerTowerMaker.h:136
LVL1::Run2TriggerTowerMaker::IsGoodTower
bool IsGoodTower(const xAOD::TriggerTower *tt, const L1CaloPpmDeadChannelsContainer *dead, const L1CaloDisabledTowersContainer *disabled) const
Definition: Run2TriggerTowerMaker.cxx:384
LArTTL1
Liquid Argon TT L1 sum class.
Definition: LArTTL1.h:29
LVL1::Run2TriggerTowerMaker::m_deadChannelsContaineroverlay
L1CaloPpmDeadChannelsContainer * m_deadChannelsContaineroverlay
Definition: Run2TriggerTowerMaker.h:183
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
LVL1::Run2TriggerTowerMaker::m_inputTTLocation
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_inputTTLocation
Definition: Run2TriggerTowerMaker.h:269
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356
LVL1::Run2TriggerTowerMaker::m_gainCorr
double m_gainCorr
Definition: Run2TriggerTowerMaker.h:132
fitman.k
k
Definition: fitman.py:528
xAOD::TriggerTower
TriggerTower_v2 TriggerTower
Define the latest version of the TriggerTower class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/TriggerTower.h:16
LVL1::Run2TriggerTowerMaker::m_chanDefaultsKey
SG::ReadCondHandleKey< L1CaloPprChanDefaultsContainer > m_chanDefaultsKey
Definition: Run2TriggerTowerMaker.h:143
LVL1::Run2TriggerTowerMaker::m_outputLocationRerun
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocationRerun
Definition: Run2TriggerTowerMaker.h:273
xAOD::TriggerTower_v2::adc
const std::vector< uint16_t > & adc() const
get adc
L1CaloPprChanDefaults::bcidDecision2
int bcidDecision2() const
Definition: L1CaloPprChanDefaults.h:25
ServiceHandle< IIncidentSvc >
L1CaloPprChanCalib::pedMean
double pedMean() const
Definition: L1CaloPprChanCalib.h:24
TileInfo::TTL1Calib
double TTL1Calib(const Identifier &) const
Returns the factor which converts amplitude in pCb to mV in TTL1.
Definition: TileInfo.h:112
L1CaloPprChanDefaults::satOverride1
int satOverride1() const
Definition: L1CaloPprChanDefaults.h:24
Identifier
Definition: IdentifierFieldParser.cxx:14