ATLAS Offline Software
DQTDetSynchMonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ********************************************************************
6 //
7 // NAME: DQTDetSynchMonAlg.cxx
8 // PACKAGE: DataQualityTools
9 //
10 // AUTHORS: Luca Fiorini <Luca.Fiorini@cern.ch>
11 // Updated by:
12 // Jahred Adelman (jahred.adelman@cern.ch)
13 // and Max Baak (mbaakcern.ch)
14 // and Sam King (samking@physics.ubc.ca)
15 // and Simon Viel (svielcern.ch)
16 // and Peter Onyisi
17 //
18 // ********************************************************************
19 
21 #include "TrigT1Result/CTP_RIO.h"
22 
23 #include "GaudiKernel/MsgStream.h"
24 #include "GaudiKernel/ITHistSvc.h"
25 
26 #include "TProfile.h"
28 
29 
30 //----------------------------------------------------------------------------------
32  ISvcLocator* pSvcLocator )
33  : AthMonitorAlgorithm(name, pSvcLocator)
34 {
35  for (size_t ix = 0; ix < NDETS; ++ix) {
36  for (size_t iy = ix+1; iy < NDETS; ++iy) {
37  if (m_run2Compat && iy == 6) {
38  m_diffnamevec.push_back("diff_" + std::to_string(iy) + "_" + std::to_string(ix));
39  } else {
40  m_diffnamevec.push_back("diff_" + std::to_string(ix) + "_" + std::to_string(iy));
41  }
42  }
43  }
44 }
45 
46 //----------------------------------------------------------------------------------
48 //----------------------------------------------------------------------------------
49 {
50 }
51 
52 //----------------------------------------------------------------------------------
54 //----------------------------------------------------------------------------------
55  ATH_CHECK( m_InDetTimeCollectionKeys.initialize() );
61 }
62 
63 //----------------------------------------------------------------------------------
64 StatusCode DQTDetSynchMonAlg::fillHistograms( const EventContext& ctx ) const
65 //----------------------------------------------------------------------------------
66 {
67  ATH_MSG_DEBUG("in DQTDetSynchMonAlg::fillHistograms()");
68 
69  std::multiset<uint32_t> sctbcidset;
70  std::multiset<uint32_t> trtbcidset;
71  std::multiset<uint32_t> larbcidset;
72  std::multiset<uint32_t> tilebcidset;
73  std::multiset<uint32_t> rpcbcidset;
74  std::multiset<uint32_t> pixelbcidset;
75 
76  std::multiset<uint32_t> sctl1idset;
77  std::multiset<uint32_t> trtl1idset;
78  std::multiset<uint32_t> larl1idset;
79  std::multiset<uint32_t> tilel1idset;
80  std::multiset<uint32_t> rpcl1idset;
81  std::multiset<uint32_t> pixell1idset;
82 
83 
84  Monitored::Scalar<uint16_t> sctbcid("sctbcid", 0), trtbcid("trtbcid", 0), larbcid("larbcid", 0), tilebcid("tilebcid", 0), rpcbcid("rpcbcid", 0), pixelbcid("pixelbcid", 0);
85  Monitored::Scalar<uint32_t> sctl1id("sctl1id", 0), trtl1id("trtl1id", 0), larl1id("larl1id", 0), rpcl1id("rpcl1id", 0), pixell1id("pixell1id", 0);
86  uint32_t tilel1id(0); // handled specially
87 
88  Monitored::Scalar<float> sctfrac("sctfrac", 0.0), trtfrac("trtfrac", 0.0), larfrac("larfrac", 0.0), tilefrac("tilefrac", 0.0), rpcfrac("rpcfrac", 0.0), pixelfrac("pixelfrac", 0.0);
89 
90  auto ctpbcid = Monitored::Scalar("ctpbcid", (uint16_t) 9999);
91  uint32_t ctpl1id(9999999); // handled specially
92 
93  uint32_t lumi(0), evtNum(0);
94 
95  //Retrieve CTP, other things from EventInfo
96  SG::ReadHandle<xAOD::EventInfo> thisEventInfo { GetEventInfo(ctx) } ;
97  if(! thisEventInfo.isValid())
98  {
99  ATH_MSG_WARNING( "Could not find EventInfo in evtStore" );
100  }
101  else
102  {
103  ctpbcid = thisEventInfo->bcid();
104  lumi = thisEventInfo->lumiBlock() ;
105  evtNum = thisEventInfo->eventNumber();
106  ctpl1id = thisEventInfo->extendedLevel1ID();
107  }
108 
109  auto lb = Monitored::Scalar("LB", lumi);
110  auto inDetTimeCollections = m_InDetTimeCollectionKeys.makeHandles(ctx);
111 
112  if (inDetTimeCollections[0].isValid()) {
113  auto& TRT_BCIDColl(inDetTimeCollections[0]);
114  for ( InDetTimeCollection::const_iterator itrt_bcid
115  = TRT_BCIDColl->begin();
116  itrt_bcid != TRT_BCIDColl->end(); ++itrt_bcid ) {
117  //Current bcid
118  trtbcidset.insert((uint16_t)(*itrt_bcid).second);
119  } // End for loop
120  }
121  else {
122  ATH_MSG_WARNING( "Could not get any TRT_BCID containers " );
123  }
124 
125 
126  if (inDetTimeCollections[1].isValid()) {
127  auto& SCT_BCIDColl(inDetTimeCollections[1]);
128  for ( InDetTimeCollection::const_iterator isct_bcid
129  = SCT_BCIDColl->begin();
130  isct_bcid != SCT_BCIDColl->end(); ++isct_bcid ) {
131  //Current bcid
132  sctbcidset.insert((uint16_t)(*isct_bcid).second);
133  } // End for loop
134  }
135  else {
136  ATH_MSG_WARNING( "Could not get any SCT_BCID containers " );
137  }
138 
139 
140  if (inDetTimeCollections[2].isValid()) {
141  auto& Pixel_BCIDColl(inDetTimeCollections[2]);
142  for ( InDetTimeCollection::const_iterator ipixel_bcid
143  = Pixel_BCIDColl->begin();
144  ipixel_bcid != Pixel_BCIDColl->end(); ++ipixel_bcid ) {
145  //Current bcid
146  pixelbcidset.insert((uint16_t)(*ipixel_bcid).second);
147  } // End for loop
148  }
149  else {
150  ATH_MSG_WARNING( "Could not get any Pixel_BCID containers " );
151  }
152 
153 
154  if (inDetTimeCollections[3].isValid()) {
155  auto& TRT_LVL1IDColl(inDetTimeCollections[3]);
156  for ( InDetTimeCollection::const_iterator itrt_lvl1id
157  = TRT_LVL1IDColl->begin();
158  itrt_lvl1id != TRT_LVL1IDColl->end(); ++itrt_lvl1id ) {
159  //Current lvl1id
160  trtl1idset.insert((uint16_t)(*itrt_lvl1id).second);
161  } // End for loop
162  }
163  else {
164  ATH_MSG_WARNING( "Could not get TRT_LVL1ID container " );
165  }
166 
167 
168  if (inDetTimeCollections[4].isValid()) {
169  auto& SCT_LVL1IDColl(inDetTimeCollections[4]);
170  for ( InDetTimeCollection::const_iterator isct_lvl1id
171  = SCT_LVL1IDColl->begin();
172  isct_lvl1id != SCT_LVL1IDColl->end(); ++isct_lvl1id ) {
173  //Current lvl1id
174  sctl1idset.insert((uint16_t)(*isct_lvl1id).second);
175  } // End for loop
176  }
177  else {
178  ATH_MSG_WARNING( "Could not get SCT_LVL1ID container " );
179  }
180 
181 
182  if (inDetTimeCollections[5].isValid()) {
183  auto& Pixel_LVL1IDColl(inDetTimeCollections[5]);
184  for ( InDetTimeCollection::const_iterator ipixel_lvl1id
185  = Pixel_LVL1IDColl->begin();
186  ipixel_lvl1id != Pixel_LVL1IDColl->end(); ++ipixel_lvl1id ) {
187  //Current lvl1id
188  pixell1idset.insert((uint16_t)(*ipixel_lvl1id).second);
189  } // End for loop
190  }
191  else {
192  ATH_MSG_WARNING( "Could not get Pixel_LVL1ID container " );
193  }
194 
195 
196  sctbcid=findid(sctbcidset);
197  sctfrac=findfrac(sctbcidset,ctpbcid);
198  trtbcid=findid(trtbcidset);
199  trtfrac=findfrac(trtbcidset,ctpbcid);
200  sctl1id=findid(sctl1idset);
201  trtl1id=findid(trtl1idset);
202  pixell1id=findid(pixell1idset);
203  pixelbcid=findid(pixelbcidset);
204  pixelfrac=findfrac(pixelbcidset,ctpbcid);
205 
206  SG::ReadHandle<LArFebHeaderContainer> hdrCont(m_LArFebHeaderContainerKey, ctx);
207  if (! hdrCont.isValid()) {
208  ATH_MSG_WARNING( "No LArFEB container found in TDS" );
209  }
210  else {
211  //log << MSG::DEBUG << "LArFEB container found" <<endmsg;
213  LArFebHeaderContainer::const_iterator itend = hdrCont->end();
214  for ( ; it!=itend;++it) {
215  //HWIdentifier febid=(*it)->FEBId();
216  unsigned int febid=((*it)->FEBId()).get_identifier32().get_compact();
217  if (febid >= 0x38000000 && febid <= 0x3bc60000) {
218  larbcidset.insert((uint16_t) (*it)->BCId() );
219  larl1idset.insert((uint32_t) (*it)->ELVL1Id() );
220  }
221  }
222  }
223  larbcid=findid(larbcidset);
224  larfrac=findfrac(larbcidset,larbcid);
225  larl1id=findid(larl1idset);
226 
227  SG::ReadHandle<TileDigitsContainer> DigitsCnt(m_TileDigitsContainerKey, ctx);
228  if (! DigitsCnt.isValid()) {
229  ATH_MSG_WARNING( "No Tile Digits container found in TDS" );
230  }
231  else {
232  TileDigitsContainer::const_iterator collItr=DigitsCnt->begin();
233  TileDigitsContainer::const_iterator lastColl=DigitsCnt->end();
234  for (;collItr!=lastColl;++collItr){
235  tilebcidset.insert( (*collItr)->getRODBCID() );
236  tilel1idset.insert( (*collItr)->getLvl1Id() );
237  }
238  }
239  tilebcid=findid(tilebcidset);
240  tilefrac=findfrac(tilebcidset,tilebcid);
241  tilel1id=findid(tilel1idset);
242 
243  if (m_doRPC) {
244  SG::ReadHandle<RpcPadContainer> rpcRDO(m_RpcPadContainerKey, ctx);
245  if (! rpcRDO.isValid()) {
246  ATH_MSG_WARNING( "No RPC Pad container found in TDS" );
247  } else {
248  RpcPadContainer::const_iterator pad = rpcRDO->begin();
249  RpcPadContainer::const_iterator endpad = rpcRDO->end();
250  for (; pad != endpad ; ++pad ) {
251  if ( (*pad) ) {
252  if ( (*pad)->size() > 0 ) {
253  rpcbcidset.insert( (*pad)->bcId() );
254  rpcl1idset.insert( (*pad)->lvl1Id() );
255  }
256  }
257  }
258  }
259  }
260 
261 
262  rpcbcid=findid(rpcbcidset);
263  rpcfrac=findfrac(rpcbcidset,rpcbcid);
264  rpcl1id=findid(rpcl1idset);
265 
266  auto ctp_l1id16 = Monitored::Scalar<uint32_t>("ctpl1id", ctpl1id & 0xFFFF);
267  uint32_t ctp_l1id9 = ctpl1id & 0x1FF;
268  auto tile_l1id16 = Monitored::Scalar<uint32_t>("tilel1id", tilel1id & 0xFFFF);
269  uint32_t tile_l1id9 = tilel1id & 0x1FF;
270  uint32_t sct_l1id9 = sctl1id & 0x1FF;
271  uint32_t trt_l1id9 = trtl1id & 0x1FF;
272  uint32_t lar_l1id9 = larl1id & 0x1FF;
273  uint32_t pixel_l1id9 = pixell1id & 0x1FF;
274 
275  std::vector<float> bcidrates_base { sctfrac, trtfrac, larfrac,
276  tilefrac, rpcfrac, pixelfrac };
277  auto bcidrates = Monitored::Collection( "bcidrates",
278  bcidrates_base );
279 
280  std::vector<int> bcidrates_idx_base = { 1, 2, 3, 4, 5, 6 };
281 
282  auto bcidrates_idx = Monitored::Collection( "bcidrates_idx",
283  bcidrates_idx_base );
284 
285 
286  std::vector<Int_t> bcidvals { ctpbcid, sctbcid, trtbcid, larbcid,
287  tilebcid, rpcbcid, pixelbcid };
288  std::vector<int> diffx_base, diffy_base;
289  // catch if we have a sync problem ...
290  assert( bcidvals.size() == NDETS );
291 
292  std::vector<Monitored::Scalar<Int_t>> diffvec;
293  for (size_t ix = 0; ix < NDETS; ++ix) {
294  for (size_t iy = ix+1; iy < NDETS; ++iy) {
295  if (m_run2Compat && iy == 6) {
296  diffvec.push_back(Monitored::Scalar<Int_t>(m_diffnamevec[diffvec.size()]));
297  } else {
298  diffvec.push_back(Monitored::Scalar<Int_t>(m_diffnamevec[diffvec.size()]));
299  }
300  }
301  }
302 
303  for (size_t ix = 0, ivec = 0; ix < NDETS; ++ix) {
304  for (size_t iy = ix+1; iy < NDETS; ++iy) {
305  Int_t comparison = bcidvals[ix] - bcidvals[iy];
306  if (comparison > 0) {
307  diffx_base.push_back(ix); diffy_base.push_back(iy);
308  } else if (comparison < 0) {
309  diffx_base.push_back(iy); diffy_base.push_back(ix);
310  } else {
311  diffx_base.push_back(ix); diffy_base.push_back(ix);
312  diffx_base.push_back(iy); diffy_base.push_back(iy);
313  }
314  if (m_run2Compat && iy == 6) {
315  diffvec[ivec] = -comparison;
316  } else {
317  diffvec[ivec] = comparison;
318  }
319  ++ivec;
320  }
321  }
322  for (auto&& var: diffvec) {
323  fill("bcid", var, lb);
324  }
325  if (m_run2Compat) {
326  auto diffjunk = Monitored::Scalar("diff_0_6", bcidvals[0]-bcidvals[6]);
327  fill("bcid", diffjunk, lb);
328  }
329 
330  auto diffx = Monitored::Collection("diffx", diffx_base);
331  auto diffy = Monitored::Collection("diffy", diffy_base);
332  fill("bcid", ctpbcid, sctbcid, trtbcid, larbcid, tilebcid, rpcbcid,
333  pixelbcid, bcidrates, bcidrates_idx, diffx, diffy);
334 
335 
336 // // Now l1id
337  std::vector<UInt_t> l1idvals { ctp_l1id16, sctl1id, trtl1id, larl1id,
338  tile_l1id16, rpcl1id, pixell1id };
339  // the following for comparison for RPC
340  std::vector<UInt_t> l1idvals_d9 { ctp_l1id9, sct_l1id9, trt_l1id9,
341  lar_l1id9, tile_l1id9, rpcl1id, pixel_l1id9 };
342  // catch if we have a sync problem ...
343  assert( l1idvals.size() == NDETS && l1idvals_d9.size() == NDETS );
344 
345  diffx_base.clear(); diffy_base.clear();
346 
347  for (size_t ix = 0, ivec = 0; ix < NDETS; ++ix) {
348  for (size_t iy = ix+1; iy < NDETS; ++iy) {
349  UInt_t xl1id, yl1id;
350  // RPC (index 5) is an exception
351  if (iy == 5) {
352  yl1id = rpcl1id; xl1id = l1idvals_d9[ix];
353  } else if (ix == 5) {
354  xl1id = rpcl1id; yl1id = l1idvals_d9[iy];
355  } else {
356  xl1id = l1idvals[ix]; yl1id = l1idvals[iy];
357  }
358  Int_t comparison = xl1id - yl1id;
359  if (comparison > 0) {
360  diffx_base.push_back(ix); diffy_base.push_back(iy);
361  } else if (comparison < 0) {
362  diffx_base.push_back(iy); diffy_base.push_back(ix);
363  } else {
364  diffx_base.push_back(ix); diffy_base.push_back(ix);
365  diffx_base.push_back(iy); diffy_base.push_back(iy);
366  }
367  if (m_run2Compat && iy == 6) {
368  diffvec[ivec] = -comparison;
369  } else {
370  diffvec[ivec] = comparison;
371  }
372  ++ivec;
373  }
374  }
375  for (auto&& var: diffvec) {
376  fill("l1id", var, lb);
377  }
378  if (m_run2Compat) {
379  auto diffjunk = Monitored::Scalar("diff_0_6", bcidvals[0]-bcidvals[6]);
380  fill("l1id", diffjunk, lb);
381  }
382  fill("l1id", ctp_l1id16, sctl1id, trtl1id, larl1id,
383  tile_l1id16, rpcl1id, pixell1id, diffx, diffy);
384 
385  // B field
387  Amg::Vector3D gP1(m_solenoidPositionX, m_solenoidPositionY, m_solenoidPositionZ);
388  MagField::AtlasFieldCache fieldCache;
389  SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCacheCondObjInputKey, ctx};
390  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
391  if (fieldCondObj == nullptr) {
392  ATH_MSG_ERROR("DQTDetSynchMonAlg: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
393  return StatusCode::FAILURE;
394  }
395  fieldCondObj->getInitializedCache (fieldCache);
396  fieldCache.getField(gP1.data(),f.data());
397 
398  // field is in kilotesla (!)
399  auto solenoid_bz = Monitored::Scalar("solenoid_bz", f[2]*1000.);
400 
401  Amg::Vector3D gP2(m_toroidPositionX, m_toroidPositionY, m_toroidPositionZ);
402  fieldCache.getField(gP2.data(),f.data());
403 
404  auto toroid_bx = Monitored::Scalar("toroid_bx", f[0]*1000.);
405 
406  fill("bfield", solenoid_bz, toroid_bx, lb);
407 
408 
409  ATH_MSG_VERBOSE( "evt Num : " << evtNum << "\tLumi : " << lumi );
410  ATH_MSG_VERBOSE( "evt L1ID : " << ctpl1id << "\tevt BCID : " << ctpbcid );
411  ATH_MSG_VERBOSE( "CTP L1ID : " << ctpl1id << "\tCTP BCID : " << ctpbcid );
412  ATH_MSG_VERBOSE( "LAR L1ID : " << larl1id << "\tLAR BCID : " << larbcid );
413  ATH_MSG_VERBOSE( "TILE L1ID: " << tilel1id << "\tTILE BCID : " << tilebcid );
414  ATH_MSG_VERBOSE( "RPC L1ID : " << rpcl1id << "\tRPC BCID : " << rpcbcid );
415  ATH_MSG_VERBOSE( "Pixel L1ID : " << pixell1id << "\tPixel BCID : " << pixelbcid );
416  ATH_MSG_VERBOSE( "CTP-RPC L1ID : " << ctp_l1id9-rpcl1id << "\tCTP-LAR L1ID : " << ctp_l1id16-larl1id );
417  return StatusCode::SUCCESS;
418 }
419 
420 
421 //----------------------------------------------------------------------------------
422 uint32_t DQTDetSynchMonAlg::findid(const std::multiset<uint32_t>& mset) const
423 //----------------------------------------------------------------------------------
424 {
425  uint32_t id(9999999),refid(9999999);
426  int refcount(0),count(0);
427  std::multiset<uint32_t>::iterator it = mset.begin();
428  std::multiset<uint32_t>::iterator itend = mset.end();
429 
430  if (it!=itend && !mset.empty()){
431  for (;it!=itend;++it) {
432  if ( (*it) != id ) { //skip check if the id value has been already evaluated
433 
434  id=*it; count = mset.count(*it);
435  ATH_MSG_VERBOSE( "new id found: " << (*it) << " with counts: " << count );
436  if ( ( (*it) !=refid )&&(count>refcount) ){ // if count> previous maximum and double check the id value
437  refid = (*it);
438  refcount=count;
439  ATH_MSG_VERBOSE( "new REFERENCE id: " << refid << " with REFERENCE counts: " << refcount );
440  }
441  }
442  }
443  }
444  ATH_MSG_VERBOSE( "Returning REFERENCE id: " << refid << " with REFERENCE counts: " << refcount );
445  return refid;
446 }
447 
448 //----------------------------------------------------------------------------------
449 float DQTDetSynchMonAlg::findfrac(const std::multiset<uint32_t>& mset, uint16_t ctpid) const
450 //----------------------------------------------------------------------------------
451 {
452  MsgStream log(msgSvc(), name());
453  std::multiset<uint32_t>::iterator it = mset.begin();
454  std::multiset<uint32_t>::iterator itend = mset.end();
455 
456  int totalCounter=0;
457  int nonctpIdCounter=0;
458  float frac = 0.0;
459 
460  if (it!=itend && !mset.empty()){
461  for (;it!=itend;++it) {
462  totalCounter++;
463  if ( (*it) != ctpid ) nonctpIdCounter++;
464  }
465  }
466 
467  if (totalCounter>0)
468  frac = ((float) nonctpIdCounter)/((float) totalCounter);
469  else
470  frac = 1.0;
471  return frac;
472 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
DQTDetSynchMonAlg::m_LArFebHeaderContainerKey
SG::ReadHandleKey< LArFebHeaderContainer > m_LArFebHeaderContainerKey
Definition: DQTDetSynchMonAlg.h:73
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
DQTDetSynchMonAlg::initialize
virtual StatusCode initialize() override
initialize
Definition: DQTDetSynchMonAlg.cxx:53
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
DQTDetSynchMonAlg::NDETS
static const int NDETS
Definition: DQTDetSynchMonAlg.h:66
skel.it
it
Definition: skel.GENtoEVGEN.py:396
DQTDetSynchMonAlg::m_InDetTimeCollectionKeys
SG::ReadHandleKeyArray< InDetTimeCollection > m_InDetTimeCollectionKeys
Definition: DQTDetSynchMonAlg.h:71
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
DQTDetSynchMonAlg::~DQTDetSynchMonAlg
virtual ~DQTDetSynchMonAlg()
Definition: DQTDetSynchMonAlg.cxx:47
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:620
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
python.BunchSpacingUtils.lb
lb
Definition: BunchSpacingUtils.py:88
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
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
checkxAOD.frac
frac
Definition: Tools/PyUtils/bin/checkxAOD.py:259
DQTDetSynchMonAlg::m_run2Compat
Gaudi::Property< bool > m_run2Compat
Definition: DQTDetSynchMonAlg.h:63
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:239
hist_file_dump.f
f
Definition: hist_file_dump.py:135
DQTDetSynchMonAlg::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: DQTDetSynchMonAlg.h:78
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:79
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:233
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DQTDetSynchMonAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: DQTDetSynchMonAlg.cxx:64
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
DQTDetSynchMonAlg::m_diffnamevec
std::vector< std::string > m_diffnamevec
Definition: DQTDetSynchMonAlg.h:67
fill
void fill(H5::Group &out_file, size_t iterations)
Definition: test-hdf5-writer.cxx:95
DQTDetSynchMonAlg::m_RpcPadContainerKey
SG::ReadHandleKey< RpcPadContainer > m_RpcPadContainerKey
Definition: DQTDetSynchMonAlg.h:77
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CTP_RIO.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
DQTDetSynchMonAlg.h
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
lumiFormat.lumi
lumi
Definition: lumiFormat.py:106
DQTDetSynchMonAlg::DQTDetSynchMonAlg
DQTDetSynchMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: DQTDetSynchMonAlg.cxx:31
DQTDetSynchMonAlg::findid
uint32_t findid(const std::multiset< uint32_t > &mset) const
Definition: DQTDetSynchMonAlg.cxx:422
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
MagField::AtlasFieldCache::getField
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
Definition: AtlasFieldCache.cxx:42
DQTDetSynchMonAlg::m_TileDigitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_TileDigitsContainerKey
Definition: DQTDetSynchMonAlg.h:75
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
DQTDetSynchMonAlg::findfrac
float findfrac(const std::multiset< uint32_t > &mset, uint16_t ctpid) const
Definition: DQTDetSynchMonAlg.cxx:449
CxxUtils::ivec
vec_fb< typename boost::int_t< sizeof(T) *8 >::exact, N > ivec
Definition: vec_fb.h:53
readCCLHist.float
float
Definition: readCCLHist.py:83
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.