// --------------------------------------------------------------------- // ----- KrattaSlowControl header file ----- // ----- Created 10/11/13 by P. Pawlowski ----- // --------------------------------------------------------------------- #ifndef KrattaSlowControl_hxx #define KrattaSlowControl_hxx #include #include #define NFACTORS 10 enum KrattaSignal{ SAM0, SAM1, SAM2, P00, //amplitude of si component in pd0 P10, //amplitude of si component in pd1 P12, //amplitude of fast csi(tl) in pd1 P13, //amplitude of slow csi(tl) in pd1 P20, //amplitude of si component in pd2 P22, //amplitude of fast csi(tl) in pd2 P23 //amplitude of slow csi(tl) in pd2 }; class KrattaRunFactors{ private: const int RunMin; const int RunMax; const int RunNumber; double * Factor; public: KrattaRunFactors(int run_min, int run_max); virtual ~KrattaRunFactors(); double GetFactor(int irun); void SetFactor(int irun, double f); void DumpFactors(void * x, int run_min = 0, int run_max = 0); void LoadFactors(void * x, int run_min = 0, int run_max = 0); size_t Read(FILE * f); size_t Write(FILE * f); int GetRunMin(){ return RunMin; } int GetRunMax(){ return RunMax; } int GetRunNumber(){ return RunNumber; } bool OutOfRange(int irun){ return (irun < RunMin || irun > RunMax); } //ClassDef(KrattaRunFactors, 0) }; class KrattaSlowControl{ private: static const int KrattaModuleNumber = 35; static const int KrattaFactorNumber = NFACTORS; int RunMin; int RunMax; KrattaRunFactors *factors[KrattaFactorNumber][KrattaModuleNumber]; public: KrattaSlowControl(int run_min, int run_max); KrattaSlowControl(const char * filename); virtual ~KrattaSlowControl(); void SaveAs(const char * filename); double GetFactor(KrattaSignal type, int module, int run); void SetFactor(KrattaSignal type, int module, int run, double f); void LoadFactors(KrattaSignal type, int module, void * x, int run_min = 0, int run_max = 0); void DumpFactors(KrattaSignal type, int module, void * x, int run_min = 0, int run_max = 0); int GetRunMin(){ return RunMin; } int GetRunMax(){ return RunMax; } //ClassDef(KrattaSlowControl, 0) }; #endif