ATLAS Offline Software
Loading...
Searching...
No Matches
TrigSignatureMoni::RateHistogram Class Reference
Collaboration diagram for TrigSignatureMoni::RateHistogram:

Public Member Functions

 RateHistogram ()=default
 ~RateHistogram ()
StatusCode init (const std::string &histoName, const std::string &histoTitle, const int x, const int y, const std::string &registerPath, const ServiceHandle< ITHistSvc > &histSvc)
LockedHandle< TH2 > &getHistogram ATLAS_NOT_CONST_THREAD_SAFE () const
LockedHandle< TH2 > &getBuffer ATLAS_NOT_CONST_THREAD_SAFE () const
std::unique_ptr< Gaudi::Utils::PeriodicAction > & getTimer ()
void startTimer (unsigned int duration, unsigned int intervals)
void stopTimer ()
void fill (const double x, const double y) const

Private Member Functions

void updatePublished (unsigned int duration) const
void callback ()

Private Attributes

LockedHandle< TH2 > m_bufferHistogram ATLAS_THREAD_SAFE
LockedHandle< TH2 > m_histogram ATLAS_THREAD_SAFE
std::mutex m_mutex
std::unique_ptr< Gaudi::Utils::PeriodicAction > m_timer
std::unique_ptr< TimeDividerm_timeDivider
unsigned int m_duration {0}

Detailed Description

Definition at line 50 of file TrigSignatureMoni.h.

Constructor & Destructor Documentation

◆ RateHistogram()

TrigSignatureMoni::RateHistogram::RateHistogram ( )
default

◆ ~RateHistogram()

TrigSignatureMoni::RateHistogram::~RateHistogram ( )

Definition at line 539 of file TrigSignatureMoni.cxx.

539 {
540 delete m_bufferHistogram.get();
541}

Member Function Documentation

◆ ATLAS_NOT_CONST_THREAD_SAFE() [1/2]

LockedHandle< TH2 > &getBuffer TrigSignatureMoni::RateHistogram::ATLAS_NOT_CONST_THREAD_SAFE ( ) const

◆ ATLAS_NOT_CONST_THREAD_SAFE() [2/2]

LockedHandle< TH2 > &getHistogram TrigSignatureMoni::RateHistogram::ATLAS_NOT_CONST_THREAD_SAFE ( ) const

◆ callback()

void TrigSignatureMoni::RateHistogram::callback ( )
private

Definition at line 597 of file TrigSignatureMoni.cxx.

597 {
598 // Ask time divider if we need to switch to new interval
599 time_t t = time(0);
600 unsigned int newinterval;
601 unsigned int oldinterval;
602 if (m_timeDivider->isPassed(t, newinterval, oldinterval)) {
604 }
605}
void updatePublished(unsigned int duration) const
std::unique_ptr< TimeDivider > m_timeDivider
time(flags, cells_name, *args, **kw)

◆ fill()

void TrigSignatureMoni::RateHistogram::fill ( const double x,
const double y ) const

Definition at line 567 of file TrigSignatureMoni.cxx.

567 {
568 m_bufferHistogram->Fill(x, y);
569}
#define y
#define x

◆ getTimer()

std::unique_ptr< Gaudi::Utils::PeriodicAction > & TrigSignatureMoni::RateHistogram::getTimer ( )

Definition at line 563 of file TrigSignatureMoni.cxx.

563 {
564 return m_timer;
565}
std::unique_ptr< Gaudi::Utils::PeriodicAction > m_timer

◆ init()

StatusCode TrigSignatureMoni::RateHistogram::init ( const std::string & histoName,
const std::string & histoTitle,
const int x,
const int y,
const std::string & registerPath,
const ServiceHandle< ITHistSvc > & histSvc )

Definition at line 543 of file TrigSignatureMoni.cxx.

544 {
545 std::unique_ptr<TH2> h = std::make_unique<TH2F>(histoName.c_str(), histoTitle.c_str(), x, 1, x + 1, y, 1, y + 1);
546 ATH_CHECK( histSvc->regShared( registerPath.c_str(), std::move(h), m_histogram));
547
548 TH2I * hB = new TH2I( (histoName + "Buffer").c_str(), histoTitle.c_str(), x, 1, x + 1, y, 1, y + 1);
549 m_bufferHistogram.set(hB, &m_mutex);
550 m_bufferHistogram->SetDirectory(0);
551
552 return StatusCode::SUCCESS;
553}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ startTimer()

void TrigSignatureMoni::RateHistogram::startTimer ( unsigned int duration,
unsigned int intervals )

Definition at line 571 of file TrigSignatureMoni.cxx.

571 {
573 m_timeDivider = std::make_unique<TimeDivider>(intervals, duration, TimeDivider::seconds);
574 // Periodic timer with 1/20 of the integration period
575 m_timer = std::make_unique<Gaudi::Utils::PeriodicAction>(std::bind(&RateHistogram::callback, this),
576 std::chrono::milliseconds(duration*1000/20));
577}

◆ stopTimer()

void TrigSignatureMoni::RateHistogram::stopTimer ( )

Definition at line 579 of file TrigSignatureMoni.cxx.

579 {
580 if (m_timer) {
581 m_timer->stop();
582 time_t t = time(0);
583 unsigned int interval;
584 unsigned int duration = m_timeDivider->forcePassed(t, interval);
585 updatePublished(duration); // Divide by time that really passed not by interval duration
586 }
587
588}

◆ updatePublished()

void TrigSignatureMoni::RateHistogram::updatePublished ( unsigned int duration) const
private

Definition at line 590 of file TrigSignatureMoni.cxx.

590 {
591 m_histogram->Reset("ICES");
592 m_histogram->Add(m_bufferHistogram.get(), 1./duration);
593 m_bufferHistogram->Reset("ICES");
594}

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

LockedHandle<TH2> m_histogram TrigSignatureMoni::RateHistogram::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 85 of file TrigSignatureMoni.h.

◆ ATLAS_THREAD_SAFE [2/2]

LockedHandle<TH2> m_bufferHistogram TrigSignatureMoni::RateHistogram::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 84 of file TrigSignatureMoni.h.

◆ m_duration

unsigned int TrigSignatureMoni::RateHistogram::m_duration {0}
private

Definition at line 89 of file TrigSignatureMoni.h.

89{0};

◆ m_mutex

std::mutex TrigSignatureMoni::RateHistogram::m_mutex
private

Definition at line 86 of file TrigSignatureMoni.h.

◆ m_timeDivider

std::unique_ptr<TimeDivider> TrigSignatureMoni::RateHistogram::m_timeDivider
private

Definition at line 88 of file TrigSignatureMoni.h.

◆ m_timer

std::unique_ptr<Gaudi::Utils::PeriodicAction> TrigSignatureMoni::RateHistogram::m_timer
private

Definition at line 87 of file TrigSignatureMoni.h.


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