00001 #include <string.h>
00002 #include <stdio.h>
00003
00004 #ifdef IS_REAL_L2 //in l2-ana environment
00005 #include "../L2algoUtil/L2Histo.h"
00006 #include "trgStructures.h"
00007 #else
00008 #include "StDaqLib/TRG/trgStructures.h"
00009 #include "StTriggerUtilities/L2Emulator/L2algoUtil/L2Histo.h"
00010 #endif
00011
00012 #include "L2VirtualAlgo2006.h"
00013
00014 L2VirtualAlgo2006::L2VirtualAlgo2006(const char* name, L2EmcDb* db, char* outDir, int resOff) : mDb(db), mResultOffset(resOff) {
00015 strncpy(mName, name,sizeof(mName));
00016 strncpy(mOutDir,outDir,sizeof(mOutDir));
00017 setOflTrigID(0);
00018 mhT=new L2Histo(901,"L2 time used per input event; x: time (CPU kTics); y: events ",400);
00019 }
00020
00021
00022 void
00023 L2VirtualAlgo2006::finishCommonHistos() {
00024
00025 int iMax=-3, iFWHM=-4;
00026 mhT->findMax( &iMax, &iFWHM);
00027 printf("L2:%s CPU/eve MPV %d kTicks, FWHM=%d, seen eve=%d\n",mName,iMax, iFWHM,mEventsInRun);
00028
00029 if (mLogFile==0) return;
00030 fprintf(mLogFile,"L2:%s CPU/eve MPV %d kTicks, FWHM=%d, seen eve=%d\n",mName,iMax, iFWHM,mEventsInRun);
00031 mhT->print(0,mLogFile);
00032
00033
00034 if (mHistFile) mhT->write(mHistFile);
00035 }
00036
00037
00038
00039 L2VirtualAlgo2006::~L2VirtualAlgo2006(){};
00040
00041
00042 int
00043 L2VirtualAlgo2006::readParams(const char *fileN, int mxPar, int *iPar, float *fPar) {
00044
00045
00046
00047
00048
00049 memset(iPar,0,mxPar*sizeof(int));
00050 memset(fPar,0,mxPar*sizeof(int));
00051 FILE *fd=fopen(fileN,"r");
00052 if(fd==0) { printf(" L2VirtualAlgo2006::readParams failed to open =%s=\n",fileN); return -2222;}
00053
00054 int nVal=0;
00055 int nInt=0, nFloat=0;
00056
00057 const int mx=1000;
00058 char buf[mx];
00059 int mode=0;
00060
00061 for(;;) {
00062 char * ret=fgets(buf,mx,fd);
00063
00064 if(ret==0) break;
00065 if(buf[0]==0) continue;
00066 if(buf[0]=='#') continue;
00067 if(buf[0]=='\n') continue;
00068
00069 if (mode==0 && strstr(buf,"INTS")) { mode=1; continue; }
00070 if (mode==1 && strstr(buf,"FLOATS")) { mode=2; continue; }
00071
00072 if(mode==1) {
00073 if(nInt>=mxPar) {nVal=-501; break;}
00074 int ret1=sscanf(buf,"%i",iPar+nInt);
00075 if(ret1!=1) {nVal=-100*mode -nInt; break;}
00076 nInt++; nVal++;
00077 }
00078 else if(mode==2) {
00079 if(nFloat>=mxPar) {nVal=-502; break;}
00080 int ret1=sscanf(buf,"%f",fPar+nFloat);
00081 if(ret1!=1) {nVal= -100*mode -nFloat; break;}
00082 nFloat++; nVal++;
00083 }
00084
00085 }
00086
00087 fclose(fd);
00088 printf(" L2VirtualAlgo2006::readParams %d from '%s'\n",nVal,fileN);
00089 return nVal;
00090 }