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 493 of file TrigSignatureMoni.cxx.

493 {
494 delete m_bufferHistogram.get();
495}

Member Function Documentation

◆ ATLAS_NOT_CONST_THREAD_SAFE() [1/2]

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

◆ ATLAS_NOT_CONST_THREAD_SAFE() [2/2]

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

◆ callback()

void TrigSignatureMoni::RateHistogram::callback ( )
private

Definition at line 551 of file TrigSignatureMoni.cxx.

551 {
552 // Ask time divider if we need to switch to new interval
553 time_t t = time(0);
554 unsigned int newinterval;
555 unsigned int oldinterval;
556 if (m_timeDivider->isPassed(t, newinterval, oldinterval)) {
558 }
559}
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 521 of file TrigSignatureMoni.cxx.

521 {
522 m_bufferHistogram->Fill(x, y);
523}
#define y
#define x

◆ getTimer()

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

Definition at line 517 of file TrigSignatureMoni.cxx.

517 {
518 return m_timer;
519}
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 497 of file TrigSignatureMoni.cxx.

498 {
499 std::unique_ptr<TH2> h = std::make_unique<TH2F>(histoName.c_str(), histoTitle.c_str(), x, 1, x + 1, y, 1, y + 1);
500 ATH_CHECK( histSvc->regShared( registerPath.c_str(), std::move(h), m_histogram));
501
502 TH2I * hB = new TH2I( (histoName + "Buffer").c_str(), histoTitle.c_str(), x, 1, x + 1, y, 1, y + 1);
503 m_bufferHistogram.set(hB, &m_mutex);
504 m_bufferHistogram->SetDirectory(0);
505
506 return StatusCode::SUCCESS;
507}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ startTimer()

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

Definition at line 525 of file TrigSignatureMoni.cxx.

525 {
527 m_timeDivider = std::make_unique<TimeDivider>(intervals, duration, TimeDivider::seconds);
528 // Periodic timer with 1/20 of the integration period
529 m_timer = std::make_unique<Gaudi::Utils::PeriodicAction>(std::bind(&RateHistogram::callback, this),
530 std::chrono::milliseconds(duration*1000/20));
531}

◆ stopTimer()

void TrigSignatureMoni::RateHistogram::stopTimer ( )

Definition at line 533 of file TrigSignatureMoni.cxx.

533 {
534 if (m_timer) {
535 m_timer->stop();
536 time_t t = time(0);
537 unsigned int interval;
538 unsigned int duration = m_timeDivider->forcePassed(t, interval);
539 updatePublished(duration); // Divide by time that really passed not by interval duration
540 }
541
542}

◆ updatePublished()

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

Definition at line 544 of file TrigSignatureMoni.cxx.

544 {
545 m_histogram->Reset("ICES");
546 m_histogram->Add(m_bufferHistogram.get(), 1./duration);
547 m_bufferHistogram->Reset("ICES");
548}

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/2]

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

Definition at line 84 of file TrigSignatureMoni.h.

◆ ATLAS_THREAD_SAFE [2/2]

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

Definition at line 85 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: