00001
00002
00003
00004
00005 #include <iostream>
00006 #include <assert.h>
00007
00008
00009 #include "EEdsm0Tree.h"
00010 #include "EEdsm0.h"
00011
00012
00013
00014
00015
00016 EEdsm0Tree::EEdsm0Tree(const char *nameX) {
00017 ee0=new EEdsm0[Nee0];
00018 ee0[2-1].setType(2);
00019 ee0[5-1].setType(2);
00020 ee0[8-1].setType(2);
00021 clear();
00022 strncpy(name,nameX,mxTxt);
00023 }
00024
00025
00026
00027 EEdsm0Tree::~EEdsm0Tree() {
00028
00029 }
00030
00031
00032
00033 void EEdsm0Tree :: clear() {
00034 int i;
00035 for (i=0;i<Nee0;i++) ee0[i].clear();
00036 memset(ee0outTPsum,0,sizeof(ee0outTPsum));
00037 memset( ee0outHT2bit,0,sizeof( ee0outHT2bit));
00038 memset( ee0outTP2bit,0,sizeof( ee0outTP2bit));
00039 memset(ee0outHTTP2bit,0,sizeof(ee0outHTTP2bit));
00040 memset( ee0out16bit,0,sizeof( ee0out16bit));
00041 }
00042
00043
00044
00045
00046 void
00047 EEdsm0Tree::setInp12bit(int HankCh, short val){
00048 int ibr=HankCh/10;
00049 assert(ibr>=0 && ibr<Nee0);
00050 int ch=HankCh%10;
00051 ee0[ibr].setInp12bit(ch,val);
00052
00053 }
00054
00055
00056
00057
00058
00059 int
00060 EEdsm0Tree::getInp12bit(int HankCh) const {
00061 int ibr=HankCh/10;
00062 assert(ibr>=0 && ibr<Nee0);
00063 int ch=HankCh%10;
00064 return ee0[ibr].getInp12bit(ch);
00065 }
00066
00067
00068
00069 void
00070 EEdsm0Tree::setYear(int y, int*HTth, int*TPth ) {
00071 int i;
00072 for (i=0;i<Nee0;i++) ee0[i].setYear(y, HTth, TPth);
00073 }
00074
00075
00076
00077
00078 void
00079 EEdsm0Tree::compute() {
00080 int i,j;
00081
00082 for(i=0;i<Nee0; i++){
00083
00084 ee0[i].compute();
00085
00086 }
00087
00088 j=0;
00089 for(i=0;i<Nee0; i++){
00090 ee0outTPsum[j]= ee0[i].getOutTPsum();
00091 ee0outTP2bit[j]= ee0[i].getOutTP2bit();
00092 ee0outHT2bit[j]= ee0[i].getOutHT2bit();
00093 ee0outHTTP2bit[j]= ee0[i].getOutHTTP2bit();
00094 ee0out16bit[j]= ee0[i].getOut16bit();
00095 j++;
00096 if(i==1 || i==4 || i==7) {
00097 ee0outTPsum[j]= ee0[i].getOutTPsum(1);
00098 ee0outTP2bit[j]= ee0[i].getOutTP2bit(1);
00099 ee0outHT2bit[j]= ee0[i].getOutHT2bit(1);
00100 ee0outHTTP2bit[j]= ee0[i].getOutHTTP2bit(1);
00101 ee0out16bit[j]= ee0[i].getOut16bit(1);
00102 j++;
00103 }
00104 }
00105
00106 }
00107
00108
00109
00110 void
00111 EEdsm0Tree::print( int k) const {
00112 printf("EEdsm0Tree(%s) \n",name);
00113
00114 int i;
00115 for(i=0;i<Nee0;i++) {
00116 printf("\n----------- level-0 Board %2d ",i+1);
00117 ee0[i].print();
00118 }
00119
00120 printf("\n----------- level-0 emulated output \n ch =");
00121 for(i=Nee0out-1;i>=0; i--) printf(" %2d ",i);
00122 printf("\n TPsum=");
00123 for(i=Nee0out-1;i>=0; i--) printf(" %3d ",ee0outTPsum[i]);
00124 printf("\n HT2b=");
00125 for(i=Nee0out-1;i>=0; i--) printf(" %3d ",ee0outHT2bit[i]);
00126
00127 printf("\nHTTP2b=");
00128 for(i=Nee0out-1;i>=0; i--) printf(" %3d ",ee0outHTTP2bit[i]);
00129
00130 printf("\n");
00131
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154