ATLAS Offline Software
Loading...
Searching...
No Matches
TileHitToTTL1 Class Reference

This algorithm builds TileTTL1 objects from TileHits. More...

#include <TileHitToTTL1.h>

Inheritance diagram for TileHitToTTL1:

Public Member Functions

virtual ~TileHitToTTL1 ()=default
 Destructor.
virtual StatusCode initialize () override
 initialize method
virtual StatusCode execute (const EventContext &ctx) const override
 execute method
virtual StatusCode finalize () override
 finalize method
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

Gaudi::Property< bool > m_maskBadChannels
Gaudi::Property< std::string > m_infoName
Gaudi::Property< std::string > m_TileTTL1Type
SG::ReadHandleKey< TileHitContainerm_hitContainerKey
SG::WriteHandleKey< TileTTL1Containerm_ttl1ContainerKey
SG::WriteHandleKey< TileTTL1Containerm_mbtsTTL1ContainerKey
SG::ReadCondHandleKey< TileSamplingFractionm_samplingFractionKey
 Name of TileSamplingFraction in condition store.
bool m_cosmicsType {false}
 if true => use dediated cosmcis TTL1
const TileIDm_tileID {nullptr}
 Pointer to TileID helper.
const TileTBIDm_tileTBID {nullptr}
 Pointer to TileID helper.
const TileHWIDm_tileHWID {nullptr}
 Pointer to TileHWID helper.
const TileInfom_tileInfo {nullptr}
 Pointer to TileInfo.
const CaloLVL1_IDm_TT_ID {nullptr}
 Pointer to TT Identifier.
const TileCablingServicem_cabling {nullptr}
 Pointer to the TileCablingService instance.
int m_nSamples {0}
 number of time slices for each channel
int m_iTrig {0}
 index of the triggering time slice
int m_MBTSnSamples {0}
 number of time slices for each chan for MBTS TTL1
int m_MBTSiTrig {0}
 index of the triggering time slice for MBTS TTL1
int m_lastTower {15}
 total number of towers in TileCal
bool m_tileNoise {false}
 If true => generate noise for the TileTTL1 creation.
bool m_tileThresh {false}
 If true => apply threshold on the conversion to TileTTL1.
ServiceHandle< TileCablingSvcm_cablingSvc
 Name of Tile cabling service.
ServiceHandle< IAthRNGSvcm_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""}
 Random number generator engine to use.
Gaudi::Property< std::string > m_randomStreamName {this, "RandomStreamName", "Tile_HitToTTL1", ""}
 Random Stream Name.
SG::ReadCondHandleKey< TileEMScalem_emScaleKey
 Name of TileEMScale in condition store.
SG::ReadCondHandleKey< TileBadChannelsm_badChannelsKey
 Name of TileBadChannels in condition store.
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

This algorithm builds TileTTL1 objects from TileHits.

It simulates the Tile Level 1 Trigger Towers (TTL1), which are hardware sums of the Tile channels, with about 5 channels per tower. The towers are read out in N time slices, with N=7 as a default. The default running mode is 'standard' which produces N read out slices The 'cosmics' running mode is also possible which stores only the peak value of the pulse (this mode is used to simulate the Tile cosmics boards used during pre-beam commissioning). Noise can be added to every sample and threshold can be applied. Dead/half-gain PMTs are also accounted for in this algorithm.

Definition at line 72 of file TileHitToTTL1.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ~TileHitToTTL1()

virtual TileHitToTTL1::~TileHitToTTL1 ( )
virtualdefault

Destructor.

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode TileHitToTTL1::execute ( const EventContext & ctx) const
overridevirtual

execute method

Definition at line 177 of file TileHitToTTL1.cxx.

177 {
178
179 ATH_MSG_DEBUG( "Executing TileHitToTTL1" );
180
181 // declare array for random number generation for noise in samples.
182 double Rndm[16]; // Can't use variable size array
183
184 // Prepare RNG Service
185 ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_randomStreamName);
186 rngWrapper->setSeed( m_randomStreamName, ctx );
187
188 SG::ReadCondHandle<TileEMScale> emScale(m_emScaleKey, ctx);
189 ATH_CHECK( emScale.isValid() );
190
191 const TileBadChannels* badChannels = nullptr;
192 if (m_maskBadChannels) {
193 SG::ReadCondHandle<TileBadChannels> badChannelsHandle(m_badChannelsKey, ctx);
194 ATH_CHECK( badChannelsHandle.isValid() );
195 badChannels = *badChannelsHandle;
196 }
197
198 /*........................................................................*/
199 // Get hit container from TES and create TTL1 and MBTS container
200 // Note that hit container has 256 collections (one for each drawer),
201 // but TTL1 container has no collections and no structure
202 /*........................................................................*/
203
204 SG::ReadHandle<TileHitContainer> hitContainer(m_hitContainerKey, ctx);
205 ATH_CHECK( hitContainer.isValid() );
206
207 SG::WriteHandle<TileTTL1Container> ttl1Container(m_ttl1ContainerKey, ctx);
208 // Register the TTL1 container in the TES
209 ATH_CHECK( ttl1Container.record(std::make_unique<TileTTL1Container>()) );
210 ATH_MSG_DEBUG( "TileTTL1Container registered successfully (" << m_ttl1ContainerKey.key() << ")" );
211
212 std::unique_ptr<TileTTL1Container> mbtsTTL1Container;
213 if (!m_mbtsTTL1ContainerKey.key().empty()) {
214 mbtsTTL1Container = std::make_unique<TileTTL1Container>();
215 }
216
217 SG::ReadCondHandle<TileSamplingFraction> samplingFraction(m_samplingFractionKey, ctx);
218 ATH_CHECK( samplingFraction.isValid() );
219
220 /*........................................................................*/
221 // Create temporary arrays for processing signals.
222 // Create array for all TT amplitudes in a single drawer
223 /*........................................................................*/
224 Identifier ttId[16]; // array of TT identifiers in a single drawer
225 std::vector<double> ttAmp[16]; // array of all TT amplitudes in a single drawer
226 std::vector<double> MBTSAmp; // MBTS amplitudes in a single drawer
227 bool ttHit[16]; // array of TT occupancy in a single drawer
228 bool MBTSHit; // MBTS occupancy in a single drawer
229 int nTT; // number of hit towers in this drawer.
230 int nHit; // number of hits in this drawer.
231 int nIgnore; // number of ignored hits in this drawer.
232 int nTTTot = 0; // total number of hit towers.
233 int nHitTot = 0; // total number of hits.
234 int nIgnoreTot = 0; // total number of ignored hits.
235 double ttAmpTot = 0; // total energy in good level-1 towers.
236 double ttAmpTotIg = 0.; // total energy in "ignored" level-1 towers.
237 int minieta, maxieta, posneg;
238
239 for (int ieta = 0; ieta < 16; ++ieta)
240 ttAmp[ieta].resize(m_nSamples);
241 MBTSAmp.resize(m_MBTSnSamples);
242
243 // temporary array to make sub of all subhits in one channel
244 std::vector<double> hitSamples(m_nSamples);
245
246 // Create array for the nSamples time-samples of a single tower.
247 // If running the Cosmics configuration, put out only the peak value
248 std::vector<float> ttL1samples;
249 std::vector<float> MBTSsamples;
250 if (m_cosmicsType) ttL1samples.resize(1);
251 else ttL1samples.resize(m_nSamples);
252 MBTSsamples.resize(m_MBTSnSamples);
253
254 std::vector<double> ttl1Shape(m_nSamples, 0.);
255 std::vector<double> ttl1MBTSShape(m_MBTSnSamples, 0.);
256 /*........................................................................*/
257 // Begin loop over all collections (collection = electronic drawer).
258 /*........................................................................*/
259
260 for (const TileHitCollection* hitCollection : *hitContainer) {
261
262 // get drawer and ros number
263 HWIdentifier drawer_id = m_tileHWID->drawer_id(hitCollection->identify());
264 int ros = m_tileHWID->ros(drawer_id);
265 int drawer = m_tileHWID->drawer(drawer_id);
266 int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
267
268 // check that this drawer is connected, if not skip it
269 if (m_cosmicsType || m_cabling->connected(ros, drawer)) {
270 ATH_MSG_VERBOSE( "ROS " << ros
271 << " drawer " << drawer
272 << " is connected");
273 } else {
274 continue;
275 }
276
277 // Find the partition for this drawer
278 // Also set the min and max eta range for the towers in this partition
279 switch (ros) {
281 posneg = +1;
282 minieta = 0;
283 maxieta = 8;
284 break;
286 posneg = -1;
287 minieta = 0;
288 maxieta = 8;
289 break;
291 posneg = +1;
292 minieta = 9;
293 maxieta = m_lastTower;
294 break;
296 posneg = -1;
297 minieta = 9;
298 maxieta = m_lastTower;
299 break;
300 default:
301 posneg = minieta = maxieta = 0;
302 break;
303 }
304
305 // Zero temporary array of trigger tower amplitudes (TTL1amp) for this collection
306 for (int ieta = 0; ieta < 16; ++ieta) {
307 for (int js = 0; js < m_nSamples; ++js)
308 ttAmp[ieta][js] = 0.0;
309 }
310 for (int js = 0; js < m_MBTSnSamples; ++js)
311 MBTSAmp[js] = 0.0;
312
313 MBTSHit = false;
314 memset(ttHit, 0, sizeof(ttHit));
315 nTT = nIgnore = nHit = 0;
316
317 /*........................................................................*/
318 // Iterate over all hits in this collection, summing amps for each tower.
319 /*........................................................................*/
320 for (const TileHit* tile_hit : *hitCollection) {
321
322 // Get hit Identifier (= pmt_id)
323 Identifier pmt_id = tile_hit->pmt_ID();
324 // Get hit HWIdentifier (= channel_id)
325 HWIdentifier pmt_HWid = tile_hit->pmt_HWID();
326 // Get channel and ADC number
327 int channel = m_tileHWID->channel(pmt_HWid);
328
329 // conversion to hit energy after EMscale correction
330 double hit_calib = samplingFraction->getSamplingFraction(drawerIdx, channel);
331 hit_calib = std::round(hit_calib * 1000) / 1000;
332 // conversion to charge measured by digitizer
333 // The trigger always uses the low gain
334 double qfactor = hit_calib / emScale->calibrateChannel(drawerIdx, channel
335 , TileID::LOWGAIN, 1.
338
339 // determine if the channel is good from the channel status DB
340 bool is_good = true;
341 if (m_maskBadChannels) {
342 HWIdentifier adc_id = m_tileHWID->adc_id(pmt_HWid, TileID::LOWGAIN);
343 TileBchStatus status = badChannels->getAdcStatus(adc_id);
344
345 // if channel is bad, set qfactor to zero
346 if (status.isNoGainL1()) {
347 is_good = false;
348 qfactor = 0.0;
349 }
350
351 // check if channel is half gain, scale the qfactor by 50%
352 if (status.isHalfGainL1()) {
353 is_good = false;
354 qfactor *= 0.5;
355 }
356
357 } // end of bad channel status
358
359 // Treat signal from MBTS differently
360 if (m_tileTBID->is_tiletb(pmt_id)) {
361
362 if (mbtsTTL1Container) {
363
364 // Loop over the subhits for this channel. For each one,
365 // convolute with shaping function and add to digitSamples.
366 for (int js = 0; js < m_MBTSnSamples; ++js)
367 hitSamples[js] = 0.0;
368
369 int n_hits = tile_hit->size();
370 for (int ihit = 0; ihit < n_hits; ++ihit) {
371 // Need to pass the negative of t_hit, this is because ttl1Shape returns the amplitude at
372 // a given phase, whereas the t_hit from t=0 when the hit took place
373 double t_hit = -(tile_hit->time(ihit));
374 m_tileInfo->ttl1Shape(m_MBTSnSamples, m_MBTSiTrig, t_hit, ttl1MBTSShape);
375
376 double e_hit = tile_hit->energy(ihit);
377 for (int js = 0; js < m_MBTSnSamples; ++js) {
378 hitSamples[js] += e_hit * ttl1MBTSShape[js];
379 } // end of loop over MBTS samples
380 } // end loop over sub-hits
381
382 if (MBTSHit) {
383 for (int js = 0; js < m_MBTSnSamples; ++js)
384 MBTSAmp[js] += qfactor * hitSamples[js];
385
386 } else {
387 MBTSHit = true;
388 for (int js = 0; js < m_MBTSnSamples; ++js)
389 MBTSAmp[js] = qfactor * hitSamples[js];
390 }
391
392 if (msgLvl(MSG::VERBOSE)) {
393
394 // Diagnostic checks
395 int side = m_tileTBID->type(pmt_id);
396 int phi = m_tileTBID->module(pmt_id);
397 int eta = m_tileTBID->channel(pmt_id);
398 int channel = m_tileHWID->channel(pmt_HWid);
399
400 msg(MSG::VERBOSE) << "New MBTS Hit:"
401 << " ros=" << ros
402 << ", drawer=" << drawer
403 << ", ch=" << channel
404 << ", side=" << side
405 << ", phi=" << phi
406 << ", eta=" << eta
407 << ", e0=" << hitSamples[m_MBTSiTrig] * hit_calib
408 << ", chan is good=" << is_good << endmsg;
409 }
410 }
411 continue;
412 } // end of MBTS loop
413
414 // Get TT Identifier for this pmt
415 Identifier tt_id = tile_hit->tt_ID();
416
417 // Get eta-phi indices of TTL1 for this channel.
418 int ieta = m_TT_ID->eta(tt_id);
419 int iphi = m_TT_ID->phi(tt_id); // (same as module number).
420 if (iphi != drawer && m_tileID->sample(pmt_id) != TileID::SAMP_E)
421 ATH_MSG_ERROR( "drawer=" << drawer << ", iphi=" << iphi );
422
423 // Loop over the subhits for this channel. For each one,
424 // convolute with shaping function and add to digitSamples.
425 for (int js = 0; js < m_nSamples; ++js)
426 hitSamples[js] = 0.0;
427 int n_hits = tile_hit->size();
428 for (int ihit = 0; ihit < n_hits; ++ihit) {
429 // Need to pass the negative of t_hit, this is because ttl1Shape returns the amplitude at
430 // a given phase, whereas the t_hit from t=0 when the hit took place
431 double t_hit = -(tile_hit->time(ihit));
432 m_tileInfo->ttl1Shape(m_nSamples, m_iTrig, t_hit, ttl1Shape);
433
434 double e_hit = tile_hit->energy(ihit);
435 for (int js = 0; js < m_nSamples; ++js) {
436 hitSamples[js] += e_hit * ttl1Shape[js];
437 } // end of loop over samples
438 } // end loop over sub-hits
439
440 // check if TT already exists, if so just add energy
441 if (ttHit[ieta]) {
442 for (int js = 0; js < m_nSamples; ++js)
443 ttAmp[ieta][js] += qfactor * hitSamples[js];
444
445 // if not create new TT
446 } else {
447 ttId[ieta] = tt_id;
448 ttHit[ieta] = true;
449 for (int js = 0; js < m_nSamples; ++js)
450 ttAmp[ieta][js] = qfactor * hitSamples[js];
451
452 if (ieta >= minieta && ieta <= maxieta)
453 ++nTT; // count only valid TT
454 }
455 ++nHit;
456 if (ieta < minieta || ieta > maxieta || !is_good)
457 ++nIgnore;
458
459 //Sum cell energy for comparison to other algos.
460 if (ieta >= minieta && ieta <= maxieta && is_good) {
461 ttAmpTot += hitSamples[m_iTrig] * hit_calib;
462 } else {
463 ttAmpTotIg += hitSamples[m_iTrig] * hit_calib;
464 }
465
466 if (msgLvl(MSG::VERBOSE)) {
467
468 // Diagnostic checks:
469 int side = m_tileID->side(pmt_id);
470 int tower = m_tileID->tower(pmt_id);
471 int sample = m_tileID->sample(pmt_id);
472 int pmt = m_tileID->pmt(pmt_id);
473 int channel = m_tileHWID->channel(pmt_HWid);
474
475 msg(MSG::VERBOSE) << "New Hit:"
476 << " ros=" << ros
477 << ", drawer=" << drawer
478 << ", ch=" << channel
479 << ", side=" << side
480 << ", tower=" << tower
481 << ", sample=" << sample
482 << ", pmt=" << pmt
483 << ", e0=" << hitSamples[m_iTrig] * hit_calib
484 << ", ie=" << ieta
485 << ", ip=" << iphi
486 << ", chan is good= " << is_good;
487
488 if (ieta >= minieta && ieta <= maxieta)
489 msg(MSG::VERBOSE) << endmsg;
490 else
491 msg(MSG::VERBOSE) << " Outside limits" << endmsg;
492 } // end of verbose printing
493
494 } // end loop over hits in this drawer.
495
496 nTTTot += nTT;
497 nHitTot += nHit;
498 nIgnoreTot += nIgnore;
499
500 ATH_MSG_VERBOSE( " Statistics for"
501 << " ROS=" << ros
502 << ", drawer=" << drawer
503 << "; posneg=" << posneg
504 << ", minieta=" << minieta
505 << ", maxieta=" << maxieta
506 << "; nTT=" << nTT
507 << ", nHit=" << nHit
508 << ", nIgnore=" << nIgnore );
509
510
511 /*........................................................................*/
512 // We now have all the TTL1 amplitudes for this drawer.
513 // Loop over towers to produce the electronics signals (= time samples).
514 // If tileNoise is requested, generate random numbers to give noise
515 // For Cosmics configuration, only calculate peak value.
516 // (no ADC on Chicago custom board, only discriminator)
517 /*........................................................................*/
518
519 if (mbtsTTL1Container) {
520 Identifier MBTS_id = m_cabling->drawer2MBTS_id(drawer_id);
521 if (MBTS_id.is_valid()) {
522 bool Good = m_tileNoise || MBTSHit;
523 if (Good) {
524 double ttL1NoiseSigma = m_tileInfo->MBTSL1NoiseSigma(MBTS_id);
525 double ttL1Thresh = m_tileInfo->MBTSL1Thresh(MBTS_id);
526 double ttL1Ped = m_tileInfo->MBTSL1Ped(MBTS_id);
527 double ttL1Calib = m_tileInfo->MBTSL1Calib(MBTS_id);
528 double ttL1Max = m_tileInfo->MBTSL1Max(MBTS_id);
529
530 if (m_tileNoise)
531 RandGaussQ::shootArray(rngWrapper->getEngine(ctx), m_MBTSnSamples, Rndm);
532 for (int jsamp = 0; jsamp < m_MBTSnSamples; ++jsamp) {
533 MBTSAmp[jsamp] *= ttL1Calib; // convert pCb to mV
534 MBTSsamples[jsamp] = MBTSAmp[jsamp] + ttL1Ped;
535 if (m_tileNoise)
536 MBTSsamples[jsamp] += ttL1NoiseSigma * Rndm[jsamp];
537
538 // check if the voltage is above the saturation point,
539 // if so, set the pulse value to the saturation point
540 if (MBTSsamples[jsamp] > ttL1Max)
541 MBTSsamples[jsamp] = ttL1Max;
542
543 } // end loop over samples
544
545 if (m_tileThresh)
546 if (MBTSsamples[m_MBTSiTrig] - ttL1Ped < ttL1Thresh)
547 Good = false;
548
549 if (Good) {
550 std::unique_ptr<TileTTL1> mbtsTTL1 = std::make_unique<TileTTL1>(MBTS_id, MBTSsamples);
551 mbtsTTL1Container->push_back(mbtsTTL1.release());
552 ATH_MSG_DEBUG( "mbtsTTL1 saved. Is MBTS hit " << MBTSHit
553 << " Is noise " << m_tileNoise );
554 }
555 }
556 }
557 }
558
559 for (int ieta = minieta; ieta <= maxieta; ++ieta) {
560 int iphi = drawer;
561 bool Good = m_tileNoise || ttHit[ieta];
562 if (Good) {
563 if (!ttHit[ieta])
564 ttId[ieta] = m_TT_ID->tower_id(posneg, 1, 0, ieta, drawer);
565
566 /* Include shaping fuction, pedestal, and noise. */
567
568 // Chicago cosmic Trigger board
569 if (m_cosmicsType) {
570 double ttL1NoiseSigma = m_tileInfo->TTL1CosmicsNoiseSigma(ttId[ieta]);
571 double ttL1Thresh = m_tileInfo->TTL1CosmicsThresh(ttId[ieta]);
572 double ttL1Ped = m_tileInfo->TTL1CosmicsPed(ttId[ieta]);
573 double ttL1Calib = m_tileInfo->TTL1CosmicsCalib(ttId[ieta]);
574
575 double peakAmp = 0.0;
576 int peakSamp = 0;
577 for (int jsamp = 0; jsamp < m_nSamples; ++jsamp) {
578 ttAmp[ieta][jsamp] *= ttL1Calib; // convert pCb to mV
579 ttAmp[ieta][jsamp] += ttL1Ped;
580 if (ttAmp[ieta][jsamp] > peakAmp) {
581 peakAmp = ttAmp[ieta][jsamp];
582 peakSamp = jsamp;
583 }
584 } // end loop over samples
585
586 if (m_tileNoise)
587 peakAmp += ttL1NoiseSigma * RandGaussQ::shoot(rngWrapper->getEngine(ctx));
588 ttL1samples[0] = peakAmp;
589 if (m_tileThresh) {
590 if (ttL1samples[0] - ttL1Ped < ttL1Thresh)
591 Good = false;
592 }
593 if (msgLvl(MSG::DEBUG) && Good) {
594 msg(MSG::DEBUG) << " TTL1: "
595 << " ros=" << ros
596 << ", ieta=" << ieta
597 << ", iphi=" << iphi
598 << ", hitTrue=" << ttHit[ieta]
599 << ", Good=" << Good
600 << ", peak Amp=" << ttAmp[ieta][peakSamp]
601 << ", with noise=" << ttL1samples[0] << endmsg;
602 }
603
604 // ATLAS Level1 Calo Trigger
605 } else {
606 double ttL1NoiseSigma = m_tileInfo->TTL1NoiseSigma(ttId[ieta]);
607 double ttL1Thresh = m_tileInfo->TTL1Thresh(ttId[ieta]);
608 double ttL1Ped = m_tileInfo->TTL1Ped(ttId[ieta]);
609 double ttL1Calib = m_tileInfo->TTL1Calib(ttId[ieta]);
610 double ttL1Max = m_tileInfo->TTL1Max(ttId[ieta]);
611
612 if (m_tileNoise)
613 RandGaussQ::shootArray(rngWrapper->getEngine(ctx), m_nSamples, Rndm);
614 for (int jsamp = 0; jsamp < m_nSamples; ++jsamp) {
615 ttAmp[ieta][jsamp] *= ttL1Calib; // convert pCb to mV
616 ttL1samples[jsamp] = ttAmp[ieta][jsamp] + ttL1Ped;
617 if (m_tileNoise)
618 ttL1samples[jsamp] += ttL1NoiseSigma * Rndm[jsamp];
619
620 // check if the voltage is above the saturation point,
621 // if so, set the pulse value to the saturation point
622 if (ttL1samples[jsamp] > ttL1Max)
623 ttL1samples[jsamp] = ttL1Max;
624
625 } // end loop over samples
626
627 if (m_tileThresh) {
628 if (ttL1samples[m_iTrig] - ttL1Ped < ttL1Thresh)
629 Good = false;
630 }
631 if (msgLvl(MSG::DEBUG) && Good) {
632 msg(MSG::DEBUG) << " TTL1: "
633 << " ros=" << ros
634 << ", ieta=" << ieta
635 << ", iphi=" << iphi
636 << ", hitTrue=" << ttHit[ieta]
637 << ", Good=" << Good
638 << ", amp0=" << ttAmp[ieta][m_iTrig]
639 << ", digitIn=" << ttL1samples[m_iTrig] << endmsg;
640 }
641 }
642 } // end first "Good" section.
643
644 /* Create the new TTL1 object and store in TTL1Container. */
645 if (Good) {
646 std::unique_ptr<TileTTL1> ttl1 = std::make_unique<TileTTL1>(ttId[ieta], ttL1samples);
647 ttl1Container->push_back(ttl1.release());
648 } // end second "Good" section.
649 } // end loop over towers
650 } // end loop over collections
651
652 // sort all trigger towers according to identifier
653 if (m_cosmicsType) {
654 ATH_MSG_DEBUG( "Sorting container of size " << ttl1Container->size() );
655 TileLogicalOrdering<TileTTL1> order;
656 ttl1Container->sort(order);
657 }
658
659 if (mbtsTTL1Container) {
660 SG::WriteHandle<TileTTL1Container> mbtsContainer(m_mbtsTTL1ContainerKey, ctx);
661 ATH_CHECK( mbtsContainer.record(std::move(mbtsTTL1Container)));
662
663 ATH_MSG_DEBUG( "MBTS TileTTL1Container registered successfully (" << m_mbtsTTL1ContainerKey.key() << ")" );
664 }
665
666 // Execution completed.
667 if (msgLvl(MSG::DEBUG)) {
668 msg(MSG::DEBUG) << "TileHitToTTL1 execution completed." << endmsg;
669 msg(MSG::DEBUG) << " nTTTot=" << nTTTot
670 << " nHitTot=" << nHitTot
671 << " nIgnoreTot=" << nIgnoreTot
672 << " ttAmpTot=" << ttAmpTot
673 << " ttAmpTotIg=" << ttAmpTotIg
674 << " =>eneTot=" << ttAmpTot + ttAmpTotIg << endmsg;
675 }
676
677 return StatusCode::SUCCESS;
678}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition RNGWrapper.h:169
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition RNGWrapper.h:134
bool msgLvl(const MSG::Level lvl) const
bool is_valid() const
Check if id is in a valid state.
const TileBchStatus & getAdcStatus(const HWIdentifier adc_id) const
Return Tile ADC status.
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
@ BARREL_POS
Definition TileHWID.h:68
@ EXTBAR_NEG
Definition TileHWID.h:71
@ BARREL_NEG
Definition TileHWID.h:69
@ EXTBAR_POS
Definition TileHWID.h:70
Gaudi::Property< bool > m_maskBadChannels
ServiceHandle< IAthRNGSvc > m_rndmSvc
Random number generator engine to use.
SG::ReadHandleKey< TileHitContainer > m_hitContainerKey
bool m_tileThresh
If true => apply threshold on the conversion to TileTTL1.
const TileID * m_tileID
Pointer to TileID helper.
SG::WriteHandleKey< TileTTL1Container > m_mbtsTTL1ContainerKey
bool m_tileNoise
If true => generate noise for the TileTTL1 creation.
const TileCablingService * m_cabling
Pointer to the TileCablingService instance.
int m_MBTSiTrig
index of the triggering time slice for MBTS TTL1
const TileInfo * m_tileInfo
Pointer to TileInfo.
SG::ReadCondHandleKey< TileEMScale > m_emScaleKey
Name of TileEMScale in condition store.
SG::WriteHandleKey< TileTTL1Container > m_ttl1ContainerKey
const TileTBID * m_tileTBID
Pointer to TileID helper.
SG::ReadCondHandleKey< TileBadChannels > m_badChannelsKey
Name of TileBadChannels in condition store.
int m_MBTSnSamples
number of time slices for each chan for MBTS TTL1
Gaudi::Property< std::string > m_randomStreamName
Random Stream Name.
const CaloLVL1_ID * m_TT_ID
Pointer to TT Identifier.
int m_lastTower
total number of towers in TileCal
int m_iTrig
index of the triggering time slice
int m_nSamples
number of time slices for each channel
const TileHWID * m_tileHWID
Pointer to TileHWID helper.
bool m_cosmicsType
if true => use dediated cosmcis TTL1
SG::ReadCondHandleKey< TileSamplingFraction > m_samplingFractionKey
Name of TileSamplingFraction in condition store.
order
Configure Herwig7.
status
Definition merge.py:16

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode TileHitToTTL1::finalize ( )
overridevirtual

finalize method

Definition at line 680 of file TileHitToTTL1.cxx.

680 {
681
682 ATH_MSG_INFO( "TileHitToTTL1::finalize() end" );
683
684 return StatusCode::SUCCESS;
685}
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode TileHitToTTL1::initialize ( )
overridevirtual

initialize method

Definition at line 65 of file TileHitToTTL1.cxx.

65 {
66
67 // retrieve CaloLVL1_ID, TileID, TileHWID helpers and TileIfno from det store
68
70
72
74
76
77 //=== Get Tile Info
79
81
82 ATH_CHECK( m_emScaleKey.initialize() );
83
84 //=== Get rndm number service
85 ATH_CHECK( m_rndmSvc.retrieve() );
86
87 ATH_CHECK( m_samplingFractionKey.initialize() );
88
89 ATH_CHECK( m_cablingSvc.retrieve() );
90 m_cabling = m_cablingSvc->cablingService();
91
92 // The 'cosmics' setting refers to running with the
93 // Tile/Chicago Cosmic boards instead of the L1Calo
94 // This is a pre-2009 configuration
95 // The 'standard' setting is the L1Calo configuration
96 m_cosmicsType = (m_TileTTL1Type == "Cosmics");
97
98 if (m_TileTTL1Type == "Cosmics") {
99 ATH_MSG_INFO( "Cosmics TTL1 type selected" );
100
101 } else if (m_TileTTL1Type == "Standard") {
102 ATH_MSG_INFO( "Standard TTL1 type selected" );
103
104 } else {
105 ATH_MSG_INFO( "TileHitToTTL1 failed to recognize the TileTTL1Type: " << m_TileTTL1Type );
106 return StatusCode::FAILURE;
107 }
108
109 if (m_mbtsTTL1ContainerKey.key().empty()) {
110 ATH_MSG_INFO( "TileTTL1 from MBTS will not be produced" );
111 } else {
112 ATH_MSG_INFO( "Storing MBTS TileTTL1 in separate container " << m_mbtsTTL1ContainerKey.key() );
113 }
115
116 if (m_maskBadChannels) {
117 ATH_MSG_INFO( "Bad Channel trigger status will be applied" );
118 } else {
119 ATH_MSG_INFO( "Bad Channel trigger status will be ignored" );
120 }
121
122 /*............................................................................*/
123 // Get all global parameters that will be needed for processing
124 // For Cosmics, convolute sub-hits with full shape, producing a fine-grained
125 // vector for each tower. After noise/pedestal, calculate peak value and
126 // put only that in TileTTL1 object, otherwise TileTTL1 will be too large.
127 // For now, use the same shape for L1 and cosmics, but the latter should
128 // be wider, will change soon.
129 // For Standard L1, also convolute sub-hits with fine-grained shape, but
130 // produce sample-grained vector in TileTTL1.*/
131 // Load the pulse shape (so as to not perform this on every execution)
132 // The pulse shape for the MBTS, L1Calo (standard) config and the
133 // cosmics config is the same
134 // Right now the phase is set to zero (the pulse is centered)
135 m_nSamples = m_tileInfo->NdigitSamples(); // number of time slices for each chan
136 m_iTrig = m_tileInfo->ItrigSample(); // index of the triggering time slice
137 double phase = 0.0;
138 std::vector<double> ttl1Shape(m_nSamples, 0.);
139 m_tileInfo->ttl1Shape(m_nSamples, m_iTrig, phase, ttl1Shape);
140 if (msgLvl(MSG::DEBUG)) {
141 for (int jsamp = 0; jsamp < m_nSamples; ++jsamp) {
142 msg(MSG::DEBUG) << "jsamp=" << jsamp << " ttl1shape=" << ttl1Shape[jsamp] << endmsg;
143 } // end of pulse shape loading
144 }
145
146 // Data for MBTS
147 // The MBTS have a special hardware configuration. The trigger uses the tower
148 // output but the high gain from the 3&1 card
149 m_MBTSiTrig = m_tileInfo->ItrigSample();
150 m_MBTSnSamples = m_tileInfo->NdigitSamples();
151
152 // Get TileNoise flag from TileInfo (true => generate noise in TileDigits)
153 m_tileNoise = m_tileInfo->TileNoise();
154 // Get TileZeroSuppress flag from TileInfo (true => apply threshold to Digits)
155 m_tileThresh = m_tileInfo->TileZeroSuppress();
156
157 if (msgLvl(MSG::DEBUG)) {
158 msg(MSG::DEBUG) << " TTL1Shape[" << m_iTrig << "]=" << ttl1Shape[m_iTrig] << endmsg;
159
160 msg(MSG::DEBUG) << " nSamples=" << m_nSamples
161 << ", iTrig=" << m_iTrig
162 << ", tileNoise=" << ((m_tileNoise) ? "true" : "false")
163 << ", tileThresh=" << ((m_tileThresh) ? "true" : "false") << endmsg;
164 }
165
166 ATH_CHECK( m_hitContainerKey.initialize() );
167 ATH_CHECK( m_ttl1ContainerKey.initialize() );
168
169 ATH_MSG_INFO( "TileHitToTTL1 initialization completed" );
170
171 return StatusCode::SUCCESS;
172}
const ServiceHandle< StoreGateSvc > & detStore() const
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Gaudi::Property< std::string > m_infoName
Gaudi::Property< std::string > m_TileTTL1Type
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
#define ATH_MSG_WARNING(x)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_badChannelsKey

SG::ReadCondHandleKey<TileBadChannels> TileHitToTTL1::m_badChannelsKey
private
Initial value:
{this,
"TileBadChannels", "TileBadChannels", "Input Tile bad channel status"}

Name of TileBadChannels in condition store.

Definition at line 152 of file TileHitToTTL1.h.

152 {this,
153 "TileBadChannels", "TileBadChannels", "Input Tile bad channel status"};

◆ m_cabling

const TileCablingService* TileHitToTTL1::m_cabling {nullptr}
private

Pointer to the TileCablingService instance.

Definition at line 117 of file TileHitToTTL1.h.

117{nullptr};

◆ m_cablingSvc

ServiceHandle<TileCablingSvc> TileHitToTTL1::m_cablingSvc
private
Initial value:
{ this,
"TileCablingSvc", "TileCablingSvc", "The Tile cabling service"}

Name of Tile cabling service.

Definition at line 136 of file TileHitToTTL1.h.

136 { this,
137 "TileCablingSvc", "TileCablingSvc", "The Tile cabling service"};

◆ m_cosmicsType

bool TileHitToTTL1::m_cosmicsType {false}
private

if true => use dediated cosmcis TTL1

Definition at line 110 of file TileHitToTTL1.h.

110{false};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_emScaleKey

SG::ReadCondHandleKey<TileEMScale> TileHitToTTL1::m_emScaleKey
private
Initial value:
{this,
"TileEMScale", "TileEMScale", "Input Tile EMS calibration constants"}

Name of TileEMScale in condition store.

Definition at line 146 of file TileHitToTTL1.h.

146 {this,
147 "TileEMScale", "TileEMScale", "Input Tile EMS calibration constants"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_hitContainerKey

SG::ReadHandleKey<TileHitContainer> TileHitToTTL1::m_hitContainerKey
private
Initial value:
{this,"TileHitContainer","TileHitCnt",
"input Tile hit container key"}

Definition at line 93 of file TileHitToTTL1.h.

93 {this,"TileHitContainer","TileHitCnt",
94 "input Tile hit container key"};

◆ m_infoName

Gaudi::Property<std::string> TileHitToTTL1::m_infoName
private
Initial value:
{this,
"TileInfoName", "TileInfo", "TileInfo object name"}

Definition at line 87 of file TileHitToTTL1.h.

87 {this,
88 "TileInfoName", "TileInfo", "TileInfo object name"};

◆ m_iTrig

int TileHitToTTL1::m_iTrig {0}
private

index of the triggering time slice

Definition at line 122 of file TileHitToTTL1.h.

122{0};

◆ m_lastTower

int TileHitToTTL1::m_lastTower {15}
private

total number of towers in TileCal

Definition at line 128 of file TileHitToTTL1.h.

128{15};

◆ m_maskBadChannels

Gaudi::Property<bool> TileHitToTTL1::m_maskBadChannels
private
Initial value:
{this,
"maskBadChannels", true, "If true then bad channels are masked"}

Definition at line 84 of file TileHitToTTL1.h.

84 {this,
85 "maskBadChannels", true, "If true then bad channels are masked"};

◆ m_MBTSiTrig

int TileHitToTTL1::m_MBTSiTrig {0}
private

index of the triggering time slice for MBTS TTL1

Definition at line 126 of file TileHitToTTL1.h.

126{0};

◆ m_MBTSnSamples

int TileHitToTTL1::m_MBTSnSamples {0}
private

number of time slices for each chan for MBTS TTL1

Definition at line 125 of file TileHitToTTL1.h.

125{0};

◆ m_mbtsTTL1ContainerKey

SG::WriteHandleKey<TileTTL1Container> TileHitToTTL1::m_mbtsTTL1ContainerKey
private
Initial value:
{this,"TileMBTSTTL1Container",
"TileTTL1MBTS",
"Output Tile MBTS TTL1 container key"}

Definition at line 100 of file TileHitToTTL1.h.

100 {this,"TileMBTSTTL1Container",
101 "TileTTL1MBTS",
102 "Output Tile MBTS TTL1 container key"};

◆ m_nSamples

int TileHitToTTL1::m_nSamples {0}
private

number of time slices for each channel

Definition at line 121 of file TileHitToTTL1.h.

121{0};

◆ m_randomStreamName

Gaudi::Property<std::string> TileHitToTTL1::m_randomStreamName {this, "RandomStreamName", "Tile_HitToTTL1", ""}
private

Random Stream Name.

Definition at line 141 of file TileHitToTTL1.h.

141{this, "RandomStreamName", "Tile_HitToTTL1", ""};

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> TileHitToTTL1::m_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""}
private

Random number generator engine to use.

Definition at line 139 of file TileHitToTTL1.h.

139{this, "RndmSvc", "AthRNGSvc", ""};

◆ m_samplingFractionKey

SG::ReadCondHandleKey<TileSamplingFraction> TileHitToTTL1::m_samplingFractionKey
private
Initial value:
{this,
"TileSamplingFraction", "TileSamplingFraction", "Input Tile sampling fraction"}

Name of TileSamplingFraction in condition store.

Definition at line 107 of file TileHitToTTL1.h.

107 {this,
108 "TileSamplingFraction", "TileSamplingFraction", "Input Tile sampling fraction"};

◆ m_tileHWID

const TileHWID* TileHitToTTL1::m_tileHWID {nullptr}
private

Pointer to TileHWID helper.

Definition at line 114 of file TileHitToTTL1.h.

114{nullptr};

◆ m_tileID

const TileID* TileHitToTTL1::m_tileID {nullptr}
private

Pointer to TileID helper.

Definition at line 112 of file TileHitToTTL1.h.

112{nullptr};

◆ m_tileInfo

const TileInfo* TileHitToTTL1::m_tileInfo {nullptr}
private

Pointer to TileInfo.

Definition at line 115 of file TileHitToTTL1.h.

115{nullptr};

◆ m_tileNoise

bool TileHitToTTL1::m_tileNoise {false}
private

If true => generate noise for the TileTTL1 creation.

Definition at line 130 of file TileHitToTTL1.h.

130{false};

◆ m_tileTBID

const TileTBID* TileHitToTTL1::m_tileTBID {nullptr}
private

Pointer to TileID helper.

Definition at line 113 of file TileHitToTTL1.h.

113{nullptr};

◆ m_tileThresh

bool TileHitToTTL1::m_tileThresh {false}
private

If true => apply threshold on the conversion to TileTTL1.

Definition at line 131 of file TileHitToTTL1.h.

131{false};

◆ m_TileTTL1Type

Gaudi::Property<std::string> TileHitToTTL1::m_TileTTL1Type
private
Initial value:
{this,
"TileTTL1Type", "Standard", "Name of Trigger Type"}

Definition at line 90 of file TileHitToTTL1.h.

90 {this,
91 "TileTTL1Type", "Standard", "Name of Trigger Type"};

◆ m_TT_ID

const CaloLVL1_ID* TileHitToTTL1::m_TT_ID {nullptr}
private

Pointer to TT Identifier.

Definition at line 116 of file TileHitToTTL1.h.

116{nullptr};

◆ m_ttl1ContainerKey

SG::WriteHandleKey<TileTTL1Container> TileHitToTTL1::m_ttl1ContainerKey
private
Initial value:
{this,"TileTTL1Container",
"TileTTL1Cnt",
"Output Tile TTL1 container key"}

Definition at line 96 of file TileHitToTTL1.h.

96 {this,"TileTTL1Container",
97 "TileTTL1Cnt",
98 "Output Tile TTL1 container key"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: