- #include <TH1.h>
-
- #include "Tracer.h"
-
- Tracer::Tracer(const char *name, const char *title, int npts, int avrg)
- : size(npts), average(avrg), cntr(0.), val(0.)
- {
- hst = new TH1D(name, title, size, 0, size);
-
- }
-
- Tracer::~Tracer()
- {
- delete hst;
- }
-
- void Tracer::Draw(const char *opt)
- {
- hst->Draw(opt);
- }
-
- void Tracer::fill(double x)
- {
- if (average>1.)
- {
- val = (x + cntr*val)/(++cntr);
- if ( (int(cntr)%average)==0 )
- {
- add_point(val);
- }
- }
- else
- add_point(x);
- }
-
- void Tracer::add_point(double x)
- {
- queue.push_back(x);
- if (queue.size()>size)
- queue.pop_front();
-
- std::deque<double>::iterator ip;
- int ibin = 1;
- for (ip=queue.begin();ip!=queue.end();++ip, ibin++)
- {
- hst->SetBinContent(ibin, *ip);
- }
- }