00001 #include "EEMC_Reader.hh"
00002 #include "../EVP/emcReader.h"
00003 #include <assert.h>
00004
00005 using namespace OLDEVP;
00006
00007 int EEMC_Reader::isEemcBankIn( char type) {
00008 switch(type) {
00009 case 'T':
00010 return emc.etow_in;
00011 case 'S':
00012 return emc.esmd_in;
00013 default:
00014 assert(2==3);
00015 }
00016 return 0;
00017 }
00018
00019
00020 u_short *EEMC_Reader::getEemcHeadBlock(int fiber, char type) {
00021
00022 switch(type) {
00023 case 'T':
00024 assert(fiber>=0 && fiber <ETOW_MAXFEE);
00025 return emc.etow_pre[fiber];
00026 break;
00027 case 'S':
00028 assert(fiber>=0 && fiber <=ESMD_MAXFEE);
00029 return emc.esmd_pre[fiber];
00030 break;
00031 default:
00032 assert(2==3);
00033 }
00034
00035 }
00036
00037
00038 u_short *EEMC_Reader::getEemcDataBlock(int fiber, char type) {
00039
00040 switch(type) {
00041 case 'T':
00042 assert(fiber>=0 && fiber <ETOW_MAXFEE);
00043 return emc.etow[fiber];
00044 break;
00045 case 'S':
00046 assert(fiber>=0 && fiber <=ESMD_MAXFEE);
00047 return emc.esmd[fiber];
00048 break;
00049 default:
00050 assert(2==3);
00051 }
00052
00053 }
00054
00055
00056
00057
00058 u_short EEMC_Reader::getEemcHead(int fiber,int channel, char type) {
00059 u_short val=0;
00060 switch(type) {
00061 case 'T':
00062 assert(channel>=0 && channel <ETOW_PRESIZE);
00063 assert(fiber>=0 && fiber <ETOW_MAXFEE);
00064 val=emc.etow_pre[fiber][channel];
00065 break;
00066 case 'S':
00067 assert(channel>=0 && channel <ESMD_PRESIZE);
00068 assert(fiber>=0 && fiber <=ESMD_MAXFEE);
00069 val=emc.esmd_pre[fiber][channel];
00070 break;
00071 default:
00072 assert(2==3);
00073 }
00074 return val;
00075
00076 }
00077
00078
00079 u_short EEMC_Reader::getEemcData(int fiber,int channel, char type) {
00080 u_short val=0;
00081 switch(type) {
00082 case 'T':
00083 assert(channel>=0 && channel <ETOW_DATSIZE);
00084 assert(fiber>=0 && fiber <ETOW_MAXFEE);
00085 val=emc.etow[fiber][channel];
00086 break;
00087 case 'S':
00088 assert(channel>=0 && channel <ESMD_DATSIZE);
00089 assert(fiber>=0 && fiber <=ESMD_MAXFEE);
00090 val=emc.esmd[fiber][channel];
00091 break;
00092 default:
00093 assert(2==3);
00094 }
00095 return val;
00096
00097 }
00098
00099
00100
00101 EEMC_Reader::EEMC_Reader(EventReader *er, Bank_EEMCP *pEEMCP)
00102 {
00103 Bank_DATAP *datap = (Bank_DATAP*) er->getDATAP();
00104
00105 #ifndef NEW_DAQ_READER_DAQLIB
00106 OLDEVP::emcReader((char*)datap);
00107
00108
00109 #else
00110 daqReader *rdr=er->getDaqReader(); assert(rdr);
00111 ::emcReader((char*)rdr);
00112 #endif
00113 pBankEEMCP = pEEMCP;
00114 ercpy = er;
00115
00116
00117 if (!pEEMCP) return;
00118
00119 if (!pBankEEMCP->test_CRC()) printf("CRC error in EEMCP: %s %d\n",__FILE__,__LINE__) ;
00120
00122
00123
00124
00126
00127 pBankEEMCP->header.CRC = 0;
00128 }
00129
00130