Newer
Older
#ifndef THcConfigEvtHandler_
#define THcConfigEvtHandler_
/////////////////////////////////////////////////////////////////////
//
// THcConfigEvtHandler
// For more details see the implementation file.
// This handles hall C's event type 125.
// author Robert Michaels (rom@jlab.org)
//
/////////////////////////////////////////////////////////////////////
#include "THaEvtTypeHandler.h"
#include <string>
#include <vector>
#include <map>
#include "Logger.h"
class THcConfigEvtHandler : public hcana::ConfigLogging<THaEvtTypeHandler> {
public:
THcConfigEvtHandler(const char* name, const char* description);
virtual ~THcConfigEvtHandler();
virtual Int_t Analyze(THaEvData *evdata);
virtual void AddEventType(Int_t evtype);
virtual void PrintConfig();
virtual Int_t GetNSA(Int_t crate);
virtual Int_t GetNSB(Int_t crate);
virtual Int_t GetNPED(Int_t crate);
virtual EStatus Init( const TDatime& run_time);
// Float_t GetData(const std::string& tag);
virtual void MakeParms(Int_t roc);
private:
typedef struct {
struct FADC250 {
Int_t present;
Int_t dac_level;
Int_t threshold;
Int_t mode;
Int_t window_lat;
Int_t window_width;
Int_t nsb;
Int_t nsa;
Int_t np;
Int_t nped;
Int_t maxped;
Int_t nsat;
Int_t nmodules;
Int_t blocklevel;
std::map<Int_t, Int_t *> thresholds;
} FADC250;
struct CAEN1190 {
Int_t present;
Int_t resolution;
Int_t timewindow_offset;
Int_t timewindow_width;
} CAEN1190;
struct TI {
Int_t present;
Int_t nped;
Int_t scaler_period;
Int_t sync_count;
Int_t num_prescales;
Int_t prescales[6];
} TI;
//CrateInfo : FADC250.nmodules(0),CAEN1190.present(0) {}
} CrateInfo_t;
std::map<Int_t, CrateInfo_t *> CrateInfoMap;
THcConfigEvtHandler(const THcConfigEvtHandler& fh);
THcConfigEvtHandler& operator=(const THcConfigEvtHandler& fh);
ClassDef(THcConfigEvtHandler,0) // Hall C event type 125
};
#endif