#ifndef hvmon_h #define hvmon_h #include int mswap(char *x); class hvpar { public: ~hvpar(){}; hvpar(){}; char chname[12]; int v0set; int v1set; int i0set; int i1set; int vmax; int rup; int rdwn; int trip; //-----flag int hv; int pwd; int pwdn; int on; int pwon; //-----flag int flag; int flagbit; inline int GetNVal(){return 12;}; int timestamp; inline int GetTime(){return timestamp;}; inline void SetTime(int time){timestamp=time;}; inline int GetType(int i){ return (i>=flagbit);};; inline int GetUnit(int i){ switch (i){ case 0: case 1: case 2: case 3: return 100; default:return 1; } }; inline int GetCode(int i){if (GetType(i)) return 0x18;else return 0x10+i;} inline int GetValue(int i){ return ((int *)&v0set)[i];}; inline void SetValue(int i, int x){ ((int *)&v0set)[i]=(x/GetUnit(i));}; inline int Fill( int n, unsigned short *data){ flagbit=8; char *cdata=(char *)data; sprintf(chname,"%s",cdata); mswap(chname); v0set=(data[6]*0x10000+data[7])/GetUnit(0); v1set=(data[8]*0x10000+data[9])/GetUnit(1); for (int i=10;i>i ); return 0; } inline int Print(FILE*fp,int n){ if (n==0) { fprintf(fp,"-------------------------------------------------------\n"); fprintf(fp,"ChID\tChName\tV0set\tV1set\tI0set\tI1set\tVmax\tRUp\tRDown\tTrip\tHV\tPWD\tPDWN\tOn\tPWON\tTimestamp\n"); fprintf(fp,"-------------------------------------------------------\n"); return 0; } fprintf(fp,"%s \t",chname); for (int i=0;i<7+5;i++) { fprintf(fp,"%d\t",GetValue(i)); } // for (int i=11;i<16;i++) fprintf(fp,"%d ",(flag &(1<>i ); return 0; }; }; class caenn470 { public: caenn470(){}; ~caenn470(){}; short vmon; short imon; short vmax; short status; }; class hvstatus { public: hvstatus(){}; ~hvstatus(){}; int vread; int iread; // status int Present; int HVmax; int TRP; int Ovv; int Unv; int Ovc; int Down; int Up; int On; // status int status; int timestamp; inline int GetType(int i){return (i>2);}; inline int GetNVal(){return 11;}; inline int GetTime(){ return timestamp; }; inline void SetTime(int time){ timestamp=time;}; inline int GetValue(int i){ return ((int *)&vread)[i]; }; inline void SetValue(int i, int x){ ((int *)&vread)[i]=x;}; inline int Fill(int n, unsigned short *data){ const int flagbit=3; int mv0set=data[0]*0x10000+data[1]; SetValue(0,mv0set/100); SetValue(1,data[2]); status=data[3]; Present = ( (status&0x2)!=0 ); for (int i=8;i<16;i++) SetValue(flagbit+1+i-8,(status&(1<>i ); timestamp=(int) time(NULL); return 0; }; inline int Print(FILE*fp,int noprint){ if (noprint==0) { fprintf(fp,"-------------------------------------------------------\n"); fprintf(fp,"ChID\tVmon\tImon\tPresent\tHVmax\tTRP\tOvv\tUnv\tOvc\tDown\tUp\tOn\tTimestamp\n"); fprintf(fp,"-------------------------------------------------------\n"); return 0; } // fprintf(fp,"%d\t%d\t%d\t|",vread,iread,(status&0x2)!=0 ); // for (int i=0;i<8;i++) fprintf(fp," %d ",(status&(1<>i ); for (int i=0;i=0; }; void PrintFormat(); void Print(); int HvInit(); }; class HvMap { public: std::vector hvch; std::vector hvinfo; HvMap(char *fname); int HvInit(); int HvReadChannel(FILE*fp,int code); int Print(); int PrintStatus(FILE*fp,int n, unsigned short *data); int PrintParameters(FILE*fp,int n, unsigned short *data); int PrintGroupChannels(int n, unsigned short *data); }; class hvmon { HvMap *fHvMap; public: hvmon(){}; ~hvmon(){}; caenn470 fMon[10]; int Init(int hvinit=0); int ReloadDB(int hvinit=0); int Connect(); int Disconnect(); int DumpData(char *fname); int Monitor(FILE *fp); char * ReadIdentity(); int Test(); int Test(int argc, char **argv); inline HvMap *GetHvMap(){return fHvMap;}; }; #endif