|
ATLAS Offline Software
|
#include <LArStripsCrossTalkCorrector.h>
|
virtual StatusCode | initialize () override final |
|
virtual StatusCode | execute () override final |
|
virtual StatusCode | finalize () override final |
|
| AthAlgorithm (const std::string &name, ISvcLocator *pSvcLocator) |
| Constructor with parameters: More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
SG::ReadCondHandleKey< LArBadChannelCont > | m_BCKey {this, "BadChanKey", "LArBadChannel", "SG key for LArBadChan object"} |
|
SG::ReadCondHandleKey< LArBadFebCont > | m_BFKey {this, "MissingFEBKey", "LArBadFeb", "SG key for miffing FEB object"} |
|
SG::ReadCondHandleKey< LArOnOffIdMapping > | m_cablingKey {this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"} |
|
Gaudi::Property< std::vector< std::string > > | m_dontUseForCorr {this,"DontUseForXtalkCorr",{}, "Types of bad channel should not be taken into accout for xtalk correction of their neighbor"} |
|
LArBadChannelMask | m_dontUseForCorrMask |
|
Gaudi::Property< std::vector< std::string > > | m_dontCorr {this,"NoXtalkCorr",{}, "Types of bad channel should be ignored and not x-talk corrected"} |
|
LArBadChannelMask | m_dontCorrMask |
|
const LArOnlineID * | m_onlineHelper {nullptr} |
|
const LArEM_ID * | m_emId {nullptr} |
|
unsigned int | m_event_counter =0 |
|
const unsigned int | m_MAXphi =64 |
|
int | m_nStrips =-1 |
|
Gaudi::Property< std::vector< std::string > > | m_keylist {this,"KeyList",{},"List of input keys ('HIGH','MEDIUM','LOW')"} |
|
Gaudi::Property< unsigned int > | m_ADCsatur {this,"ADCsaturation",0,"Cutoff value to ignore saturated digits"} |
|
Gaudi::Property< float > | m_acceptableDifference {this,"AcceptableDifference",20, "For sanity check: By how much the corrected value may differ from the original one (in %)"} |
|
SG::ReadCondHandleKey< ILArPedestal > | m_pedKey {this,"PedestalKey","Pedestal","Key of Pedestal object"} |
|
uint16_t | m_fatalFebErrorPattern {0xffff} |
|
const size_t | m_noIdx {9999999} |
|
std::array< std::vector< std::vector< const LArAccumulatedCalibDigit * > >, 2 > | m_stripsLookUp |
|
std::array< std::vector< std::bitset< 128 > >, 2 > | m_knownMissingFebs |
|
bool | m_missingFEBsDone =false |
|
std::set< HWIdentifier > | m_uncorrectedIds |
|
XtalkCorrHisto | m_differences {6,0.3} |
|
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 constexpr auto | m_MAXeta =std::to_array<unsigned>({448,208}) |
|
static constexpr auto | m_MINeta =std::to_array<unsigned>({1,0}) |
|
◆ StoreGateSvc_t
◆ AthAlgorithm()
AthAlgorithm::AthAlgorithm |
Constructor with parameters:
Definition at line 51 of file AthAlgorithm.cxx.
32 std::make_unique<AthenaBaseComps::AthAlgorithmDHUpdate>
34 std::move (m_updateDataHandles));
◆ correctSamples()
void LArStripsCrossTalkCorrector::correctSamples |
( |
std::vector< double > & |
dest, |
|
|
const neighbour_t & |
neighbor |
|
) |
| const |
|
inlineprivate |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LArStripsCrossTalkCorrector::execute |
( |
| ) |
|
|
finaloverridevirtual |
Definition at line 56 of file LArStripsCrossTalkCorrector.cxx.
63 ATH_MSG_ERROR(
"Key list is empty! No containers to process!" );
64 return StatusCode::FAILURE;
69 unsigned nSaturation=0;
72 if (
evtStore()->contains<LArFebErrorSummary>(
"LArFebErrorSummary")) {
75 ATH_MSG_ERROR(
"Failed to retrieve FebErrorSummary object!" );
81 ATH_MSG_WARNING(
"No FebErrorSummaryObject found! Feb errors not checked!" );
86 ATH_MSG_ERROR(
"Do not have cabling object LArOnOffIdMapping");
87 return StatusCode::FAILURE;
103 sc =
evtStore()->retrieve(larAccumulatedCalibDigitContainer,
key);
105 ATH_MSG_WARNING(
"Cannot read LArAccumulatedCalibDigitContainer from StoreGate! key=" <<
key );
116 if(larAccumulatedCalibDigitContainer->
empty()) {
117 ATH_MSG_DEBUG(
"LArAccumulatedCalibDigitContainer with key = " <<
key <<
" is empty " );
121 ATH_MSG_DEBUG(
"Processing LArAccumulatedCalibDigitContainer with key = " <<
key
122 <<
". Size: " << larAccumulatedCalibDigitContainer->
size() );
132 for (
int bec : {0,1}) {
134 for (
unsigned iphi=0;iphi!=
m_MAXphi;++iphi) {
135 for (
unsigned iside=0;iside<2;++iside) {
147 if (!
cabling->isOnlineConnected(chid))
continue;
157 if (febid!=lastFailedFEB) {
160 <<
" reports error(s):" << febErrSum->
error_to_string(febErrs) <<
". Data ignored." );
174 return StatusCode::FAILURE;
182 const std::vector<uint64_t>& samples=dig->sampleSum();
183 const size_t& nS=samples.size();
185 for (
size_t i=0;
i<nS;++
i) {
189 <<
", <ADC> = " << samples[
i]/dig->nTriggers()
190 <<
", DAC = " << dig->DAC()
191 <<
") for channel 0x" << MSG::hex << chid.
get_compact() << MSG::dec
222 neighbour_t neighbours[4]={};
223 neighbours[0].dist=-2;
224 neighbours[1].dist=-1;
225 neighbours[2].dist=1;
226 neighbours[3].dist=2;
228 for (
unsigned bec : {0,1}) {
229 for (
unsigned iside=0; iside<2; iside++) {
231 for (
unsigned iphi=0; iphi<
m_MAXphi; iphi++) {
232 const unsigned iphi2=iphi+
m_MAXphi*iside;
234 if (currDig==
nullptr || currDig==&febErrorDummy)
continue;
241 << iphi2 <<
") should not be touched accoring to jobConfig");
245 const unsigned NtotSamples = currDig->
nsamples();
246 const unsigned NbTriggers = currDig->
nTriggers();
250 for (
unsigned i=0;
i<4;
i++) {
252 neighbours[
i].dig=
nullptr;
253 neighbours[
i].ped=0.;
254 const int neigbEtaItx=neighbours[
i].dist+(
int)ieta;
257 ATH_MSG_DEBUG(
"Neighbour " << neighbours[
i].dist <<
" , ieta=" << neigbEtaItx
259 neighbours[
i].dig=&inexistingDummy;
267 if (
msgLvl(MSG::WARNING)) {
269 ATH_MSG_DEBUG(
"FEB missing for neighbour " << neighbours[
i].dist <<
" to be added to strip 0x"
273 ATH_MSG_WARNING(
"Cannot find neighbour " << neighbours[
i].dist <<
" to be added to strip 0x"
279 if (neighDig==&febErrorDummy) {
281 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
"), has a FEB error. Ignored.");
288 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
", " <<
printMaxSample(neighDig)
289 <<
") is pulsed. Not used for correction." );
296 <<
" (Eta = " << ieta <<
", Phi = " << iphi
297 <<
") is flagged by the LArBadChannelMaskingTool. Not used for correction.");
304 ATH_MSG_ERROR(
"No pedestal are available for neighbour " << neighbours[
i].dist <<
" of strip "
309 neighbours[
i].dig=neighDig;
310 neighbours[
i].ped=pedestal;
313 neighbours[
i].weight=1.0;
315 const int nnEta=ieta+2*neighbours[
i].dist;
318 if (nnDig!=
nullptr) {
322 <<
" has another pulsed cell in the neighborhood. Setting weight to 0.5");
323 neighbours[
i].weight=0.5;
331 std::vector<double> SampleSums(NtotSamples);
332 for (std::size_t SampleIndex=0;SampleIndex<NtotSamples; ++SampleIndex ) {
334 ATH_MSG_VERBOSE(
"SampleSum " << SampleIndex <<
" (" << SampleSums[SampleIndex] <<
" ADC counts / " << NbTriggers <<
" Ntriggers)");
337 for (
unsigned i=0;
i<4;
i++) {
338 if (neighbours[
i].dig==&inexistingDummy) {
340 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
") does not exist.");
345 if (neighbours[
i].dig) {
348 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
") is used for correction");
353 <<
" cannot be used. Taking mirrored neighbour " << neighbours[j].dist <<
" instead." );
354 if (neighbours[j].dig!=
nullptr && neighbours[j].dig!=&inexistingDummy){
357 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
") is used for correction");
361 <<
" cannot be used too. No correction applied" );
367 std::vector<uint64_t> SampleSumInt(NtotSamples);
368 bool unresonable=
false;
370 for (std::size_t SampleIndex=0;SampleIndex<NtotSamples; ++SampleIndex ) {
371 const double& thisSampleSum=SampleSums[SampleIndex];
373 if (thisSampleSum<0) {
376 <<
" (Eta = " << ieta <<
", Phi = " << iphi <<
") Resulting ADC sample " << SampleIndex <<
" negative! "
377 << thisSampleSum <<
" instead of " << oldVal <<
" Not corrected." );
381 if (SampleIndex==iPeak) {
382 const float dev=(thisSampleSum-oldVal)/oldVal;
387 <<
") DAC=" << currDig->
DAC() <<
": Resulting ADC sample " << SampleIndex <<
" looks unreasonable: "
388 << thisSampleSum <<
" instead of " << oldVal <<
" (off by " << dev*100 <<
"%)"
389 <<
" (=" << thisSampleSum/NbTriggers <<
" -> " << oldVal/NbTriggers <<
", ped="
390 << larPedestal->
pedestal(chid,t_gain)
391 <<
" Not Corrected.");
395 SampleSumInt[SampleIndex] = (
uint64_t)(thisSampleSum);
405 << currDig->
sampleSum()[2] <<
"->" << SampleSumInt[2]);
417 ATH_MSG_INFO(
"Found " << nSaturation <<
" saturating digits in this event." );
419 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode LArStripsCrossTalkCorrector::finalize |
( |
| ) |
|
|
finaloverridevirtual |
◆ getEtaIndex()
size_t LArStripsCrossTalkCorrector::getEtaIndex |
( |
const Identifier |
id | ) |
const |
|
inlineprivate |
◆ getPhiIndex()
size_t LArStripsCrossTalkCorrector::getPhiIndex |
( |
const Identifier |
id | ) |
const |
|
inlineprivate |
◆ initialize()
StatusCode LArStripsCrossTalkCorrector::initialize |
( |
| ) |
|
|
finaloverridevirtual |
Definition at line 18 of file LArStripsCrossTalkCorrector.cxx.
23 return StatusCode::FAILURE;
29 return StatusCode::FAILURE;
44 for (
unsigned bec : {0,1}) {
46 for (
unsigned iside=0;iside<2;++iside) {
47 for (
unsigned iphi=0; iphi!=
m_MAXphi; ++iphi) {
52 return StatusCode::SUCCESS;
◆ initKnownMissingFebs()
StatusCode LArStripsCrossTalkCorrector::initKnownMissingFebs |
( |
| ) |
|
|
private |
Definition at line 456 of file LArStripsCrossTalkCorrector.cxx.
459 for (
unsigned bec : {0,1}) {
469 return StatusCode::FAILURE;
474 ATH_MSG_ERROR(
"Do not have cabling object LArOnOffIdMapping");
475 return StatusCode::FAILURE;
479 for (
const auto&
entry : bfCont->fullCont()) {
485 LArBadChannelDBTools::BadFebVec::const_iterator
it=
mf.begin();
486 LArBadChannelDBTools::BadFebVec::const_iterator it_e=
mf.end();
487 for (;
it!=it_e;++
it) {
495 for (
int c=0;
c<nChan;++
c) {
504 return StatusCode::FAILURE;
512 ATH_MSG_INFO(
"Number of known missing strip cells: "<< nMissing );
514 return StatusCode::SUCCESS;
◆ inputHandles()
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.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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.
◆ printMaxSample()
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_acceptableDifference
Gaudi::Property<float> LArStripsCrossTalkCorrector::m_acceptableDifference {this,"AcceptableDifference",20, "For sanity check: By how much the corrected value may differ from the original one (in %)"} |
|
private |
◆ m_ADCsatur
Gaudi::Property<unsigned int> LArStripsCrossTalkCorrector::m_ADCsatur {this,"ADCsaturation",0,"Cutoff value to ignore saturated digits"} |
|
private |
◆ m_BCKey
◆ m_BFKey
◆ m_cablingKey
◆ m_detStore
◆ m_differences
◆ m_dontCorr
Gaudi::Property<std::vector<std::string> > LArStripsCrossTalkCorrector::m_dontCorr {this,"NoXtalkCorr",{}, "Types of bad channel should be ignored and not x-talk corrected"} |
|
private |
◆ m_dontCorrMask
◆ m_dontUseForCorr
Gaudi::Property<std::vector<std::string> > LArStripsCrossTalkCorrector::m_dontUseForCorr {this,"DontUseForXtalkCorr",{}, "Types of bad channel should not be taken into accout for xtalk correction of their neighbor"} |
|
private |
◆ m_dontUseForCorrMask
◆ m_emId
◆ m_event_counter
unsigned int LArStripsCrossTalkCorrector::m_event_counter =0 |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_fatalFebErrorPattern
uint16_t LArStripsCrossTalkCorrector::m_fatalFebErrorPattern {0xffff} |
|
private |
◆ m_keylist
Gaudi::Property<std::vector<std::string> > LArStripsCrossTalkCorrector::m_keylist {this,"KeyList",{},"List of input keys ('HIGH','MEDIUM','LOW')"} |
|
private |
◆ m_knownMissingFebs
std::array<std::vector < std::bitset< 128 > >,2> LArStripsCrossTalkCorrector::m_knownMissingFebs |
|
private |
◆ m_MAXeta
constexpr auto LArStripsCrossTalkCorrector::m_MAXeta =std::to_array<unsigned>({448,208}) |
|
staticconstexprprivate |
◆ m_MAXphi
const unsigned int LArStripsCrossTalkCorrector::m_MAXphi =64 |
|
private |
◆ m_MINeta
constexpr auto LArStripsCrossTalkCorrector::m_MINeta =std::to_array<unsigned>({1,0}) |
|
staticconstexprprivate |
◆ m_missingFEBsDone
bool LArStripsCrossTalkCorrector::m_missingFEBsDone =false |
|
private |
◆ m_noIdx
const size_t LArStripsCrossTalkCorrector::m_noIdx {9999999} |
|
private |
◆ m_nStrips
int LArStripsCrossTalkCorrector::m_nStrips =-1 |
|
private |
◆ m_onlineHelper
◆ m_pedKey
◆ m_stripsLookUp
◆ m_uncorrectedIds
std::set<HWIdentifier> LArStripsCrossTalkCorrector::m_uncorrectedIds |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
virtual float pedestal(const HWIdentifier &id, int gain) const =0
size_t getPhiIndex(const Identifier) const
int phi(const Identifier id) const
return phi according to :
Data class for calibration ADC samples preprocessed by the DSP.
Gaudi::Property< std::vector< std::string > > m_dontUseForCorr
static constexpr auto m_MAXeta
#define maxValue(current, test)
size_t getEtaIndex(const Identifier) const
static std::string printMaxSample(const LArAccumulatedCalibDigit *thisDig)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
LArBadChannelMask m_dontCorrMask
Gaudi::Property< float > m_acceptableDifference
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
size_t nsamples() const
return number of samples
bool deadReadout() const
FEB is not sending readout data, but the L1 trigger path is working.
Gaudi::Property< std::vector< std::string > > m_dontCorr
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
uint16_t m_fatalFebErrorPattern
value_type get_compact() const
Get the compact id.
unsigned int m_event_counter
Gaudi::Property< std::vector< std::string > > m_keylist
bool msgLvl(const MSG::Level lvl) const
int region(const Identifier id) const
return region according to :
const std::vector< uint64_t > & sampleSum() const
return a reference to a stl vector containing the sample-sums
int sampling(const Identifier id) const
return sampling according to :
static std::string error_to_string(uint16_t error)
interpret the error in string
const unsigned int m_MAXphi
#define ATH_MSG_VERBOSE(x)
SG::ReadCondHandleKey< LArBadChannelCont > m_BCKey
CaloGain::CaloGain gain() const
return gain value
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
std::vector< BadFebEntry > BadFebVec
int eta(const Identifier id) const
return eta according to :
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
std::array< std::vector< std::vector< const LArAccumulatedCalibDigit * > >, 2 > m_stripsLookUp
uint16_t feb_error(HWIdentifier febid) const
get error for feb
setScaleOne setStatusOne saturated
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
std::array< std::vector< std::bitset< 128 > >, 2 > m_knownMissingFebs
SG::ReadCondHandleKey< LArBadFebCont > m_BFKey
void print(MsgStream &stream, const LArOnlineID *onlId, MSG::Level lvl=MSG::INFO)
const LArOnlineID * m_onlineHelper
bool isEMECchannel(const HWIdentifier id) const override final
StatusCode initKnownMissingFebs()
virtual StatusCode sysInitialize() override
Override sysInitialize.
std::pair< HWIdentifier, LArBadFeb > BadFebEntry
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
void correctSamples(std::vector< double > &dest, const neighbour_t &neighbor) const
::StatusCode StatusCode
StatusCode definition for legacy code.
std::set< HWIdentifier > m_uncorrectedIds
bool deadAll() const
FEB is completely missing, e.g. powered off.
void add(const LArAccumulatedCalibDigit *dig, const float reldiff)
unsigned nTriggers() const
return the number of triggers
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
static constexpr auto m_MINeta
const HWIdentifier & hardwareID() const
Return HWIdentifier.
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
SG::ReadCondHandleKey< ILArPedestal > m_pedKey
int barrel_ec(const Identifier id) const
return barrel_ec according to :
StatusCode initialize(bool used=true)
bool isEMBchannel(const HWIdentifier id) const
bool deactivatedInOKS() const
Deactivated in OKS.
std::string stringStatus(const LArBadChannel &bc) const
DataObjIDColl m_extendedExtraObjects
LArBadChannelMask m_dontUseForCorrMask
#define ATH_MSG_WARNING(x)
Holds information from the FEB Error Summary.
bool isPulsed() const
Tell if this channel was pulsed.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Container class for LArAccumulatedCalibDigit.
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool empty() const noexcept
Returns true if the collection is empty.
int DAC() const
return the number of samples
XtalkCorrHisto m_differences
Gaudi::Property< unsigned int > m_ADCsatur