00001 #ifndef _DAQ_DET_H_
00002 #define _DAQ_DET_H_
00003
00004
00005
00006
00007
00008
00009
00010 #include <sys/types.h>
00011
00012 #define m_Mode_DAQ_PED (1<<0) // calculate pedestals in Make
00013 #define m_Mode_DAQ_GAIN (1<<1) // calculate gains in Make
00014 #define m_Mode_DAQ_FCF_RAW (1<<2) // run cluster finder
00015 #define m_Mode_DAQ_ADC (1<<3) // Make outputs ADC
00016 #define m_Mode_DAQ_RAW (1<<4) // Make outputs RAW (used in realtime only!)
00017 #define m_Mode_DAQ_FCF (1<<5) // Make(): runs floating point FCF
00018
00019 #define m_Mode_DAQ_RT (1<<31) // working in realtime! Under ESB! do not use in Offline!
00020
00021
00022 #define m_Debug_DAQ_PRINT (1<<0)
00023 #define m_Debug_DAQ_CHECK (1<<1)
00024
00025
00026 #define DET_PRESENT_SFS (1<<0)
00027 #define DET_PRESENT_DATAP (1<<1)
00028 #define DET_PRESENT_TRG (1<<2)
00029
00030
00031 class daq_dta ;
00032 class daqReader ;
00033 class daq_det ;
00034
00035
00036 extern int checkBank(char *in, char *expect) ;
00037 extern int *legacyDetp(int rts_id, char *datap) ;
00038
00039
00040 class daq_det_factory
00041 {
00042 public:
00043 daq_det_factory() {} ;
00044 virtual ~daq_det_factory() {} ;
00045
00046 static daq_det *make_det(int wh) ;
00047 protected:
00048 static daq_det_factory *det_factories[32] ;
00049 static daq_det_factory *pseudo_factories[32] ;
00050 virtual daq_det *create() = 0 ;
00051 } ;
00052
00053
00054 class daq_det {
00055 protected:
00056
00057 u_char present ;
00058
00059
00060 int run_num ;
00061 u_int evt_num ;
00062
00063 int def_sector ;
00064 int def_rdo ;
00065
00066 u_int m_Mode ;
00067
00068 u_int m_Debug ;
00069
00070
00071 static const int MAX_SEC = 0 ;
00072 static const int MAX_RDO = 0 ;
00073
00074 static int endianess ;
00075
00076
00077 virtual int presence() ;
00078 daqReader *caller ;
00079
00080 const char *sfs_name ;
00081 int rts_id ;
00082
00083
00084 private:
00085
00086 public:
00087
00088
00089 daq_det(daqReader *caller = 0) ;
00090 virtual ~daq_det() ;
00091
00092 virtual int Init() ;
00093 virtual int InitRun(int run) ;
00094 virtual int Make() ;
00095 virtual int FinishRun(int old_run) ;
00096
00097
00098
00099
00100 virtual daq_dta *get(const char *bank="*",int sec=-1, int row=-1, int pad=-1, void *p1=0, void *p2=0) ;
00101 virtual int bad_sanity() ;
00102
00103
00104 virtual daq_dta *put(const char *bank="*",int c1=-1, int c2=-1, int c3=-1, void *p1=0, void *p2=0) ;
00105
00106
00107
00108
00109 virtual void help() const ;
00110
00111
00112 virtual int get_l2(char *buff, int buff_bytes, struct daq_trg_word *trg, int prompt) ;
00113 virtual int get_token(char *buff, int buff_bytes) ;
00114
00115
00116 virtual void SetMode(u_int mode=0) {
00117 m_Mode=mode ;
00118 } ;
00119 virtual u_int GetMode() {
00120 return m_Mode ;
00121 } ;
00122
00123 virtual void set_defaults(int sec, int rdo) {
00124 def_sector = sec;
00125 def_rdo = rdo ;
00126 return ;
00127 } ;
00128
00129 virtual const char *GetCVS() const {
00130 static const char cvs[]="Tag $Name: $: $Id: daq_det.h,v 1.8 2012/05/11 09:30:58 tonko Exp $: built "__DATE__" "__TIME__ ;
00131 return cvs;
00132 } ;
00133
00134
00135 virtual unsigned int get_global_event_num() ;
00136
00137 void managed_by(class daqReader *c) ;
00138
00139
00140
00141 const char *name ;
00142
00143 u_int event_mode ;
00144
00145 char *in_buffer ;
00146 int in_bytes ;
00147
00148 char *out_buffer ;
00149 int out_bytes ;
00150
00151
00152
00153
00154
00155 } ;
00156
00157
00158
00159 #endif