ATLAS Offline Software
TileTriggerDefaultCalibTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 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  //coverity[STACK_USE]
149  HWIdentifier chanIds[2][16][64][6];
150  memset(chanIds, 0, sizeof(chanIds));
151 
152  // Get event's ext CIS parameters
153  const uint32_t *cispar = dqStatus->cispar();
154 
155  // Mapping pmt2chan
156  int chan_bar[54] = {4 ,1 ,2 ,3 ,0 ,-1 ,
157  8 ,5 ,6 ,7 ,13,-1 ,
158  10,9 ,12,11,14,-1 ,
159  18,15,16,17,25,-1 ,
160  20,19,22,21,24,-1 ,
161  26,23,28,27,41,-1 ,
162  32,29,34,33,44,-1 ,
163  38,35,40,39,-1,-1 ,
164  36,37,42,47,46,45 };
165 
166  int chan_ext[36] = {4, 5 ,2 ,3 ,16,-1 ,
167  8, 9 ,17,-1,-1,-1 ,
168  6, 7 ,14,15,38,-1 ,
169  10,11,22,23,37,-1 ,
170  20,21,30,35,-1,-1 ,
171  31,32,39,36,41,40 };
172 
173  ATH_MSG_DEBUG ( "cispar[16] " << cispar[16] << ", cispas[17] " << cispar[17] << ", cispar[18] " << cispar[18] );
174  if (cispar[16] == 0x07){
175  if (cispar[18]>5) {
176  ATH_MSG_WARNING ( "Bad CISpar detected, using pmt index and charge from previous event: " << m_ipmt << " " << m_charge );
177  } else {
178  m_charge = cispar[17];
179  m_ipmt = cispar[18];
180  //m_itower = cispar[19];
181  //m_idrawer = cispar[20];
182  }
183  }
184  else if (cispar[16] == 0x107){ // bad CISpar
185  ATH_MSG_WARNING ( "Bad CISpar detected, using pmt index and charge from previous event: " << m_ipmt << " " << m_charge );
186  }
187  else
188  return StatusCode::SUCCESS;
189 
190  ATH_MSG_DEBUG ( "Pattern/ipmt/charge: " << cispar[16] << " " << m_ipmt << " " << m_charge );
191  if (m_charge<1.0e-20) {
192  ATH_MSG_WARNING ( "Bad charge " << m_charge << " - skipping event" );
193  return StatusCode::SUCCESS;
194  }
195 
196  if (m_ipmtOld != m_ipmt){
197  if (m_ipmt < m_ipmtOld) return StatusCode::SUCCESS;
198  m_ipmtCount = 1;
199  m_ipmtOld = m_ipmt;
200  }
201  else
202  m_ipmtCount += 1;
203 
204  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
205 
207 
208  // Create iterator over RawChannelContainer for Tile
209  TileRawChannelContainer::const_iterator itColl = (*container).begin();
210  TileRawChannelContainer::const_iterator itCollEnd = (*container).end();
212  TileRawChannelUnit::UNIT RChUnit = container->get_unit();
213 
214  // Go through all TileRawChannelCollections
215  for(; itColl != itCollEnd; ++itColl) {
216 
217  //go through all TileRawChannels in collection (loop over all channels)
218  it = (*itColl)->begin();
219  itEnd = (*itColl)->end();
220 
221  for(; it != itEnd; ++it) {
222 
223  // get hardware id to identify adc channel
224  HWIdentifier hwid=(*it)->adc_HWID();
225  //ATH_MSG_DEBUG("HWID1: "<< m_tileHWID->to_string(hwid));
226  int ros = m_tileHWID->ros(hwid); // LBA=1 LBC=2 EBA=3 EBC=4
227  int drawer = m_tileHWID->drawer(hwid); // 0 to 63
228  int chan = m_tileHWID->channel(hwid); // 0 to 47 channel not PMT
229  int gain = m_tileHWID->adc(hwid); // low=0 high=1
230  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
231 
232  // Get the PMT Id, create on the fly a mapping to the trigger tower id
233  // this mapping is to be used below in the loop over all trigger towers
234  Identifier tt_id = (*it)->tt_ID();
235  if (!tt_id.is_valid()) continue;
236  //Identifier pmt_id = (*it)->pmt_ID();
237 
238  int pos_neg_z = m_TT_ID->pos_neg_z(tt_id);
239  int ieta = m_TT_ID->eta(tt_id);
240  int iphi = m_TT_ID->phi(tt_id);
241 
242  if (ros < 3) {
243  if (ieta < 0 || ieta > 8) continue;
244  } else {
245  if (ieta < 9 || ieta > 14) continue;
246  }
247 
248  if((ros==1) || (ros==2)){
249  // (Manually fold constants to avoid cppcheck warning.)
250  if (chan != chan_bar[(ieta*6)/*-1*/ + m_ipmt/*+1*/]) continue; // check if the chan is firing
251  }
252  else if ((ros==3) || (ros==4)){
253  if ((chan != chan_ext[((ieta-9)*6)/*-1*/ + m_ipmt/*+1*/]) || (chan == 0)) continue; // check if the chan is firing
254  }
255  else
256  continue;
257 
258  float amp = (*it)->amplitude();
259  float amp_pC = m_tileToolEmscale->channelCalib(drawerIdx, chan, gain, amp, RChUnit, TileRawChannelUnit::PicoCoulombs);
260  //float amp_GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, gain, amp, RChUnit, TileRawChannelUnit::MegaElectronVolts) * 0.001;
261  //float pC2GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, 0, 1.0, TileRawChannelUnit::PicoCoulombs, TileRawChannelUnit::MegaElectronVolts) * 0.001;
262  //log << MSG::DEBUG << "ros " << ros << ", pos_neg_z " << pos_neg_z << ", drawer " << drawer <<" ieta " << ieta << ", chan " << chan << ", amplitude " << amp << endreq;
263 
264  m_meanTile[ros][drawer][chan] += amp_pC;
265  m_rmsTile[ros][drawer][chan] += square(amp_pC);
266  m_meanTileDAC[ros][drawer][chan] += (amp_pC-m_charge);
267  m_rmsTileDAC[ros][drawer][chan] += square(amp_pC-m_charge);
268  m_ietaTile[ros][drawer][chan] = ieta;
269  m_iphiTile[ros][drawer][chan] = iphi;
271  ++m_nEvtTile[ros][drawer][chan];
272 
273  if (pos_neg_z < 0) pos_neg_z = 0;
274  chanIds[pos_neg_z][ieta][iphi][m_ipmt] = hwid;
275  }
276 
277  } // end of loop over raw channels for Tile
278 
279  // loop over all L1Calo trigger channels, calculate the average and RMS
281  ATH_CHECK( triggerTowers.isValid() );
282 
283  int ntt = 0;
284 
285  for (const xAOD::TriggerTower* triggerTower : *triggerTowers) {
286 
287  if(ntt>m_maxNTT) break;
288 
289  if (!triggerTower->sampling()) continue; // is not hadronic
290 
291  double eta = triggerTower->eta();
292  double phi = triggerTower->phi();
293  double tt_ene = 0.; //triggerTower->e();
294 
295  // temporary, compute id out of the tower position
296  int pos_neg_z = m_l1CaloTTIdTools->pos_neg_z(eta);
297  int region = m_l1CaloTTIdTools->regionIndex(eta);
298  int ieta = m_l1CaloTTIdTools->etaIndex(eta);
299  int iphi = m_l1CaloTTIdTools->phiIndex(eta, phi);
300  Identifier tt_id = m_TT_ID->tower_id(pos_neg_z, 1, region, ieta, iphi);
301  //Not used, but could be useful, eg. coolId is used to get proper pedestal value
302  //Identifier id = m_ttTool->identifier(triggerTower->eta(), triggerTower->phi(), 1); //alternative way to get tt_id
303  //unsigned int coolId = m_ttTool->channelID(tt_id).id();
304 
305  // check if it is a Tile tower
306  if (tt_id.is_valid() && m_TT_ID->is_tile(tt_id))
307  ++ntt;
308  else continue;
309 
310  //compute L1Calo energy from ADC:
311  // - take max ADC value
312  // - subtract pedestal (about 32 ADC counts), apply 0.25 conversion factor to GeV
313  const std::vector<uint16_t>& adc = triggerTower->adc();
314  uint16_t max = *(std::max_element(adc.begin(), adc.end()));
315  uint16_t ped = adc.front();
316  tt_ene = (max - ped) * 0.25;
317  if (tt_ene < 0.) tt_ene = 0.;
318 
319  // check boundaries
320  if ((ieta < 0) || (ieta > 14)) continue;
321 
322  if (pos_neg_z < 0) pos_neg_z = 0;
323  HWIdentifier hwid = chanIds[pos_neg_z][ieta][iphi][m_ipmt];
324  int ros = m_tileHWID->ros(hwid); // LBA=1 LBC=2 EBA=3 EBC=4
325  if(ros >= 5 || ros <=0){continue;} // ignoring special channels, like those connected to inner MBTS in EBA/EBC 39-42,55-58
326  int drawer = m_tileHWID->drawer(hwid); // 0 to 63
327  int chan = m_tileHWID->channel(hwid); // 0 to 47 channel not PMT
328  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
329  float pC2GeV = m_tileToolEmscale->channelCalib(drawerIdx, chan, 0, 1.0, TileRawChannelUnit::PicoCoulombs, TileRawChannelUnit::MegaElectronVolts) * 0.001;
330  double tt_ene_pC = tt_ene / pC2GeV;
331 
332  //comparing results from triggerTower->e() and energy computed from ADC (default method)
333  if (triggerTower->e() == 0)
334  ATH_MSG_DEBUG ( "Tower partition " << ros
335  << ", drawer "<< drawer
336  << ", chan: " << chan
337  << ", eta "<< eta
338  << ", phi: " << phi
339  << ", amplitude : " << tt_ene
340  << ", old " << triggerTower->e()
341  << ", ratio old/new " << (tt_ene == 0 ? 0 : triggerTower->e() / tt_ene ));
342 
343  if ((ros==1) || (ros==2)){
344  if (chan != chan_bar[(ieta*6)-1 + m_ipmt+1]) continue; // check if the chan is firing
345  }
346  else if ((ros==3) || (ros==4)) {
347  if ((chan != chan_ext[((ieta-9)*6)-1 + m_ipmt+1]) || (chan == 0)) continue; // check if the chan is firing
348  }
349  else continue;
350 
351  m_meanL1Calo[ros][drawer][chan] += tt_ene_pC;
352  m_rmsL1Calo[ros][drawer][chan] += square(tt_ene_pC);
353  m_meanL1CaloDAC[ros][drawer][chan] += tt_ene_pC - m_charge;
354  m_rmsL1CaloDAC[ros][drawer][chan] += square(tt_ene_pC - m_charge);
355  m_ietaL1Calo[ros][drawer][chan] = ieta;
356  m_iphiL1Calo[ros][drawer][chan] = iphi;
359 
360  }// end of trigger tower loop for L1Calo
361 
362  ++m_nEvtGlobal; // Number of MaxEvt from Athena
363 
364  for (int ros=0;ros<5;ros++) {
365  for (int drawer=0;drawer<64;drawer++) {
366  for (int chan=0;chan<48;chan++) {
367  // ???
369  }
370  }
371  }
372 
373  return StatusCode::SUCCESS;
374 
375 }
376 
378 {
379  ATH_MSG_INFO ( "finalizeCalculations()" );
380 
381  for (int ros=0;ros<5;ros++) {
382  for (int drawer=0;drawer<64;drawer++) {
383  for (int chan=0;chan<48;chan++) {
384  if (m_nEvtTile[ros][drawer][chan] > 0){
389  }
390 
391  if(m_rmsTile[ros][drawer][chan] <= square(m_meanTile[ros][drawer][chan]))
392  m_rmsTile[ros][drawer][chan] = 0;
393  else
394  m_rmsTile[ros][drawer][chan] = sqrt(m_rmsTile[ros][drawer][chan] - square(m_meanTile[ros][drawer][chan]));
395 
396  if(m_rmsTileDAC[ros][drawer][chan] <= square(m_meanTileDAC[ros][drawer][chan]))
397  m_rmsTileDAC[ros][drawer][chan] = 0;
398  else
400 
401  if (m_nEvtL1Calo[ros][drawer][chan] > 0){
406  }
407 
408  if(m_rmsL1Calo[ros][drawer][chan] <= square(m_meanL1Calo[ros][drawer][chan]))
409  m_rmsL1Calo[ros][drawer][chan] = 0;
410  else
412 
414  m_rmsL1CaloDAC[ros][drawer][chan] = 0;
415  else
417 
421  else
423  }
424  }
425  }
426 
427  return StatusCode::SUCCESS;
428 }
429 
431 {
432  ATH_MSG_INFO ( "writeNtuple(" << runNumber << "," << runType << "," << rootFile << ")" );
433 
434  TTree *t = new TTree(m_ntupleID.c_str(), "TileCalib-Ntuple");
435  TString ind = TString::Format("[%d][%d][%d]",Tile::MAX_ROS,Tile::MAX_DRAWER,Tile::MAX_CHAN);
436 
437  t->Branch("meanTile",m_meanTile,ind.Format("meanTile%s/F",(const char *)ind));
438  t->Branch("rmsTile",m_rmsTile,ind.Format("rmsTile%s/F",(const char *)ind));
439  t->Branch("meanTileDAC",m_meanTileDAC,ind.Format("meanTileDAC%s/F",(const char *)ind));
440  t->Branch("rmsTileDAC",m_rmsTileDAC,ind.Format("rmsTileDAC%s/F",(const char *)ind));
441  t->Branch("ietaTile",m_ietaTile,ind.Format("ietaTile%s/I",(const char *)ind));
442  t->Branch("iphiTile",m_iphiTile,ind.Format("iphiTile%s/I",(const char *)ind));
443  t->Branch("ipmtTile",m_ipmtTile,ind.Format("ipmtTile%s/I",(const char *)ind));
444  t->Branch("nEvtTile",m_nEvtTile,ind.Format("nEvtTile%s/I",(const char *)ind));
445  t->Branch("meanL1Calo",m_meanL1Calo,ind.Format("meanL1Calo%s/F",(const char *)ind));
446  t->Branch("rmsL1Calo",m_rmsL1Calo,ind.Format("rmsL1Calo%s/F",(const char *)ind));
447  t->Branch("meanL1CaloDAC",m_meanL1CaloDAC,ind.Format("meanL1CaloDAC%s/F",(const char *)ind));
448  t->Branch("rmsL1CaloDAC",m_rmsL1CaloDAC,ind.Format("rmsL1CaloDAC%s/F",(const char *)ind));
449  t->Branch("ietaL1Calo",m_ietaL1Calo,ind.Format("ietaL1Calo%s/I",(const char *)ind));
450  t->Branch("iphiL1Calo",m_iphiL1Calo,ind.Format("iphiL1Calo%s/I",(const char *)ind));
451  t->Branch("ipmtL1Calo",m_ipmtL1Calo,ind.Format("ipmtL1Calo%s/I",(const char *)ind));
452  t->Branch("nEvtL1Calo",m_nEvtL1Calo,ind.Format("nEvtL1Calo%s/I",(const char *)ind));
453  t->Branch("meanTileL1Calo",m_meanTileL1Calo,ind.Format("meanTileL1Calo%s/F",(const char *)ind));
454  t->Branch("rmsTileL1Calo",m_rmsTileL1Calo,ind.Format("rmsTileL1Calo%s/F",(const char *)ind));
455  t->Branch("nEvtGlobal",&m_nEvtGlobal,"nEvtGlobal/I");
456  t->Branch("DACvalue",&m_DACvalue,"DACvalue/F");
457 
458  // Fill with current values (i.e. tree will have only one entry for this whole run)
459  t->Fill();
460  t->Write();
461 
462  return StatusCode::SUCCESS;
463 }
464 
466 {
467  ATH_MSG_DEBUG ( "finalizeTrigger()" );
468  return StatusCode::SUCCESS;
469 }
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
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
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
TileTriggerDefaultCalibTool::finalize
virtual StatusCode finalize() override
Definition: TileTriggerDefaultCalibTool.cxx:465
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
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:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
StateLessPT_NewConfig.Format
Format
Definition: StateLessPT_NewConfig.py:149
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:109
TriggerTowerContainer.h
skel.it
it
Definition: skel.GENtoEVGEN.py:407
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
ReadBchFromCrest.ros
ros
Definition: ReadBchFromCrest.py:73
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
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
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:270
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:93
TileCablingService.h
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
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
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
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:80
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
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:377
HWIdentifier.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
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
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
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:430
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
Identifier
Definition: IdentifierFieldParser.cxx:14