ATLAS Offline Software
TileDigitsToTTL1.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //*****************************************************************************
6 // Filename : TileDigitsToTTL1.cxx
7 // Author : Pedro Amaral following example from TileHitToTTL1
8 // Created : Feb, 2005
9 //
10 // DESCRIPTION:
11 // Created to emulate the Tile Level 1 Trigger Towers (TTL1), which are
12 // hardware sums of the Tile channels/pmts, from 4 to 6 channels per tower.
13 // The towers are read out in N time slices, with N=9 as a default.
14 // Each TileDigit contains the corresponding N slices.
15 // The resulting TTL1 object should be used by L1Calo simulation
16 // This is the "data" (ie, digits) version of the simulation (ie, hit) algorithm
17 // Output object TTL1 should be in units of mV.
18 //
19 // For each digit, the first time sample (0) is taken as pedestal, and subtracted
20 // from all the digits. This assumes that the pedestal is introduced by the digitizer
21 // The digits are then converted from ADC counts to pCb.
22 // Then digits with the same eta, within the same drawer are summed, time sample
23 // by time sample. ie, sum is done in charge.
24 // In the end, the pCb are converted back to mV.
25 // And noise of the adder (in mV) is added.
26 //
27 // HISTORY:
28 //
29 // BUGS:
30 //
31 //*****************************************************************************
32 
33 // Tile includes
34 #include "TileDigitsToTTL1.h"
39 
40 // Calo includes
41 #include "CaloIdentifier/TileID.h"
43 
44 // Atlas includes
45 #include "StoreGate/ReadHandle.h"
46 #include "StoreGate/WriteHandle.h"
48 
49 //CLHEP includes
50 #include <CLHEP/Random/Randomize.h>
51 
52 //C++ STL includes
53 #include <vector>
54 #include <memory>
55 
56 
57 //
58 // Constructor
59 //
60 TileDigitsToTTL1::TileDigitsToTTL1(const std::string& name, ISvcLocator* pSvcLocator)
61  : AthAlgorithm(name, pSvcLocator)
62  , m_tileID(0)
63  , m_tileHWID(0)
64  , m_tileInfo(0)
65  , m_TT_ID(0)
66  , m_tileToolEmscale("TileCondToolEmscale")
67 {
68  // which CIS constants will be used for calibration
70 
71  declareProperty("TileInfoName", m_infoName = "TileInfo");
72  declareProperty("TileCondToolEmscale" , m_tileToolEmscale);
73 }
74 
76 }
77 
78 //
79 // Alg standard initialize function
80 //
82 
83  // retrieve CaloLVL1_ID, TileID, TileHWID helpers and TileIfno from det store
84 
88 
89  //=== get TileCondToolEmscale
90  CHECK( m_tileToolEmscale.retrieve() );
91 
93 
95  ATH_CHECK(m_ttl1ContainerKey.initialize());
96 
97  ATH_MSG_INFO( "TileDigitsToTTL1 initialisation completed" );
98 
99  return StatusCode::SUCCESS;
100 }
101 
102 /*==========================================================================*/
103 //
104 // Begin Execution Phase.
105 //
107 
108  ATH_MSG_DEBUG( "Executing TileDigitsToTTL1" );
109 
110  /*......................................................*/
111  // Step 2: Get all global parameters that will be needed for processing.
112  int nSamp = m_tileInfo->NdigitSamples(); // number of time slices for each chan
113  int iTrig = m_tileInfo->ItrigSample(); // index of the triggering time slice
114 
115  /* Get TileNoise flag from TileInfo (true => generate noise in TileDigits) */
116  bool tileNoise = m_tileInfo->TileNoise();
117  /* Get TileZeroSuppress flag from TileInfo
118  (true => apply threshold to Digits) */
119  bool tileThresh = m_tileInfo->TileZeroSuppress();
120  // declare array for random number generation for noise in samples.
121  double Rndm[16]; // Can't use variable size array
122 
123  ATH_MSG_DEBUG( "nSamp=" << nSamp
124  << ", iTrig=" << iTrig
125  << ", tileNoise=" << ((tileNoise) ? "true" : "false")
126  << ", tileThresh=" << ((tileThresh) ? "true" : "false") );
127 
128  /*......................................................*/
129  // step 3: Get digit container from TES and create TTL1 container
130  /* Note that digit container has 256 collections (one for each drawer),
131  but TTL1 container has no collections and no structure. */
133  ATH_CHECK( digitsContainer.isValid() );
134 
136  ATH_CHECK( ttl1Container.record(std::make_unique<TileTTL1Container>()) );
137  ATH_MSG_DEBUG( "TileTTL1Container registered successfully (" << m_ttl1ContainerKey.key() << ")" );
138 
139  /*......................................................*/
140  // Step 4: Create temporary arrays for processing signals.
141  /* Create array for all TT amplitudes in a single drawer. */
142  Identifier ttId[16]; // array of TT identifiers in a single drawer
143  bool ttDigit[16]; // array of TT occupancy in a single drawer
144  int nTT; // number of digit towers in this drawer.
145  int nDigit; // number of digits in this drawer.
146  int nIgnore; // number of ignored digits in this drawer.
147  int nTTTot = 0; // total number of digit towers.
148  int nDigitTot = 0; // total number of digits.
149  int nIgnoreTot = 0; // total number of ignored digits.
150  float ttAmpTot = 0; // total energy in good level-1 towers.
151  float ttAmpTotIg = 0.; // total energy in "ignored" level-1 towers.
152  int minieta, maxieta, posneg;
153 
154  /* Create array for the nSamp time-samples of a single tower. */
155  std::vector<float> ttL1samples(nSamp);
156 
157  /*......................................................*/
158  // Step 5: Begin loop over all collections (collection = electronic drawer).
159  for (const TileDigitsCollection* digitsCollection : *digitsContainer) {
160 
161  HWIdentifier drawer_id = m_tileHWID->drawer_id(digitsCollection->identify());
162  int ros = m_tileHWID->ros(drawer_id);
163  int drawer = m_tileHWID->drawer(drawer_id);
164  int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
165 
166  switch (ros) {
168  posneg = +1;
169  minieta = 0;
170  maxieta = 8;
171  break;
173  posneg = -1;
174  minieta = 0;
175  maxieta = 8;
176  break;
178  posneg = +1;
179  minieta = 9;
180  maxieta = 14;
181  break;
183  posneg = -1;
184  minieta = 9;
185  maxieta = 14;
186  break;
187  default:
188  posneg = minieta = maxieta = 0;
189  }
190 
191  /* Zero temporary array of trigger tower amplitudes (TTL1amp) for this collection. */
192  memset(ttDigit, 0, sizeof(ttDigit));
193  std::vector<std::vector<float> > myttAmp(16);
194  for (int ii = 0; ii < 16; ++ii)
195  myttAmp[ii].resize(nSamp);
196 
197  nTT = nIgnore = nDigit = 0;
198 
199  /*......................................................*/
200  // Step 6: Iterate over all digits in this collection, summing amps for each tower.
201  for (const TileDigits* tile_digits : *digitsCollection) {
202 
203  // get digits
204  std::vector<float> samples = tile_digits->samples();
205  // get number of time samples & compare with
206  // int nSamp = m_tileInfo->NdigitSamples();
207  int nSamp2 = samples.size();
208  if (nSamp2 != nSamp) {
209  ATH_MSG_ERROR( "nSamp from TileInfo=" << nSamp
210  << " nSamp from digits= " << nSamp2 );
211  }
212  /* Get digit HWIdentifier (= channel_id) */
213  HWIdentifier adcId = tile_digits->adc_HWID();
214  int channel = m_tileHWID->channel(adcId);
215  int adc = m_tileHWID->adc(adcId);
216  // Subtract pedestal, that is samples[0] and convert from ADC counts to pCb.
217  float pedestal = samples[0];
218  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
219 
220  samples[jsamp] = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc,
222 
223  }
224  Identifier pmt_id = tile_digits->pmt_ID();
225  if (pmt_id.is_valid()) {
226 
227  /* Get TT Identifier for this pmt */
228  Identifier tt_id = tile_digits->tt_ID();
229  /* Get eta-phi indices of TTL1 for this channel. */
230  int ieta = m_TT_ID->eta(tt_id);
231  int iphi = m_TT_ID->phi(tt_id); // (same as module).
232  if (iphi != drawer)
233  ATH_MSG_ERROR( "drawer=" << drawer << ", iphi=" << iphi );
234 
235  if (ttDigit[ieta]) { // already exists - just add charge for each sample
236  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
237  myttAmp[ieta][jsamp] += samples[jsamp];
238  }
239  } else { // digit in new TT
240  ttId[ieta] = tt_id;
241  ttDigit[ieta] = true;
242  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
243  myttAmp[ieta][jsamp] = samples[jsamp];
244  }
245  if (ieta >= minieta && ieta <= maxieta)
246  ++nTT; // count only valid TT
247  }
248  ++nDigit;
249  if (ieta < minieta || ieta > maxieta)
250  ++nIgnore;
251 
252  //Sum cell energy for comparison to other algos.
253  // convert pCb to MeV
254  float e = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc,
256 
257  if (ieta >= minieta && ieta <= maxieta) {
258  ttAmpTot += e;
259  } else {
260  ttAmpTotIg += e;
261  }
262 
263  if (msgLvl(MSG::VERBOSE)) {
264  /* Diagnostic checks: */
265  int side = m_tileID->side(pmt_id);
266  int tower = m_tileID->tower(pmt_id);
267  int sample = m_tileID->sample(pmt_id);
268  int pmt = m_tileID->pmt(pmt_id);
269  int channel = m_tileHWID->channel(adcId);
270 
271  msg(MSG::VERBOSE) << "New Digit:"
272  << " ros=" << ros
273  << ", drawer=" << drawer
274  << ", ch=" << channel
275  << ", side=" << side
276  << ", tower=" << tower
277  << ", sample=" << sample
278  << ", pmt=" << pmt
279  << ", e=" << e
280  << ", ie=" << ieta
281  << ", ip=" << iphi;
282 
283  if (ieta >= minieta && ieta <= maxieta)
284  msg(MSG::VERBOSE) << endmsg;
285  else
286  msg(MSG::VERBOSE) << " Outside limits" << endmsg;
287  }
288 
289  } else {
290  ATH_MSG_VERBOSE( "Tile Channel with no tt_id" );
291  }
292  } // end loop over digits in this drawer.
293 
294  nTTTot += nTT;
295  nDigitTot += nDigit;
296  nIgnoreTot += nIgnore;
297 
298  ATH_MSG_VERBOSE( " Statistics for"
299  << " ROS=" << ros
300  << ", drawer=" << drawer
301  << "; posneg=" << posneg
302  << ", minieta=" << minieta
303  << ", maxieta=" << maxieta
304  << "; nTT=" << nTT
305  << ", nDigit=" << nDigit
306  << ", nIgnore=" << nIgnore );
307 
308  /*......................................................*/
309  // Step 7: We now have all the TTL1 amplitudes for this drawer.
310  // Loop over towers to produce the electronics signals (= time samples).
311  // If tileNoise is requested, generate random numbers to give noise
312  for (int ieta = minieta; ieta <= maxieta; ++ieta) {
313  int iphi = drawer;
314  bool Good = ttDigit[ieta];
315  if (tileNoise)
316  Good = true;
317 
318  if (Good) {
319  if (!ttDigit[ieta])
320  ttId[ieta] = m_TT_ID->tower_id(posneg, 1, 0, ieta, drawer);
321 
322  float ttL1Calib = m_tileInfo->TTL1Calib(ttId[ieta]);
323  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
324  myttAmp[ieta][jsamp] *= ttL1Calib; // convert pCb to mV
325  }
326 
327  /* Include shaping fuction, pedestal, and noise. */
328  if (tileNoise)
329  CLHEP::RandGauss::shootArray(nSamp, Rndm);
330  float ttL1Ped = m_tileInfo->TTL1Ped(ttId[ieta]);
331  float ttL1NoiseSigma = m_tileInfo->TTL1NoiseSigma(ttId[ieta]);
332  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
333  ttL1samples[jsamp] = myttAmp[ieta][jsamp] + ttL1Ped;
334  if (tileNoise)
335  ttL1samples[jsamp] += ttL1NoiseSigma * Rndm[jsamp];
336  } // end loop over samples
337  if (tileThresh) {
338  float ttL1Thresh = m_tileInfo->TTL1Thresh(ttId[ieta]);
339  if (ttL1samples[iTrig] - ttL1Ped < ttL1Thresh)
340  Good = false;
341  }
342  } // end first "Good" section.
343  /* Create the new TTL1 object and store in TTL1Container. */
344  if (Good) {
345  ATH_MSG_DEBUG( " TTL1: "
346  << " ros=" << ros
347  << ", ieta=" << ieta
348  << ", iphi=" << iphi
349  << ", digitTrue=" << ttDigit[ieta]
350  << ", Good=" << Good
351  << ", amp0=" << myttAmp[ieta][iTrig]
352  << ", digitIn=" << ttL1samples[iTrig] );
353 
354  /*
355  The following lines are commented out.
356 
357  if (msgLvl(MSG::VERBOSE)) {
358  msg(MSG::VERBOSE) << " ttL1Digits=";
359  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
360  msg(MSG::VERBOSE) << ttL1samples[jsamp] << " ";
361  }
362  msg(MSG::VERBOSE) << endmsg;
363 
364  msg(MSG::VERBOSE) << " Rndm=";
365  for (int jsamp = 0; jsamp < nSamp; ++jsamp) {
366  msg(MSG::VERBOSE) << Rndm[jsamp] << " ";
367  }
368  msg(MSG::VERBOSE) << endmsg;
369  }
370  The preceding lines are commented out.
371  */
372 
373  ttl1Container->push_back(std::make_unique<TileTTL1>(ttId[ieta], ttL1samples));
374  } // end second "Good" section.
375  } // end loop over towers
376  } // end loop over collections
377 
378 
379  // Execution completed.
380  ATH_MSG_DEBUG( "TileDigitsToTTL1 execution completed." );
381  ATH_MSG_DEBUG( " nTTTot=" << nTTTot
382  << " nDigitTot=" << nDigitTot
383  << " nIgnoreTot=" << nIgnoreTot
384  << " ttAmpTot=" << ttAmpTot
385  << " ttAmpTotIg=" << ttAmpTotIg
386  << " =>eneTot=" << ttAmpTot + ttAmpTotIg );
387 
388  return StatusCode::SUCCESS;
389 }
390 
392 
393  ATH_MSG_INFO( "TileDigitsToTTL1::finalize() end" );
394 
395  return StatusCode::SUCCESS;
396 }
397 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileDigitsToTTL1::~TileDigitsToTTL1
virtual ~TileDigitsToTTL1()
Definition: TileDigitsToTTL1.cxx:75
TileDigitsToTTL1::m_tileID
const TileID * m_tileID
Definition: TileDigitsToTTL1.h:77
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
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileDigitsToTTL1::m_digitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_digitsContainerKey
Definition: TileDigitsToTTL1.h:67
Tile_Base_ID::pmt
int pmt(const Identifier &id) const
Definition: Tile_Base_ID.cxx:180
TileDigitsToTTL1::TileDigitsToTTL1
TileDigitsToTTL1(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TileDigitsToTTL1.cxx:60
TileFragHash::FitFilter
@ FitFilter
Definition: TileFragHash.h:35
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
TileInfo.h
TileCalibUtils.h
Tile_Base_ID::tower
int tower(const Identifier &id) const
Definition: Tile_Base_ID.cxx:165
TileDigitsToTTL1::m_ttl1ContainerKey
SG::WriteHandleKey< TileTTL1Container > m_ttl1ContainerKey
Definition: TileDigitsToTTL1.h:70
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
TileRawChannelUnit::PicoCoulombs
@ PicoCoulombs
Definition: TileRawChannelUnit.h:18
HWIdentifier
Definition: HWIdentifier.h:13
Identifier::is_valid
bool is_valid() const
Check if id is in a valid state.
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
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
TileDigitsToTTL1::m_infoName
std::string m_infoName
Definition: TileDigitsToTTL1.h:73
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
CaloLVL1_ID::phi
int phi(const Identifier id) const
return phi according to :
Definition: CaloLVL1_ID.h:659
WriteHandle.h
Handle class for recording to StoreGate.
TileDigitsToTTL1::initialize
StatusCode initialize()
Definition: TileDigitsToTTL1.cxx:81
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
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
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
TileRawChannelUnit::MegaElectronVolts
@ MegaElectronVolts
Definition: TileRawChannelUnit.h:20
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
TileDigitsToTTL1::m_tileToolEmscale
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
main Tile Calibration tool
Definition: TileDigitsToTTL1.h:82
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
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TileDigitsCollection
Definition: TileDigitsCollection.h:18
TileHWID::drawer_id
HWIdentifier drawer_id(int frag) const
ROS HWIdentifer.
Definition: TileHWID.cxx:186
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TileDigits
Definition: TileDigits.h:30
errorcheck.h
Helpers for checking error return status codes and reporting errors.
TileHWID::BARREL_NEG
@ BARREL_NEG
Definition: TileHWID.h:69
TileHWID::EXTBAR_POS
@ EXTBAR_POS
Definition: TileHWID.h:70
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.
TileDigitsToTTL1.h
TileDigitsToTTL1::m_TT_ID
const CaloLVL1_ID * m_TT_ID
Definition: TileDigitsToTTL1.h:80
TileInfo::TileNoise
bool TileNoise() const
Noise switched on/off?
Definition: TileInfo.h:87
TileHWID::BARREL_POS
@ BARREL_POS
Definition: TileHWID.h:68
TileDigitsToTTL1::execute
StatusCode execute()
Definition: TileDigitsToTTL1.cxx:106
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
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
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
ReadHandle.h
Handle class for reading from StoreGate.
TileDigitsToTTL1::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileDigitsToTTL1.h:78
TileDigitsToTTL1::finalize
StatusCode finalize()
Definition: TileDigitsToTTL1.cxx:391
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
TileDigitsToTTL1::m_rChType
TileFragHash::TYPE m_rChType
Definition: TileDigitsToTTL1.h:75
TileInfo::TTL1Thresh
double TTL1Thresh(const Identifier &) const
Returns the threshold (in mV) for TTL1 adcs.
Definition: TileInfo.h:130
TileRawChannelUnit::ADCcounts
@ ADCcounts
Definition: TileRawChannelUnit.h:17
TileDigitsToTTL1::m_tileInfo
const TileInfo * m_tileInfo
Definition: TileDigitsToTTL1.h:79
TileInfo::TTL1Calib
double TTL1Calib(const Identifier &) const
Returns the factor which converts amplitude in pCb to mV in TTL1.
Definition: TileInfo.h:112