00001
00002
00003
00004
00005 #include <iostream>
00006 #include <assert.h>
00007
00008
00009 #include "EEfeeTPTree.h"
00010 #include "EEfeeTP.h"
00011
00012 #define EEmapFEE_USE // trick instattiates data only in the cxx
00013 #include "EEmapTP.h"
00014 #undef EEmapFEE_USE
00015
00016
00017
00018
00019
00020 EEfeeTPTree::EEfeeTPTree(const char *nameX, int nc) {
00021
00022 memset(feeTP,0,sizeof(feeTP));
00023 memset(TPmap,0,sizeof(TPmap));
00024
00025
00026
00027 int i;
00028 for(i=0;i<90;i++) {
00029 EEfeeTPmap *x=eeTPmap+i;
00030 feeTP[i]=new EEfeeTP( x->JP,x->name,x->lenCh,x->cha0L,x->cha0H);
00031 }
00032
00033
00034 mxChan=nc;
00035 clear();
00036 strncpy(name,nameX,mxTxt);
00037 }
00038
00039
00040
00041 EEfeeTPTree::~EEfeeTPTree() {
00042 for (int i = 0; i < 90; ++i) {
00043 delete feeTP[i];
00044 feeTP[i] = 0;
00045 }
00046 }
00047
00048
00049
00050 void
00051 EEfeeTPTree::clear() {
00052 int i;
00053 for(i=0;i<mxTP;i++) {
00054 if( feeTP[i]==0) continue;
00055 feeTP[i]->clear();
00056 }
00057
00058
00059 }
00060
00061
00062
00063
00064 void
00065 EEfeeTPTree::compute(int *rawAdc, int *feePed, int *feeMask, int* highTowerMask, int* patchSumMask) {
00066 int i;
00067
00068 for(i=0;i<mxTP;i++) {
00069 if( feeTP[i]==0) continue;
00070 int icr=feeTP[i]->getCrateID()-1;
00071 int off=icr*mxChan;
00072 feeTP[i]->compute(rawAdc+off, feePed+off, feeMask+off, highTowerMask[i], patchSumMask[i]);
00073 }
00074 }
00075
00076 #if 0
00077
00078
00079 void
00080 EEfeeTPTree::setInput12bit(int HankCh, short val){
00081 int ibr=HankCh/10;
00082 assert(ibr>=0 && ibr<Nee0);
00083 int ch=HankCh%10;
00084 ee0[ibr].setInput12bit(ch,val);
00085
00086 }
00087
00088
00089
00090
00091
00092 short
00093 EEfeeTPTree::getInput12bit(int HankCh){
00094 int ibr=HankCh/10;
00095 assert(ibr>=0 && ibr<Nee0);
00096 int ch=HankCh%10;
00097 return ee0[ibr].getInput12bit(ch);
00098 }
00099
00100
00101
00102 void
00103 EEfeeTPTree::setYear(int y, int*HTth, int*TPth ) {
00104 int i;
00105 for (i=0;i<Nee0;i++) ee0[i].setYear(y,HTth,TPth );
00106 }
00107
00108
00109
00110 void
00111 EEfeeTPTree::print( int k) {
00112 printf("EEfeeTPTree(%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 #endif
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157