ATLAS Offline Software
TileDQstatusTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 /*
5  */
14 #include "TileDQstatusTool.h"
15 #include "TileEvent/TileDQstatus.h"
23 #include <CLHEP/Random/RandomEngine.h>
24 #include <CLHEP/Random/RandFlat.h>
25 #include "GaudiKernel/EventContext.h"
27 
35  const std::string& name,
36  const IInterface* parent)
37  : base_class (type, name, parent)
38 {
39 }
40 
41 
46 {
47  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
48 
50 
51  if (m_simulateTrips) {
52  ATH_CHECK( m_athRNGSvc.retrieve() );
53  }
54 
55  return StatusCode::SUCCESS;
56 }
57 
58 
68 TileDQstatusTool::makeStatus (const EventContext& ctx,
71  const TileBeamElemContainer* tileBeamElemContainer,
72  TileDQstatus& dqstatus) const
73 {
74  dqstatus.setAllGood();
75  dqstatus.setRODBCID (ctx.eventID().bunch_crossing_id());
76 
78  ATH_CHECK( badChannels.isValid() );
79 
80  ATH_CHECK( doBeamElem (tileBeamElemContainer, dqstatus) );
81 
82  if (rawChannelContainer != nullptr) {
83  if (tileDigitsContainer != nullptr) {
84  bool isCalib = false;
85  bool incomplete = false;
86  for (const TileDigitsCollection* coll : *tileDigitsContainer) {
87  incomplete |= (coll->size() < 48);
88 
89  if (coll->size() > 0) {
90  int dsize = (*(coll->begin()))->NtimeSamples();
91  if (4 < dsize && dsize < 15) { // don't use strange fragments
92  isCalib |= coll->isCalibMode();
93  }
94  }
95 
96  int frag = coll->identify();
97  int partition = (frag >> 8);
98  int drawer = (frag & 0x3F);
99 
100  std::vector < uint32_t > data = coll->getFragChipHeaderWords();
101  unsigned int dataSize = std::min(16u, (unsigned int) data.size());
102  for (unsigned int dmu = 0; dmu < dataSize; ++dmu) {
103  if (data[dmu] == 0xFFFFFFFF)
104  dqstatus.setEmptyEvent(partition, drawer, dmu, 0, 1);
105  }
106 
107  data = coll->getFragChipHeaderWordsHigh();
108  dataSize = std::min(16u, (unsigned int) data.size());
109  for (unsigned int dmu = 0; dmu < dataSize; ++dmu) {
110  if (data[dmu] == 0xFFFFFFFF)
111  dqstatus.setEmptyEvent(partition, drawer, dmu, 1, 1);
112  }
113  }
114  dqstatus.setIncompleteDigits (incomplete);
115  dqstatus.setCalibMode (isCalib);
116  dqstatus.setBiGain (isCalib);
117  }
118 
119  TileFragHash::TYPE RChType = rawChannelContainer->get_type();
120  if (RChType != TileFragHash::OptFilterDsp
122  {
123  ATH_MSG_DEBUG("RawChannelContainer didn't come from BS - don't check DQ flags");
124  ATH_MSG_DEBUG("RChType = " << RChType);
125  } else {
126  for (const TileRawChannelCollection *coll : *rawChannelContainer) {
127 
128  int frag = coll->identify();
129  ATH_MSG_VERBOSE("RCh collection 0x" << MSG::hex << frag << MSG::dec
130  << " size=" << coll->size());
131 
132  unsigned short existingDMUs = 0xFFFF;
133  if (frag > 0x2ff) { // do not count non-existing DMUs in EB
134  // do not count non-existing DMUs in EBA15 or EBC18
135  existingDMUs = (frag == 0x30E || frag == 0x411) ? 0x3CFE : 0x3CFF;
136  }
137 
138  unsigned short wrongBCID(0);
139  unsigned short fragBCID = coll->getFragBCID();
140  if (fragBCID & existingDMUs) {
141 
142  int drawer = (frag & 0x3F); // range 0-63
143  int ros = frag >> 8; // range 1-4
144 
145  for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
147  if (badChannels->getChannelStatus(channel_id).isWrongBCID()) {
148  int dmu = channel / 3;
149  if (dmu == 1) {
150  // If BCID in 2nd DMU is wrong then there is no sence
151  // to check BCID in other DMUs because they are compared with this one.
152  // So it is assumed that BCID in all DMU are wrong.
153  wrongBCID = 0xFFFF & existingDMUs;
154  break;
155  }
156 
157  wrongBCID |= (1U << dmu);
158  }
159  }
160 
161  fragBCID &= ~wrongBCID;
162  }
163 
164  dqstatus.fillArrays(coll, tileDigitsContainer, 0, fragBCID);
165  dqstatus.fillArrays(coll, tileDigitsContainer, 1, fragBCID);
166  }
167  if (dqstatus.nonZeroCounter() == 0) {
168  ATH_MSG_DEBUG("all DQ elements are empty - don't check DQ flags");
169  dqstatus.setAllGood();
170  } else {
171  ATH_MSG_DEBUG("BiGain mode: " << ((dqstatus.isBiGain()) ? "true" : "false"));
172  }
173  }
174  } else if (tileDigitsContainer != nullptr) {
175  bool isCalib = false;
176  bool incomplete = false;
177  for (const TileDigitsCollection* coll : *tileDigitsContainer) {
178  incomplete |= (coll->size() < 48);
179 
180  if (coll->size() > 0) {
181  int dsize = (*(coll->begin()))->NtimeSamples();
182  if (4 < dsize && dsize < 15) { // don't use strange fragments
183  isCalib |= coll->isCalibMode();
184  }
185  }
186  }
187  dqstatus.setIncompleteDigits (incomplete);
188  dqstatus.setCalibMode (isCalib);
189  dqstatus.setBiGain (isCalib);
190  }
191 
192  if (m_simulateTrips) {
193  ATHRNG::RNGWrapper* wrapper = m_athRNGSvc->getEngine (this, this->name());
194  wrapper->setSeed (this->name(), ctx);
195  CLHEP::HepRandomEngine* engine = wrapper->getEngine (ctx);
196  double rndmVec[TileCalibUtils::MAX_DRAWER];
197  const std::vector<float> defaultTripsProbs(TileCalibUtils::MAX_DRAWER, 0.0F);
198  const std::vector<std::vector<float>>& tripsProbs = badChannels->getTripsProbabilities();
199  for (unsigned int partition = 1; partition < TileCalibUtils::MAX_ROS; ++partition) {
200  CLHEP::RandFlat::shootArray (engine, TileCalibUtils::MAX_DRAWER, rndmVec);
201  const std::vector<float>& trips = tripsProbs.size() ? tripsProbs.at(partition - 1) : defaultTripsProbs;
202  dqstatus.fillTrips(partition, trips, rndmVec, this->msg());
203  }
204  }
205 
206  dqstatus.setFilled (true);
207  return StatusCode::SUCCESS;
208 }
209 
210 
218  TileDQstatus& dqstatus) const
219 {
220  if (!tileBeamElemContainer) {
221  return StatusCode::SUCCESS;
222  }
223 
224  uint32_t* cispar = dqstatus.cispar();
225 
226  for (const TileBeamElemCollection* coll : *tileBeamElemContainer) {
227  int frag = coll->identify();
228 
229  if (dqstatus.trigType() == 0 && coll->getLvl1Type() != 0) {
230  // take it from the ROD header
231  // make negative to distinguish from TileCal internal trig types
232  dqstatus.setTrigType (- coll->getLvl1Type());
233  }
234 
235  switch (frag) {
236 
237  case LASE_PTN_FRAG: {
238 
239  TileBeamElemCollection::const_iterator beamItr = coll->begin();
240  TileBeamElemCollection::const_iterator lastBeam = coll->end();
241 
242  if (beamItr != lastBeam) {
243  std::vector < uint32_t > digits = (*beamItr)->get_digits();
244 
245  if (digits.size() > 0) {
246  uint32_t laserFlag = digits[0];
247  if (laserFlag & 0xFF00)
248  dqstatus.setTrigType (laserFlag >> 8);
249  }
250  }
251  }
252  break;
253 
254  case DIGI_PAR_FRAG: {
255  dqstatus.setRODBCID (coll->getRODBCID());
256 
257  for (const TileBeamElem* elem : *coll) {
258  HWIdentifier id = elem->adc_HWID();
259  std::vector < uint32_t > digits = elem->get_digits();
260  int cha = m_tileHWID->channel(id);
261 
262  if (cha < 15) {
263  if (digits.size() > 0) {
264  cispar[cha] = digits[0];
265  ATH_MSG_VERBOSE("cispar [" << cha << "] = " << cispar[cha]);
266  }
267  }
268  else if (cha == 15) {
269  int siz = 15 + digits.size();
270  if (siz > 110)
271  siz = 110;
272  for (int i = 15; i < siz; ++i) {
273  cispar[i] = digits[i - 15];
274  ATH_MSG_VERBOSE("cispar [" << i << "] = " << cispar[i]);
275  }
276  switch (cispar[16]) {
277 
278  case 0x02: {
279  int aux_ext = cispar[17];
280  cispar[17] = (aux_ext & 0x00ff); // dac
281  cispar[18] = (aux_ext >> 8) & 0x00ff; // 00
282  cispar[19] = (aux_ext >> 16) & 0x00ff; // 00
283  cispar[20] = (aux_ext >> 24) & 0x00ff; // small/large cap
284  }
285  break;
286 
287  case 0x07: {
288  bool badpar = ((cispar[16] == cispar[17]) || (cispar[17] == cispar[18]));
289  int aux_ext = cispar[18];
290  cispar[18] = (aux_ext & 0x00ff) - 1; // pmt ext cispar starts from 1
291  cispar[19] = (aux_ext >> 8) & 0x00ff; // tower
292  cispar[20] = (aux_ext >> 16) & 0x00ff; // drawer
293 
294  if (badpar || (aux_ext>>24)!=0 || cispar[18]>5 || cispar[19]>15 || cispar[20]>63) {
295  ATH_MSG_WARNING("bad cispar[16,17,18]: " << cispar[16] << " " << cispar[17] << " " << aux_ext
296  << " drawer,tower,pmt: " << cispar[20] << " " << cispar[19] << " " << (int)cispar[18]);
297  cispar[16] += 0x100; // flag bad events
298  cispar[18] = 5;
299  cispar[19] = 0xff;
300  cispar[20] = 0xff;
301  }
302 
303  if (cispar[16] != cispar[17]) {
304  // Warning: nonportable.
305  union {
306  unsigned int i;
307  float f;
308  } chargeCnv;
309  chargeCnv.i = cispar[17];
310  cispar[17] = chargeCnv.f;
311  }
312  }
313  break;
314  }
315  }
316  }
317  }
318  break;
319 
320  case LASER_OBJ_FRAG: {
321 
322  dqstatus.setRODBCID (coll->getRODBCID());
323 
324  // laspar isn't actually used by anything.
325  // Leave commented out for now.
326 #if 0
327  TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin();
328  TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end();
329 
330  if (beamItr != lastBeam) { // one channel is expected, check that it's really there
331 
332  std::vector < uint32_t > digits = (*beamItr)->get_digits();
333  int cha = std::min(32, (int) digits.size());
334 
335  while (--cha >= 0) {
336  m_laspar[cha] = digits[cha];
337  ATH_MSG_VERBOSE("laspar [" << cha << "] = " << m_laspar[cha]);
338  }
339  }
340 #endif
341  }
342  break;
343 
344  case COIN_TRIG1_FRAG:
345  case COIN_TRIG2_FRAG:
346  case COIN_TRIG3_FRAG:
347  case COIN_TRIG4_FRAG:
348  case COIN_TRIG5_FRAG:
349  case COIN_TRIG6_FRAG:
350  case COIN_TRIG7_FRAG:
351  case COIN_TRIG8_FRAG: {
352  // coincTrig is not actually used by anything now.
353  // Leave commented out.
354 #if 0
355  unsigned int board = frag - COIN_TRIG1_FRAG;
356  // make sure that we have enough space
357  if (board >= m_coincTrig.size()) {
358  m_coincTrig.resize(board + 1);
359  }
360 
361  TileBeamElemCollection::const_iterator beamItr = (*collItr)->begin();
362  TileBeamElemCollection::const_iterator lastBeam = (*collItr)->end();
363 
364  // loop over 4 integer words for one board
365  for (; beamItr != lastBeam; ++beamItr) {
366 
367  HWIdentifier id = (*beamItr)->adc_HWID();
368  std::vector < uint32_t > digits = (*beamItr)->get_digits();
369  uint32_t amplitude = (digits.size() > 0) ? digits[0] : 0;
370  int cha = m_tileHWID->channel(id);
371 
372  if (cha < 3) {
373  int idx = cha * 32;
374  for (int ibit = 0; ibit < 32; ++ibit) {
375  m_coincTrig[board].trig[idx++] = (amplitude >> ibit) & 1;
376  }
377  } else if (cha == 3) {
378  m_coincTrig[board].amp = amplitude;
379  }
380  }
381 #endif
382  }
383  break;
384 
385  default:
386  break;
387  }
388  }
389 
390  return StatusCode::SUCCESS;
391 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileRawChannelContainer
Definition: TileRawChannelContainer.h:13
COIN_TRIG7_FRAG
#define COIN_TRIG7_FRAG
Definition: TileTBFrag.h:38
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
TileDQstatus::setTrigType
void setTrigType(int trigType)
Definition: TileDQstatus.cxx:327
TileDQstatus::fillArrays
void fillArrays(const TileRawChannelCollection *coll, const TileDigitsContainer *digitsCnt, int gain, unsigned short fragBCID)
parses DQ fragments and fill error arrays for event
Definition: TileDQstatus.cxx:72
TileDQstatusTool::initialize
virtual StatusCode initialize() override
Gaudi initialize method.
Definition: TileDQstatusTool.cxx:45
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TileBadChannels::getTripsProbabilities
const std::vector< std::vector< float > > & getTripsProbabilities(void) const
Return trips probabilities for all Tile drawers.
Definition: TileBadChannels.h:64
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
TileBeamElemCollection
Definition: TileBeamElemCollection.h:12
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileDQstatus::setBiGain
void setBiGain(bool biGain)
sets flag of gain mode of run
Definition: TileDQstatus.h:167
TileFragHash::TYPE
TYPE
initialize
Definition: TileFragHash.h:33
TileDQstatus::setFilled
void setFilled(bool filled)
sets flag that DQ status instance has been filled for this event
Definition: TileDQstatus.h:165
TileDQstatus::isBiGain
bool isBiGain() const
returns gain mode of run
Definition: TileDQstatus.h:60
TileDQstatusTool::doBeamElem
StatusCode doBeamElem(const TileBeamElemContainer *tileBeamElemContainer, TileDQstatus &dqstatus) const
Process BeamElemContainer.
Definition: TileDQstatusTool.cxx:217
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:205
DIGI_PAR_FRAG
#define DIGI_PAR_FRAG
Definition: TileTBFrag.h:41
COIN_TRIG8_FRAG
#define COIN_TRIG8_FRAG
Definition: TileTBFrag.h:39
TileCalibUtils.h
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TileDigitsContainer
Definition: TileDigitsContainer.h:13
HWIdentifier
Definition: HWIdentifier.h:13
TileFragHash::OptFilterDsp
@ OptFilterDsp
Definition: TileFragHash.h:34
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
TileFragHash::OptFilterDspCompressed
@ OptFilterDspCompressed
Definition: TileFragHash.h:34
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
ReadCondHandle.h
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileDQstatus::setRODBCID
void setRODBCID(uint32_t BCID)
sets the ROD BCID stored and used in DQStatus
Definition: TileDQstatus.h:171
TileCalibUtils::MAX_DRAWER
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
Definition: TileCalibUtils.h:139
TileRawChannelContainer.h
TileDQstatus::trigType
int trigType() const
Trigger type.
Definition: TileDQstatus.h:156
TileDQstatus
Class that holds Data Quality fragment information and provides functions to extract the data quality...
Definition: TileDQstatus.h:49
TileDQstatusTool::m_badChannelsKey
SG::ReadCondHandleKey< TileBadChannels > m_badChannelsKey
Name of TileBadChannels in condition store.
Definition: TileDQstatusTool.h:84
TileHWID.h
COIN_TRIG6_FRAG
#define COIN_TRIG6_FRAG
Definition: TileTBFrag.h:37
lumiFormat.i
int i
Definition: lumiFormat.py:92
COIN_TRIG1_FRAG
#define COIN_TRIG1_FRAG
Definition: TileTBFrag.h:32
python.LArBadChannelDBAlg.xFFFFFFFF
xFFFFFFFF
Definition: LArBadChannelDBAlg.py:73
TileDigitsContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TileDQstatus::nonZeroCounter
bool nonZeroCounter() const
returns True if there are any errors in event
Definition: TileDQstatus.h:62
createCoolChannelIdFile.channel_id
channel_id
Definition: createCoolChannelIdFile.py:52
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloJiveXML_DataTypes.tileDigitsContainer
string tileDigitsContainer
Definition: CaloJiveXML_DataTypes.py:11
TileCalibUtils::MAX_ROS
static const unsigned int MAX_ROS
Number of ROSs
Definition: TileCalibUtils.h:138
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileBeamElemContainer
Definition: TileBeamElemContainer.h:13
TileDQstatus.h
Information produced by TileDQstatusAlg (used to be done by TileBeamInfoProvider).
TileBadChannels::getChannelStatus
const TileBchStatus & getChannelStatus(const HWIdentifier channel_id) const
Return Tile channel status.
Definition: TileBadChannels.cxx:35
min
#define min(a, b)
Definition: cfImp.cxx:40
Muon::nsw::incomplete
@ incomplete
Definition: NSWTriggerElink.h:37
TileDQstatusTool::m_athRNGSvc
ServiceHandle< IAthRNGSvc > m_athRNGSvc
Definition: TileDQstatusTool.h:79
LASE_PTN_FRAG
#define LASE_PTN_FRAG
Definition: TileTBFrag.h:27
TileDQstatusTool::m_simulateTrips
Gaudi::Property< bool > m_simulateTrips
Definition: TileDQstatusTool.h:76
TileDQstatus::setEmptyEvent
void setEmptyEvent(int partition, int drawer, int dmu, int gain, int isEmpty)
sets flag that DMU sent an empty event (0xFFFFFFFF)
Definition: TileDQstatus.h:173
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
TileDigitsCollection
Definition: TileDigitsCollection.h:18
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
LASER_OBJ_FRAG
#define LASER_OBJ_FRAG
Definition: TileTBFrag.h:49
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
TileHWID::channel_id
HWIdentifier channel_id(int ros, int drawer, int channel) const
channel HWIdentifer
Definition: TileHWID.cxx:198
PayloadHelpers::dataSize
size_t dataSize(TDA::PayloadIterator start)
Size in bytes of the buffer that is needed to decode next fragment data content.
Definition: TriggerEDMDeserialiserAlg.cxx:188
TileDQstatusTool::m_tileHWID
const TileHWID * m_tileHWID
Tile ID helper.
Definition: TileDQstatusTool.h:88
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileTBFrag.h
TileDQstatus::cispar
const uint32_t * cispar() const
CIS parameters.
Definition: TileDQstatus.h:152
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
RNGWrapper.h
COIN_TRIG3_FRAG
#define COIN_TRIG3_FRAG
Definition: TileTBFrag.h:34
TileDQstatus::setAllGood
void setAllGood()
mark all channels/ADC's as DQ good
Definition: TileDQstatus.cxx:49
COIN_TRIG2_FRAG
#define COIN_TRIG2_FRAG
Definition: TileTBFrag.h:33
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TileDQstatusTool::makeStatus
virtual StatusCode makeStatus(const EventContext &ctx, const TileRawChannelContainer *rawChannelContainer, const TileDigitsContainer *tileDigitsContainer, const TileBeamElemContainer *tileBeamElemContainer, TileDQstatus &dqstatus) const override
Make a new TileDQstatus object.
Definition: TileDQstatusTool.cxx:68
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
F
#define F(x, y, z)
Definition: MD5.cxx:112
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
TileDQstatus::fillTrips
void fillTrips(unsigned int partition, const std::vector< float > &trips, double *rndmVec, MsgStream &msg)
Definition: TileDQstatus.cxx:291
TileBeamElemContainer.h
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
TileDQstatus::setIncompleteDigits
void setIncompleteDigits(bool incomplete)
Definition: TileDQstatus.cxx:309
TileAANtupleConfig.rawChannelContainer
rawChannelContainer
Definition: TileAANtupleConfig.py:120
TileDQstatusTool.h
Construct a TileDQstatus object.
isCalib
bool isCalib()
Definition: TBPatternUnitHelper.h:43
TileBeamElem
Definition: TileBeamElem.h:27
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
TileBchStatus::isWrongBCID
bool isWrongBCID() const
Definition: TileBchStatus.h:225
TileDQstatusTool::TileDQstatusTool
TileDQstatusTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard Gaudi tool constructor.
Definition: TileDQstatusTool.cxx:34
COIN_TRIG5_FRAG
#define COIN_TRIG5_FRAG
Definition: TileTBFrag.h:36
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
COIN_TRIG4_FRAG
#define COIN_TRIG4_FRAG
Definition: TileTBFrag.h:35
TileDQstatus::setCalibMode
void setCalibMode(uint32_t calibMode)
Definition: TileDQstatus.cxx:315