ATLAS Offline Software
LArBadFebBitPacking.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
9  m_index( 8*sizeof(BitWord),-1)
10 {
11  // Here, specify each problem and its name
12  addBit( deadAllBit, "deadAll");
13  addBit( deadReadoutBit, "deadReadout");
14  addBit( inErrorBit, "inError");
15  addBit( deactivatedInOKSBit, "deactivatedInOKS");
16  addBit( maskParity, "maskParity");
17  addBit( maskBCID, "maskBCID");
18  addBit( maskSampleHeader, "maskSampleHeader");
19  addBit( maskEVTID, "maskEVTID");
20  addBit( maskScacStatus, "maskScacStatus");
21  addBit( maskScaOutOfRange, "maskScaOutOfRange");
22  addBit( maskGainMismatch, "maskGainMismatch");
23  addBit( maskTypeMismatch, "maskTypeMismatch");
24  addBit( maskNumOfSamples, "maskNumOfSamples");
25  addBit( maskEmptyDataBlock, "maskEmptyDataBlock");
26  addBit( maskDspBlockSize, "maskDspBlockSize");
27  addBit( maskCheckSum, "maskCheckSum");
28  addBit( maskMissingHeader, "maskMissingHeader");
29  addBit( maskBadGain, "maskBadGain");
30 
31  for (unsigned int i=0; i<m_enumVec.size(); i++) {
32  m_index[m_enumVec[i]] = i;
33  }
34 }
35 
36 void LArBadFebBitPacking::addBit( ProblemType pb, const std::string& name)
37 {
38  m_enumVec.push_back(pb);
39  m_nameVec.push_back(name);
40  m_nameMap[name] = pb;
41 }
42 
43 
44  const std::string& LArBadFebBitPacking::stringName( ProblemType pb) const
45  {
46  return m_nameVec.at(index(pb));
47  }
48 
49  std::pair<bool, LArBadFebEnum::ProblemType>
50  LArBadFebBitPacking::enumName( const std::string& str) const
51  {
52  std::map<std::string, ProblemType>::const_iterator i = m_nameMap.find( str);
53  if (i != m_nameMap.end()) { return std::make_pair(true,i->second);}
54  else return std::make_pair(false, (ProblemType) 0);
55  }
56 
57 
59  BitWord mask = 1;
60  mask = mask << bitPosition(pb); // all at 0 except pb bit
61  if (value) word |= mask;
62  else word &= ~mask;
63  }
64 
65  bool LArBadFebBitPacking::setBit( const std::string& name,
66  BitWord& word, bool value) const
67  {
68  std::pair<bool, ProblemType> res = enumName( name);
69  if (res.first) { // name corresponds to enum
70  setBit( res.second, word, value);
71  return true;
72  }
73  else return false; // name not recognized
74  }
75 
77  {
78  setBit( pb, word.packedDataRef(), value);
79  }
80 
81  bool LArBadFebBitPacking::setBit( const std::string& name, LArBadFeb& word, bool value) const
82  {
83  return setBit( name, word.packedDataRef(), value);
84  }
85 
86  std::string LArBadFebBitPacking::stringStatus( const LArBadFeb& bc) const
87  {
88  std::string res;
89  for (unsigned int i=0; i<m_enumVec.size(); ++i) {
90  if ( ! bc.statusOK( m_enumVec.at(i))) {
91  if (!res.empty()) res += " ";
92  res += m_nameVec.at(i);
93  }
94  }
95  return res;
96  }
LArBadFebEnum::maskEmptyDataBlock
@ maskEmptyDataBlock
Definition: LArBadFebEnum.h:29
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
LArBadFebEnum::maskScacStatus
@ maskScacStatus
Definition: LArBadFebEnum.h:24
LArBadFebBitPacking::m_index
std::vector< int > m_index
Definition: LArBadFebBitPacking.h:43
LArBadFebEnum::maskDspBlockSize
@ maskDspBlockSize
Definition: LArBadFebEnum.h:30
LArBadFebBitPacking::m_nameVec
std::vector< std::string > m_nameVec
Definition: LArBadFebBitPacking.h:46
LArBadFebBitPacking::bitPosition
PosType bitPosition(ProblemType pb) const
Definition: LArBadFebBitPacking.h:27
LArBadFebBitPacking::addBit
void addBit(ProblemType pb, const std::string &name)
Definition: LArBadFebBitPacking.cxx:36
LArBadFebBitPacking::m_enumVec
std::vector< ProblemType > m_enumVec
Definition: LArBadFebBitPacking.h:45
athena.value
value
Definition: athena.py:122
LArBadFeb::packedDataRef
BitWord & packedDataRef()
Definition: LArBadFeb.h:58
LArBadFebEnum::maskGainMismatch
@ maskGainMismatch
Definition: LArBadFebEnum.h:26
LArBadFebEnum::maskParity
@ maskParity
Definition: LArBadFebEnum.h:20
LArBadFebEnum::BitWord
unsigned int BitWord
Definition: LArBadFebEnum.h:13
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
LArBadFebEnum::deadAllBit
@ deadAllBit
Definition: LArBadFebEnum.h:16
LArBadFebEnum::maskTypeMismatch
@ maskTypeMismatch
Definition: LArBadFebEnum.h:27
LArBadFebEnum::maskMissingHeader
@ maskMissingHeader
Definition: LArBadFebEnum.h:32
LArBadFebEnum::inErrorBit
@ inErrorBit
Definition: LArBadFebEnum.h:18
LArBadFebEnum::maskCheckSum
@ maskCheckSum
Definition: LArBadFebEnum.h:31
LArBadFeb.h
LArBadFebEnum::deadReadoutBit
@ deadReadoutBit
Definition: LArBadFebEnum.h:17
lumiFormat.i
int i
Definition: lumiFormat.py:92
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
LArBadFebBitPacking::stringName
const std::string & stringName(ProblemType pb) const
Definition: LArBadFebBitPacking.cxx:44
LArBadFebBitPacking::setBit
void setBit(ProblemType pb, BitWord &word, bool value=true) const
Definition: LArBadFebBitPacking.cxx:58
LArBadFebBitPacking::LArBadFebBitPacking
LArBadFebBitPacking()
Definition: LArBadFebBitPacking.cxx:8
LArBadFebBitPacking::enumName
std::pair< bool, ProblemType > enumName(const std::string &str) const
Definition: LArBadFebBitPacking.cxx:50
LArBadFebEnum::maskSampleHeader
@ maskSampleHeader
Definition: LArBadFebEnum.h:22
LArBadFebEnum::maskNumOfSamples
@ maskNumOfSamples
Definition: LArBadFebEnum.h:28
LArBadFebBitPacking::m_nameMap
std::map< std::string, ProblemType > m_nameMap
Definition: LArBadFebBitPacking.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArBadFebEnum::deactivatedInOKSBit
@ deactivatedInOKSBit
Definition: LArBadFebEnum.h:19
LArBadFeb
Definition: LArBadFeb.h:10
LArBadFebEnum::maskEVTID
@ maskEVTID
Definition: LArBadFebEnum.h:23
LArBadFebEnum::ProblemType
ProblemType
Definition: LArBadFebEnum.h:15
LArBadFebBitPacking::stringStatus
std::string stringStatus(const LArBadFeb &bc) const
Definition: LArBadFebBitPacking.cxx:86
LArBadFebEnum::maskScaOutOfRange
@ maskScaOutOfRange
Definition: LArBadFebEnum.h:25
LArBadFeb::statusOK
bool statusOK(ProblemType pb) const
Returns true if there is no problem in corresponding status bit.
Definition: LArBadFeb.h:24
str
Definition: BTagTrackIpAccessor.cxx:11
LArBadFebBitPacking.h
LArBadFebBitPacking::index
int index(ProblemType pb) const
Definition: LArBadFebBitPacking.h:50
LArBadFebEnum::maskBadGain
@ maskBadGain
Definition: LArBadFebEnum.h:33
LArBadFebEnum::maskBCID
@ maskBCID
Definition: LArBadFebEnum.h:21