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, V, H > &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, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &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 {this, "xAODEventInfoKey", "EventInfo"}
 
SG::ReadDecorHandleKey< xAOD::EventInfom_actMuKey { this, "actualInteractionsPerCrossingKey", m_xaodevtKey, "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("RngSvc", m_rngSvc, "Random number service");
96  declareProperty("DigiEngine", m_digiEngine = "TrigT1CaloSim_Digitization");
97 
98  declareProperty("L1TriggerTowerTool", m_TTtool);
99  declareProperty("PpmMappingTool", m_mappingTool);
100 
102  declareProperty("EmTTL1ContainerName",m_EmTTL1ContainerName= "LArTTL1EM");
103  declareProperty("HadTTL1ContainerName",m_HadTTL1ContainerName= "LArTTL1HAD");
104  declareProperty("TileTTL1ContainerName",m_TileTTL1ContainerName= "TileTTL1Cnt");
105  declareProperty("RequireAllCalos",m_requireAllCalos=true,"Should EM,Had and Tile all be available?");
106 
109  declareProperty("CellType", m_cellType = TTL1);
110 
111  // ADC simulation
112  declareProperty("ADCStep", m_adcStep=250.);
113  declareProperty("ADCNoise", m_adcVar=0.65);
114  declareProperty("CalibrationUncertainty", m_gainCorr=0.);
115 
116  declareProperty("DoOverlay",m_doOverlay = false);
117  declareProperty("IsReco",m_isReco = false);
118 
119  declareProperty("DecorateFIR", m_decorateFIR = false, "Add FIR values to the xAOD::TriggerTowers");
120 
121  declareProperty("ZeroSuppress", m_ZeroSuppress = true, "Do not save towers with 0 energy");
122 
123  declareProperty("ChanCalibFolderKeyoverlay",m_chanCalibKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Calibration/Physics/PprChanCalib","PprChanCalib key for overlay");
124  declareProperty("ChanDefaultsFolderKeyoverlay",m_chanDefaultsKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Configuration/PprChanDefaults","PprChanDefaults key for overlay");
125  declareProperty("DisabledTowersFolderKeyoverlay",m_disabledTowersKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Conditions/DisabledTowers","DisabledTowers key for overlay");
126  declareProperty("DeadChannelsFolderKeyoverlay",m_deadChannelsKeyoverlay = "/TRIGGER/L1Calo/V2overlay/Calibration/PpmDeadChannels","PpmDeadChannels key for overlay");
127 
128  // Create hash table for E->ET conversions
129  /* Fill table with dummy values */
130  m_sinThetaHash.fill(-1.);
131 
132  /* set values for barrel region with granularity of 0.1*/
133  for(unsigned int i = 0; i < 25; i++) {
134  m_sinThetaHash[i] = 1.0/cosh((i+0.5)* 0.1);
135  }
136 
137  /* set values for EndCap with granularity of 0.2 except tt by |3.2|
138  eta values are are: 2.6, 2.8, 3.0, 3.15 */
139  m_sinThetaHash[26] = 1.0/cosh(2.6);
140  m_sinThetaHash[28] = 1.0/cosh(2.8);
141  m_sinThetaHash[30] = 1.0/cosh(3.0);
142  m_sinThetaHash[31] = 1.0/cosh(3.15);
143 
144  /* fcal granularity is 0.425 */
145  m_sinThetaHash[ (unsigned int)(32 + (0.5*0.425)*10.) ] = 1.0/cosh(3.2 + 0.5*0.425);
146  m_sinThetaHash[ (unsigned int)(32 + (1.5*0.425)*10.) ] = 1.0/cosh(3.2 + 1.5*0.425);
147  m_sinThetaHash[ (unsigned int)(32 + (2.5*0.425)*10.) ] = 1.0/cosh(3.2 + 2.5*0.425);
148  m_sinThetaHash[ (unsigned int)(32 + (3.5*0.425)*10.) ] = 1.0/cosh(3.2 + 3.5*0.425);
149  }

◆ ~Run2TriggerTowerMaker()

LVL1::Run2TriggerTowerMaker::~Run2TriggerTowerMaker ( )
virtual

Definition at line 151 of file Run2TriggerTowerMaker.cxx.

151 {}

◆ 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 1149 of file Run2TriggerTowerMaker.cxx.

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

◆ addOverlay() [1/2]

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

Add overlay data.

Definition at line 397 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 475 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 562 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 520 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 541 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 1217 of file Run2TriggerTowerMaker.cxx.

1218  {
1219  int crate, module, channel;
1220  m_mappingTool->mapping(eta, phi, layer, crate, module, channel);
1221  int slot = module + 5;
1222  int pin = channel % 16;
1223  int asic = channel / 16;
1224  return L1CaloCoolChannelId(crate, L1CaloModuleType::Ppm, slot, pin, asic, false);
1225  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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 1135 of file Run2TriggerTowerMaker.cxx.

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

◆ etaToElement()

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

Get integer eta bin

Definition at line 1227 of file Run2TriggerTowerMaker.cxx.

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

◆ EtRange()

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

Definition at line 1174 of file Run2TriggerTowerMaker.cxx.

1175  {
1176  if(et < bcidEnergyRangeLow) return 0;
1177  if(et < bcidEnergyRangeHigh) return 1;
1178  return 2;
1179  }

◆ 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 308 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 300 of file Run2TriggerTowerMaker.cxx.

300  {
301  ATH_MSG_DEBUG("Finalizing");
302  return StatusCode::SUCCESS;
303  }

◆ 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 966 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 939 of file Run2TriggerTowerMaker.cxx.

940  {
941  ATH_MSG_INFO("Retrieve input TriggerTowers " << m_inputTTLocation.key());
943  ATH_CHECK(inputTTs.isValid());
944  ATH_MSG_INFO("Found " << inputTTs->size() << " input TriggerTowers");
945 
946  for(const xAOD::TriggerTower* tower : *inputTTs) {
947  xAOD::TriggerTower* t = (*m_xaodTowers)[m_curIndex++] = new xAOD::TriggerTower;
948  *t = *tower;
949  }
950 
952  // /// So clean-up m_xaodTowers before these cause problems later.
953  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
954  [](const xAOD::TriggerTower* tt){return (tt == 0);}),
955  m_xaodTowers->end());
956 
957  // Remove dead and disabled towers
958  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
959  [this](const xAOD::TriggerTower* tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
960  m_xaodTowers->end());
961 
962  return StatusCode::SUCCESS;
963  } // 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 213 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 1181 of file Run2TriggerTowerMaker.cxx.

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

◆ IDphi()

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

Definition at line 1202 of file Run2TriggerTowerMaker.cxx.

1203  {
1204  Identifier regId = l1id->region_id(id);
1205 
1206  double phiMax = l1id->phi_max(regId);
1207  int iphi = l1id->phi(id);
1208  double phi = (iphi+0.5)*2*M_PI/(phiMax+1);
1209 
1210  return phi;
1211  }

◆ initialize()

StatusCode LVL1::Run2TriggerTowerMaker::initialize ( )

Definition at line 153 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 375 of file Run2TriggerTowerMaker.cxx.

376  {
377  if (!db) return false; // No DB entry - assume that this is not a dead channel
378  if (db->errorCode() > 0 || db->noiseCut() > 0) return true; // We do not want these
379  return false;
380  }

◆ IsDisabledChannel()

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

Definition at line 382 of file Run2TriggerTowerMaker.cxx.

383  {
384  if (!db) return false; // No DB entry - assume that this is not a disabled channel
385  if (db->disabledBits() > 0) return true; // We do not want these
386  return false;
387  }

◆ IsGoodTower()

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

Definition at line 389 of file Run2TriggerTowerMaker.cxx.

390  {
391  bool isDead = IsDeadChannel(dead->ppmDeadChannels(tt->coolId()));
392  bool isDisabled = IsDisabledChannel(disabled->disabledTowers(tt->coolId()));
393  if (!isDead && !isDisabled) return true;
394  return false;
395  }

◆ 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 1266 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 647 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 683 of file Run2TriggerTowerMaker.cxx.

684  {
685  // Loop over all existing towers and simulate preprocessor functions
686  for(auto tower : *m_xaodTowers) {
688  }
689  return StatusCode::SUCCESS;
690  }

◆ 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 692 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 597 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 1028 of file Run2TriggerTowerMaker.cxx.

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

◆ processTileTowers()

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

Definition at line 1073 of file Run2TriggerTowerMaker.cxx.

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

◆ 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 910 of file Run2TriggerTowerMaker.cxx.

911  {
912  ATH_MSG_DEBUG("Storing TTs in DataVector");
913  if(m_ZeroSuppress) {
914  // remove trigger towers whose energy is 0
915  m_xaodTowers->erase(std::remove_if(m_xaodTowers->begin(), m_xaodTowers->end(),
916  [](const xAOD::TriggerTower* tt){
917  return tt->cpET() == 0 && tt->jepET() == 0;
918  }),
919  m_xaodTowers->end());
920  }
921 
922 
923 
924  if (m_cellType == TRIGGERTOWERS) {
926  ATH_CHECK(output.record(std::move(m_xaodTowers), std::move(m_xaodTowersAux)));
927  }
928  else if (m_cellType == TTL1) {
930  ATH_CHECK(output.record(std::move(m_xaodTowers), std::move(m_xaodTowersAux)));
931  }
932 
933  return StatusCode::SUCCESS;
934  } // 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", m_xaodevtKey, "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 {this, "xAODEventInfoKey", "EventInfo"}
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:520
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:215
LVL1::Run2TriggerTowerMaker::store
StatusCode store()
Stores Trigger Towers in the TES, at a location defined in m_outputLocation.
Definition: Run2TriggerTowerMaker.cxx:910
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:683
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
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
LVL1::Run2TriggerTowerMaker::processLArTowers
void processLArTowers(const LArTTL1Container *)
extract amplitudes from TTL1
Definition: Run2TriggerTowerMaker.cxx:1028
SG::ReadCondHandle
Definition: ReadCondHandle.h:40
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
LVL1::Run2TriggerTowerMaker::m_chanDefaultsKeyoverlay
std::string m_chanDefaultsKeyoverlay
Definition: Run2TriggerTowerMaker.h:147
L1CaloPprChanCalib::lutCpStrategy
unsigned short lutCpStrategy() const
Definition: L1CaloPprChanCalib.h:39
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
L1CaloPprChanCalib::satBcidThreshLow
unsigned short satBcidThreshLow() const
Definition: L1CaloPprChanCalib.h:28
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:397
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:42
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:1149
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:647
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:70
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
defaults
Definition: MSVtxValidationAlg.h:43
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:692
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
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:541
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:656
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:1174
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:597
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
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:1217
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
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
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
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:382
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:209
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:1181
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:375
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
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:194
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:108
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:795
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:1202
LVL1::Run2TriggerTowerMaker::etaToElement
int etaToElement(float feta, int layer) const
Definition: Run2TriggerTowerMaker.cxx:1227
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:16
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:239
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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:1266
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:939
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:16
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:1073
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:73
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:562
a
TList * a
Definition: liststreamerinfos.cxx:10
L1CaloPprChanCalib::lutJepStrategy
unsigned short lutJepStrategy() const
Definition: L1CaloPprChanCalib.h:48
h
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
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:966
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:629
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:85
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
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:13
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:1135
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:51
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:876
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:389
LArTTL1
Liquid Argon TT L1 sum class.
Definition: LArTTL1.h:29
LVL1::Run2TriggerTowerMaker::m_deadChannelsContaineroverlay
L1CaloPpmDeadChannelsContainer * m_deadChannelsContaineroverlay
Definition: Run2TriggerTowerMaker.h:183
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