Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#ifndef THcScalerEvtHandler_
#define THcScalerEvtHandler_
/////////////////////////////////////////////////////////////////////
//
// THcScalerEvtHandler
// Class to handle Hall C scaler events (type 0)
// author Edward Brash (brash@jlab.org)
// based on THaScalerEvtHandler by Robert Michaels (rom@jlab.org)
//
/////////////////////////////////////////////////////////////////////
#include "THaEvtTypeHandler.h"
#include "Decoder.h"
#include <string>
#include <vector>
#include "TTree.h"
#include "TString.h"
class ScalerLoc { // Utility class used by THaScalerEvtHandler
public:
ScalerLoc(TString nm, TString desc, Int_t isc, Int_t ich, Int_t iki) :
name(nm), description(desc), iscaler(isc), ichan(ich), ikind(iki) { };
~ScalerLoc();
TString name, description;
UInt_t iscaler, ichan, ivar, ikind;
};
class THcScalerEvtHandler : public THaEvtTypeHandler {
public:
THcScalerEvtHandler(const char*, const char*);
virtual ~THcScalerEvtHandler();
Int_t Analyze(THaEvData *evdata);
virtual EStatus Init( const TDatime& run_time);
virtual Int_t End( THaRunBase* r=0 );
private:
void AddVars(TString name, TString desc, Int_t iscal, Int_t ichan, Int_t ikind);
void DefVars();
static size_t FindNoCase(const std::string& sdata, const std::string& skey);
std::vector<Decoder::GenScaler*> scalers;
std::vector<ScalerLoc*> scalerloc;
Double_t evcount;
UInt_t *rdata;
std::vector<Int_t> index;
Int_t Nvars, ifound, fNormIdx, nscalers;
Double_t *dvars;
TTree *fScalerTree;
THcScalerEvtHandler(const THcScalerEvtHandler& fh);
THcScalerEvtHandler& operator=(const THcScalerEvtHandler& fh);
ClassDef(THcScalerEvtHandler,0) // Scaler Event handler
};
#endif