00001 #ifndef L2VirtualAlgo2006_h
00002 #define L2VirtualAlgo2006_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
00020 #define MaxBtowRdo (L2EmcDb::BTOW_MAXFEE*L2EmcDb::BTOW_DATSIZE)
00021 #define MaxEtowRdo (L2EmcDb::ETOW_MAXFEE*L2EmcDb::ETOW_DATUSED)
00022
00023 #ifdef IS_REAL_L2 //in l2-ana environmen, to allow write, dropped in 2008
00024 #include "trgStructures.h"
00025 #else
00026 #include "StDaqLib/TRG/trgStructures.h"
00027 #endif
00028
00029 class L2EmcDb;
00030 class L2Histo;
00031 class L2VirtualAlgo2006 {
00032 enum {mxTxt=1000};
00033 protected:
00034 char mName[mxTxt];
00035 char mOutDir[mxTxt];
00036 L2EmcDb* mDb;
00037 FILE *mLogFile, *mHistFile;
00038 int mResultOffset;
00039 int oflTrigId;
00040 bool mAccept;
00041 unsigned long mEveTimeStart, mEveTimeStop,mEveTimeDiff;
00042 void finishCommonHistos();
00043 L2Histo *mhT, *mhN;
00044 int mEventsInRun;
00045 public:
00046 void setOflTrigID(int x) {oflTrigId=x;}
00047 int getOflTrigID() {return oflTrigId;}
00048 bool isAccepted(){ return mAccept; }
00049 bool accepted() { return mAccept; }
00050 const char *getName(){ return mName; }
00051 L2VirtualAlgo2006(const char* name, L2EmcDb* db, char* outDir, int resOff);
00052 virtual ~L2VirtualAlgo2006()=0;
00053 virtual int initRun(int runNo, int *rc_ints, float *rc_floats)=0;
00054
00055 virtual bool doEvent(int L0trg, int inpEveId, TrgDataType* trgData,
00056 int bemcIn, unsigned short *bemcData,
00057 int eemcIn, unsigned short *eemcData)=0;
00058
00059 virtual void finishRun()=0;
00060 static int readParams(const char *fileN, int mxPar, int *iPar, float *fPar);
00061 const char* name() const { return mName; }
00062 };
00063
00064
00065 #endif