ATLAS Offline Software
TileTriggerDefaultCalibTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
10 
12 #include "StoreGate/ReadHandle.h"
13 
15 #include "CaloIdentifier/TileID.h"
16 
21 
22 #include "TFile.h"
23 #include "TTree.h"
24 #include "TString.h"
25 
26 #include <vector>
27 #include <cmath>
28 
29 
30 namespace {
31 template <class T>
32 inline
33 T square(T x) { return x*x; }
34 }
35 
36 
37 TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool(const std::string& type, const std::string& name,const IInterface* pParent):
38  AthAlgTool(type, name, pParent)
39  , m_TT_ID(nullptr)
40  , m_tileHWID(nullptr)
41  , m_tileID(nullptr)
42  , m_tileCablingService(nullptr)
43  , m_charge(0)
44  , m_ipmt(0)
45  , m_ipmtCount(0)
46  , m_ipmtOld(0)
47  , m_DACvalue(0)
48  , m_nEvtGlobal(0)
49 {
50  declareInterface<ITileCalibTool>( this );
51  declareProperty("MaxNTriggerTowers", m_maxNTT=7200);
52  declareProperty("NtupleID", m_ntupleID="h3000");
53  declareProperty("NumEventPerPMT", m_nevpmt=195); // changed from 200 to 195
54 
63 
72 
75 }
76 
78 {
79  delete[] m_meanTile;
80  delete[] m_rmsTile;
81  delete[] m_meanTileDAC;
82  delete[] m_rmsTileDAC;
83  delete[] m_ietaTile;
84  delete[] m_iphiTile;
85  delete[] m_ipmtTile;
86  delete[] m_nEvtTile;
87  delete[] m_meanL1Calo;
88  delete[] m_rmsL1Calo;
89  delete[] m_meanL1CaloDAC;
90  delete[] m_rmsL1CaloDAC;
91  delete[] m_ietaL1Calo;
92  delete[] m_iphiL1Calo;
93  delete[] m_ipmtL1Calo;
94  delete[] m_nEvtL1Calo;
95  delete[] m_meanTileL1Calo;
96  delete[] m_rmsTileL1Calo;
97 }
98 
100 {
101  ATH_MSG_INFO ( "initialize()" );
102 
103  // Initialize arrays for results
104  m_charge = 0;
105  m_ipmt = 0;
106  m_ipmtOld = 0;
107  m_ipmtCount = 0;
108 
110  ATH_CHECK( m_triggerTowerContainerKey.initialize() );
111 
112  ATH_CHECK( m_l1CaloTTIdTools.retrieve() );
113  ATH_MSG_DEBUG("L1CaloTTIdTools retrieved");
114 
118 
120 
121  //=== get TileCondToolEmscale
122  CHECK( m_tileToolEmscale.retrieve() );
123 
125 
126  return StatusCode::SUCCESS;
127 }
128 
130 {
131  ATH_MSG_INFO ( "initialize(" << runNumber << "," << runType << "," << rootFile << ")" );
132  return StatusCode::SUCCESS;
133 }
134 
136 {
137  ATH_MSG_DEBUG ( "executeTrigger()" );
138 
139  const EventContext& ctx = Gaudi::Hive::currentContext();
140  const TileDQstatus* dqStatus = SG::makeHandle (m_dqStatusKey, ctx).get();
141 
142  // Get TileRawChannelContainer
144  ATH_CHECK( container.isValid() );
145 
146  ATH_MSG_DEBUG ( "second executeTrigger()" );
147  // declare an array of pmt id for the trigger tower loop
148  HWIdentifier chanIds[2][16][64][6];
149  memset(chanIds, 0, sizeof(chanIds));
150 
151  // Get event's ext CIS parameters
152  const uint32_t *cispar = dqStatus->cispar();
153 
154  // Mapping pmt2chan
155  int chan_bar[54] = {4 ,1 ,2 ,3 ,0 ,-1 ,
156  8 ,5 ,6 ,7 ,13,-1 ,
157  10,9 ,12,11,14,-1 ,
158  18,15,16,17,25,-1 ,
159  20,19,22,21,24,-1 ,
160  26,23,28,27,41,-1 ,
161  32,29,34,33,44,-1 ,
162  38,35,40,39,-1,-1 ,
163  36,37,42,47,46,45 };
164 
165  int chan_ext[36] = {4, 5 ,2 ,3 ,16,-1 ,
166  8, 9 ,17,-1,-1,-1 ,
167  6, 7 ,14,15,38,-1 ,
168  10,11,22,23,37,-1 ,
169  20,21,30,35,-1,-1 ,
170  31,32,39,36,41,40 };
171 
172  ATH_MSG_DEBUG ( "cispar[16] " << cispar[16] << ", cispas[17] " << cispar[17] << ", cispar[18] " << cispar[18] );
173  if (cispar[16] == 0x07){
174  if (cispar[18]>5) {
175  ATH_MSG_WARNING ( "Bad CISpar detected, using pmt index and charge from previous event: " << m_ipmt << " " << m_charge );
176  } else {
177  m_charge = cispar[17];
178  m_ipmt = cispar[18];
179  //m_itower = cispar[19];
180  //m_idrawer = cispar[20];
181  }
182  }
183  else if (cispar[16] == 0x107){ // bad CISpar
184  ATH_MSG_WARNING ( "Bad CISpar detected, using pmt index and charge from previous event: " << m_ipmt << " " << m_charge );
185  }
186  else
187  return StatusCode::SUCCESS;
188 
189  ATH_MSG_DEBUG ( "Pattern/ipmt/charge: " << cispar[16] << " " << m_ipmt << " " << m_charge );
190  if (m_charge<1.0e-20) {
191  ATH_MSG_WARNING ( "Bad charge " << m_charge << " - skipping event" );
192  return StatusCode::SUCCESS;
193  }
194 
195  if (m_ipmtOld != m_ipmt){
196  if (m_ipmt < m_ipmtOld) return StatusCode::SUCCESS;
197  m_ipmtCount = 1;
198  m_ipmtOld = m_ipmt;
199  }
200  else
201  m_ipmtCount += 1;
202 
203  if (m_ipmtCount > m_nevpmt) return StatusCode::SUCCESS; //takes into account only the first m_nevpmt events for each pmt to avoid problem with wrong CISpar
204 
206 
207  // Create iterator over RawChannelContainer for Tile
208  TileRawChannelContainer::const_iterator itColl = (*container).begin();
209  TileRawChannelContainer::const_iterator itCollEnd = (*container).end();
211  TileRawChannelUnit::UNIT RChUnit = container->get_unit();
212 
213  // Go through all TileRawChannelCollections
214  for(; itColl != itCollEnd; ++itColl) {
215 
216  //go through all TileRawChannels in collection (loop over all channels)
217  it = (*itColl)->begin();
218  itEnd = (*itColl)->end();
219 
220  for(; it != itEnd; ++it) {
221 
222  // get hardware id to identify adc channel
223  HWIdentifier hwid=(*it)->adc_HWID();
224  //ATH_MSG_DEBUG("HWID1: "<< m_tileHWID->to_string(hwid));
225  int ros = m_tileHWID->ros(hwid); // LBA=1 LBC=2 EBA=3 EBC=4
226  int drawer = m_tileHWID->drawer(hwid); // 0 to 63
227  int chan = m_tileHWID->channel(hwid); // 0 to 47 channel not PMT
228  int gain = m_tileHWID->adc(hwid); // low=0 high=1
229  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
230 
231  // Get the PMT Id, create on the fly a mapping to the trigger tower id
232  // this mapping is to be used below in the loop over all trigger towers
233  Identifier tt_id = (*it)->tt_ID();
234  if (!tt_id.is_valid()) continue;
235  //Identifier pmt_id = (*it)->pmt_ID();
236 
237  int pos_neg_z = m_TT_ID->pos_neg_z(tt_id);
238  int ieta = m_TT_ID->eta(tt_id);
239  int iphi = m_TT_ID->phi(tt_id);
240 
241  if (ros < 3) {
242  if (ieta < 0 || ieta > 8) continue;
243  } else {
244  if (ieta < 9 || ieta > 14) continue;
245  }
246 
247  if((ros==1) || (ros==2)){
248  // (Manually fold constants to avoid cppcheck warning.)
249  if (chan != chan_bar[(ieta*6)/*-1*/ + m_ipmt/*+1*/]) continue; // check if the chan is firing
250  }
251  else if ((ros==3) || (ros==4)){
252  if ((chan != chan_ext[((ieta-9)*6)/*-1*/ + m_ipmt/*+1*/]) || (chan == 0)) continue; // check if the chan is firing
253  }
254  else
255  continue;
256 
257  float amp = (*it)->amplitude();
258  float amp_pC = m_tileToolEmscale->channelCalib(drawerIdx, chan, gain, amp, RChUnit, TileRawChannelUnit::PicoCoulombs);
259  //float amp_GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, gain, amp, RChUnit, TileRawChannelUnit::MegaElectronVolts) * 0.001;
260  //float pC2GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, 0, 1.0, TileRawChannelUnit::PicoCoulombs, TileRawChannelUnit::MegaElectronVolts) * 0.001;
261  //log << MSG::DEBUG << "ros " << ros << ", pos_neg_z " << pos_neg_z << ", drawer " << drawer <<" ieta " << ieta << ", chan " << chan << ", amplitude " << amp << endreq;
262 
263  m_meanTile[ros][drawer][chan] += amp_pC;
264  m_rmsTile[ros][drawer][chan] += square(amp_pC);
265  m_meanTileDAC[ros][drawer][chan] += (amp_pC-m_charge);
266  m_rmsTileDAC[ros][drawer][chan] += square(amp_pC-m_charge);
267  m_ietaTile[ros][drawer][chan] = ieta;
268  m_iphiTile[ros][drawer][chan] = iphi;
270  ++m_nEvtTile[ros][drawer][chan];
271 
272  if (pos_neg_z < 0) pos_neg_z = 0;
273  chanIds[pos_neg_z][ieta][iphi][m_ipmt] = hwid;
274  }
275 
276  } // end of loop over raw channels for Tile
277 
278  // loop over all L1Calo trigger channels, calculate the average and RMS
280  ATH_CHECK( triggerTowers.isValid() );
281 
282  int ntt = 0;
283 
284  for (const xAOD::TriggerTower* triggerTower : *triggerTowers) {
285 
286  if(ntt>m_maxNTT) break;
287 
288  if (!triggerTower->sampling()) continue; // is not hadronic
289 
290  double eta = triggerTower->eta();
291  double phi = triggerTower->phi();
292  double tt_ene = 0.; //triggerTower->e();
293 
294  // temporary, compute id out of the tower position
295  int pos_neg_z = m_l1CaloTTIdTools->pos_neg_z(eta);
296  int region = m_l1CaloTTIdTools->regionIndex(eta);
297  int ieta = m_l1CaloTTIdTools->etaIndex(eta);
298  int iphi = m_l1CaloTTIdTools->phiIndex(eta, phi);
299  Identifier tt_id = m_TT_ID->tower_id(pos_neg_z, 1, region, ieta, iphi);
300  //Not used, but could be useful, eg. coolId is used to get proper pedestal value
301  //Identifier id = m_ttTool->identifier(triggerTower->eta(), triggerTower->phi(), 1); //alternative way to get tt_id
302  //unsigned int coolId = m_ttTool->channelID(tt_id).id();
303 
304  // check if it is a Tile tower
305  if (tt_id.is_valid() && m_TT_ID->is_tile(tt_id))
306  ++ntt;
307  else continue;
308 
309  //compute L1Calo energy from ADC:
310  // - take max ADC value
311  // - subtract pedestal (about 32 ADC counts), apply 0.25 conversion factor to GeV
312  const std::vector<uint16_t>& adc = triggerTower->adc();
313  uint16_t max = *(std::max_element(adc.begin(), adc.end()));
314  uint16_t ped = adc.front();
315  tt_ene = (max - ped) * 0.25;
316  if (tt_ene < 0.) tt_ene = 0.;
317 
318  // check boundaries
319  if ((ieta < 0) || (ieta > 14)) continue;
320 
321  if (pos_neg_z < 0) pos_neg_z = 0;
322  HWIdentifier hwid = chanIds[pos_neg_z][ieta][iphi][m_ipmt];
323  int ros = m_tileHWID->ros(hwid); // LBA=1 LBC=2 EBA=3 EBC=4
324  if(ros >= 5 || ros <=0){continue;} // ignoring special channels, like those connected to inner MBTS in EBA/EBC 39-42,55-58
325  int drawer = m_tileHWID->drawer(hwid); // 0 to 63
326  int chan = m_tileHWID->channel(hwid); // 0 to 47 channel not PMT
327  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
328  float pC2GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, 0, 1.0, TileRawChannelUnit::PicoCoulombs, TileRawChannelUnit::MegaElectronVolts) * 0.001;
329  double tt_ene_pC = tt_ene / pC2GeV;
330 
331  //comparing results from triggerTower->e() and energy computed from ADC (default method)
332  if (triggerTower->e() == 0)
333  ATH_MSG_DEBUG ( "Tower partition " << ros
334  << ", drawer "<< drawer
335  << ", chan: " << chan
336  << ", eta "<< eta
337  << ", phi: " << phi
338  << ", amplitude : " << tt_ene
339  << ", old " << triggerTower->e()
340  << ", ratio old/new " << triggerTower->e() / tt_ene );
341 
342  if ((ros==1) || (ros==2)){
343  if (chan != chan_bar[(ieta*6)-1 + m_ipmt+1]) continue; // check if the chan is firing
344  }
345  else if ((ros==3) || (ros==4)) {
346  if ((chan != chan_ext[((ieta-9)*6)-1 + m_ipmt+1]) || (chan == 0)) continue; // check if the chan is firing
347  }
348  else continue;
349 
350  m_meanL1Calo[ros][drawer][chan] += tt_ene_pC;
351  m_rmsL1Calo[ros][drawer][chan] += square(tt_ene_pC);
352  m_meanL1CaloDAC[ros][drawer][chan] += tt_ene_pC - m_charge;
353  m_rmsL1CaloDAC[ros][drawer][chan] += square(tt_ene_pC - m_charge);
354  m_ietaL1Calo[ros][drawer][chan] = ieta;
355  m_iphiL1Calo[ros][drawer][chan] = iphi;
358 
359  }// end of trigger tower loop for L1Calo
360 
361  ++m_nEvtGlobal; // Number of MaxEvt from Athena
362 
363  for (int ros=0;ros<5;ros++) {
364  for (int drawer=0;drawer<64;drawer++) {
365  for (int chan=0;chan<48;chan++) {
366  // ???
368  }
369  }
370  }
371 
372  return StatusCode::SUCCESS;
373 
374 }
375 
377 {
378  ATH_MSG_INFO ( "finalizeCalculations()" );
379 
380  for (int ros=0;ros<5;ros++) {
381  for (int drawer=0;drawer<64;drawer++) {
382  for (int chan=0;chan<48;chan++) {
383  if (m_nEvtTile[ros][drawer][chan] > 0){
388  }
389 
390  if(m_rmsTile[ros][drawer][chan] <= square(m_meanTile[ros][drawer][chan]))
391  m_rmsTile[ros][drawer][chan] = 0;
392  else
393  m_rmsTile[ros][drawer][chan] = sqrt(m_rmsTile[ros][drawer][chan] - square(m_meanTile[ros][drawer][chan]));
394 
395  if(m_rmsTileDAC[ros][drawer][chan] <= square(m_meanTileDAC[ros][drawer][chan]))
396  m_rmsTileDAC[ros][drawer][chan] = 0;
397  else
399 
400  if (m_nEvtL1Calo[ros][drawer][chan] > 0){
405  }
406 
407  if(m_rmsL1Calo[ros][drawer][chan] <= square(m_meanL1Calo[ros][drawer][chan]))
408  m_rmsL1Calo[ros][drawer][chan] = 0;
409  else
411 
413  m_rmsL1CaloDAC[ros][drawer][chan] = 0;
414  else
416 
420  else
422  }
423  }
424  }
425 
426  return StatusCode::SUCCESS;
427 }
428 
430 {
431  ATH_MSG_INFO ( "writeNtuple(" << runNumber << "," << runType << "," << rootFile << ")" );
432 
433  TTree *t = new TTree(m_ntupleID.c_str(), "TileCalib-Ntuple");
435 
436  t->Branch("meanTile",m_meanTile,ind.Format("meanTile%s/F",(const char *)ind));
437  t->Branch("rmsTile",m_rmsTile,ind.Format("rmsTile%s/F",(const char *)ind));
438  t->Branch("meanTileDAC",m_meanTileDAC,ind.Format("meanTileDAC%s/F",(const char *)ind));
439  t->Branch("rmsTileDAC",m_rmsTileDAC,ind.Format("rmsTileDAC%s/F",(const char *)ind));
440  t->Branch("ietaTile",m_ietaTile,ind.Format("ietaTile%s/I",(const char *)ind));
441  t->Branch("iphiTile",m_iphiTile,ind.Format("iphiTile%s/I",(const char *)ind));
442  t->Branch("ipmtTile",m_ipmtTile,ind.Format("ipmtTile%s/I",(const char *)ind));
443  t->Branch("nEvtTile",m_nEvtTile,ind.Format("nEvtTile%s/I",(const char *)ind));
444  t->Branch("meanL1Calo",m_meanL1Calo,ind.Format("meanL1Calo%s/F",(const char *)ind));
445  t->Branch("rmsL1Calo",m_rmsL1Calo,ind.Format("rmsL1Calo%s/F",(const char *)ind));
446  t->Branch("meanL1CaloDAC",m_meanL1CaloDAC,ind.Format("meanL1CaloDAC%s/F",(const char *)ind));
447  t->Branch("rmsL1CaloDAC",m_rmsL1CaloDAC,ind.Format("rmsL1CaloDAC%s/F",(const char *)ind));
448  t->Branch("ietaL1Calo",m_ietaL1Calo,ind.Format("ietaL1Calo%s/I",(const char *)ind));
449  t->Branch("iphiL1Calo",m_iphiL1Calo,ind.Format("iphiL1Calo%s/I",(const char *)ind));
450  t->Branch("ipmtL1Calo",m_ipmtL1Calo,ind.Format("ipmtL1Calo%s/I",(const char *)ind));
451  t->Branch("nEvtL1Calo",m_nEvtL1Calo,ind.Format("nEvtL1Calo%s/I",(const char *)ind));
452  t->Branch("meanTileL1Calo",m_meanTileL1Calo,ind.Format("meanTileL1Calo%s/F",(const char *)ind));
453  t->Branch("rmsTileL1Calo",m_rmsTileL1Calo,ind.Format("rmsTileL1Calo%s/F",(const char *)ind));
454  t->Branch("nEvtGlobal",&m_nEvtGlobal,"nEvtGlobal/I");
455  t->Branch("DACvalue",&m_DACvalue,"DACvalue/F");
456 
457  // Fill with current values (i.e. tree will have only one entry for this whole run)
458  t->Fill();
459  t->Write();
460 
461  return StatusCode::SUCCESS;
462 }
463 
465 {
466  ATH_MSG_DEBUG ( "finalizeTrigger()" );
467  return StatusCode::SUCCESS;
468 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileTriggerDefaultCalibTool::~TileTriggerDefaultCalibTool
virtual ~TileTriggerDefaultCalibTool()
Definition: TileTriggerDefaultCalibTool.cxx:77
TileTriggerDefaultCalibTool::m_tileToolEmscale
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
main Tile Calibration tool
Definition: TileTriggerDefaultCalibTool.h:59
TileTriggerDefaultCalibTool::m_TT_ID
const CaloLVL1_ID * m_TT_ID
Definition: TileTriggerDefaultCalibTool.h:55
IL1CaloTTIdTools.h
TileTriggerDefaultCalibTool::m_meanTileL1Calo
float(* m_meanTileL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:93
TileTriggerDefaultCalibTool.h
TileTriggerDefaultCalibTool::TileTriggerDefaultCalibTool
TileTriggerDefaultCalibTool(const std::string &type, const std::string &name, const IInterface *pParent)
Definition: TileTriggerDefaultCalibTool.cxx:37
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TileTriggerDefaultCalibTool::m_ipmtOld
unsigned int m_ipmtOld
Definition: TileTriggerDefaultCalibTool.h:100
TileTriggerDefaultCalibTool::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileTriggerDefaultCalibTool.h:56
TileTriggerDefaultCalibTool::initialize
virtual StatusCode initialize() override
Definition: TileTriggerDefaultCalibTool.cxx:99
max
#define max(a, b)
Definition: cfImp.cxx:41
TileTriggerDefaultCalibTool::finalize
virtual StatusCode finalize() override
Definition: TileTriggerDefaultCalibTool.cxx:464
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TileCablingService::getInstance
static const TileCablingService * getInstance()
get pointer to service instance
Definition: TileCablingService.cxx:24
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileTriggerDefaultCalibTool::m_ietaTile
int(* m_ietaTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:78
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:146
IL1CaloOfflineTriggerTowerTools.h
TileTriggerDefaultCalibTool::m_ipmtL1Calo
int(* m_ipmtL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:90
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
TriggerTowerContainer.h
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TileTriggerDefaultCalibTool::m_ipmtTile
int(* m_ipmtTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:80
TileTriggerDefaultCalibTool::m_ietaL1Calo
int(* m_ietaL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:88
TileTriggerDefaultCalibTool::m_rawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
Definition: TileTriggerDefaultCalibTool.h:63
TileCalibUtils.h
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TileRawChannelUnit::PicoCoulombs
@ PicoCoulombs
Definition: TileRawChannelUnit.h:18
HWIdentifier
Definition: HWIdentifier.h:13
x
#define x
TileTriggerDefaultCalibTool::m_tileCablingService
const TileCablingService * m_tileCablingService
Definition: TileTriggerDefaultCalibTool.h:58
Identifier::is_valid
bool is_valid() const
Check if id is in a valid state.
TileTriggerDefaultCalibTool::m_tileID
const TileID * m_tileID
Definition: TileTriggerDefaultCalibTool.h:57
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
TileTriggerDefaultCalibTool::m_dqStatusKey
SG::ReadHandleKey< TileDQstatus > m_dqStatusKey
Definition: TileTriggerDefaultCalibTool.h:61
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileID.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TileCalibUtils::MAX_DRAWER
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
Definition: TileCalibUtils.h:139
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:269
TileRawChannelContainer.h
CaloLVL1_ID::phi
int phi(const Identifier id) const
return phi according to :
Definition: CaloLVL1_ID.h:659
TileDQstatus
Class that holds Data Quality fragment information and provides functions to extract the data quality...
Definition: TileDQstatus.h:49
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
TileTriggerDefaultCalibTool::m_ipmtCount
unsigned int m_ipmtCount
Definition: TileTriggerDefaultCalibTool.h:99
TileTriggerDefaultCalibTool::m_iphiTile
int(* m_iphiTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:79
TileHWID.h
TileTriggerDefaultCalibTool::m_triggerTowerContainerKey
SG::ReadHandleKey< xAOD::TriggerTowerContainer > m_triggerTowerContainerKey
Definition: TileTriggerDefaultCalibTool.h:65
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
TileCablingService.h
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
TileTriggerDefaultCalibTool::m_rmsL1CaloDAC
float(* m_rmsL1CaloDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:87
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
TileTriggerDefaultCalibTool::m_l1CaloTTIdTools
ToolHandle< LVL1::IL1CaloTTIdTools > m_l1CaloTTIdTools
Definition: TileTriggerDefaultCalibTool.h:68
TileTriggerDefaultCalibTool::m_nEvtL1Calo
int(* m_nEvtL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:91
xAOD::TriggerTower_v2
Description of TriggerTower_v2.
Definition: TriggerTower_v2.h:49
TileRawChannelUnit::MegaElectronVolts
@ MegaElectronVolts
Definition: TileRawChannelUnit.h:20
TileTriggerDefaultCalibTool::m_ipmt
unsigned int m_ipmt
Definition: TileTriggerDefaultCalibTool.h:98
TileTriggerDefaultCalibTool::m_meanL1CaloDAC
float(* m_meanL1CaloDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:86
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
makeComparison.rootFile
rootFile
Definition: makeComparison.py:27
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TileTriggerDefaultCalibTool::m_charge
float m_charge
Definition: TileTriggerDefaultCalibTool.h:97
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
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
TileCalibUtils::MAX_ROS
static const unsigned int MAX_ROS
Number of ROSs
Definition: TileCalibUtils.h:138
TileTriggerDefaultCalibTool::m_maxNTT
int m_maxNTT
Definition: TileTriggerDefaultCalibTool.h:51
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
python.OnlineISConfiguration.runType
def runType
Definition: OnlineISConfiguration.py:112
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileTriggerDefaultCalibTool::m_meanTileDAC
float(* m_meanTileDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:76
TileTriggerDefaultCalibTool::m_meanTile
float(* m_meanTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:74
TileTriggerDefaultCalibTool::finalizeCalculations
virtual StatusCode finalizeCalculations() override
Definition: TileTriggerDefaultCalibTool.cxx:376
HWIdentifier.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
CaloLVL1_ID::eta
int eta(const Identifier id) const
return eta according to :
Definition: CaloLVL1_ID.h:653
TileTriggerDefaultCalibTool::m_nevpmt
unsigned int m_nevpmt
Definition: TileTriggerDefaultCalibTool.h:52
TileDQstatus::cispar
const uint32_t * cispar() const
CIS parameters.
Definition: TileDQstatus.h:152
Example_ReadSampleNoise.ped
ped
Definition: Example_ReadSampleNoise.py:45
CaloLVL1_ID::pos_neg_z
int pos_neg_z(const Identifier id) const
return pos_neg_z according to :
Definition: CaloLVL1_ID.h:635
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloLVL1_ID.h
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
TileRawDataContainer::get_unit
UNIT get_unit() const
Definition: TileRawDataContainer.h:60
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TileTriggerDefaultCalibTool::m_rmsTileL1Calo
float(* m_rmsTileL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:94
TileTriggerDefaultCalibTool::m_rmsTile
float(* m_rmsTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:75
TileTriggerDefaultCalibTool::m_nEvtTile
int(* m_nEvtTile)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:81
TileTriggerDefaultCalibTool::execute
virtual StatusCode execute() override
Definition: TileTriggerDefaultCalibTool.cxx:135
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileTriggerDefaultCalibTool::initNtuple
virtual StatusCode initNtuple(int runNumber, int runType, TFile *rootfile) override
Definition: TileTriggerDefaultCalibTool.cxx:129
ReadHandle.h
Handle class for reading from StoreGate.
TileTriggerDefaultCalibTool::m_DACvalue
float m_DACvalue
Definition: TileTriggerDefaultCalibTool.h:102
AthAlgTool
Definition: AthAlgTool.h:26
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
TileTriggerDefaultCalibTool::m_ntupleID
std::string m_ntupleID
Definition: TileTriggerDefaultCalibTool.h:50
TileTriggerDefaultCalibTool::m_iphiL1Calo
int(* m_iphiL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:89
CaloLVL1_ID::tower_id
Identifier tower_id(int pos_neg_z, int sampling, int region, int eta, int phi) const
build a tower identifier
Definition: CaloLVL1_ID.h:429
TileTriggerDefaultCalibTool::m_rmsL1Calo
float(* m_rmsL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:85
CaloLVL1_ID::is_tile
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
Definition: CaloLVL1_ID.h:672
TileTriggerDefaultCalibTool::m_meanL1Calo
float(* m_meanL1Calo)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:84
TileTriggerDefaultCalibTool::m_nEvtGlobal
int m_nEvtGlobal
Definition: TileTriggerDefaultCalibTool.h:105
TileTriggerDefaultCalibTool::writeNtuple
virtual StatusCode writeNtuple(int runNumber, int runType, TFile *rootfile) override
Definition: TileTriggerDefaultCalibTool.cxx:429
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TileTriggerDefaultCalibTool::m_rmsTileDAC
float(* m_rmsTileDAC)[Tile::MAX_DRAWER][Tile::MAX_CHAN]
Definition: TileTriggerDefaultCalibTool.h:77