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

Reconstructs Tile digitized pulses (ie, computes amplitude and time) for the QIE front-end. More...

#include <TileRawChannelBuilderQIEFilter.h>

Inheritance diagram for TileRawChannelBuilderQIEFilter:
Collaboration diagram for TileRawChannelBuilderQIEFilter:

Public Member Functions

 TileRawChannelBuilderQIEFilter (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor.
 ~TileRawChannelBuilderQIEFilter ()
 Destructor.
virtual StatusCode initialize ()
 Initialize method.
virtual StatusCode finalize ()
 Finalize method.
virtual TileRawChannelrawChannel (const TileDigits *digits, const EventContext &ctx)
 Builder virtual method to be implemented by subclasses.
virtual StatusCode createContainer (const EventContext &ctx)
 Create container in SG with name given by parameter (m_rawChannelContainerKey).
virtual StatusCode commitContainer (const EventContext &ctx)
 Commit RawChannelContiner in SG and make const.
void initLog (const EventContext &ctx)
void endLog ()
StatusCode build (const TileDigitsCollection *collection, const EventContext &ctx)
void resetDrawer ()
void resetOverflows (void)
Overflows_tgetOverflowedChannels (void)
std::string getTileRawChannelContainerID (void)
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 sysInitialize () override
 Perform system initialization for an algorithm.
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

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool InterfaceID.
static double correctAmp (double phase, bool of2=true)
 Amplitude correction factor according to the time when using weights for tau=0 without iterations.
static double correctTime (double phase, bool of2=true)
 Time correction factor.
static int CorruptedData (int ros, int drawer, int channel, int gain, const std::vector< float > &digits, float &dmin, float &dmax, float ADCmaxMinusEps, float ADCmaskValueMinusEps)
static const char * BadPatternName (float ped)

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.

Protected Attributes

SG::ReadHandleKey< TileDQstatusm_DQstatusKey
SG::ReadHandleKey< TileRawChannelContainerm_DSPContainerKey {this, "DSPContainer", "", "DSP Container key"}
SG::WriteHandleKey< TileRawChannelContainerm_rawChannelContainerKey
std::unique_ptr< TileMutableRawChannelContainerm_rawChannelCnt
TileFragHash::TYPE m_rChType
TileRawChannelUnit::UNIT m_rChUnit
unsigned int m_bsflags
int m_firstSample
bool m_calibrateEnergy
bool m_correctTime
bool m_useDSP
float m_ampMinThresh
 correct amplitude if it's above amplitude threshold (in ADC counts)
float m_timeMinThresh
 correct amplitude is time is above time min threshold
float m_timeMaxThresh
 correct amplitude is time is below time max threshold
int m_runType
const TileIDm_tileID
const TileHWIDm_tileHWID
ToolHandleArray< ITileRawChannelToolm_noiseFilterTools
ToolHandle< TileCondToolEmscalem_tileToolEmscale
ToolHandle< TileCondToolTimingm_tileToolTiming
ToolHandle< TileCondIdTransformsm_tileIdTransforms
ServiceHandle< TileCablingSvcm_cablingSvc
 Name of Tile cabling service.
const TileCablingServicem_cabling
 TileCabling instance.
Gaudi::Property< std::vector< int > > m_demoFragIDs
int m_trigType
bool m_idophys
bool m_idolas
bool m_idoped
bool m_idocis
int m_cischan
double m_capdaq
unsigned int m_evtCounter
unsigned int m_chCounter
int m_nChL
int m_nChH
double m_RChSumL
double m_RChSumH
Overflows_t m_overflows
int m_dataPoollSize
int m_error [MAX_CHANNELS]
int m_lastDrawer = -1
bool m_badDrawer = false
bool m_notUpgradeCabling
std::string m_infoName
const TileInfom_tileInfo
int m_i_ADCmax
float m_f_ADCmax
int m_i_ADCmaxPlus1
float m_f_ADCmaxPlus1
float m_ADCmaxMinusEps
float m_ADCmaskValueMinusEps
 indicates channels which were masked in background dataset

Static Protected Attributes

static const int MAX_CHANNELS = 48
static const int MAX_DMUS = 16

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

float filter (int ros, int drawer, int channel, float &amplitude, float &time)
 < Applies OF algorithm
int findMaxDigitPosition ()
 Finds maximum digit position in the pulse.
float compute (int ros, int drawer, int channel, float &amplitude, float &time)
 < Apply the number of iterations needed for reconstruction by calling the Filter method
void fill_drawer_errors (const EventContext &ctx, const TileDigitsCollection *collection)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

int m_pedestalMode
 pedestal mode to use
int m_nSignal {}
 internal counters
int m_nConst {}
 internal counters
int m_nSamples {}
 number of samples in the data
std::vector< float > m_digits
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

Reconstructs Tile digitized pulses (ie, computes amplitude and time) for the QIE front-end.

Definition at line 41 of file TileRawChannelBuilderQIEFilter.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TileRawChannelBuilderQIEFilter()

TileRawChannelBuilderQIEFilter::TileRawChannelBuilderQIEFilter ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor.

Definition at line 53 of file TileRawChannelBuilderQIEFilter.cxx.

53 :
54 TileRawChannelBuilder(type, name, parent)
55// , m_tileToolTiming("TileCondToolTiming")
56// , m_tileCondToolOfc("TileCondToolOfc")
57// , m_tileCondToolOfcCool("TileCondToolOfcCool")
58// , m_tileToolNoiseSample("TileCondToolNoiseSample")
59// , m_nSignal(0)
60// , m_nNegative(0)
61// , m_nCenter(0)
62// , m_nConst(0)
63// , m_nSamples(0)
64// , m_t0SamplePosition(0)
65// , m_maxTime(0.0)
66// , m_minTime(0.0)
67{
68 //declare interfaces
69 declareInterface < TileRawChannelBuilder > (this);
70 declareInterface < TileRawChannelBuilderQIEFilter > (this);
71
72 m_rawChannelContainerKey = "TileRawChannelQIE";
73
74 //declare properties
75// declareProperty("TileCondToolTiming", m_tileToolTiming);
76// declareProperty("TileCondToolOfc", m_tileCondToolOfc ,"TileCondToolOfc");
77// declareProperty("TileCondToolOfcCool",m_tileCondToolOfcCool ,"TileCondToolOfcCool");
78// declareProperty("TileCondToolNoiseSample", m_tileToolNoiseSample,"TileCondToolNoiseSample");
79// declareProperty("MaxIterations",m_maxIterations = 5);
80 declareProperty("PedestalMode", m_pedestalMode = 17);
81// declareProperty("TimeForConvergence",m_timeForConvergence = 0.5);
82// declareProperty("ConfTB",m_confTB = false);
83// declareProperty("OF2",m_of2 = true);
84// declareProperty("Minus1Iteration",m_minus1Iter = false);
85// declareProperty("AmplitudeCorrection",m_correctAmplitude = false);
86// declareProperty("BestPhase",m_bestPhase = false);
87// declareProperty("OfcfromCool",m_ofcFromCool = false);
88// declareProperty("EmulateDSP",m_emulateDsp = false);
89}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
SG::WriteHandleKey< TileRawChannelContainer > m_rawChannelContainerKey
TileRawChannelBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.

◆ ~TileRawChannelBuilderQIEFilter()

TileRawChannelBuilderQIEFilter::~TileRawChannelBuilderQIEFilter ( )

Destructor.

Definition at line 91 of file TileRawChannelBuilderQIEFilter.cxx.

91 {
92}

Member Function Documentation

◆ BadPatternName()

const char * TileRawChannelBuilder::BadPatternName ( float ped)
staticinherited

Definition at line 457 of file TileRawChannelBuilder.cxx.

457 {
458 static const char * const errname[26] = {
459 "-10 - good signal",
460 "-9 - underflow",
461 "-8 - overflow",
462 "-7 - underflow and overflow",
463 "-6 - constant signal",
464 "-5 - disconnected channel",
465 "-4 - half a drawer masked",
466 "-3 - bad DQ status",
467 "-2 - underflow in all samples",
468 "-1 - overflow in all samples",
469 "0 - unknown error",
470 "1 - jump from zero to saturation",
471 "2 - samples with zeros",
472 "3 - at least two saturated. others - close to pedestal",
473 "4 - two distinct levels with at least 2 samples each",
474 "5 - pedestal with jump up in one sample",
475 "6 - pedestal with jump down in one sample",
476 "7 - signal with jump up in one sample",
477 "8 - signal with jump down in one sample",
478 "9 - base line above threshold in low gain",
479 "10 - jump down in first sample in low gain",
480 "11 - jump down in last sample in low gain",
481 "12 - jump up in one sample above const",
482 "13 - jump down in one sample below const",
483 "14 - unrecoverable timing jump",
484 "15 - unknown error"
485 };
486
487 return errname[std::min(25, std::max(0, int((ped + 500) * 1e-4)))];
488}

◆ build()

StatusCode TileRawChannelBuilder::build ( const TileDigitsCollection * collection,
const EventContext & ctx )
inherited

Definition at line 491 of file TileRawChannelBuilder.cxx.

492{
493
494 int frag = coll->identify();
495
496 // make sure that error array is up-to-date
497 if (frag != m_lastDrawer && m_notUpgradeCabling) {
498 fill_drawer_errors(ctx, coll);
499 }
500
501 // Iterate over all digits in this collection
502 TileDigitsCollection::const_iterator digitItr = coll->begin();
503 TileDigitsCollection::const_iterator lastDigit = coll->end();
504
505 for (; digitItr != lastDigit; ++digitItr) {
506
507 TileRawChannel* rch = rawChannel((*digitItr), ctx);
508
510
511 int err = m_error[m_tileHWID->channel(rch->adc_HWID())];
512
513 if (err) {
514 if (err == -8 || err == -7) m_overflows.push_back(std::make_pair(rch, (*digitItr)));
515 float ped = rch->pedestal() + 100000 + 10000 * err;
516 rch->setPedestal(ped);
517 if (msgLvl(MSG::VERBOSE) && !m_badDrawer) {
518 if (err < -5) {
519 msg(MSG::VERBOSE) << "BadCh " << m_tileHWID->to_string(rch->adc_HWID())
520 << " warning = " << BadPatternName(ped) << endmsg;
521 } else {
522 msg(MSG::VERBOSE) << "BadCh " << m_tileHWID->to_string(rch->adc_HWID())
523 << " error = " << BadPatternName(ped) << endmsg;
524 }
525 }
526 }
527
528 }
529
530 ATH_CHECK( m_rawChannelCnt->push_back (rch) );
531 }
532
533 IdentifierHash hash = m_rawChannelCnt->hashFunc().hash(coll->identify());
534 TileRawChannelCollection* rawChannelCollection = m_rawChannelCnt->indexFindPtr(hash);
535 rawChannelCollection->setLvl1Id(coll->getLvl1Id());
536 rawChannelCollection->setLvl1Type(coll->getLvl1Type());
537 rawChannelCollection->setDetEvType(coll->getDetEvType());
538 rawChannelCollection->setRODBCID(coll->getRODBCID());
539
540 return StatusCode::SUCCESS;
541}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
static const char * BadPatternName(float ped)
std::unique_ptr< TileMutableRawChannelContainer > m_rawChannelCnt
void fill_drawer_errors(const EventContext &ctx, const TileDigitsCollection *collection)
virtual TileRawChannel * rawChannel(const TileDigits *digits, const EventContext &ctx)
Builder virtual method to be implemented by subclasses.
float pedestal(void) const
void setPedestal(float ped)
void setLvl1Type(uint32_t lvl1Type)
Setter for level1 type from ROD header.
void setLvl1Id(uint32_t lvl1Id)
Setter for level1 id from ROD header.
void setRODBCID(uint32_t rodBCID)
Setter for BCID from ROD header.
void setDetEvType(uint32_t detEvType)
Setter for detector event type from ROD header.
HWIdentifier adc_HWID(void) const
Definition TileRawData.h:53

◆ commitContainer()

StatusCode TileRawChannelBuilder::commitContainer ( const EventContext & ctx)
virtualinherited

Commit RawChannelContiner in SG and make const.

Definition at line 543 of file TileRawChannelBuilder.cxx.

544{
545
546 const TileDQstatus* DQstatus = SG::makeHandle (m_DQstatusKey, ctx).get();
547
548 ToolHandleArray<ITileRawChannelTool>::iterator itrTool = m_noiseFilterTools.begin();
549 ToolHandleArray<ITileRawChannelTool>::iterator endTool = m_noiseFilterTools.end();
550
551 if ( m_useDSP && !m_DSPContainerKey.key().empty() &&
552 (DQstatus->incompleteDigits() || m_chCounter<12288) && itrTool!=endTool )
553 {
554 const TileRawChannelContainer * dspCnt = SG::makeHandle (m_DSPContainerKey, ctx).get();
555 ATH_MSG_DEBUG( "Incomplete container - use noise filter corrections from DSP container" );
556
557 uint32_t bsFlags = dspCnt->get_bsflags();
558 std::vector<IdentifierHash> hashes = m_rawChannelCnt->GetAllCurrentHashes();
559 std::vector<IdentifierHash> dspHashes = dspCnt->GetAllCurrentHashes();
560 if (bsFlags == 0) {
561 ATH_MSG_WARNING("Problem in applying noise corrections: DSP container ("
562 << m_DSPContainerKey.key() << ") seems to be emtpy!");
563 } else if (hashes != dspHashes) {
564 ATH_MSG_ERROR( " Error in applying noise corrections; "
565 "hash vectors do not match.");
566 } else {
567 // Go through all TileRawChannelCollections
568 for (IdentifierHash hash : hashes) {
569 TileRawChannelCollection* coll = m_rawChannelCnt->indexFindPtr (hash);
570 const TileRawChannelCollection* dcoll = dspCnt->indexFindPtr (hash);
571
572 if (coll->identify() != dcoll->identify()) {
573
574 ATH_MSG_ERROR( " Error in applying noise corrections " << MSG::hex
575 << " collection IDs 0x" << coll->identify() << " and 0x" << dcoll->identify()
576 << " do not match " << MSG::dec );
577 break;
578 }
579
580 // iterate over all channels in a collection
583
584 for (TileRawChannel* rch : *coll) {
585 HWIdentifier adc_id = rch->adc_HWID();
586 while (dspItr != dspLast && adc_id != (*dspItr)->adc_HWID()) {
587 ++dspItr;
588 }
589 if (dspItr != dspLast) {
590 float corr = (*dspItr)->pedestal();
591 ATH_MSG_VERBOSE( "Ch "<<m_tileHWID->to_string(adc_id)
592 <<" amp " << rch->amplitude() << " ped " << rch->pedestal()
593 << " corr " << corr );
594 if (corr<10000.) {
595 rch->setAmplitude (rch->amplitude() - corr); // just baseline shift
596 rch->setPedestal (rch->pedestal() + corr); // just baseline shift
597 } else {
598 float ped = rch->pedestal();
599 if (corr > ped) {
600 rch->setPedestal (fmod(ped,10000.) + int(corr)/10000 * 10000); // changing error status
601 ATH_MSG_VERBOSE( "New error status in ped "<<rch->pedestal());
602 }
603 }
604 } else {
605 ATH_MSG_WARNING(" Problem in applying noise corrections "
606 << " can not find channel in DSP container with HWID "
607 << m_tileHWID->to_string(adc_id) );
608 dspItr = dcoll->begin();
609 }
610 }
611 }
612 }
613
614 } else {
615
616 for (ToolHandle<ITileRawChannelTool>& noiseFilterTool : m_noiseFilterTools) {
617 if (noiseFilterTool->process(*m_rawChannelCnt.get(), ctx).isFailure()) {
618 ATH_MSG_ERROR( " Error status returned from noise filter " );
619 } else {
620 ATH_MSG_DEBUG( "Noise filter applied to the container" );
621 }
622 }
623
624 }
625
626 ATH_MSG_DEBUG( " nCh=" << m_chCounter
627 << " nChH/L=" << m_nChH << "/" << m_nChL
628 << " RChSumH/L=" << m_RChSumH << "/" << m_RChSumL );
629
630 SG::WriteHandle<TileRawChannelContainer> rawChannelsContainer(m_rawChannelContainerKey, ctx);
631 ATH_CHECK( rawChannelsContainer.record(std::move(m_rawChannelCnt)) );
632
633 endLog();
634
635 return StatusCode::SUCCESS;
636}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Athena::TPCnvVers::Old Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current TileRawChannelContainer
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
virtual std::vector< IdentifierHash > GetAllCurrentHashes() const override final
Returns a collection of all hashes availiable in this IDC.
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
bool incompleteDigits() const
A few extra items (from TileBeamInfoProvider).
SG::ReadHandleKey< TileDQstatus > m_DQstatusKey
SG::ReadHandleKey< TileRawChannelContainer > m_DSPContainerKey
ToolHandleArray< ITileRawChannelTool > m_noiseFilterTools
uint32_t get_bsflags() const
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
setEventNumber uint32_t

◆ compute()

float TileRawChannelBuilderQIEFilter::compute ( int ros,
int drawer,
int channel,
float & amplitude,
float & time )
private

< Apply the number of iterations needed for reconstruction by calling the Filter method

< Computes A,time,ped using OF. If iterations are required, the Iterator method is used

Definition at line 409 of file TileRawChannelBuilderQIEFilter.cxx.

409 {
410
411 ATH_MSG_VERBOSE("compute();" << " ros=" << ros << " drawer=" << drawer << " channel=" << channel);
412
413 //int i = 0, digits_size = m_digits.size();
414 float chi2 = -999.; //the chi2 is not calculated by default
415 float fraction_mean = 0;
416 //float expected_fraction_RMS = 0;
417
418 /*
419 double a[9];
420 double b[9];
421 double c[9];
422 double g[9];
423 double dg[9];
424 */
425
426 amplitude = 0.;
427 time = 0.; //TODO: Time needs to be implemented using the QIE TDC
428
429 /*
430 float ofcPhase = (float) phase;
431
432 unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
433 const TileOfcWeightsStruct* m_weights;
434 if (m_ofcFromCool) {
435 m_weights = m_tileCondToolOfcCool->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2);
436 } else {
437 m_weights = m_tileCondToolOfc->getOfcWeights(drawerIdx, channel, gain, ofcPhase, m_of2);
438 }
439
440 for (i = 0; i < digits_size; ++i) {
441 a[i] = m_weights->w_a[i];
442 b[i] = m_weights->w_b[i];
443 g[i] = m_weights->g[i];
444 dg[i] = m_weights->dg[i];
445 if (m_of2)
446 c[i] = m_weights->w_c[i]; // [OptFilterPha+100];
447 }
448 */
449
450 //Case 1: No pileup suppression
451 // Here we assume that the digits are in fC
452 // TODO; The code needs to be able to handle QIE counts instead of fC
453 //amplitude = m_digits[3] + m_digits[4];
454 //Case 2: with Pileup suppression
455 //TODO: Timing information needs to be added
456 //February 2016: The transfer constants are taken from the Oct 2015 testbeam results; they are not optimal:
457 //0.16/(1-0.16) = 0.19
458 //TODO: These numbers may be placed in a database
459 const float avg_fraction = 0.18;
460 const float Q_1pe = 17.; //charge per a photo-electron in fC
461 //const float pileup_cutoff = 3.0; //Cut-off for the pileup subtractions
462
463 //m_digits[3] charge in the central interaction
464 //m_digits[4] charge in the following interaction;
465 //it is expected to be ~5 times smaller than in the central interaction without the out-of-time pileup
466 /*
467 if (m_digits[2] > 0) //check if there is pileup in the preceding BC.
468 amplitude = m_digits[3] - avg_fraction * m_digits[2] / (1. - avg_fraction); // suppress pileup from the previous BC.
469 else
470 amplitude = m_digits[3];
471
472 //Check if there is visible pileup in the next BC
473 //pileup only increases the measured charge
474
475 if (amplitude > 0) {
476 fraction_mean = m_digits[4] * (1. - avg_fraction) / amplitude;
477 expected_fraction_RMS = sqrt(avg_fraction * (1. - avg_fraction) * (1. - avg_fraction) * Q_1pe / amplitude);
478 chi2 = (fraction_mean - avg_fraction) / expected_fraction_RMS;
479
480 if (chi2 > pileup_cutoff) { //There may be pileup in the following BC
481 amplitude *= 1. / (1. - avg_fraction); // The pileup is high enough so we ignore the following interaction
482 } else { // The pileup is low enough so we include the following interaction charge as is
483 amplitude += m_digits[4];
484 }
485 }*/
486
487 //Case 3: with pileup suppression
488 double prob_cut_off = 0.005;
489
490 if (m_digits[2] > 0) //check if there is pileup in the preceding BC.
491 amplitude = m_digits[3] - avg_fraction * m_digits[2] / (1. - avg_fraction);
492
493 if (amplitude < 0)
494 amplitude = 0;
495
496 if (m_digits[4] > 0) {
497 amplitude += m_digits[4];
498 fraction_mean = m_digits[4] / amplitude;
499
500 if (fraction_mean > avg_fraction) { // Pileup is suspected in the 2nd integration window
501 int n = (int) (amplitude / Q_1pe);
502 int k = (int) (m_digits[4] / Q_1pe);
503
504 //Here we calculate the binomial coefficient; n>=k
505 // n!/(k! (n-k!))
506 double binom_coeff = 1.;
507
508 for (int j = n; j > 0; j--) {
509 if (j > k)
510 binom_coeff = binom_coeff * (double) j;
511
512 if (j < (n - k + 1))
513 binom_coeff = binom_coeff / (double) j;
514 }
515
516 //binomial probability
517 double prob = binom_coeff * pow(avg_fraction, k) * pow(1. - avg_fraction, n - k);
518
519 if (prob < prob_cut_off) { //likely there is too much pileup in the 2nd integration window.
520 amplitude -= m_digits[4];
521 amplitude *= 1. / (1. - avg_fraction);
522 }
523 }
524
525 }
526
527 bool goodEnergy = (fabs(amplitude) > 1.0e-04);
528 if (goodEnergy) {
529 if (msgLvl(MSG::VERBOSE)) {
530 msg(MSG::VERBOSE) << "QIEFilterEne=" << amplitude << endmsg;
531 msg(MSG::VERBOSE) << "QIEFilterTimee=" << time << endmsg;
532 }
533 } else {
534 if (msgLvl(MSG::VERBOSE)) {
535 msg(MSG::VERBOSE) << "QIEFilterEne=" << amplitude << " ... assuming 0.0" << endmsg;
536 msg(MSG::VERBOSE) << "QIEFilterTime=" << time << " ... assuming 0.0" << endmsg;
537 }
538 //time = amplitude = 0.0;
539 }
540
541// std::cout << "emulate " << m_emulatedsp << " OptFilterEne " << OptFilterEne << " OptFilterDigits[3]" << OptFilterDigits[3] << " OptFilterTime="<<OptFilterTime<<" OptFilterPed="<<OptFilterPed<<" OptFilterChi2="<<OptFilterChi2<<" g 3 " << g[3] << " dg 1 3 5 " << dg[1] << " " << dg[3] << " " << dg[5] <<std::endl;
542 if (fabs(chi2) > 1.0e-04 || goodEnergy) {
543 if (msgLvl(MSG::VERBOSE)) {
544 msg(MSG::VERBOSE) << "QIEFilterTime=" << time << endmsg;
545 msg(MSG::VERBOSE) << "QIEFilterChi2=" << chi2 << endmsg;
546 }
547 } else {
548 if (msgLvl(MSG::VERBOSE)) {
549 msg(MSG::VERBOSE) << "QIEFilterTime=" << time << endmsg;
550 msg(MSG::VERBOSE) << "QIEFilterChi2=" << chi2 << " ... assuming 0.0" << endmsg;
551 }
552 //chi2 = 0.0;
553 }
554
555 return chi2;
556}
double chi2(TH1 *h0, TH1 *h1)
time(flags, cells_name, *args, **kw)
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
constexpr int pow(int x)
Definition conifer.h:27
MsgStream & msg
Definition testRead.cxx:32

◆ correctAmp()

double TileRawChannelBuilder::correctAmp ( double phase,
bool of2 = true )
staticinherited

Amplitude correction factor according to the time when using weights for tau=0 without iterations.

Definition at line 645 of file TileRawChannelBuilder.cxx.

645 {
646
647 double corr = 1.0;
648 if (of2) {
649 // estimation from Belen for rel 14.0.0
650 /*double a,b,c;
651 if(fabs(phase)<5.){
652 a=0.137; b=0.0877; c=0.0865;
653 }else{
654 a=0.565; b=0.116; c=0.0751;
655 }
656 corr=(1+(a+b*phase+c*phase*phase)/100.);
657 */
658
659 // estimation from Vakhtang for rel 14.4.0
660 /*double k = (phase < 0.0 ? 0.0009400 : 0.0010160);
661 corr = (1.0 + k * phase * phase);
662 */
663
664 // Parabolic correction from Tigran
665 double a1,a2,b,c;
666 a1 = phase < 0.0 ? 0.000940774 : 0.00102111;
667 a2 = phase < 0.0 ? 0.000759051 : 0.000689625;
668 b = phase < 0.0 ? -2.0 * 7.0 * (a1 - a2) : 2.0 * 12.5 * (a1 - a2);
669 c = phase < 0.0 ? 1.0 - 7.0 * 7.0 * (a1-a2) : 1.0 - 12.5 * 12.5 * (a1-a2);
670 if (phase < 12.5 && phase > -7.0) corr = a1 * phase * phase + 1.0;
671 else corr = phase * ( a2 * phase + b) + c;
672
673
674 } else {
675 /*double a,b,c;
676 if(phase<0){
677 a=1.0002942; b=0.0003528; c=0.0005241;
678 }else{
679 a=1.0001841; b=-0.0004182; c=0.0006167;
680 }
681 corr = a + phase * ( b + c * phase);
682 */
683
684 /*double k = (phase < 0.0 ? 0.0005241 : 0.0006167);
685 corr = (1.0 + k * phase * phase);
686 */
687
688 // 4th degree polynomial correction from Tigran
689 double k1 = (phase < 0.0 ? -0.0000326707:0.000380336);
690 double k2 = (phase < 0.0 ? -0.000560962:-0.000670487);
691 double k3 = (phase < 0.0 ? -0.00000807869:0.00000501773);
692 double k4 = (phase < 0.0 ? -0.000000145008:0.0000000584647);
693
694 corr = 1.0 / (1.0 + (k1 + (k2 + (k3 + k4 *phase)*phase)*phase)*phase);
695
696
697 }
698
699 return corr;
700}

◆ correctTime()

double TileRawChannelBuilder::correctTime ( double phase,
bool of2 = true )
staticinherited

Time correction factor.

Definition at line 704 of file TileRawChannelBuilder.cxx.

704 {
705
706 double correction = 0.0;
707
708 if (of2) {
709 if(phase < 0) {
710 correction = (-0.00695743 + (0.0020673 - (0.0002976 + 0.00000361305 * phase) * phase) * phase) * phase;
711 } else {
712 correction = (0.0130013 + (0.00128769 + (-0.000550218 + 0.00000755344 * phase) * phase) * phase) * phase;
713 }
714 }
715 // OF1 does not need correction
716
717 return correction;
718}
correction(mu, runmode, campaign, run=None)
Definition zlumi_mc_cf.py:4

◆ CorruptedData()

int TileRawChannelBuilder::CorruptedData ( int ros,
int drawer,
int channel,
int gain,
const std::vector< float > & digits,
float & dmin,
float & dmax,
float ADCmaxMinusEps,
float ADCmaskValueMinusEps )
staticinherited

Definition at line 722 of file TileRawChannelBuilder.cxx.

723 {
724 bool eb = (ros > 2);
725 bool ebsp = ((ros == 3 && drawer == 14) || (ros == 4 && drawer == 17));
726 bool empty = ((eb && ((channel > 23 && channel < 30) || channel > 41)) || (ebsp && channel < 3));
727 bool not_gap = !(empty || (eb && (channel == 0 || channel == 1 || channel == 12 || channel == 13))
728 || (ebsp && (channel == 18 || channel == 19)));
729
730 const float epsilon = 4.1; // allow +/- 2 counts fluctuations around const value
731 const float delta[4] = { 29.9, 29.9, 49.9, 99.9 }; // jump levels between constLG, constHG, non-constLG, non-constHG
732 const float level1 = 99.9; // jump from this level to m_i_ADCmax is bad
733 const float level2 = 149.9; // base line at this level in low gain is bad
734 const float narrowLevel[2] = { 29.9, 49.9 }; // minimal amplitude for narrow pulses
735 const float delt = std::min(std::min(std::min(delta[0], delta[1]), std::min(delta[2], delta[3])),
736 std::min(narrowLevel[0], narrowLevel[1]));
737 const float secondMaxLevel = 0.3;
738
739 int error = 0;
740
741 unsigned int nSamp = digits.size();
742 if (nSamp) {
743 dmin = dmax = digits[0];
744 unsigned int pmin = 0;
745 unsigned int pmax = 0;
746 unsigned int nzero = (dmin < 0.01) ? 1 : 0;
747 unsigned int nover = (dmax > ADCmaxMinusEps) ? 1 : 0;
748
749 for (unsigned int i = 1; i < nSamp; ++i) {
750 float dig = digits[i];
751 if (dig > dmax) {
752 dmax = dig;
753 pmax = i;
754 } else if (dig < dmin) {
755 dmin = dig;
756 pmin = i;
757 }
758 if (dig < 0.01) ++nzero;
759 else if (dig > ADCmaxMinusEps) ++nover;
760 }
761
762 float dmaxmin = dmax - dmin;
763 //std::cout << " ros " << ros << " drawer " << drawer << " channel " << channel << " not_gap " << not_gap << " nzero " << nzero << " nover " << nover << std::endl;
764
765 if (dmin > ADCmaxMinusEps) { // overflow in all samples
766 error = (dmin > ADCmaskValueMinusEps) ? -3 : -1; // dmin=m_tileInfo->ADCmaskValue() - masking in overlay job (set in TileDigitsMaker)
767
768 } else if (dmax < 0.01) { // underflow in all samples
769 error = (empty) ? -5 : -2; // set different type of errors for exsiting and non-existing channels
770
771 } else if (dmaxmin < 0.01) { // constant value in all samples
772 error = -6;
773
774 } else if (nzero && nover) { // jump from zero to saturation
775 error = 1;
776
777 } else if ((nzero && (not_gap || empty)) || nzero > 1) { // one sample at zero in normal channel
778 error = 2; // or 2 samples at zero in gap/crack/MBTS
779
780 } else if (gain == 0 && dmin > level2) { // baseline above threshold in low gain is bad
781 error = 9;
782
783 } else if (dmaxmin > delt) { // check that max-min is above minimal allowed jump
784
785 float abovemin = dmax;
786 float belowmax = dmin;
787 unsigned int nmin = 0;
788 unsigned int nmax = 0;
789 for (unsigned int i = 0; i < nSamp; ++i) {
790 float smp = digits[i];
791 if (smp - dmin < epsilon) {
792 ++nmin;
793 }
794 if (dmax - smp < epsilon) {
795 ++nmax;
796 }
797 if (smp < abovemin && smp > dmin) {
798 abovemin = smp;
799 }
800 if (smp > belowmax && smp < dmax) {
801 belowmax = smp;
802 }
803 }
804 // more than two different values - shift index by 2, i.e. use thresholds for non-const levels
805 int gainInd = (abovemin != dmax || belowmax != dmin) ? gain + 2 : gain;
806 bool big_jump = (dmaxmin > delta[gainInd]);
807 bool max_in_middle = (pmax > 0 && pmax < nSamp - 1);
808 bool min_in_middle = (pmin > 0 && pmin < nSamp - 1);
809
810 if (nover > 1 && belowmax < level1) { // at least two saturated. others - close to pedestal
811 error = 3;
812 } else if (nmax + nmin == nSamp && big_jump) {
813 if (nmax > 1 && nmin > 1) { // at least 2 samples at two distinct levels
814 error = 4;
815 } else if (nmax == 1) {
816 if (max_in_middle) { // jump up in one sample, but not at the edge
817 error = 5;
818 }
819 } else if (nmin == 1) { // jump down in one sample
820 error = 6;
821 }
822 }
823 if (error == 0 && dmaxmin > narrowLevel[gain]) {
824 float secondMax = dmaxmin * secondMaxLevel;
825 float dminPlus = dmin + secondMax;
826 float dmaxMinus = dmax - secondMax;
827 if (not_gap) { // jumps above two (or one) neighbour samples
828 if (max_in_middle && std::max(digits[pmax - 1], digits[pmax + 1]) < dminPlus) {
829 error = 7; // jump up in one sample in the middle, which is much higher than two neighbours
830 } else if (min_in_middle && std::min(digits[pmin - 1], digits[pmin + 1]) > dmaxMinus) {
831 error = 8; // jump down in one sample, which is much lower than two neighbours
832 } else if (big_jump && gain == 0) { // check first and last sample only in low gain
833 if (pmin == 0 && digits[1] > dmax - secondMax) {
834 error = 10; // jump down in first sample. which is much lower than next one
835 } else if (pmin == nSamp - 1 && digits[pmin - 1] > dmax - secondMax) {
836 error = 11; // jump down in last sample. which is much lower than previous one
837 }
838 }
839 }
840 if (!error && big_jump) { // jumps above all samples
841 if ((max_in_middle || gain == 0) && nmax == 1 && belowmax < dminPlus) {
842 error = 12; // jump up in one sample in the middle, which is much higher than all others
843 } else if ((min_in_middle || gain == 0) && nmin == 1 && abovemin > dmaxMinus) {
844 error = 13; // jump down in one sample, which is much lower than all others (
845 }
846 }
847 }
848 }
849
850 } else {
851 dmin = dmax = 0.0;
852 }
853
854 return error;
855}
const int nmax(200)
static const Attributes_t empty

◆ createContainer()

StatusCode TileRawChannelBuilder::createContainer ( const EventContext & ctx)
virtualinherited

Create container in SG with name given by parameter (m_rawChannelContainerKey).

Definition at line 232 of file TileRawChannelBuilder.cxx.

232 {
233 initLog(ctx);
234
235 // create TRC container
236 m_rawChannelCnt = std::make_unique<TileMutableRawChannelContainer>(true, m_rChType, m_rChUnit, SG::VIEW_ELEMENTS);
237 ATH_CHECK( m_rawChannelCnt->status() );
238 m_rawChannelCnt->set_bsflags(m_bsflags);
239
240 ATH_MSG_DEBUG( "Created TileRawChannelContainer '" << m_rawChannelContainerKey.key() << "'" );
241
242 return StatusCode::SUCCESS;
243}
TileRawChannelUnit::UNIT m_rChUnit
void initLog(const EventContext &ctx)
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::detStore ( ) const
inlineinherited

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

Definition at line 95 of file AthCommonDataStore.h.

◆ endLog()

void TileRawChannelBuilder::endLog ( )
inherited

Definition at line 638 of file TileRawChannelBuilder.cxx.

638 {
639 m_chCounter = 0;
640 m_nChL = m_nChH = 0;
641 m_RChSumL = m_RChSumH = 0.0;
642
643}

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ fill_drawer_errors()

void TileRawChannelBuilder::fill_drawer_errors ( const EventContext & ctx,
const TileDigitsCollection * collection )
privateinherited

Definition at line 299 of file TileRawChannelBuilder.cxx.

301{
302 const TileDQstatus* DQstatus = SG::makeHandle (m_DQstatusKey, ctx).get();
303
304 int frag = coll->identify();
305 int ros = (frag >> 8);
306 int drawer = (frag & 0xff);
307
308 m_lastDrawer = frag;
309
310 memset(m_error, 0, sizeof(m_error));
311 int dmuerr[MAX_DMUS] = {0};
312 int nch = 0;
313 bool bigain = DQstatus->isBiGain();
314 if (!bigain) { // in bigain runs we don't have DQ status fragment
315 for (int ch = 0; ch < MAX_CHANNELS; ch += 3) {
316 if (!DQstatus->isAdcDQgood(ros, drawer, ch, 0)) {
317 m_error[ch + 2] = m_error[ch + 1] = m_error[ch] = -3;
318 dmuerr[ch / 3] = 3;
319 nch += 3;
320 }
321 }
322 }
323 if (nch == MAX_CHANNELS) { // all bad - nothing to do
324 m_badDrawer = true;
325 ATH_MSG_VERBOSE( "Drawer 0x" << MSG::hex << frag << MSG::dec
326 << " is bad - skipping bad patterns check " );
327 return;
328 } else {
329 m_badDrawer = false;
330 ATH_MSG_VERBOSE( "Drawer 0x" << MSG::hex << frag << MSG::dec
331 << " looking for bad patterns in digits" );
332 }
333
334 float mindig, maxdig;
335 int nchbad[2] = { 0, 0 };
336
337 // Iterate over all digits in this collection
338 TileDigitsCollection::const_iterator digitItr = coll->begin();
339 TileDigitsCollection::const_iterator lastDigit = coll->end();
340
341 for (; digitItr != lastDigit; ++digitItr) {
342 const TileDigits * pDigits = (*digitItr);
343 HWIdentifier adcId = pDigits->adc_HWID();
344 int channel = m_tileHWID->channel(adcId);
345 int gain = m_tileHWID->adc(adcId);
346
347 if (m_error[channel]) {
348 ATH_MSG_VERBOSE( "BadCh " << ros
349 << "/" << drawer
350 << "/" << channel
351 << "/" << gain << " BAD DQ STATUS ");
352
353 } else {
354
355 int err = CorruptedData(ros, drawer, channel, gain, pDigits->samples(), mindig, maxdig, m_ADCmaxMinusEps, m_ADCmaskValueMinusEps);
356
357 if (err) {
358
360 if (err > -5) {
361 ++dmuerr[channel / 3];
362 ++nchbad[channel / 24];
363 }
364
365 if (msgLvl(MSG::VERBOSE)) {
366
367 msg(MSG::VERBOSE) << "BadCh " << ros
368 << "/" << drawer
369 << "/" << channel
370 << "/" << gain;
371 if (err < -5) msg(MSG::VERBOSE) << " Warning " << err;
372 else msg(MSG::VERBOSE) << " Error " << err;
373 if (mindig > m_ADCmaskValueMinusEps) msg(MSG::VERBOSE) << " BADDQ";
374 if (maxdig > m_ADCmaxMinusEps) msg(MSG::VERBOSE) << " Overflow";
375 if (mindig < 0.1) msg(MSG::VERBOSE) << " Underflow";
376 if (err < 0) msg(MSG::VERBOSE) << " Const";
377
378 msg(MSG::VERBOSE) << " samp=";
379 std::vector<float> digits = pDigits->samples();
380 for (unsigned int i = 0; i < digits.size(); ++i) {
381 msg(MSG::VERBOSE) << " " << digits[i];
382 }
383 msg(MSG::VERBOSE) << endmsg;
384 }
385
386 } else {
387 if (mindig < 0.01) err += 1;
388 if (maxdig > m_ADCmaxMinusEps) err += 2;
389 if (err) m_error[channel] = err - 10;
390 }
391 }
392 }
393
394 // check if we want to mask half a drawer
395 // in this case set error = -4 for channels which were good before
396
397 int ndmubad[2] = { 0, 0 };
398 int dmu = 0;
399 for (; dmu < MAX_DMUS / 2; ++dmu) { // first half
400 if (dmuerr[dmu] > 1)
401 ++ndmubad[0]; // count DMUs with at least two bad channels
402 }
403 for (; dmu < MAX_DMUS; ++dmu) { // second half
404 if (dmuerr[dmu] > 1)
405 ++ndmubad[1]; // count DMUs with at least two bad channels
406 }
407
408 int ndmulimit[2] = { 3, 3 }; // max number of bad DMUs when half-drawer is not yet masked
409 // if 4 DMUs will be bad - mask whole half-drawer
410 if (frag > 0x2ff) { // if extended barrel
411 if (frag == 0x30e || frag == 0x411)
412 ndmulimit[0] = 4; // in EB special one DMU is always bad (missing)
413 ndmulimit[1] = 5; // in second half of EB 4 DMUs ara always bad (missing)
414 // only if 7 DMUs are bad, mask whole half-drawer
415 }
416
417 bool printall = true;
418 for (int p = 0; p < 2; ++p) {
419 if (ndmubad[p] > ndmulimit[p] && nchbad[p] > 0) {
420 if (msgLvl(MSG::VERBOSE)) {
421 msg(MSG::VERBOSE) << "Drawer 0x" << MSG::hex << frag << MSG::dec
422 << " masking whole " << ((p) ? "second" : "first")
423 << " half" << endmsg;
424 if (printall) {
425 msg(MSG::VERBOSE) << "nDMuErr ";
426 for (int d = 0; d < MAX_DMUS; ++d) {
427 msg(MSG::VERBOSE) << " " << dmuerr[d];
428 }
429 msg(MSG::VERBOSE) << " total " << ndmubad[p] << " errors" << endmsg;
430
431 msg(MSG::VERBOSE) << "ChErr ";
432 int ch = 0;
433 while (ch < MAX_CHANNELS-2) {
434 msg(MSG::VERBOSE) << " " << m_error[ch++];
435 msg(MSG::VERBOSE) << " " << m_error[ch++];
436 msg(MSG::VERBOSE) << " " << m_error[ch++];
437 msg(MSG::VERBOSE) << " ";
438 }
439
440 msg(MSG::VERBOSE) << " total " << nchbad[p]
441 << " bad patterns" << endmsg;
442 printall = false;
443 }
444 }
445 int ch = (p) ? MAX_CHANNELS / 2 : 0;
446 int chmax = (p) ? MAX_CHANNELS : MAX_CHANNELS / 2;
447 for (; ch < chmax; ++ch) {
448 if (m_error[ch] == 0 || m_error[ch] < -5) { // channel was good before
449 m_error[ch] = -4;
450 }
451 }
452 }
453 }
454
455}
bool isAdcDQgood(int partition, int drawer, int ch, int gain) const
returns status of single ADC returns False if there are any errors
bool isBiGain() const
returns gain mode of run
const std::vector< float > & samples() const
Definition TileDigits.h:58
float m_ADCmaskValueMinusEps
indicates channels which were masked in background dataset
static int CorruptedData(int ros, int drawer, int channel, int gain, const std::vector< float > &digits, float &dmin, float &dmax, float ADCmaxMinusEps, float ADCmaskValueMinusEps)

◆ filter()

float TileRawChannelBuilderQIEFilter::filter ( int ros,
int drawer,
int channel,
float & amplitude,
float & time )
private

< Applies OF algorithm

Definition at line 309 of file TileRawChannelBuilderQIEFilter.cxx.

309 {
310
311 ATH_MSG_VERBOSE("filter()");
312
313 amplitude = 0.;
314 time = 0.;
315 float chi2 = -1.;
316
317 auto minMaxDigits = std::minmax_element(m_digits.begin(), m_digits.end());
318 float minDigit = *minMaxDigits.first;
319 float maxDigit = *minMaxDigits.second;
320
321 if (maxDigit - minDigit < 0.01) { // constant value in all samples // TODO: the cut-off needs to be adjusted for the charge difference
322
323 //pedestal = minDigit;
324 chi2 = 0.;
325 ATH_MSG_VERBOSE("CASE NO SIGNAL: maxdig-mindig = " << maxDigit << "-" << minDigit << " = " << maxDigit - minDigit);
326
327 m_nConst++;
328
329 } else {
330
331 //pedestal = setPedestal(ros, drawer, channel, gain);
332 //double phase = 0.;
333
334 //unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
336 //if (m_bestPhase) {
337 // // AS 19.11.09 - note minus sign here - time in DB is opposite to best phase
338 // phase = -m_tileToolTiming->getSignalPhase(drawerIdx, channel, gain);
339 // ATH_MSG_VERBOSE("Best phase: " << phase << " drawerIdx " << drawerIdx << " channel " << channel);
340 //}
341
342 chi2 = compute(ros, drawer, channel, amplitude, time);
343
346 //if (m_correctAmplitude && amplitude > m_ampMinThresh && time > m_timeMinThresh && time < m_timeMaxThresh) {
347 //
348 // amplitude *= correctAmp(time, m_of2);
349 // ATH_MSG_VERBOSE("Amplitude corrected by " << correctAmp(time, m_of2) << " new amplitude is " << amplitude);
350 //}
351
352 m_nSignal++;
353
354 }
355
356 return chi2;
357}
float compute(int ros, int drawer, int channel, float &amplitude, float &time)
< Apply the number of iterations needed for reconstruction by calling the Filter method

◆ finalize()

StatusCode TileRawChannelBuilderQIEFilter::finalize ( )
virtual

Finalize method.

Reimplemented from TileRawChannelBuilder.

Definition at line 145 of file TileRawChannelBuilderQIEFilter.cxx.

145 {
146
147 /*
148 if (msgLvl(MSG::VERBOSE)) {
149 if (m_maxIterations == 1) { // Without iterations
150 msg(MSG::VERBOSE) << "Counters: Signal=" << m_nSignal
151 << " Constant=" << m_nConst
152 << " Total=" << m_nSignal + m_nConst << endmsg;
153 } else {
154 msg(MSG::VERBOSE) << "Counters: Signal=" << m_nSignal
155 << " Negat=" << m_nNegative
156 << " Center=" << m_nCenter
157 << " Constant=" << m_nConst
158 << " Total=" << m_nSignal + m_nNegative + m_nConst + m_nCenter << endmsg;
159 }
160 }*/
161
162 ATH_MSG_DEBUG("Finalizing");
163
164 return StatusCode::SUCCESS;
165}

◆ findMaxDigitPosition()

int TileRawChannelBuilderQIEFilter::findMaxDigitPosition ( )
private

Finds maximum digit position in the pulse.

Sets pedestal estimation for OF1

Definition at line 235 of file TileRawChannelBuilderQIEFilter.cxx.

235 {
236
237 ATH_MSG_VERBOSE(" findMaxDigitPosition()");
238
239 int iMaxDigit = 0;
240 float maxDigit = 0.;
241 //bool saturated = false;
242
243 for (unsigned int i = 0; i < m_digits.size(); i++) {
244 //TODO: Enable when digitization is introduced
245 //if (m_digits[i] > 510.99) saturated = true; //QIE returns range *128 + adc codes from 0 511
246 if (maxDigit < m_digits[i]) {
247 maxDigit = m_digits[i];
248 iMaxDigit = i;
249 }
250 }
251
252 if (msgLvl(MSG::VERBOSE)) {
253 for (unsigned int i = 0; i < m_digits.size(); i++) {
254 msg(MSG::VERBOSE) << " " << m_digits[i];
255 }
256
257 msg(MSG::VERBOSE) << "; Max: digit[" << iMaxDigit << "]=" << maxDigit << endmsg;
258
259 //if (saturated)
260 // msg(MSG::VERBOSE) << " Samples saturated" << endmsg;
261 }
262
263 return iMaxDigit;
264}

◆ getOverflowedChannels()

Overflows_t & TileRawChannelBuilder::getOverflowedChannels ( void )
inherited

Definition at line 37 of file TileRawChannelBuilder.cxx.

37 {
38 return m_overflows;
39}

◆ getTileRawChannelContainerID()

std::string TileRawChannelBuilder::getTileRawChannelContainerID ( void )
inherited

Definition at line 41 of file TileRawChannelBuilder.cxx.

41 {
42 return m_rawChannelContainerKey.key();
43}

◆ initialize()

StatusCode TileRawChannelBuilderQIEFilter::initialize ( )
virtual

Initialize method.

Reimplemented from TileRawChannelBuilder.

Definition at line 94 of file TileRawChannelBuilderQIEFilter.cxx.

94 {
95
96 ATH_MSG_INFO("initialize()");
97
98 m_rChType = TileFragHash::OptFilterOffline; // type for offline Opt Filter
99
100 // init in superclass
102
103 // bits 12-15 - various options
104 //if (m_correctAmplitude) m_bsflags |= 0x2000;
105 //if (m_maxIterations > 1) m_bsflags |= 0x4000;
106 //if (m_bestPhase) m_bsflags |= 0x8000;
107
108 //ATH_MSG_DEBUG( " MaxIterations=" << m_maxIterations
109 // << " PedestalMode=" << m_pedestalMode
110 // << " TimeForConvergence=" << m_timeForConvergence
111 // << " ConfTB=" << m_confTB
112 // << " OF2=" << m_of2
113 // << " Minus1Iteration=" << m_minus1Iter
114 // << " AmplitudeCorrection=" << m_correctAmplitude
115 // << " Best Phase " << m_bestPhase );
116
117 m_nSamples = m_tileInfo->NdigitSamples();
118 //m_t0SamplePosition = m_tileInfo->ItrigSample();
119 //m_maxTime = 25 * (m_nSamples - m_t0SamplePosition - 1);
120 //m_minTime = -25 * m_t0SamplePosition;
121 //ATH_MSG_DEBUG(" NSamples=" << m_nSamples
122 // << " T0Sample=" << m_t0SamplePosition
123 // << " minTime=" << m_minTime
124 // << " maxTime=" << m_maxTime );
125
126 //if (m_pedestalMode % 10 > 2 && m_nSamples != m_pedestalMode % 10) {
127 // if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Changing PedestalMode from " << m_pedestalMode;
128 // m_pedestalMode = (m_pedestalMode / 10) * 10 + m_nSamples;
129 // if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " to " << m_pedestalMode << endmsg;
130 //}
131
132 if (m_nSamples != 7) { // && (m_pedestalMode == 71 || m_pedestalMode == 7621)) {
133 ATH_MSG_ERROR("Incompatable pedestal mode [" << m_pedestalMode << "] and number of samples [" << m_nSamples << "]");
134 return StatusCode::FAILURE;
135 }
136
137 //m_nSignal = 0;
138 //m_nNegative = 0;
139 //m_nCenter = 0;
140 //m_nConst = 0;
141
142 return StatusCode::SUCCESS;
143}
#define ATH_MSG_INFO(x)
#define CHECK(...)
Evaluate an expression and check for errors.
int m_nSamples
number of samples in the data
virtual StatusCode initialize()
Initializer.

◆ initLog()

void TileRawChannelBuilder::initLog ( const EventContext & ctx)
inherited

Definition at line 245 of file TileRawChannelBuilder.cxx.

245 {
246
247 const TileDQstatus* DQstatus = SG::makeHandle (m_DQstatusKey, ctx).get();
248
249 // update only if there is new event
250 if (m_evtCounter != ctx.evt()) {
251
252 m_evtCounter = ctx.evt();
253 if (m_runType != 0) m_trigType = m_runType;
254 else m_trigType = DQstatus->trigType();
255
256 if (0 == m_trigType) {
257 m_idophys = (DQstatus->calibMode() == 0);
258 m_idolas = false;
259 m_idoped = false;
260 m_idocis = (DQstatus->calibMode() == 1);
261 } else {
262 m_idophys = (m_trigType <= 1);
263 m_idolas = ((m_trigType == 2) || (m_trigType == 3));
264 m_idoped = ((m_trigType == 4) || (m_trigType == 5));
265 m_idocis = ((m_trigType == 8) || (m_trigType == 9));
266 }
267
268 const unsigned int *cispar = DQstatus->cispar();
269 if (0 == cispar[7]) { // if capdaq not set, it can't be CIS event
270 if (m_idocis) { // cis flag was set incorrectly, change to ped
271 m_idoped = true;
272 m_idocis = false;
273 }
274 m_capdaq = 0.0;
275 } else {
276 m_capdaq = (cispar[7] < 10) ? 5.2 : 100.0;
277 }
278 m_cischan = cispar[8] - 1; // channel where CIS is fired (-1 = all channels)
279
280 ATH_MSG_DEBUG( "Trig type is " << m_trigType
281 << "; dophys is " << ((m_idophys) ? "true" : "false")
282 << "; dolas is " << ((m_idolas) ? "true" : "false")
283 << "; doped is " << ((m_idoped) ? "true" : "false")
284 << "; docis is " << ((m_idocis) ? "true" : "false")
285 << "; capacitor is " << m_capdaq
286 << "; cis chan is " << m_cischan );
287 }
288}
int trigType() const
Trigger type.
uint32_t calibMode() const
Calibration mode.
const uint32_t * cispar() const
CIS parameters.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & TileRawChannelBuilderQIEFilter::interfaceID ( )
static

AlgTool InterfaceID.

Definition at line 47 of file TileRawChannelBuilderQIEFilter.cxx.

47 {
49}
static const InterfaceID IID_ITileRawChannelBuilderQIEFilter("TileRawChannelBuilderQIEFilter", 1, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< AlgTool >::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< AlgTool > >::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.

◆ rawChannel()

TileRawChannel * TileRawChannelBuilderQIEFilter::rawChannel ( const TileDigits * digits,
const EventContext & ctx )
virtual

Builder virtual method to be implemented by subclasses.

Parameters
digitsPointer to TileDigitsContainer

Reimplemented from TileRawChannelBuilder.

Definition at line 167 of file TileRawChannelBuilderQIEFilter.cxx.

167 {
168
169 ++m_chCounter;
170
171 float pedestal = 10.; // A non-zero default is used to avoid the data quality cuts.
172 float energy = 0.;
173 float time = 0.;
174 float chi2 = 0.;
175 m_digits = digits->samples(); //the 7 samples; currently charge is expected. It the future these will be digitized
176 const HWIdentifier adcId = digits->adc_HWID();
177 int gain = m_tileHWID->adc(adcId); //this is set to 1 for QIE FEB by default
178
179 ATH_MSG_VERBOSE("Building Raw Channel, with QIEFilter, HWID:" << m_tileHWID->to_string(adcId) << " gain=" << gain);
180
181 int ros = m_tileHWID->ros(adcId);
182 int drawer = m_tileHWID->drawer(adcId);
183 int channel = m_tileHWID->channel(adcId);
184 chi2 = filter(ros, drawer, channel, energy, time);
185
186//TODO: Energy calibration needs to be implemented
187// if (m_calibrateEnergy) {
188// energy = m_tileInfo->CisCalib(adcId, energy);
189// }
190
191 if (msgLvl(MSG::VERBOSE)) {
192 msg(MSG::VERBOSE) << "Creating QIEFilter RawChannel" << " a=" << energy << " t=" << time
193 //<< " ped=" << pedestal
194 << " q=" << chi2 << endmsg;
195
196 msg(MSG::VERBOSE) << "digits:";
197
198 for (unsigned int i = 0; i < m_digits.size(); ++i)
199 msg(MSG::VERBOSE) << " " << m_digits[i];
200
201 msg(MSG::VERBOSE) << " " << endmsg;
202 }
203
204 // return new TileRawChannel
205 // TileRawChannel *rawCh = new TileRawChannel(adcId,OptFilterEne,OptFilterTime,OptFilterChi2,OptFilterPed);
206 DataPool<TileRawChannel> tileRchPool(m_dataPoollSize);
207 TileRawChannel *rawCh = tileRchPool.nextElementPtr();
208 rawCh->assign (adcId,
209 energy,
210 time,
211 chi2,
212 pedestal);
213
214 //if (m_correctTime
215 // && (time != 0
216 // && time < m_maxTime
217 // && time > m_minTime)) {
218 //
219 // rawCh->insertTime(m_tileInfo->TimeCalib(adcId, time));
220 // ATH_MSG_VERBOSE( "Correcting time, new time=" << rawCh->time() );
221 //
222 //}
223
224 if (TileID::HIGHGAIN == gain) {
225 ++m_nChH;
226 m_RChSumH += energy;
227 } else {
228 ++m_nChL;
229 m_RChSumL += energy;
230 }
231
232 return rawCh;
233}
float filter(int ros, int drawer, int channel, float &amplitude, float &time)
< Applies OF algorithm
void assign(const HWIdentifier &id, float amplitude, float time, float quality, float ped=0.0)

◆ 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< AlgTool > >::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< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ resetDrawer()

void TileRawChannelBuilder::resetDrawer ( )
inherited

Definition at line 28 of file TileRawChannelBuilder.cxx.

28 {
29 m_lastDrawer = -1;
30 m_badDrawer = false;
31}

◆ resetOverflows()

void TileRawChannelBuilder::resetOverflows ( void )
inherited

Definition at line 33 of file TileRawChannelBuilder.cxx.

33 {
34 m_overflows.clear();
35}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_ADCmaskValueMinusEps

float TileRawChannelBuilder::m_ADCmaskValueMinusEps
protectedinherited

indicates channels which were masked in background dataset

Definition at line 222 of file TileRawChannelBuilder.h.

◆ m_ADCmaxMinusEps

float TileRawChannelBuilder::m_ADCmaxMinusEps
protectedinherited

Definition at line 221 of file TileRawChannelBuilder.h.

◆ m_ampMinThresh

float TileRawChannelBuilder::m_ampMinThresh
protectedinherited

correct amplitude if it's above amplitude threshold (in ADC counts)

Definition at line 152 of file TileRawChannelBuilder.h.

◆ m_badDrawer

bool TileRawChannelBuilder::m_badDrawer = false
protectedinherited

Definition at line 210 of file TileRawChannelBuilder.h.

◆ m_bsflags

unsigned int TileRawChannelBuilder::m_bsflags
protectedinherited

Definition at line 138 of file TileRawChannelBuilder.h.

◆ m_cabling

const TileCablingService* TileRawChannelBuilder::m_cabling
protectedinherited

TileCabling instance.

Definition at line 182 of file TileRawChannelBuilder.h.

◆ m_cablingSvc

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

Name of Tile cabling service.

Definition at line 179 of file TileRawChannelBuilder.h.

179 { this,
180 "TileCablingSvc", "TileCablingSvc", "The Tile cabling service"};

◆ m_calibrateEnergy

bool TileRawChannelBuilder::m_calibrateEnergy
protectedinherited

Definition at line 142 of file TileRawChannelBuilder.h.

◆ m_capdaq

double TileRawChannelBuilder::m_capdaq
protectedinherited

Definition at line 193 of file TileRawChannelBuilder.h.

◆ m_chCounter

unsigned int TileRawChannelBuilder::m_chCounter
protectedinherited

Definition at line 196 of file TileRawChannelBuilder.h.

◆ m_cischan

int TileRawChannelBuilder::m_cischan
protectedinherited

Definition at line 192 of file TileRawChannelBuilder.h.

◆ m_correctTime

bool TileRawChannelBuilder::m_correctTime
protectedinherited

Definition at line 145 of file TileRawChannelBuilder.h.

◆ m_dataPoollSize

int TileRawChannelBuilder::m_dataPoollSize
protectedinherited

Definition at line 204 of file TileRawChannelBuilder.h.

◆ m_demoFragIDs

Gaudi::Property<std::vector<int> > TileRawChannelBuilder::m_demoFragIDs
protectedinherited
Initial value:
{this,
"DemoFragIDs", {}, "List of Tile frag IDs with new electronics (demonstrator)"}

Definition at line 184 of file TileRawChannelBuilder.h.

184 {this,
185 "DemoFragIDs", {}, "List of Tile frag IDs with new electronics (demonstrator)"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_digits

std::vector<float> TileRawChannelBuilderQIEFilter::m_digits
private

Definition at line 114 of file TileRawChannelBuilderQIEFilter.h.

◆ m_DQstatusKey

SG::ReadHandleKey<TileDQstatus> TileRawChannelBuilder::m_DQstatusKey
protectedinherited
Initial value:
{this, "TileDQstatus",
"TileDQstatus",
"TileDQstatus key"}

Definition at line 120 of file TileRawChannelBuilder.h.

120 {this, "TileDQstatus",
121 "TileDQstatus",
122 "TileDQstatus key"};

◆ m_DSPContainerKey

SG::ReadHandleKey<TileRawChannelContainer> TileRawChannelBuilder::m_DSPContainerKey {this, "DSPContainer", "", "DSP Container key"}
protectedinherited

Definition at line 125 of file TileRawChannelBuilder.h.

126{this, "DSPContainer", "", "DSP Container key"};

◆ m_error

int TileRawChannelBuilder::m_error[MAX_CHANNELS]
protectedinherited

Definition at line 208 of file TileRawChannelBuilder.h.

◆ m_evtCounter

unsigned int TileRawChannelBuilder::m_evtCounter
protectedinherited

Definition at line 195 of file TileRawChannelBuilder.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_f_ADCmax

float TileRawChannelBuilder::m_f_ADCmax
protectedinherited

Definition at line 218 of file TileRawChannelBuilder.h.

◆ m_f_ADCmaxPlus1

float TileRawChannelBuilder::m_f_ADCmaxPlus1
protectedinherited

Definition at line 220 of file TileRawChannelBuilder.h.

◆ m_firstSample

int TileRawChannelBuilder::m_firstSample
protectedinherited

Definition at line 140 of file TileRawChannelBuilder.h.

◆ m_i_ADCmax

int TileRawChannelBuilder::m_i_ADCmax
protectedinherited

Definition at line 217 of file TileRawChannelBuilder.h.

◆ m_i_ADCmaxPlus1

int TileRawChannelBuilder::m_i_ADCmaxPlus1
protectedinherited

Definition at line 219 of file TileRawChannelBuilder.h.

◆ m_idocis

bool TileRawChannelBuilder::m_idocis
protectedinherited

Definition at line 191 of file TileRawChannelBuilder.h.

◆ m_idolas

bool TileRawChannelBuilder::m_idolas
protectedinherited

Definition at line 189 of file TileRawChannelBuilder.h.

◆ m_idoped

bool TileRawChannelBuilder::m_idoped
protectedinherited

Definition at line 190 of file TileRawChannelBuilder.h.

◆ m_idophys

bool TileRawChannelBuilder::m_idophys
protectedinherited

Definition at line 188 of file TileRawChannelBuilder.h.

◆ m_infoName

std::string TileRawChannelBuilder::m_infoName
protectedinherited

Definition at line 215 of file TileRawChannelBuilder.h.

◆ m_lastDrawer

int TileRawChannelBuilder::m_lastDrawer = -1
protectedinherited

Definition at line 209 of file TileRawChannelBuilder.h.

◆ m_nChH

int TileRawChannelBuilder::m_nChH
protectedinherited

Definition at line 199 of file TileRawChannelBuilder.h.

◆ m_nChL

int TileRawChannelBuilder::m_nChL
protectedinherited

Definition at line 198 of file TileRawChannelBuilder.h.

◆ m_nConst

int TileRawChannelBuilderQIEFilter::m_nConst {}
private

internal counters

Definition at line 97 of file TileRawChannelBuilderQIEFilter.h.

97{};

◆ m_noiseFilterTools

ToolHandleArray<ITileRawChannelTool> TileRawChannelBuilder::m_noiseFilterTools
protectedinherited
Initial value:
{this,
"NoiseFilterTools", {}, "Tile noise filter tools"}

Definition at line 163 of file TileRawChannelBuilder.h.

163 {this,
164 "NoiseFilterTools", {}, "Tile noise filter tools"};

◆ m_notUpgradeCabling

bool TileRawChannelBuilder::m_notUpgradeCabling
protectedinherited

Definition at line 212 of file TileRawChannelBuilder.h.

◆ m_nSamples

int TileRawChannelBuilderQIEFilter::m_nSamples {}
private

number of samples in the data

Definition at line 99 of file TileRawChannelBuilderQIEFilter.h.

99{};

◆ m_nSignal

int TileRawChannelBuilderQIEFilter::m_nSignal {}
private

internal counters

Definition at line 94 of file TileRawChannelBuilderQIEFilter.h.

94{};

◆ m_overflows

Overflows_t TileRawChannelBuilder::m_overflows
protectedinherited

Definition at line 203 of file TileRawChannelBuilder.h.

◆ m_pedestalMode

int TileRawChannelBuilderQIEFilter::m_pedestalMode
private

pedestal mode to use

Definition at line 84 of file TileRawChannelBuilderQIEFilter.h.

◆ m_rawChannelCnt

std::unique_ptr<TileMutableRawChannelContainer> TileRawChannelBuilder::m_rawChannelCnt
protectedinherited

Definition at line 133 of file TileRawChannelBuilder.h.

◆ m_rawChannelContainerKey

SG::WriteHandleKey<TileRawChannelContainer> TileRawChannelBuilder::m_rawChannelContainerKey
protectedinherited
Initial value:
{this,"TileRawChannelContainer","TileRawChannelFiltered",
"Output Tile raw channels container key"}

Definition at line 129 of file TileRawChannelBuilder.h.

129 {this,"TileRawChannelContainer","TileRawChannelFiltered",
130 "Output Tile raw channels container key"};

◆ m_RChSumH

double TileRawChannelBuilder::m_RChSumH
protectedinherited

Definition at line 201 of file TileRawChannelBuilder.h.

◆ m_RChSumL

double TileRawChannelBuilder::m_RChSumL
protectedinherited

Definition at line 200 of file TileRawChannelBuilder.h.

◆ m_rChType

TileFragHash::TYPE TileRawChannelBuilder::m_rChType
protectedinherited

Definition at line 136 of file TileRawChannelBuilder.h.

◆ m_rChUnit

TileRawChannelUnit::UNIT TileRawChannelBuilder::m_rChUnit
protectedinherited

Definition at line 137 of file TileRawChannelBuilder.h.

◆ m_runType

int TileRawChannelBuilder::m_runType
protectedinherited

Definition at line 157 of file TileRawChannelBuilder.h.

◆ m_tileHWID

const TileHWID* TileRawChannelBuilder::m_tileHWID
protectedinherited

Definition at line 161 of file TileRawChannelBuilder.h.

◆ m_tileID

const TileID* TileRawChannelBuilder::m_tileID
protectedinherited

Definition at line 160 of file TileRawChannelBuilder.h.

◆ m_tileIdTransforms

ToolHandle<TileCondIdTransforms> TileRawChannelBuilder::m_tileIdTransforms
protectedinherited
Initial value:
{this,
"TileCondIdTransforms", "TileCondIdTransforms",
"Tile tool to tranlate hardware identifier to the drawerIdx, channel, and adc"}

Definition at line 172 of file TileRawChannelBuilder.h.

172 {this,
173 "TileCondIdTransforms", "TileCondIdTransforms",
174 "Tile tool to tranlate hardware identifier to the drawerIdx, channel, and adc"};

◆ m_tileInfo

const TileInfo* TileRawChannelBuilder::m_tileInfo
protectedinherited

Definition at line 216 of file TileRawChannelBuilder.h.

◆ m_tileToolEmscale

ToolHandle<TileCondToolEmscale> TileRawChannelBuilder::m_tileToolEmscale
protectedinherited
Initial value:
{this,
"TileCondToolEmscale", "TileCondToolEmscale", "Tile EM scale calibration tool"}

Definition at line 166 of file TileRawChannelBuilder.h.

166 {this,
167 "TileCondToolEmscale", "TileCondToolEmscale", "Tile EM scale calibration tool"};

◆ m_tileToolTiming

ToolHandle<TileCondToolTiming> TileRawChannelBuilder::m_tileToolTiming
protectedinherited
Initial value:
{this,
"TileCondToolTiming", "TileCondToolTiming", "Tile timing tool"}

Definition at line 169 of file TileRawChannelBuilder.h.

169 {this,
170 "TileCondToolTiming", "TileCondToolTiming", "Tile timing tool"};

◆ m_timeMaxThresh

float TileRawChannelBuilder::m_timeMaxThresh
protectedinherited

correct amplitude is time is below time max threshold

Definition at line 154 of file TileRawChannelBuilder.h.

◆ m_timeMinThresh

float TileRawChannelBuilder::m_timeMinThresh
protectedinherited

correct amplitude is time is above time min threshold

Definition at line 153 of file TileRawChannelBuilder.h.

◆ m_trigType

int TileRawChannelBuilder::m_trigType
protectedinherited

Definition at line 187 of file TileRawChannelBuilder.h.

◆ m_useDSP

bool TileRawChannelBuilder::m_useDSP
protectedinherited

Definition at line 149 of file TileRawChannelBuilder.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ MAX_CHANNELS

const int TileRawChannelBuilder::MAX_CHANNELS = 48
staticprotectedinherited

Definition at line 206 of file TileRawChannelBuilder.h.

◆ MAX_DMUS

const int TileRawChannelBuilder::MAX_DMUS = 16
staticprotectedinherited

Definition at line 207 of file TileRawChannelBuilder.h.


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