Loading [MathJax]/jax/output/SVG/config.js
|
ATLAS Offline Software
|
Go to the documentation of this file.
37 #include "GaudiKernel/IIncidentSvc.h"
42 #include "GaudiKernel/ThreadLocalContext.h"
44 #include "CLHEP/Random/RandGaussZiggurat.h"
45 #include "CLHEP/Random/Randomize.h"
46 #include "CLHEP/Random/RandomEngine.h"
54 #include <sys/types.h>
55 #include <unordered_map>
62 template <
typename MSG,
typename T>
63 void printVec(
MSG&
msg,
const std::vector<T>&
v) {
67 template <
typename MSG,
typename T, std::
size_t N>
68 void printVec(
MSG&
msg,
const std::array<T, N>&
v) {
72 constexpr
static int ADCMAX = 1023;
73 constexpr
static int SATURATIONVALUE = 255;
83 m_rngSvc(
"AthRNGSvc",
name),
85 m_mappingTool(
"LVL1::PpmMappingTool/PpmMappingTool", this),
86 m_bstowertool(
"LVL1BS__TrigT1CaloDataAccessV2/TrigT1CaloDataAccessV2", this),
90 m_TileToMeV(s_MEV/4.1),
92 m_isDataReprocessing(false),
93 m_doOverlay(false), m_isReco(false)
134 for(
unsigned int i = 0;
i < 25;
i++) {
146 m_sinThetaHash[ (
unsigned int)(32 + (0.5*0.425)*10.) ] = 1.0/cosh(3.2 + 0.5*0.425);
147 m_sinThetaHash[ (
unsigned int)(32 + (1.5*0.425)*10.) ] = 1.0/cosh(3.2 + 1.5*0.425);
148 m_sinThetaHash[ (
unsigned int)(32 + (2.5*0.425)*10.) ] = 1.0/cosh(3.2 + 2.5*0.425);
149 m_sinThetaHash[ (
unsigned int)(32 + (3.5*0.425)*10.) ] = 1.0/cosh(3.2 + 3.5*0.425);
167 return StatusCode::FAILURE;
173 incSvc->addListener(
this,
"BeginRun");
209 return StatusCode::SUCCESS;
216 if(inc.type() !=
"BeginRun")
return;
234 throw std::runtime_error(
"Overlay no longer supported in Run2TriggerTowerMaker");
274 ATH_MSG_WARNING(
"Could not determine if input file is data or simulation. Will assume simulation.");
280 ATH_MSG_INFO(
"Detected data reprocessing. Will take pedestal correction values from input trigger towers.");
289 ATH_MSG_INFO(
"L1Calo overlay job - setting m_isDataReprocessing to false");
297 return StatusCode::SUCCESS;
323 ATH_MSG_ERROR(
"Could not retrieve channel 0 PprChanDefaults folder. Aborting ...");
324 throw std::runtime_error(
"Run2TriggerTowerMaker: channel 0 of PprChanDefaults not accesible");
328 const EventContext& ctx = Gaudi::Hive::currentContext();
348 ATH_MSG_ERROR(
"Unsupported Cell Type!!!!!!");
return StatusCode::FAILURE;
355 const float mu = muDecor(0);
366 return StatusCode::SUCCESS;
372 if (!
db)
return false;
373 if (
db->errorCode() > 0 ||
db->noiseCut() > 0)
return true;
379 if (!
db)
return false;
380 if (
db->disabledBits() > 0)
return true;
388 if (!isDead && !isDisabled)
return true;
397 overlayDataTTs->setStore( &overlayDataTTsAux );
401 std::unordered_map<uint32_t,xAOD::TriggerTower*> overlayMap;
405 char decor_ttNotUsedInOverlay = 0;
406 char decor_ttUsedInOverlay = 1;
408 for (
auto tt:*overlayDataTTs) {
411 decor(*
tt) = decor_ttNotUsedInOverlay;
412 overlayMap.insert( std::make_pair(
tt->coolId() ,
tt ) );
417 bool findSizeOfPrimaryLUT(
true);
418 unsigned int sizeOfPrimaryLUT(0);
425 if (findSizeOfPrimaryLUT) {
426 findSizeOfPrimaryLUT =
false;
427 sizeOfPrimaryLUT =
tt->lut_cp().size();
428 peakOfPrimary =
tt->peak();
432 Itr
match = overlayMap.find(
tt->coolId() );
433 if (
match != overlayMap.end()) {
438 decor(*
match->second) = decor_ttUsedInOverlay;
444 for (Itr
i=overlayMap.begin();
i!=overlayMap.end();++
i) {
446 if (decor(*
tt) == decor_ttNotUsedInOverlay) {
448 std::vector<uint8_t> overlay_lut_cp(sizeOfPrimaryLUT,0.);
449 std::vector<uint8_t> overlay_lut_jep(sizeOfPrimaryLUT,0.);
452 overlay_lut_cp.at(peakOfPrimary) =
tt->cpET();
453 overlay_lut_jep.at(peakOfPrimary) =
tt->jepET();
456 tt->setPeak( peakOfPrimary );
457 tt->setLut_cp( overlay_lut_cp );
458 tt->setLut_jep( overlay_lut_jep );
466 return StatusCode::SUCCESS;
477 ATH_MSG_ERROR(
"Cannot find signal DB for tower 0x"<<std::hex<<sigTT->
coolId()<<std::dec<<
" Aborting...");
478 return StatusCode::FAILURE;
482 ATH_MSG_ERROR(
"Cannot find overlay DB for tower 0x"<<std::hex<<ovTT->
coolId()<<std::dec<<
" Aborting...");
483 return StatusCode::FAILURE;
490 std::vector<int> normOverlayDigits;
494 std::vector<int> sigLutIn,ovLutIn;
499 std::vector<int> lutOut_cp,lutOut_jep;
505 std::size_t peak = lutOut_jep.size()/2;
506 std::vector<uint_least8_t> etResultVectorCp {
uint8_t(lutOut_cp[peak]) };
507 std::vector<uint_least8_t> etResultVectorJep {
uint8_t(lutOut_jep[peak]) };
509 sigTT->
setLut_cp(std::move(etResultVectorCp));
510 sigTT->
setLut_jep(std::move(etResultVectorJep));
512 return StatusCode::SUCCESS;
518 ATH_MSG_ERROR(
"Cannot process calcLutOutCP as lutCpStrategy > 2");
519 return StatusCode::FAILURE;
523 double sigSlope = sigScale * sigDB->
lutCpSlope();
524 double sigOffset = sigScale * sigDB->
lutCpOffset();
527 double ovSlope = ovScale * ovDB->
lutCpSlope();
533 return StatusCode::SUCCESS;
539 ATH_MSG_ERROR(
"Cannot process calcLutOutJEP as lutJepStrategy > 2");
540 return StatusCode::FAILURE;
554 return StatusCode::SUCCESS;
558 const std::vector<int>& ovIN,
const int ovSlope,
const int ovOffset,
const int ovNoiseCut,std::vector<int>&
output)
568 output.reserve(sigIN.size());
570 for (
unsigned int i=0;
i<sigIN.size();++
i) {
575 int outSig =
signal*sigSlope - sigOffset;
576 int outOv =
overlay*ovSlope - ovOffset;
577 int outTmp = outSig + outOv;
580 if (outTmp >= ovNoiseCut) {
581 out = (outSig + outOv + 2048)>>12;
597 std::vector<int> fir;
599 {
db->firCoeff5(),
db->firCoeff4(),
db->firCoeff3(),
db->firCoeff2(),
db->firCoeff1()},
603 int pedCorrectionStrategy =
db->lutCpStrategy();
607 if (pedCorrectionStrategy == 1) {
611 int firPed = (
db->firCoeff5() +
db->firCoeff4() +
db->firCoeff3() +
612 db->firCoeff2() +
db->firCoeff1()) *
int(
db->pedMean() + 0.5);
623 if (pedCorrectionStrategy == 2) {
639 return StatusCode::SUCCESS;
651 if (sigDigits.size() == ovDigits.size()) {
652 for (
auto x:ovDigits) normDigits.push_back(
x );
656 if (sigDigits.size() > ovDigits.size()) {
657 unsigned int pad = (sigDigits.size() - ovDigits.size()) / 2;
658 for (
unsigned int x=0;
x<pad;++
x) normDigits.push_back( 32 );
659 for (
auto x:ovDigits) normDigits.push_back(
x );
660 for (
unsigned int x=0;
x<pad;++
x) normDigits.push_back( 32 );
665 if (sigDigits.size() < ovDigits.size()) {
666 unsigned int offset = (ovDigits.size() - sigDigits.size()) / 2;
667 for (
unsigned int x=0;
x<sigDigits.size();++
x) {
669 normDigits.push_back( ovDigits[
pos] );
684 return StatusCode::SUCCESS;
693 ATH_MSG_ERROR(
"Tower with coolId 0x"<<std::hex<<tower->
coolId()<<std::dec<<
" Not in database! Aborting ...");
694 return StatusCode::FAILURE;
698 int pedCorrectionStrategy(0);
712 std::vector<int> fir;
729 if (pedCorrectionStrategy == 1) {
745 if (pedCorrectionStrategy == 2) {
763 std::vector<int> lutIn;
767 std::vector<int> lutOut_cp;
790 std::vector<int> lutOut_jep;
813 std::vector<int> BCIDOut;
828 std::size_t peak = lutOut_jep.size()/2;
829 std::vector<uint_least8_t> etResultVectorCp {
uint8_t(lutOut_cp[peak]) };
832 std::vector<uint_least8_t> etResultVectorJep {
uint8_t(lutOut_jep[peak]) };
846 std::array<int, 3> bcidDecision {
852 std::array<int, 3> satOverride {
858 if((bcidDecision[
range]) & (0
x1 << (BCIDOut[BCIDOut.size()/2]))) {
859 if((satOverride[
range]) & 0
x1) {
861 etResultVectorCp[0] = SATURATIONVALUE;
862 etResultVectorJep[0] = SATURATIONVALUE;
866 etResultVectorCp[0] = 0;
867 etResultVectorJep[0] = 0;
873 tower->
setLut_cp(std::move(etResultVectorCp));
874 tower->
setLut_jep(std::move(etResultVectorJep));
897 return StatusCode::SUCCESS;
912 return tt->cpET() == 0 && tt->jepET() == 0;
928 return StatusCode::SUCCESS;
954 [
this](
const xAOD::TriggerTower*
tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
957 return StatusCode::SUCCESS;
968 sc1 = StatusCode::FAILURE;
975 sc2 = StatusCode::FAILURE;
983 sc3 = StatusCode::FAILURE;
987 (sc2==StatusCode::FAILURE) ||
988 (sc3==StatusCode::FAILURE))) {
990 <<
"Found Em LArTTL1 : "<<sc1 <<
endmsg
991 <<
"Found Had LArTTL1 : "<<sc2 <<
endmsg
992 <<
"Found TileTTL1 : "<<sc3<<
endmsg
994 return StatusCode::FAILURE;
998 if(sc1 == StatusCode::SUCCESS) {
1001 if(sc2 == StatusCode::SUCCESS) {
1004 if(sc3 == StatusCode::SUCCESS) {
1016 [
this](
const xAOD::TriggerTower*
tt){return !IsGoodTower(tt,m_deadChannelsContainer,m_disabledTowersContainer);}),
1019 return StatusCode::SUCCESS;
1027 ATH_MSG_VERBOSE(
"Looking at retrieved tower number "<<towerNumber++<<
" ***********");
1038 std::vector<float> tower_amps = tower->samples();
1051 amps[
i] = tower_amps[j];
1061 t->setCoolId(coolId.
id());
1073 ATH_MSG_VERBOSE(
"Looking at retrieved tower number "<<towerNumber++<<
" ***********");
1086 unsigned Ieta =
unsigned(fabs(tower_eta)*10.0);
1088 ATH_MSG_WARNING(
"TileTTL1 with invalid index for m_sinThetaHash: Ieta = " << Ieta);
1094 std::vector<float> tower_amps = tower->fsamples();
1103 for(
int i = 0;
i < 7;
i++) {
1119 t->setCoolId(
channelId(tower_eta, tower_phi, 1).
id());
1120 t->setEta(tower_eta);
1121 t->setPhi(tower_phi);
1140 tower->setAdcPeak(digits.size()/2);
1149 double ped = chanCalib->pedMean();
1152 double adcCal = (
m_gainCorr > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs, 1.,
m_gainCorr) : 1.;
1154 std::vector<int> digits;
1159 double adcNoise = (
m_adcVar > 0.) ? CLHEP::RandGaussZiggurat::shoot(rndmADCs,0.,
m_adcVar) : 0.;
1164 digits.push_back(
digit);
1171 if(
et < bcidEnergyRangeLow)
return 0;
1172 if(
et < bcidEnergyRangeHigh)
return 1;
1178 int region = l1id->
region(
id);
1179 int ieta = l1id->
eta(
id);
1182 double gran[4] = {0.1, 0.2, 0.1, 0.425};
1183 double offset[4] = {0., 2.5, 3.1, 3.2};
1186 if(region>=0 && region<=3) {
1187 eta =
sign* (((ieta+0.5) * gran[region]) +
offset[region]);
1201 double phiMax = l1id->
phi_max(regId);
1202 int iphi = l1id->
phi(
id);
1203 double phi = (iphi+0.5)*2*
M_PI/(phiMax+1);
1224 constexpr
static int NELEMENTS = 33;
1226 float shiftedEta = feta + 4.9;
1227 uint eta = (
uint)floor(shiftedEta*10.0);
1228 if(fabs(shiftedEta*10.0 - (
uint)(eta+1)) < 0.01) eta++;
1229 if(fabs(shiftedEta) < 0.01) eta = 0;
1231 constexpr
int nBins = 16;
1232 constexpr
uint map[
nBins] = {2,6,10,14,17,19,21,23,75,77,79,80,83,87,91,95};
1234 if(eta > 23 && eta < 74) {
1239 if(
i < 8) element =
i;
1240 else element =
i + 50;
1245 if (
layer == 1 && (element == 0 || element == 64)) element = 1;
1246 else if (
layer == 1 && (element == 1 || element == 65)) element = 0;
1247 else if (
layer == 1 && (element == 2 || element == 62)) element = 3;
1248 else if (
layer == 1 && (element == 3 || element == 63)) element = 2;
1249 else if (element > 32) element = 65-element;
1252 element = NELEMENTS-element-1;
1265 double nll_slope = 0.001 *
scale;
1266 double nll_offset = 0.001 * par1;
1267 double nll_ampl = 0.001 * par2;
1268 double nll_expo = 0.;
1270 nll_expo = -1. / (4096 * 0.001*par3);
1274 double nll_noise = 0.001 * par4;
1277 if (lutin * slope <
offset + nll_noise * noiseCut) {
1282 int output =
int((((
int)(2048 + nll_slope * (lutin * slope -
offset)))>>12) + nll_offset + nll_ampl *
std::exp(nll_expo * (lutin * slope -
offset)));
1283 if(
output >= 255)
return 255;
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
const std::vector< uint8_t > & correctionEnabled() const
get correctionEnabled
const L1CaloPpmDeadChannelsContainer * m_deadChannelsContainer
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
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
StatusCode store()
Stores Trigger Towers in the TES, at a location defined in m_outputLocation.
StatusCode preProcess(int bcid, float mu)
Simulate PreProcessing on analogue amplitudes.
Extra patterns decribing particle interation process.
Folder <-> Object mapping for /TRIGGER/L1Calo/V1/Calibration/PpmDeadChannels .
SG::ReadHandleKey< LArTTL1Container > m_EmTTL1ContainerName
void processLArTowers(const LArTTL1Container *)
extract amplitudes from TTL1
std::string m_chanDefaultsKeyoverlay
const_pointer_type cptr()
Dereference the pointer.
unsigned short lutCpStrategy() const
unsigned short satBcidThreshLow() const
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
unsigned short lutCpSlope() const
const std::vector< uint8_t > & lut_cp() const
get lut_cp
virtual StatusCode addOverlay(int bcid, float mu)
Add overlay data.
int phi_max(const Identifier regId) const
min value of phi index (-999 == failure)
int bcidDecision1() const
std::vector< int > ADC(CLHEP::HepRandomEngine *rndmADCs, L1CaloCoolChannelId channel, const std::vector< double > &s) const
Functions to simulate processing of tower signals.
virtual ~Run2TriggerTowerMaker()
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 normaliseDigits(const std::vector< int > &sigDigits, const std::vector< int > &ovDigits, std::vector< int > &normDigits)
normalise the number of ADC digits for overlay
unsigned int pedFirSum() const
bool isPresent() const
Is the referenced container present in SG?
int region(const Identifier id) const
return region according to :
unsigned short lutJepNoiseCut() const
const std::vector< int16_t > & correction() const
get correction
void setBcidVec(const std::vector< uint8_t > &)
set bcidVec
StatusCode preProcessTower(int bcid, float mu, xAOD::TriggerTower *tower)
StatusCode calcLutOutJEP(const std::vector< int > &sigLutIn, const L1CaloPprChanCalib *sigDB, const std::vector< int > &ovLutIn, const L1CaloPprChanCalib *ovDB, std::vector< int > &output)
Identifier region_id(int pos_neg_z, int sampling, int region) const
build a region (of towers) identifier
ATHRNG::RNGWrapper * m_rndmADCs
#define ATH_MSG_VERBOSE(x)
std::vector< std::vector< double > > m_xaodTowersAmps
constexpr static int s_FIRLENGTH
SG::ReadHandleKey< TileTTL1Container > m_TileTTL1ContainerName
@ IS_SIMULATION
true: simulation, false: data
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
unsigned short bcidEnergyRangeLow() const
const std::vector< uint8_t > & bcidVec() const
get bcidVec
@ u
Enums for curvilinear frames.
int EtRange(int et, unsigned short bcidEnergyRangeLow, unsigned short bcidEnergyRangeHigh) const
int peakFinderCond() const
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.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
ToolHandle< IL1TriggerTowerTool > m_TTtool
L1CaloCoolChannelId channelId(double eta, double phi, int layer)
Compute L1CaloCoolChannelId (including support for old geometries)
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
int phi(const Identifier id) const
return phi according to :
std::string m_disabledTowersKeyoverlay
unsigned short satBcidThreshHigh() const
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
unsigned short lutCpOffset() const
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
Run2TriggerTowerMaker(const std::string &name, ISvcLocator *pSvcLocator)
bool IsDisabledChannel(const L1CaloDisabledTowers *db) const
std::unique_ptr< xAOD::TriggerTowerAuxContainer > m_xaodTowersAux
constexpr static int s_MEV
L1CaloPprChanDefaults m_chanDefaults
void setPeak(uint8_t)
set peak
SG::ReadCondHandleKey< L1CaloPprChanCalibContainer > m_chanCalibKey
double IDeta(const Identifier &id, const CaloLVL1_ID *caloId)
functions to extract eta, phi coordinates from calo tower identifiers
bool m_isDataReprocessing
Handle class for reading a decoration on an object.
Helper class to provide type-safe access to aux data.
std::string m_deadChannelsKeyoverlay
SG::ReadHandleKey< xAOD::EventInfo > m_xaodevtKey
const L1CaloPpmDeadChannels * ppmDeadChannels(unsigned int channelId) const
unsigned short lutJepOffset() const
::StatusCode StatusCode
StatusCode definition for legacy code.
bool IsDeadChannel(const L1CaloPpmDeadChannels *db) const
Database helper functions for dead and disabled towers.
int layer() const
get layer ( 0 = EM, 1 = Had, 2 = FCAL23) - to be confirmed
Description of TriggerTower_v2.
unsigned short satBcidLevel() const
double TTL1Ped(const Identifier &) const
Returns the pedestal (in mV) for TTL1 adcs.
virtual double eta() const final
The pseudorapidity ( ) of the particle.
int bcidDecision3() const
uint32_t coolId() const
Tower identifiers.
#define CHECK(...)
Evaluate an expression and check for errors.
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actMuKey
unsigned short lutCpScale() const
StatusCode execute()
Checks that the Cell Type is supported (terminates with errors if not) and calls relevant routine to ...
unsigned short lutJepSlope() const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
AuxContainer for TriggerTower_v2.
Folder <-> Object mapping for /TRIGGER/L1Calo/V2/Calibration/Physics/PprChanCalib .
Container class for LArTTL1.
void setCorrection(const std::vector< int16_t > &)
set correction
virtual bool isValid() override final
Can the handle be successfully dereferenced?
double IDphi(const Identifier &id, const CaloLVL1_ID *caloId)
int etaToElement(float feta, int layer) const
unsigned short bcidEnergyRangeHigh() const
TriggerTowerContainer_v2 TriggerTowerContainer
Define the latest version of the TriggerTower container.
Helper class for offline TT identifiers.
unsigned short lutCpNoiseCut() 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)
ServiceHandle< IAthRNGSvc > m_rngSvc
StatusCode getTriggerTowers()
gets collection of input TriggerTowers for reprocessing
unsigned short firStartBit() const
unsigned short lutJepScale() const
int eta(const Identifier id) const
return eta according to :
std::unique_ptr< xAOD::TriggerTowerContainer > m_xaodTowers
ToolHandle< IL1CaloMappingTool > m_mappingTool
const CaloLVL1_ID * m_caloId
StatusCode initialize(bool used=true)
dictionary defaults
This includes now the top quark, the leptons and the bosons.
setEventNumber setTimeStamp bcid
void setLut_cp(const std::vector< uint8_t > &)
set lut_cp
static const std::string xAODTriggerTowerLocation
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
void setLut_jep(const std::vector< uint8_t > &)
set lut_jep
const L1CaloPprChanDefaults * pprChanDefaults(unsigned int channelId) const
Class describing the basic event information.
void processTileTowers(const TileTTL1Container *)
L1CaloDisabledTowersContainer * m_disabledTowersContaineroverlay
int pos_neg_z(const Identifier id) const
return pos_neg_z according to :
const L1CaloPprChanCalib * pprChanCalib(unsigned int channelId) const
std::array< double, m_maxIetaBins > m_sinThetaHash
instead of calculating the expression: double theta =2.
Folder <-> Object mapping for /TRIGGER/L1Calo/V1/Conditions/DisabledTowers .
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocation
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)
unsigned short lutJepStrategy() const
const L1CaloDisabledTowersContainer * m_disabledTowersContainer
StatusCode getCaloTowers()
fetch Calorimeter Towers
#define ATH_MSG_WARNING(x)
L1CaloPprChanCalibContainer * m_chanCalibContaineroverlay
void setCorrectionEnabled(const std::vector< uint8_t > &)
set correctionEnabled
SG::ReadCondHandleKey< L1CaloPpmDeadChannelsContainer > m_deadChannelsKey
SG::ReadCondHandleKey< L1CaloDisabledTowersContainer > m_disabledTowersKey
int sampling(const Identifier id) const
return sampling according to :
std::string m_chanCalibKeyoverlay
Handle class for reading a decoration on an object.
const L1CaloPprChanCalibContainer * m_chanCalibContainer
int decisionSource() const
void setBcidExt(const std::vector< uint8_t > &)
set bcidExt
constexpr static unsigned int m_maxIetaBins
Handle class for reading from StoreGate.
ToolHandle< LVL1BS::ITrigT1CaloDataAccessV2 > m_bstowertool
void digitize(const EventContext &ctx)
Convert analogue pulses to digits.
SG::ReadHandleKey< LArTTL1Container > m_HadTTL1ContainerName
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
static const std::string xAODTriggerTowerRerunLocation
bool IsGoodTower(const xAOD::TriggerTower *tt, const L1CaloPpmDeadChannelsContainer *dead, const L1CaloDisabledTowersContainer *disabled) const
size_type size() const noexcept
Returns the number of elements in the collection.
Liquid Argon TT L1 sum class.
L1CaloPpmDeadChannelsContainer * m_deadChannelsContaineroverlay
Helper class to provide type-safe access to aux data.
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_inputTTLocation
bool match(std::string s1, std::string s2)
match the individual directories of two strings
TriggerTower_v2 TriggerTower
Define the latest version of the TriggerTower class.
SG::ReadCondHandleKey< L1CaloPprChanDefaultsContainer > m_chanDefaultsKey
SG::WriteHandleKey< xAOD::TriggerTowerContainer > m_outputLocationRerun
const std::vector< uint16_t > & adc() const
get adc
int bcidDecision2() const
void handle(const Incident &)
Best if initialisation which uses COOL-derived values is done here rather than in initialize()
double TTL1Calib(const Identifier &) const
Returns the factor which converts amplitude in pCb to mV in TTL1.