00001 #ifndef L2VirtualAlgo_h
00002 #define L2VirtualAlgo_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #define rdtscl_macro(low) \
00017 __asm__ __volatile__("rdtsc" : "=a" (low) : : "edx")
00018
00019 #ifdef IS_REAL_L2 //in l2-ana environmen
00020 #include "trgStructures.h"
00021 #else
00022 #include "StDaqLib/TRG/trgStructures.h"
00023 #endif
00024
00025 class L2EmcDb;
00026 class L2Histo;
00027 class L2VirtualAlgo {
00028 enum {mxTxt=1000};
00029 protected:
00030 char mName[mxTxt];
00031 char mOutDir[mxTxt];
00032 L2EmcDb* mDb;
00033 FILE *mLogFile, *mHistFile;
00034 int mResultOffset;
00035 int oflTrigId;
00036 bool mAccept;
00037 unsigned long mEveTimeStart, mEveTimeStop,mEveTimeDiff;
00038 void finishCommonHistos();
00039 L2Histo *mhT, *mhN;
00040 int mEventsInRun;
00041 public:
00042 void setOflTrigID(int x) {oflTrigId=x;}
00043 int getOflTrigID() {return oflTrigId;}
00044 bool isAccepted(){ return mAccept; }
00045 bool accepted() { return mAccept; }
00046 const char *getName(){ return mName; }
00047 L2VirtualAlgo(const char* name, L2EmcDb* db, char* outDir, int resOff);
00048 virtual ~L2VirtualAlgo()=0;
00049 virtual int initRun(int runNo, int *rc_ints, float *rc_floats)=0;
00050
00051 virtual bool doEvent(int L0trg, int inpEveId, TrgDataType* trgData,
00052 int bemcIn, unsigned short *bemcData,
00053 int eemcIn, unsigned short *eemcData)=0;
00054
00055 virtual void finishRun()=0;
00056 static int readParams(const char *fileN, int mxPar, int *iPar, float *fPar);
00057 const char* name() const { return mName; }
00058 };
00059
00060
00061 #endif