clas12root
Loading...
Searching...
No Matches
scaler_reader.h
Go to the documentation of this file.
1#pragma once
2
3#include "runconfig.h"
4#include "scaler.h"
5#include <string>
6#include <float.h>
7
8namespace clas12 {
9
10 using evch_pair = std::pair<int,float>;
11
13
14 public:
15 scaler_reader(std::string filename);
16
17 double getBeamCharge() const noexcept{return _maxCup-_minCup;}
18
19 size_t addLongCounter();
20 size_t addDoubleCounter();
21 size_t findPosition(size_t event);
22
23 void incrementLong(size_t index,size_t event,int64_t val){_longCounter[index][findPosition(event)]+=val;}
24 void incrementDouble(size_t index,size_t event,double val){_doubleCounter[index][findPosition(event)]+=val;}
25
26 std::vector<int64_t>& getLongCounter(size_t index){return _longCounter[index];}
27 std::vector<double>& getDoubleCounter(size_t index){return _doubleCounter[index];}
28 std::vector<float>& getDeltaCharges(){return _deltaCharges;}
29 bool validCharge(size_t ev){ return validChargePos(findPosition(ev));}
30 //requres each accumated scaler>0 and delta charge>0
31 bool validChargePos(size_t pos){return pos>0 ?_beamCharges[pos].second>0&&_beamCharges[pos-1].second>0&&_deltaCharges[pos]>0 : false;}
32
33 private:
34
35 scaler_uptr _bscal;
36 runconfig_uptr _brun;
37
38 double _maxCup{0};
39 double _minCup{DBL_MAX};
40 std::vector<std::vector<double>> _doubleCounter{0};
41 std::vector<evch_pair> _beamCharges{0};
42 std::vector<std::vector<int64_t>> _longCounter{0};
43 std::vector<float>_deltaCharges{0};
44 long _nScalReads{0};
45 size_t _lastPosition{0};
46 size_t _lastEvent{0};
47 };
49 using scalerreader_uptr=std::unique_ptr<clas12::scaler_reader>;
50
51}
Definition event.h:24
Definition scaler_reader.h:12
bool validChargePos(size_t pos)
Definition scaler_reader.h:31
void incrementLong(size_t index, size_t event, int64_t val)
Definition scaler_reader.h:23
std::vector< double > & getDoubleCounter(size_t index)
Definition scaler_reader.h:27
scaler_reader(std::string filename)
Definition scaler_reader.cpp:9
size_t addDoubleCounter()
Definition scaler_reader.cpp:52
std::vector< int64_t > & getLongCounter(size_t index)
Definition scaler_reader.h:26
bool validCharge(size_t ev)
Definition scaler_reader.h:29
size_t findPosition(size_t event)
Definition scaler_reader.cpp:59
double getBeamCharge() const noexcept
Definition scaler_reader.h:17
std::vector< float > & getDeltaCharges()
Definition scaler_reader.h:28
size_t addLongCounter()
Definition scaler_reader.cpp:46
void incrementDouble(size_t index, size_t event, double val)
Definition scaler_reader.h:24
Definition calextras.cpp:10
clas12::scaler_reader * scalerreader_ptr
Definition scaler_reader.h:48
std::unique_ptr< clas12::scaler_reader > scalerreader_uptr
Definition scaler_reader.h:49
std::unique_ptr< clas12::scaler > scaler_uptr
Definition scaler.h:43
std::unique_ptr< clas12::runconfig > runconfig_uptr
Definition runconfig.h:72
std::pair< int, float > evch_pair
Definition scaler_reader.h:10