ATLAS Offline Software
LArBadChannel.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LArBadChannel_H
6 #define LArBadChannel_H
7 
8 template <class T> class TLArBadChanBitPackingBase;
9 
11  public:
12  typedef unsigned int PosType;
13  typedef unsigned int BitWord;
14 
15 
17  public:
18 
19  enum ProblemType {
24  shortBit = 4,
45  };
46 
47  };
48 
50  public:
51 
52  enum ProblemType {
64  ADCJumpBit = 11,
74  };
75 
76  };
77 
78 
79  explicit LArBadChannel( BitWord rawStatus=0, bool isSC=false) : m_word(rawStatus), m_isSC(isSC) {}
80 
82  bool statusBad(PosType pb) const {
83  BitWord mask = 1u << pb;
84  return ((m_word & mask) != 0);
85  }
86 
88  bool statusOK( PosType pb) const {return !statusBad(pb);}
89 
91  bool good() const {return m_word == 0;}
92 
93 
94  //Cases used only for supercells
95  bool maskedOSUM() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::maskedOSUMBit); else return false;}
96  bool deformedTail() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::DeformedTailBit); else return false;}
97  bool deformedPulse() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::DeformedPulseBit); else return false;}
98  bool nonLinearRamp() const{ if (m_isSC) return statusBad( LArBadChannelSCEnum::NonLinearRampBit); else return false;}
99  bool ADCJump() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::ADCJumpBit); else return false;}
100  bool SCAProblem() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::SCAProblemBit); else return false;}
101  bool offOFCs() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::OffOFCsBit); else return false;}
102  bool offAmplitude() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::OffAmplitudeBit); else return false;}
103  bool offScale() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::OffScaleBit); else return false;}
104  bool lowLightFibre() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::lowLightFibreBit); else return false;}
106  bool pedestalJump() const {if (m_isSC) return statusBad( LArBadChannelSCEnum::pedestalJumpBit); else return false;}
107 
108 
109  //Common cases (regular and supercell)
113  bool almostDead() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::almostDeadBit);}
114  bool shortProblem() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::shortBit);}
115  bool unstable() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::unstableBit);}
116  bool distorted() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::distortedBit);}
117  bool lowNoiseHG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::lowNoiseHGBit);}
118  bool highNoiseHG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::highNoiseHGBit);}
119  bool unstableNoiseHG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::unstableNoiseHGBit);}
120  bool lowNoiseMG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::lowNoiseMGBit);}
121  bool highNoiseMG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::highNoiseMGBit);}
122  bool unstableNoiseMG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::unstableNoiseMGBit);}
123  bool lowNoiseLG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::lowNoiseLGBit);}
124  bool highNoiseLG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::highNoiseLGBit);}
125  bool unstableNoiseLG() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::unstableNoiseLGBit);}
126  bool missingFEB() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::missingFEBBit);}
130  bool deadSCACell() const {if(m_isSC) return false; else return statusBad( LArBadChannelEnum::deadSCACellBit);}
131  bool badFirstSample() const {if(m_isSC) return false; else return statusBad( LArBadChannelEnum::badFirstSampleBit);}
134  bool badAutoCorr() const { if(m_isSC) return false; else return statusBad( LArBadChannelEnum::badAutoCorrBit);}
135 
136  bool reallyNoisy() const {return (highNoiseHG() || highNoiseMG() || highNoiseLG() ||
138  bool noisy() const {return (reallyNoisy() || lowNoiseHG() || lowNoiseMG() || lowNoiseLG());}
139 
140  bool operator!=(BitWord other) {return m_word != other;}
141  bool operator!=(LArBadChannel other) {return m_word != other.packedData();}
142  bool operator==(BitWord other) {return m_word == other;}
143  bool operator==(LArBadChannel other) {return m_word == other.packedData();}
144 
146 
147  BitWord packedData() const {return m_word;}
148 
149  bool isSC() const {return m_isSC;}
150  void setSC() {m_isSC=true;}
151 
152  private:
153 
154 
157  bool m_isSC;
158 
160  friend class TLArBadChanBitPackingBase<LArBadChannel::LArBadChannelEnum>;
161 };
162 
163 
164 #endif
LArBadChannel::LArBadChannelSCEnum::lowNoiseBit
@ lowNoiseBit
Definition: LArBadChannel.h:57
LArBadChannel::packedDataRef
BitWord & packedDataRef()
Definition: LArBadChannel.h:156
LArBadChannel::LArBadChannelSCEnum::DeformedTailBit
@ DeformedTailBit
Definition: LArBadChannel.h:61
LArBadChannel::shortProblem
bool shortProblem() const
Definition: LArBadChannel.h:114
LArBadChannel::deadReadout
bool deadReadout() const
Definition: LArBadChannel.h:110
LArBadChannel::lowNoiseHG
bool lowNoiseHG() const
Definition: LArBadChannel.h:117
LArBadChannel::LArBadChannelEnum::problematicForUnknownReasonBit
@ problematicForUnknownReasonBit
Definition: LArBadChannel.h:38
LArBadChannel::good
bool good() const
Returns true if no problems at all (all bits at zero)
Definition: LArBadChannel.h:91
LArBadChannel::LArBadChannelEnum::badFirstSampleBit
@ badFirstSampleBit
Definition: LArBadChannel.h:41
LArBadChannel::unflaggedByLADIeS
bool unflaggedByLADIeS() const
Definition: LArBadChannel.h:132
LArBadChannel::deadCalib
bool deadCalib() const
Definition: LArBadChannel.h:111
LArBadChannel::LArBadChannelSCEnum::OffAmplitudeBit
@ OffAmplitudeBit
Definition: LArBadChannel.h:67
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
LArBadChannel::operator!=
bool operator!=(BitWord other)
Definition: LArBadChannel.h:140
LArBadChannel::LArBadChannelEnum::deadReadoutBit
@ deadReadoutBit
Definition: LArBadChannel.h:20
LArBadChannel::unstableNoiseLG
bool unstableNoiseLG() const
Definition: LArBadChannel.h:125
LArBadChannel::LArBadChannelSCEnum::deadPhysBit
@ deadPhysBit
Definition: LArBadChannel.h:56
LArBadChannel::lowNoiseLG
bool lowNoiseLG() const
Definition: LArBadChannel.h:123
LArBadChannel::LArBadChannelSCEnum::sporadicBurstNoiseBit
@ sporadicBurstNoiseBit
Definition: LArBadChannel.h:60
LArBadChannel::offScale
bool offScale() const
Definition: LArBadChannel.h:103
LArBadChannel::LArBadChannelSCEnum::reflaggedByLADIeSBit
@ reflaggedByLADIeSBit
Definition: LArBadChannel.h:73
LArBadChannel::sporadicBurstNoise
bool sporadicBurstNoise() const
Definition: LArBadChannel.h:129
TLArBadChanBitPackingBase
Definition: LArBadChanBitPackingBase.h:14
LArBadChannel::LArBadChannelSCEnum
Definition: LArBadChannel.h:49
LArBadChannel::LArBadChannelEnum::lowNoiseLGBit
@ lowNoiseLGBit
Definition: LArBadChannel.h:33
LArBadChannel::LArBadChannelSCEnum::SCAProblemBit
@ SCAProblemBit
Definition: LArBadChannel.h:65
LArBadChannel::PosType
unsigned int PosType
Definition: LArBadChannel.h:12
LArBadChannel::LArBadChannelEnum::lowNoiseHGBit
@ lowNoiseHGBit
Definition: LArBadChannel.h:27
LArBadChannel::LArBadChannelSCEnum::maskedOSUMBit
@ maskedOSUMBit
Definition: LArBadChannel.h:53
LArBadChannel::m_isSC
bool m_isSC
Definition: LArBadChannel.h:157
LArBadChannel::LArBadChannelEnum::deadCalibBit
@ deadCalibBit
Definition: LArBadChannel.h:21
LArBadChannel::almostDead
bool almostDead() const
Definition: LArBadChannel.h:113
LArBadChannel::LArBadChannelSCEnum::DeformedPulseBit
@ DeformedPulseBit
Definition: LArBadChannel.h:62
LArBadChannel::highNoiseHG
bool highNoiseHG() const
Definition: LArBadChannel.h:118
LArBadChannel::badAutoCorr
bool badAutoCorr() const
Definition: LArBadChannel.h:134
LArBadChannel::LArBadChannelEnum::unstableNoiseMGBit
@ unstableNoiseMGBit
Definition: LArBadChannel.h:32
LArBadChannel::LArBadChannelEnum::missingFEBBit
@ missingFEBBit
Definition: LArBadChannel.h:36
LArBadChannel::badFirstSample
bool badFirstSample() const
Definition: LArBadChannel.h:131
LArBadChannel::operator==
bool operator==(BitWord other)
Definition: LArBadChannel.h:142
LArBadChannel::LArBadChannelSCEnum::ADCJumpBit
@ ADCJumpBit
Definition: LArBadChannel.h:64
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:459
LArBadChannel::SCAProblem
bool SCAProblem() const
Definition: LArBadChannel.h:100
LArBadChannel::LArBadChannelSCEnum::unflaggedByLADIeSBit
@ unflaggedByLADIeSBit
Definition: LArBadChannel.h:72
LArBadChannel::LArBadChannelEnum::unstableBit
@ unstableBit
Definition: LArBadChannel.h:25
LArBadChannel::unstableNoiseHG
bool unstableNoiseHG() const
Definition: LArBadChannel.h:119
LArBadChannel::deadSCACell
bool deadSCACell() const
Definition: LArBadChannel.h:130
LArBadChannel::deformedTail
bool deformedTail() const
Definition: LArBadChannel.h:96
LArBadChannel::statusOK
bool statusOK(PosType pb) const
Returns true if there is no problem in corresponding status bit.
Definition: LArBadChannel.h:88
LArBadChannel::LArBadChannelSCEnum::highNoiseBit
@ highNoiseBit
Definition: LArBadChannel.h:58
LArBadChannel::statusBad
bool statusBad(PosType pb) const
Returns true if corresponding status bit its set
Definition: LArBadChannel.h:82
LArBadChannel::LArBadChannelSCEnum::deadCalibBit
@ deadCalibBit
Definition: LArBadChannel.h:55
LArBadChannel::BitWord
unsigned int BitWord
Definition: LArBadChannel.h:13
LArBadChannel::LArBadChannelSCEnum::problematicForUnknownReasonBit
@ problematicForUnknownReasonBit
Definition: LArBadChannel.h:59
LArBadChannel::LArBadChannelEnum::almostDeadBit
@ almostDeadBit
Definition: LArBadChannel.h:23
LArBadChannel::operator|=
LArBadChannel & operator|=(LArBadChannel other)
Definition: LArBadChannel.h:145
LArBadChannel::LArBadChannelEnum::unstableNoiseHGBit
@ unstableNoiseHGBit
Definition: LArBadChannel.h:29
LArBadChannel::problematicForUnknownReason
bool problematicForUnknownReason() const
Definition: LArBadChannel.h:128
LArBadChannel::unstableNoiseMG
bool unstableNoiseMG() const
Definition: LArBadChannel.h:122
LArBadChannel::noisy
bool noisy() const
Definition: LArBadChannel.h:138
LArBadChannel::LArBadChannelSCEnum::NonLinearRampBit
@ NonLinearRampBit
Definition: LArBadChannel.h:63
LArBadChannel
Definition: LArBadChannel.h:10
LArBadChannel::operator==
bool operator==(LArBadChannel other)
Definition: LArBadChannel.h:143
LArBadChannel::missingFEB
bool missingFEB() const
Definition: LArBadChannel.h:126
LArBadChannel::LArBadChannelSCEnum::OffOFCsBit
@ OffOFCsBit
Definition: LArBadChannel.h:66
LArBadChannel::offOFCs
bool offOFCs() const
Definition: LArBadChannel.h:101
LArBadChannel::LArBadChannelEnum::highNoiseMGBit
@ highNoiseMGBit
Definition: LArBadChannel.h:31
LArBadChannel::m_word
BitWord m_word
Definition: LArBadChannel.h:155
LArBadChannel::LArBadChannelEnum::sporadicBurstNoiseBit
@ sporadicBurstNoiseBit
Definition: LArBadChannel.h:39
LArBadChannel::LArBadChannelEnum::unstableNoiseLGBit
@ unstableNoiseLGBit
Definition: LArBadChannel.h:35
LArBadChannel::LArBadChannelSCEnum::pedestalJumpBit
@ pedestalJumpBit
Definition: LArBadChannel.h:71
LArBadChannel::reallyNoisy
bool reallyNoisy() const
Definition: LArBadChannel.h:136
LArBadChannel::lowNoiseMG
bool lowNoiseMG() const
Definition: LArBadChannel.h:120
LArBadChannel::peculiarCalibrationLine
bool peculiarCalibrationLine() const
Definition: LArBadChannel.h:127
LArBadChannel::packedData
BitWord packedData() const
Definition: LArBadChannel.h:147
LArBadChannel::LArBadChannelSCEnum::lowLightFibreBit
@ lowLightFibreBit
Definition: LArBadChannel.h:69
LArBadChannel::highNoiseLG
bool highNoiseLG() const
Definition: LArBadChannel.h:124
LArBadChannel::reflaggedByLADIeS
bool reflaggedByLADIeS() const
Definition: LArBadChannel.h:133
LArBadChannel::LArBadChannelEnum::reflaggedByLADIeSBit
@ reflaggedByLADIeSBit
Definition: LArBadChannel.h:43
LArBadChannel::lowLightFibre
bool lowLightFibre() const
Definition: LArBadChannel.h:104
LArBadChannel::setSC
void setSC()
Definition: LArBadChannel.h:150
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
LArBadChannel::offAmplitude
bool offAmplitude() const
Definition: LArBadChannel.h:102
LArBadChannel::unstable
bool unstable() const
Definition: LArBadChannel.h:115
LArBadChannel::LArBadChannelSCEnum::transmissionErrorFibreBit
@ transmissionErrorFibreBit
Definition: LArBadChannel.h:70
LArBadChannel::LArBadChannelEnum::shortBit
@ shortBit
Definition: LArBadChannel.h:24
LArBadChannel::LArBadChannelEnum::distortedBit
@ distortedBit
Definition: LArBadChannel.h:26
LArBadChannel::LArBadChannelEnum
Definition: LArBadChannel.h:16
LArBadChannel::distorted
bool distorted() const
Definition: LArBadChannel.h:116
LArBadChannel::LArBadChannelEnum::lowNoiseMGBit
@ lowNoiseMGBit
Definition: LArBadChannel.h:30
LArBadChannel::deadPhys
bool deadPhys() const
Definition: LArBadChannel.h:112
LArBadChannel::highNoiseMG
bool highNoiseMG() const
Definition: LArBadChannel.h:121
LArBadChannel::LArBadChannelEnum::deadSCACellBit
@ deadSCACellBit
Definition: LArBadChannel.h:40
LArBadChannel::maskedOSUM
bool maskedOSUM() const
Definition: LArBadChannel.h:95
LArBadChannel::transmissionErrorFibre
bool transmissionErrorFibre() const
Definition: LArBadChannel.h:105
LArBadChannel::operator!=
bool operator!=(LArBadChannel other)
Definition: LArBadChannel.h:141
LArBadChannel::LArBadChannel
LArBadChannel(BitWord rawStatus=0, bool isSC=false)
Definition: LArBadChannel.h:79
LArBadChannel::LArBadChannelEnum::unflaggedByLADIeSBit
@ unflaggedByLADIeSBit
Definition: LArBadChannel.h:42
LArBadChannel::pedestalJump
bool pedestalJump() const
Definition: LArBadChannel.h:106
LArBadChannel::LArBadChannelEnum::highNoiseHGBit
@ highNoiseHGBit
Definition: LArBadChannel.h:28
LArBadChannel::LArBadChannelEnum::highNoiseLGBit
@ highNoiseLGBit
Definition: LArBadChannel.h:34
LArBadChannel::isSC
bool isSC() const
Definition: LArBadChannel.h:149
LArBadChannel::LArBadChannelEnum::peculiarCalibrationLineBit
@ peculiarCalibrationLineBit
Definition: LArBadChannel.h:37
LArBadChannel::LArBadChannelEnum::ProblemType
ProblemType
Definition: LArBadChannel.h:19
LArBadChannel::LArBadChannelSCEnum::deadReadoutBit
@ deadReadoutBit
Definition: LArBadChannel.h:54
LArBadChannel::ADCJump
bool ADCJump() const
Definition: LArBadChannel.h:99
LArBadChannel::LArBadChannelEnum::badAutoCorrBit
@ badAutoCorrBit
Definition: LArBadChannel.h:44
LArBadChannel::nonLinearRamp
bool nonLinearRamp() const
Definition: LArBadChannel.h:98
LArBadChannel::LArBadChannelEnum::deadPhysBit
@ deadPhysBit
Definition: LArBadChannel.h:22
LArBadChannel::deformedPulse
bool deformedPulse() const
Definition: LArBadChannel.h:97
LArBadChannel::LArBadChannelSCEnum::OffScaleBit
@ OffScaleBit
Definition: LArBadChannel.h:68