ATLAS Offline Software
TileRawChannelToTTL1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //*****************************************************************************
6 // Filename : TileRawChannelToTTL1.cxx
7 // Author : Pedro Amaral, based on TileHitToTTL1
8 // Created : Feb, 2005
9 //
10 // DESCRIPTION:
11 // Created to simulate the Tile Level 1 Trigger Towers (TTL1), which are
12 // hardware sums of the Tile channels, about 3 or 4 channels per tower.
13 // The towers are read out in N time slices, with N=9 as a default.
14 // Noise, pedestal and threshold counts are included, in units of mV.
15 // Units into TTL1 are in mV.
16 //
17 // Option to have variable phases for each trigger tower, of the sampling
18 // of the TTL1 shape.
19 // Default = option turned off, all phases set to zero.
20 // to turn on, set TileConstantTTL1Shape = False, and
21 // phase info is then read from TileInfo.
22 //
23 // HISTORY:
24 //
25 // BUGS:
26 //
27 //*****************************************************************************
28 
29 // Tile includes
30 // small hack to be able to modify original TileRawChannel
31 #include "TileRawChannelToTTL1.h"
32 
34 
43 
44 // Calo includes
45 #include "CaloIdentifier/TileID.h"
47 
48 // Atlas includes
49 #include "StoreGate/ReadHandle.h"
50 #include "StoreGate/WriteHandle.h"
52 
53 //CLHEP includes
54 #include <CLHEP/Random/Randomize.h>
55 
56 using namespace CLHEP;
57 
58 //C++ STL includes
59 #include <vector>
60 
61 //
62 // Constructor
63 //
64 TileRawChannelToTTL1::TileRawChannelToTTL1(const std::string& name, ISvcLocator* pSvcLocator)
65  : AthAlgorithm(name, pSvcLocator)
66  , m_tileID(0)
67  , m_tileHWID(0)
68  , m_tileInfo(0)
69  , m_TT_ID(0)
70  , m_phase(0)
71  , m_nSamp(0)
72  , m_iTrig(0)
73  , m_tileBadChanTool("TileBadChanTool")
74  , m_tileToolEmscale("TileCondToolEmscale")
75 {
76  declareProperty("TileInfoName", m_infoName = "TileInfo");
77  declareProperty("TileConstantTTL1Shape", m_constantTTL1shape = true);
78  declareProperty("TileBadChanTool", m_tileBadChanTool);
79  declareProperty("TileCondToolEmscale", m_tileToolEmscale);
80 }
81 
83 }
84 
85 //
86 // Alg standard initialize function
87 //
89 
90  // retrieve CaloLVL1_ID, TileID, TileHWID helpers and TileIfno from det store
91 
95 
96  //=== get TileBadChanTool
97  CHECK( m_tileBadChanTool.retrieve() );
98 
99  //=== get TileCondToolEmscale
100  CHECK( m_tileToolEmscale.retrieve() );
101 
103 
104 
105  // Here get already TTL1 Shapes, so as not to perform this on every execute:
106  m_nSamp = m_tileInfo->NdigitSamples(); // number of time slices for each chan
107  m_iTrig = m_tileInfo->ItrigSample(); // index of the triggering time slice
108  m_TTL1Shape.resize(m_nSamp, 0.);
109  if (m_constantTTL1shape) {
110  m_phase = 0.0;
112  for (int jsamp = 0; jsamp < m_nSamp; ++jsamp) {
113  ATH_MSG_DEBUG( "jsamp=" << jsamp << " ttl1shape=" << m_TTL1Shape[jsamp] );
114  }
115  }
116 
118  ATH_CHECK( m_ttl1ContainerKey.initialize() );
119 
120  ATH_MSG_INFO( "TileRawChannelToTTL1 initialization completed" );
121 
122  return StatusCode::SUCCESS;
123 }
124 /*==========================================================================*/
125 //
126 // Begin Execution Phase.
127 //
129 
130  ATH_MSG_DEBUG( "Executing TileRawChannelToTTL1");
131 
132  /*......................................................*/
133  // Step 2: Get all global parameters that will be needed for processing.
134  /* Get TileNoise flag from TileInfo (true => generate noise in TileDigits) */
135  bool tileNoise = m_tileInfo->TileNoise();
136  /* Get TileZeroSuppress flag from TileInfo
137  (true => apply threshold to Digits) */
138  bool tileThresh = m_tileInfo->TileZeroSuppress();
139  // declare array for random number generation for noise in samples.
140  double Rndm[16]; // Can't use variable size array
141  // declare TTL1 parameters to be obtained from TileInfo
142  float ttL1Calib, ttL1NoiseSigma, ttL1Ped, ttL1Thresh;
143 
144  ATH_MSG_DEBUG( "nSamp=" << m_nSamp
145  << ", iTrig=" << m_iTrig
146  << ", tileNoise=" << ((tileNoise) ? "true" : "false")
147  << ", tileThresh=" << ((tileThresh) ? "true" : "false") );
148 
149  /*......................................................*/
150  // step 3: Get rawChannel container from TES and create TTL1 container
151  /* Note that rawChannel container has 256 collections (one for each drawer),
152  but TTL1 container has no collections and no structure. */
154  ATH_CHECK( rawChannelContainer.isValid() );
155 
156  TileRawChannelUnit::UNIT rChUnit = rawChannelContainer->get_unit();
157  //TileFragHash::TYPE rChType = rawChannelContainer->get_type();
158 
160  ATH_CHECK( ttl1Container.record(std::make_unique<TileTTL1Container>()) );
161  ATH_MSG_DEBUG( "TileTTL1Container registered successfully (" << m_ttl1ContainerKey.key() << ")" );
162 
163  /*......................................................*/
164  // Step 4: Create temporary arrays for processing signals.
165  /* Create array for all TT amplitudes in a single drawer. */
166  Identifier ttId[16]; // array of TT identifiers in a single drawer
167  float ttAmp[16]; // array of all TT amplitudes in a single drawer
168  bool ttRawChannel[16]; // array of TT occupancy in a single drawer
169  int nTT; // number of rawChannel towers in this drawer.
170  int nRawChannel; // number of rawChannels in this drawer.
171  int nIgnore; // number of ignored rawChannels in this drawer.
172  int nTTTot = 0; // total number of rawChannel towers.
173  int nRawChannelTot = 0; // total number of rawChannels.
174  int nIgnoreTot = 0; // total number of ignored rawChannels.
175  float ttAmpTot = 0; // total energy in good level-1 towers.
176  float ttAmpTotIg = 0.; // total energy in "ignored" level-1 towers.
177  int minieta, maxieta, posneg;
178 
179  /* Create array for the nSamp time-samples of a single tower. */
180  std::vector<float> ttL1samples(m_nSamp);
181 
182  /*......................................................*/
183  // Step 5: Begin loop over all collections (collection = electronic drawer).
184  for (const TileRawChannelCollection* rawChannelCollection : *rawChannelContainer) {
185 
186  HWIdentifier drawer_id = m_tileHWID->drawer_id(rawChannelCollection->identify());
187  int ros = m_tileHWID->ros(drawer_id);
188  int drawer = m_tileHWID->drawer(drawer_id);
189  int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
190 
191  switch (ros) {
193  posneg = +1;
194  minieta = 0;
195  maxieta = 8;
196  break;
198  posneg = -1;
199  minieta = 0;
200  maxieta = 8;
201  break;
203  posneg = +1;
204  minieta = 9;
205  maxieta = 14;
206  break;
208  posneg = -1;
209  minieta = 9;
210  maxieta = 14;
211  break;
212  default:
213  posneg = minieta = maxieta = 0;
214  }
215 
216  /* Zero temporary array of trigger tower amplitudes (TTL1amp) for this collection. */
217  memset(ttAmp, 0, sizeof(ttAmp));
218  memset(ttRawChannel, 0, sizeof(ttRawChannel));
219  nTT = nIgnore = nRawChannel = 0;
220 
221  /*......................................................*/
222  // Step 6: Iterate over all rawChannels in this collection, summing amps for each tower.
223  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
224 
225  /* Get rawChannel Identifier */
226  HWIdentifier hwid = rawChannel->adc_HWID();
227  int channel = m_tileHWID->channel(hwid);
228  int adc = m_tileHWID->adc(hwid);
229 
230  // note that amplitude() is in unknown units (can be even online MeV), convert it to MeV first
231  float e = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc,
232  rawChannel->amplitude(),
233  rChUnit,
235 
236  // convert MeV to pCb
237  float q = e / m_tileToolEmscale->channelCalib(drawerIdx, channel, adc, 1.0,
239 
240  int ieta = 999;
241  int iphi = 999;
242 
243  Identifier pmt_id = rawChannel->pmt_ID();
244  if (pmt_id.is_valid() && m_tileID->section(pmt_id) < 4
245  && m_tileID->section(pmt_id) > 0) {
246 
247  /* Get TT Identifier for this pmt */
248  Identifier tt_id = rawChannel->tt_ID();
249  /* Get eta-phi indices of TTL1 for this channel. */
250  ieta = m_TT_ID->eta(tt_id);
251  iphi = m_TT_ID->phi(tt_id); // (same as module).
252  if (iphi != drawer)
253  ATH_MSG_ERROR( "drawer=" << drawer
254  << ", iphi=" << iphi
255  << "id=" << m_tileID->to_string(pmt_id) );
256 
257  if (ttRawChannel[ieta]) { // already exists - just add charge
258  ttAmp[ieta] += q;
259  } else { // rawChannel in new TT
260  ttId[ieta] = tt_id;
261  ttRawChannel[ieta] = true;
262  ttAmp[ieta] = q;
263  if (ieta >= minieta && ieta <= maxieta)
264  ++nTT; // count only valid TT
265  }
266  ++nRawChannel;
267  if (ieta < minieta || ieta > maxieta)
268  ++nIgnore;
269  //Sum cell energy for comparison to other algos.
270  if (ieta >= minieta && ieta <= maxieta) {
271  ttAmpTot += e;
272  } else {
273  ttAmpTotIg += e;
274  }
275 
276  if (msgLvl(MSG::VERBOSE)) {
277  /* Diagnostic checks: */
278  int side = m_tileID->side(pmt_id);
279  int tower = m_tileID->tower(pmt_id);
280  int sample = m_tileID->sample(pmt_id);
281  int pmt = m_tileID->pmt(pmt_id);
282  int channel = m_tileHWID->channel(hwid);
283  msg(MSG::VERBOSE) << "New RawChannel:"
284  << " ros=" << ros
285  << ", drawer=" << drawer
286  << ", ch=" << channel
287  << ", side=" << side
288  << ", tower=" << tower
289  << ", sample=" << sample
290  << ", pmt=" << pmt
291  << ", e=" << e
292  << ", ie=" << ieta
293  << ", ip=" << iphi;
294 
295  if (ieta >= minieta && ieta <= maxieta)
296  msg(MSG::VERBOSE) << endmsg;
297  else
298  msg(MSG::VERBOSE) << " Outside limits" << endmsg;
299  }
300 
301  } else {
302  ATH_MSG_VERBOSE( "Tile Channel with no tt_id" );
303  }
304 
305  } // end loop over rawChannels in this drawer.
306 
307  nTTTot += nTT;
308  nRawChannelTot += nRawChannel;
309  nIgnoreTot += nIgnore;
310 
311  ATH_MSG_VERBOSE( "Statistics for"
312  << " ROS=" << ros
313  << ", drawer=" << drawer
314  << "; posneg=" << posneg
315  << ", minieta=" << minieta
316  << ", maxieta=" << maxieta
317  << "; nTT=" << nTT
318  << ", nRawChannel=" << nRawChannel
319  << ", nIgnore=" << nIgnore );
320 
321  /*......................................................*/
322  // Step 7: We now have all the TTL1 amplitudes for this drawer.
323  // Loop over towers to produce the electronics signals (= time samples).
324  // If tileNoise is requested, generate random numbers to give noise
325  for (int ieta = minieta; ieta <= maxieta; ++ieta) {
326  int iphi = drawer;
327  bool Good = ttRawChannel[ieta];
328  if (tileNoise)
329  Good = true;
330  if (Good) {
331  if (!ttRawChannel[ieta])
332  ttId[ieta] = m_TT_ID->tower_id(posneg, 1, 0, ieta, drawer);
333 
334  ttL1NoiseSigma = m_tileInfo->TTL1NoiseSigma(ttId[ieta]);
335  ttL1Thresh = m_tileInfo->TTL1Thresh(ttId[ieta]);
336  ttL1Ped = m_tileInfo->TTL1Ped(ttId[ieta]);
337  ttL1Calib = m_tileInfo->TTL1Calib(ttId[ieta]);
338  ttAmp[ieta] *= ttL1Calib; // convert pCb to mV
339  if (!m_constantTTL1shape) {
340  // Get phase of the TTL1 tower. default=0,
341  // meaning L1Cal Trigger samples TTL1 pulse right at the peak.
342  // ieta: barrel=0-8, ext.barrel=9-14
343  m_phase = m_tileInfo->ttl1Phase(posneg, ieta, iphi);
344  /* Include shaping fuction, pedestal, and noise. */
346  }
347  if (tileNoise)
348  CLHEP::RandGauss::shootArray(m_nSamp, Rndm);
349  for (int jsamp = 0; jsamp < m_nSamp; ++jsamp) {
350  ttL1samples[jsamp] = ttAmp[ieta] * m_TTL1Shape[jsamp] + ttL1Ped;
351  if (tileNoise)
352  ttL1samples[jsamp] += ttL1NoiseSigma * Rndm[jsamp];
353  } // end loop over samples
354  if (tileThresh) {
355  if (ttL1samples[m_iTrig] - ttL1Ped < ttL1Thresh)
356  Good = false;
357  }
358  } // end first "Good" section.
359  /* Create the new TTL1 object and store in TTL1Container. */
360  if (Good) {
361  ATH_MSG_DEBUG( " TTL1: "
362  << " ros=" << ros
363  << ", ieta=" << ieta
364  << ", iphi=" << iphi
365  << ", rawChannelTrue=" << ttRawChannel[ieta]
366  << ", Good=" << Good
367  << ", amp0=" << ttAmp[ieta]
368  << ", digitIn=" << ttL1samples[m_iTrig] );
369 
370  /*
371  The following lines are commented out.
372 
373  if (msgLvl(MSG::VERBOSE)) {
374  msg(MSG::VERBOSE) << " ttL1Digits=";
375  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
376  msg(MSG::VERBOSE) << ttL1samples[jsamp] << " ";
377  }
378  msg(MSG::VERBOSE) << endmsg;
379 
380  msg(MSG::VERBOSE) << " Rndm=";
381  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
382  msg(MSG::VERBOSE) << Rndm[jsamp] << " ";
383  }
384  msg(MSG::VERBOSE) << endmsg;
385  }
386  The preceding lines are commented out
387  */
388 
389  ttl1Container->push_back(std::make_unique<TileTTL1>(ttId[ieta], ttL1samples));
390  } // end second "Good" section.
391  } // end loop over towers
392  } // end loop over collections
393 
394  // Execution completed.
395  ATH_MSG_DEBUG( "TileRawChannelToTTL1 execution completed." );
396  ATH_MSG_DEBUG( " nTTTot=" << nTTTot
397  << " nRawChannelTot=" << nRawChannelTot
398  << " nIgnoreTot=" << nIgnoreTot
399  << " ttAmpTot=" << ttAmpTot
400  << " ttAmpTotIg=" << ttAmpTotIg
401  << " =>eneTot=" << ttAmpTot + ttAmpTotIg );
402 
403  return StatusCode::SUCCESS;
404 }
405 
407 
408  ATH_MSG_INFO( "TileRawChannelToTTL1::finalize() end" );
409 
410  return StatusCode::SUCCESS;
411 }
412 
413 
414 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileRawChannel.h
TileRawChannelToTTL1::m_ttl1ContainerKey
SG::WriteHandleKey< TileTTL1Container > m_ttl1ContainerKey
Definition: TileRawChannelToTTL1.h:73
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TileInfo::NdigitSamples
int NdigitSamples() const
Returns the number of sammples (digits) per event.
Definition: TileInfo.h:75
TileRawChannelToTTL1::m_tileInfo
const TileInfo * m_tileInfo
Definition: TileRawChannelToTTL1.h:81
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Tile_Base_ID::pmt
int pmt(const Identifier &id) const
Definition: Tile_Base_ID.cxx:180
TileRawChannelToTTL1::m_nSamp
int m_nSamp
Definition: TileRawChannelToTTL1.h:86
ReadBchFromCool.pmt
pmt
Definition: ReadBchFromCool.py:62
Tile_Base_ID::side
int side(const Identifier &id) const
Definition: Tile_Base_ID.cxx:153
Tile_Base_ID::sample
int sample(const Identifier &id) const
Definition: Tile_Base_ID.cxx:171
AthCommonMsg< Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
TileFragHash.h
TileRawChannelToTTL1::m_tileBadChanTool
ToolHandle< ITileBadChanTool > m_tileBadChanTool
Tile Bad Channel tool.
Definition: TileRawChannelToTTL1.h:89
TileInfo.h
TileRawChannelToTTL1::m_tileToolEmscale
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
main Tile Calibration tool
Definition: TileRawChannelToTTL1.h:90
TileCalibUtils.h
Tile_Base_ID::tower
int tower(const Identifier &id) const
Definition: Tile_Base_ID.cxx:165
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TileRawChannelUnit::PicoCoulombs
@ PicoCoulombs
Definition: TileRawChannelUnit.h:18
TileRawChannelToTTL1::m_iTrig
int m_iTrig
Definition: TileRawChannelToTTL1.h:87
TileRawChannelToTTL1::finalize
StatusCode finalize()
Definition: TileRawChannelToTTL1.cxx:406
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
TileInfo::ttl1Shape
const std::vector< double > & ttl1Shape() const
Return bunch-X TTL1 shape vector.
Definition: TileInfo.h:204
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileID.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TRT::Hit::side
@ side
Definition: HitInfo.h:83
TileRawChannelContainer.h
CaloLVL1_ID::phi
int phi(const Identifier id) const
return phi according to :
Definition: CaloLVL1_ID.h:659
TileRawChannelToTTL1::m_tileID
const TileID * m_tileID
Definition: TileRawChannelToTTL1.h:79
WriteHandle.h
Handle class for recording to StoreGate.
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
TileInfo::ItrigSample
int ItrigSample() const
The sample at which the pulse should ideally peak.
Definition: TileInfo.h:77
TileRawChannelToTTL1::~TileRawChannelToTTL1
virtual ~TileRawChannelToTTL1()
Definition: TileRawChannelToTTL1.cxx:82
TileHWID.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
TileInfo::TTL1NoiseSigma
double TTL1NoiseSigma(const Identifier &) const
Returns the sigma (in mV) of Noise in TTL1 adcs.
Definition: TileInfo.h:121
TileCondToolEmscale.h
TileRawChannelToTTL1::initialize
StatusCode initialize()
Definition: TileRawChannelToTTL1.cxx:88
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
TileRawChannelUnit::MegaElectronVolts
@ MegaElectronVolts
Definition: TileRawChannelUnit.h:20
TileRawChannel
Definition: TileRawChannel.h:35
TileInfo::TTL1Ped
double TTL1Ped(const Identifier &) const
Returns the pedestal (in mV) for TTL1 adcs.
Definition: TileInfo.h:139
TileHWID::EXTBAR_NEG
@ EXTBAR_NEG
Definition: TileHWID.h:71
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
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
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
AthAlgorithm
Definition: AthAlgorithm.h:47
TileHWID::drawer_id
HWIdentifier drawer_id(int frag) const
ROS HWIdentifer.
Definition: TileHWID.cxx:186
TileRawChannelToTTL1.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
errorcheck.h
Helpers for checking error return status codes and reporting errors.
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
TileRawChannelToTTL1::m_infoName
std::string m_infoName
Definition: TileRawChannelToTTL1.h:76
TileHWID::BARREL_NEG
@ BARREL_NEG
Definition: TileHWID.h:69
TileHWID::EXTBAR_POS
@ EXTBAR_POS
Definition: TileHWID.h:70
TileRawChannelToTTL1::m_TTL1Shape
std::vector< double > m_TTL1Shape
Definition: TileRawChannelToTTL1.h:84
CaloLVL1_ID::eta
int eta(const Identifier id) const
return eta according to :
Definition: CaloLVL1_ID.h:653
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
TileInfo::TileNoise
bool TileNoise() const
Noise switched on/off?
Definition: TileInfo.h:87
TileHWID::BARREL_POS
@ BARREL_POS
Definition: TileHWID.h:68
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
TileBchPrbs.h
CaloLVL1_ID.h
TileInfo::TileZeroSuppress
bool TileZeroSuppress() const
Zero suppression switched on/off?
Definition: TileInfo.h:91
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
Tile_Base_ID::to_string
std::string to_string(const Identifier &id, int level=0) const
Definition: Tile_Base_ID.cxx:52
TileRawChannelToTTL1::TileRawChannelToTTL1
TileRawChannelToTTL1(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileRawChannelToTTL1.cxx:64
TileRawChannelToTTL1::m_constantTTL1shape
bool m_constantTTL1shape
Definition: TileRawChannelToTTL1.h:77
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
TileRawChannelToTTL1::execute
StatusCode execute()
Definition: TileRawChannelToTTL1.cxx:128
extractSporadic.q
list q
Definition: extractSporadic.py:98
TileRawChannelToTTL1::m_phase
double m_phase
Definition: TileRawChannelToTTL1.h:85
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileRawChannelToTTL1::m_TT_ID
const CaloLVL1_ID * m_TT_ID
Definition: TileRawChannelToTTL1.h:82
TileAANtupleConfig.rawChannelContainer
rawChannelContainer
Definition: TileAANtupleConfig.py:120
TileRawChannelToTTL1::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileRawChannelToTTL1.h:80
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
Tile_Base_ID::section
int section(const Identifier &id) const
Definition: Tile_Base_ID.cxx:147
ReadHandle.h
Handle class for reading from StoreGate.
ITileBadChanTool.h
TileRawChannelToTTL1::m_rawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
Definition: TileRawChannelToTTL1.h:69
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
TileInfo::TTL1Thresh
double TTL1Thresh(const Identifier &) const
Returns the threshold (in mV) for TTL1 adcs.
Definition: TileInfo.h:130
TileInfo::TTL1Calib
double TTL1Calib(const Identifier &) const
Returns the factor which converts amplitude in pCb to mV in TTL1.
Definition: TileInfo.h:112
TileInfo::ttl1Phase
double ttl1Phase(const int, const int, const int) const
NGO Need description.
Definition: TileInfo.h:275