6 #ifndef H_TIMEHISTOGRAMMER
7 #define H_TIMEHISTOGRAMMER
23 template <
class SelectorTrigger,
class SelectorTarget>
28 #ifndef POTTU_ROOT_SUPPORT
42 : _ctxh(
ContextBase::getActive().createHandle(
"TimeHistogrammer") ),
43 _selTrigger(selTrigger), _selTarget(selTarget),
45 _low( _h->_binner.low() ),
46 _high( _h->_binner.high() )
49 throw std::runtime_error(
"No histogram given" );
51 throw std::runtime_error(
"Bad range for histogram." );
57 const std::string &histname,
double low,
double high, uint32_t binc )
58 : _ctxh(
ContextBase::getActive().createHandle(
"TimeHistogrammer") ),
59 _selTrigger(selTrigger), _selTarget(selTarget),
60 _h( createHistogram1D( tree, histname.c_str(), low, high, binc ) ),
65 throw std::runtime_error(
"No histogram given" );
71 virtual void process( std::vector<DetectorEvent> &data ) noexcept {
76 for(
const auto &event : data ) {
77 if( event.time < _tsPrev ) {
79 _queueTrigger.clear();
83 if( _selTrigger(event) ) {
86 while( _queueTarget.size() && _queueTarget.front()-event.time < _low )
87 _queueTarget.pop_front();
89 for(
const auto &tTarget : _queueTarget )
90 fill( _h, tTarget-event.time );
92 _queueTrigger.push_back( event.time );
96 if( _selTarget(event) ) {
99 while( _queueTrigger.size() && event.time - _queueTrigger.front() > _high )
100 _queueTrigger.pop_front();
102 for(
const auto &tTrigger : _queueTrigger )
103 fill( _h, event.time-tTrigger );
105 _queueTarget.push_back( event.time );
109 _tsPrev =
event.time;
117 SelectorTrigger _selTrigger;
118 SelectorTarget _selTarget;
125 std::deque<int64_t> _queueTrigger;
126 std::deque<int64_t> _queueTarget;
Handle to context used by specific class.
Definition: ContextBase.hpp:188
Simple 1D histogram.
Definition: Histogram1D.hpp:26
Class holding tree of histograms and subtrees.
Definition: ObjectTree.hpp:44
Abstract baseclass for all stages which uses or modifies detector events.
Definition: StageDetectorEvent.hpp:20
Definition: TimeHistogrammer.hpp:24
TimeHistogrammer(SelectorTrigger selTrigger, SelectorTarget selTarget, _histogram_1d_type *histogram)
Constructor of TimeHistogrammer DEPRECATED.
Definition: TimeHistogrammer.hpp:41
virtual void process(std::vector< DetectorEvent > &data) noexcept
Uses or modifies detector events in a container.
Definition: TimeHistogrammer.hpp:71
Definition: mainpage.dox:6
Default context for printing and collecting statistics.
Definition: ContextBase.hpp:41