00001 #include <iostream>
00002 #include <assert.h>
00003 #include <stdlib.h>
00004 #include <stdio.h>
00005 #include <string.h>
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "BEdsm2.h"
00024
00025
00026
00027
00028 BEdsm2::BEdsm2(){
00029 mYear=999;
00030 }
00031
00032
00033
00034 BEdsm2::~BEdsm2() { }
00035
00036
00037
00038 void
00039 BEdsm2::clear() {
00040 memset(data,0,sizeof(data));
00041 }
00042
00043
00044
00045 void
00046 BEdsm2::setWord(int ch, ushort val){
00047 assert(ch>=0 && ch<nc);
00048 data[ch]=val;
00049 }
00050
00051
00052
00053
00054 int
00055 BEdsm2::getInpHT2bit(int i3p) const {
00056 int ch=i3p;
00057 assert(ch>=0 && ch<nc);
00058 ushort val=data[ch] >> 12;
00059 val=val & 3;
00060 return val;
00061 }
00062
00063
00064
00065 int
00066 BEdsm2::getInpHT2bit_2(int i3p) const {
00067 int ch=i3p;
00068 assert(ch>=0 && ch<nc);
00069 ushort val=data[ch] >> 14;
00070 val=val & 3;
00071 return val;
00072 }
00073
00074
00075
00076
00077 int
00078 BEdsm2::getInpJP2bit(int i3p) const {
00079 int ch=i3p;
00080 assert(ch>=0 && ch<nc);
00081 ushort val=data[ch] >> 10;
00082 val=val & 3;
00083 return val;
00084 }
00085
00086
00087
00088 int
00089 BEdsm2::getInpHTTP1bit(int i3p) const {
00090 int ch=i3p;
00091 assert(ch>=0 && ch<nc);
00092 assert(mYear>=2006);
00093 ushort val=data[ch] >> 7;
00094 val=val & 1;
00095 return val;
00096 }
00097
00098
00099
00100 int
00101 BEdsm2::getInpTP1bit(int i3p) const {
00102 int ch=i3p;
00103 assert(ch>=0 && ch<nc);
00104 assert(mYear>=2006);
00105 ushort val=data[ch] >> 9;
00106 val=val & 1;
00107 return val;
00108 }
00109
00110
00111
00112
00113 ushort
00114 BEdsm2::getJPthr(int jp) const {
00115 assert(jp>=0 && jp<6);
00116 assert(mYear<2006);
00117 int ch= jp/3;
00118 int i=jp%3;
00119 assert(ch>=0 && ch<nc);
00120 ushort val=data[ch]>>8;
00121 val=val>>(2*i);
00122 val=val & 3;
00123 return val;
00124 }
00125
00126
00127
00128
00129 int
00130 BEdsm2::getInpEsum5bit(int i3p) const {
00131
00132 int ch= i3p;
00133 assert(ch>=0 && ch<nc);
00134 ushort val=data[ch] & 0xff;
00135 if(mYear>=2006) val=val & 0x1f;
00136 return val;
00137 }
00138
00139
00140
00141
00142 void
00143 BEdsm2::print( int k) const {
00144 printf("BEdsm2:: INPUTS, year=%d \n",mYear);
00145 int i;
00146
00147 printf("ch = ");
00148 for(i=nc-1;i>=0;i--) printf(" %4d ",i);
00149 printf("\nword = ");
00150 for(i=nc-1;i>=0;i--) printf(" x%4.4x ", data[i] );
00151 if(mYear>=2006) {
00152 printf("\ninpTP 1bit = ");
00153 for(i=nc-1;i>=0;i--) printf(" %4d ", getInpTP1bit(i) );
00154 printf("\nHTTPthr = ");
00155 for(i=nc-1;i>=0;i--) printf(" %4d ", getInpHTTP1bit(i) );
00156 }
00157
00158 #if 0
00159 printf("\nJP_Falk =");
00160 for(i=njp-1;i>=0;i--) printf(" %4d ",i);
00161 printf("\nJP_Steve=");
00162 for(i=njp-1;i>=0; i--) printf(" %4d ",(i+2)%6+1);
00163 #endif
00164
00165 if(mYear<2006) {
00166 printf("\nJPthr =");
00167 for(i=njp-1;i>=0;i--) printf(" %4d ", getJPthr(i));
00168 }
00169 printf("\n");
00170
00171 const char *txt="5bit";
00172 if(mYear<2006)txt="8bit";
00173
00174 for(i=0;i<2;i++){
00175 printf("3x.9 JP_Falk(%d+%d+%d) energy/dec: %s=%d HT2bit=%d (only for EEMC)\n",3*i,3*i+1,3*i+2,txt,getInpEsum5bit(i), getInpHT2bit(i));
00176 }
00177 printf("\n");
00178
00179 }
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208