00001
00002
00003
00004
00005
00007
00008 #include "Stiostream.h"
00009 #include "St_trg_Maker.h"
00010 #include "St_DataSetIter.h"
00011 #include "StDAQMaker/StDAQReader.h"
00012 #include "StDAQMaker/StTRGReader.h"
00013 #include "StDAQMaker/StSSDReader.h"
00014 #include "tables/St_dst_L0_Trigger_Table.h"
00015 #include "tables/St_dst_L1_Trigger_Table.h"
00016 #include "tables/St_dst_L2_Trigger_Table.h"
00017 #include "tables/St_dst_TrgDet_Table.h"
00018 #include "tables/St_ctu_raw_Table.h"
00019 #if 0
00020 #include "tables/St_mwc_raw_Table.h"
00021 #endif
00022 #include "tables/St_dst_TrgDet_Table.h"
00023 #define PREPOST 11 // CAUTION: this number is also in dst_TrgDet.idl
00024
00025 #include "StDaqLib/TRG/trgStructures.h"
00026 typedef struct {
00027 EvtDescData EvtDesc;
00028 TrgSumData TrgSum;
00029 RawTrgDet RAW[PREPOST];
00030
00031 } MarilynMonroe;
00032 MarilynMonroe *gs;
00033
00034
00035 #include "StDaqLib/TRG/trgStructures2000.h"
00036 typedef struct {
00037 EvtDescData2000 EvtDesc;
00038 TrgSumData2000 TrgSum;
00039 RawTrgDet2000 RAW[PREPOST];
00040
00041 } MarilynMonroe2000;
00042 MarilynMonroe2000 *gs2000;
00043
00044
00045
00046 ClassImp(St_trg_Maker)
00047 #define SANITYCheck(name,value) \
00048 if (name != value) {LOG_INFO << "Value of "#name" = |" << name << "| instead of expected "#value << endm; return kStErr;}
00049
00050
00051
00052 St_trg_Maker::St_trg_Maker(const char *name):StMaker(name){
00053 drawinit=kFALSE;
00054 }
00055
00056 St_trg_Maker::~St_trg_Maker(){
00057 }
00058
00059 Int_t St_trg_Maker::Init(){
00060
00061
00062 #if 0
00063 InitMwcArrays();
00064 #endif
00065 return StMaker::Init();
00066 }
00067
00069
00070
00071
00072
00073 #define SWITCH(x) x
00074 #define LATER_THAN_YEAR_2000
00075 #include "St_trg_duplicated.code"
00076 #undef SWITCH
00077 #undef LATER_THAN_YEAR_2000
00078
00079 #define SWITCH(x) x ## 2000
00080 #include "St_trg_duplicated.code"
00081
00083 void St_trg_Maker::SecondDstSim(St_dst_L0_Trigger *dst2)
00084 {
00085 int i;
00086 dst_L0_Trigger_st *tt = dst2->GetTable();
00087 tt->TriggerActionWd = 0;
00088 tt->TriggerWd = 0;
00089 for(i=0;i<32;i++) tt->CPA[i]=0;
00090 tt->MWC_CTB_mul = 0;
00091 tt->MWC_CTB_dipole = 0;
00092 tt->MWC_CTB_topology = 0;
00093 tt->MWC_CTB_moment = 0;
00094 }
00095
00097 int St_trg_Maker::YearOfData(St_DataSet *herb)
00098 {
00099 StDAQReader *fromVictor = (StDAQReader*) (herb->GetObject()); assert(fromVictor);
00100 StTRGReader *trgReader = fromVictor->getTRGReader();if(!trgReader) return 0;
00101 if(!trgReader->thereIsTriggerData()) return 0;
00102 int y = trgReader->getYear();
00103 assert(y);
00104 return y;
00105
00106 }
00107
00116 Int_t St_trg_Maker::Make(){
00117 static char initializationDone=0;
00118 St_dst_TrgDet *dst1 = new St_dst_TrgDet("TrgDet",1); if(!dst1) return kStWarn; dst1->SetNRows(1);
00119 St_dst_L0_Trigger *dst2 = new St_dst_L0_Trigger("L0_Trigger",1); if(!dst2) return kStWarn; dst2->SetNRows(1);
00120 St_dst_L1_Trigger *dst3 = new St_dst_L1_Trigger("L1_Trigger",1); if(!dst3) return kStWarn; dst3->SetNRows(1);
00121 St_dst_L2_Trigger *dst4 = new St_dst_L2_Trigger("L2_Trigger",1); if(!dst4) return kStWarn; dst4->SetNRows(1);
00122 m_DataSet->Add(dst1);
00123 m_DataSet->Add(dst2);
00124 m_DataSet->Add(dst3);
00125 m_DataSet->Add(dst4);
00126
00128
00129
00130
00131
00132
00133
00135
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196 St_DataSet *DAQdset = GetDataSet("StDAQReader");
00197 if(DAQdset) {
00198
00199
00200
00201
00202
00203 int yy=YearOfData(DAQdset);
00204 if (yy >= 2007 ){
00205 LOG_INFO << "trg is obsolete for years " << yy << ">= 2007" << endm;
00206 return kStOk;
00207 }
00208
00209 switch(yy) {
00210 case 2000:
00211 LOG_INFO << "analyzing year 2000 trigger data." << endm;
00212 if(!initializationDone) {
00213 InitCtbArrays(); initializationDone=7;
00214 }
00215 return Daq2000(DAQdset,dst1,dst2,dst3,dst4);
00216 break;
00217
00218 case 2001:
00219 LOG_INFO << "analyzing year 2001 trigger data" << endm;
00220 if(!initializationDone) {
00221 InitCtbArrays2001();
00222 initializationDone=7;
00223 }
00224 return Daq(DAQdset,dst1,dst2,dst3,dst4);
00225 break;
00226
00227 case 2003:
00228 LOG_INFO << "analyzing year 2003 trigger data"<< endm;
00229 if(!initializationDone) {
00230 InitCtbArrays2001();
00231 initializationDone=7;
00232 }
00233 return Daq2003(DAQdset,dst1,dst2,dst3,dst4);
00234 break;
00235
00236
00237 case 2004:
00238 case 2005:
00239 LOG_INFO << "analyzing year 2004/2005 trigger data (using 2003)" << endm;
00240 if(!initializationDone) {
00241 InitCtbArrays2001();
00242 initializationDone=7;
00243 }
00244 return Daq2003(DAQdset,dst1,dst2,dst3,dst4);
00245 break;
00246
00247 case 0:
00248 return kStWarn;
00249
00250 default:
00251 assert(0);
00252 }
00253
00254 } else {
00255 if(!initializationDone) { InitCtbArrays2001(); initializationDone=7; }
00256 return Sim(dst1,dst2,dst3,dst4);
00257 }
00258
00259 return kStOk;
00260
00261 }
00262
00263
00264 void St_trg_Maker::TakeCareOfL1andL2Sim(St_dst_L1_Trigger *dst3,St_dst_L2_Trigger *dst4) {
00265
00266 LOG_INFO << "we are in TakeCareOfL1andL2Sim" << endm ;
00267 }
00268
00269
00270 int St_trg_Maker::HandleCtu(St_ctu_raw *ctu_raw,St_dst_TrgDet *dst1) {
00271 if ( !dst1 ) {
00272 LOG_INFO << "dst1 not found" << endm ;
00273 return 0 ;
00274 }
00275 dst_TrgDet_st *tt = 0 ;
00276 tt = dst1->GetTable();
00277 if ( !tt ) {
00278 LOG_INFO << "dst1 table not found" << endm ;
00279 return 0 ;
00280 }
00281
00282
00283
00284 tt->npre = 0 ;
00285 tt->npost= 0;
00286
00287 if ( !ctu_raw ) {
00288 LOG_INFO << "ctu_raw table not found" << endm ;
00289 return 0 ;
00290 }
00291 ctu_raw_st* ctbRaw = 0 ;
00292 ctbRaw = ctu_raw->GetTable();
00293 if ( !ctbRaw ) {
00294 LOG_INFO << "ctbRaw table not found" << endm ;
00295 return 0 ;
00296 }
00297
00298 int tray = 0 ;
00299 int slat = 0 ;
00300 for ( int i = 0 ; i < ctu_raw->GetNRows() ; i++ ) {
00301
00302
00303
00304 if ( ctbRaw[i].i_eta < 3 ) {
00305 tray = getTrayCtb ( float(6. * (ctbRaw[i].i_phi-1)), -100. ) ;
00306 slat = 2 - ctbRaw[i].i_eta ;
00307 }
00308 else {
00309 tray = getTrayCtb ( float(6. * (ctbRaw[i].i_phi-1)), 100. ) ;
00310 slat = ctbRaw[i].i_eta - 2 ;
00311 }
00312 tt->nCtb[tray][slat][0] = ctbRaw[i].adc ;
00313 tt->timeCtb[tray][slat][0] = 0;
00314 }
00315 return 7;
00316 }
00317
00318
00319 int St_trg_Maker::getTrayCtb ( float phi, float z ) {
00320 float phiShift, phiShifted ;
00321 int iphi, iPhi ;
00322
00323 if ( z > 0 ) {
00324 phiShift = 84 ;
00325 phiShifted = (phi - phiShift) ;
00326 if ( phiShifted < 0 ) phiShifted += 360 ;
00327 iphi = int(phiShifted / 6) ;
00328 iPhi = 59 - iphi ;
00329 if ( iPhi == 0 ) iPhi = 60 ;
00330 return iPhi ;
00331 }
00332 else {
00333 phiShift = 112 ;
00334 phiShifted = (phi - phiShift) ;
00335 if ( phiShifted < 0 ) phiShifted += 360 ;
00336 iphi = int(phiShifted / 6) ;
00337 iPhi = 62 + iphi ;
00338 if ( iPhi == 121 ) iPhi = 61 ;
00339 return iPhi ;
00340 }
00341
00342 }
00343 void St_trg_Maker::Vladimir2Herbert(int input,int *sector,int *subsector) {
00344 int offset, flip;
00345 assert(input>=1&&input<=96);
00346 if(input>48) {
00347 input-=48; offset=0; flip = -1;
00348 } else if(45<=input&&input<=48) {
00349 *sector=24; *subsector=input-44; return;
00350 } else {
00351 offset=24; flip = 1;
00352 }
00353 *sector = (input-1)/4 + 1 ;
00354 *subsector = 4 + input - 4 * (*sector) ;
00355 *sector = flip*(offset - *sector);
00356 }
00357 #if 0
00358 int St_trg_Maker::HandleMwc(St_mwc_raw *mwc_raw,St_dst_TrgDet *dst1) {
00359 int prePost,sector,subsector,index,irow;
00360 if(!mwc_raw) { LOG_INFO << "Did not find the mwc_raw table mwc."<< endm; return 7; }
00361 mwc_raw_st *vladimir = mwc_raw->GetTable(); assert(vladimir);
00362 dst_TrgDet_st *herbert = dst1->GetTable(); assert(herbert);
00363 herbert->npre=5; herbert->npost=5;
00364 assert(mwc_raw->GetNRows()==96*11);
00365 for(irow=0;irow<96;irow++) {
00366 for(prePost=0;prePost<11;prePost++) {
00367 index=vladimir[96*prePost+irow].sector;
00368 Vladimir2Herbert(index,§or,&subsector);
00369 assert(sector>=1&§or<=24);
00370 assert(subsector>=1&&subsector<=4);
00371 herbert[0].nMwc[sector-1][subsector-1][prePost]=vladimir[96*prePost+irow].count;
00372 }
00373 }
00374 return 7;
00375 }
00376 #endif
00377 int St_trg_Maker::Sim(St_dst_TrgDet *dst1,St_dst_L0_Trigger *dst2,St_dst_L1_Trigger *dst3,St_dst_L2_Trigger *dst4) {
00378 int rv=kStOK;
00379
00380 St_DataSet *ctf = GetInputDS(".make/ctf/.data");
00381 #if 0
00382 St_DataSet *mwc = GetInputDS(".make/mwc/.data");
00383 if (!ctf || !mwc) return kStWarn;
00384 #else
00385 if (!ctf ) return kStWarn;
00386 #endif
00387 St_ctu_raw *ctu_raw = (St_ctu_raw *) ctf->Find("ctb_raw");
00388 #if 0
00389 St_mwc_raw *mwc_raw = (St_mwc_raw *) mwc->Find("raw");
00390 #endif
00391
00392 VpdSim(dst1);
00393 ZdcSim(dst1);
00394
00395
00396 #if 0
00397 if(!HandleMwc(mwc_raw,dst1)) rv=kStWarn;
00398 #endif
00399 if(!HandleCtu(ctu_raw,dst1)) rv=kStWarn;
00400 SecondDstSim(dst2);
00401 TakeCareOfL1andL2Sim(dst3,dst4);
00402
00403 return rv;
00404 }
00405 void St_trg_Maker::VpdSim(St_dst_TrgDet *dst1) {
00406 int i;
00407 dst_TrgDet_st *tt = dst1->GetTable();
00408 for(i=0;i<48;i++) {
00409 tt->adcVPD[i]=0;
00410 tt->timeVPD[i]=0;
00411 }
00412 tt->TimeEastVpd=0;
00413 tt->TimeWestVpd=0;
00414 tt->vertexZ=0;
00415 }
00416 void St_trg_Maker::ZdcSim(St_dst_TrgDet *dst1) {
00417 int i;
00418 dst_TrgDet_st *tt = dst1->GetTable();
00419 for(i=0;i<16;i++) {
00420 tt->adcZDC[i]=0;
00421 tt->tdcZDC[i]=0;
00422 }
00423 tt->adcZDCEast=0;
00424 tt->adcZDCWest=0;
00425 tt->adcZDCsum=0;
00426 }
00427 void St_trg_Maker::InitCtbArrays2001(void) {
00428 static int call=0;
00429 call++;
00430 assert(call<=1);
00431 auxctbmap[ 0]=104;
00432 auxctbmap[ 1]=8;
00433 auxctbmap[ 2]=40;
00434 auxctbmap[ 3]=72;
00435 auxctbmap[ 4]=120;
00436 auxctbmap[ 5]=24;
00437 auxctbmap[ 6]=56;
00438 auxctbmap[ 7]=88;
00439 auxctbmap[ 8]=136;
00440 auxctbmap[ 9]=168;
00441 auxctbmap[10]=200;
00442 auxctbmap[11]=232;
00443 auxctbmap[12]=152;
00444 auxctbmap[13]=184;
00445 auxctbmap[14]=216;
00446 auxctbmap[15]=248;
00447 ctbmap[1-1][1-1]=109;
00448 ctbmap[2-1][1-1]=108;
00449 ctbmap[3-1][1-1]=107;
00450 ctbmap[4-1][1-1]=106;
00451 ctbmap[5-1][1-1]=105;
00452 ctbmap[6-1][1-1]=7;
00453 ctbmap[7-1][1-1]=6;
00454 ctbmap[8-1][1-1]=5;
00455 ctbmap[9-1][1-1]=4;
00456 ctbmap[10-1][1-1]=3;
00457 ctbmap[11-1][1-1]=2;
00458 ctbmap[12-1][1-1]=1;
00459 ctbmap[13-1][1-1]=0;
00460 ctbmap[14-1][1-1]=15;
00461 ctbmap[15-1][1-1]=14;
00462 ctbmap[16-1][1-1]=13;
00463 ctbmap[17-1][1-1]=12;
00464 ctbmap[18-1][1-1]=11;
00465 ctbmap[19-1][1-1]=10;
00466 ctbmap[20-1][1-1]=9;
00467 ctbmap[21-1][1-1]=39;
00468 ctbmap[22-1][1-1]=38;
00469 ctbmap[23-1][1-1]=37;
00470 ctbmap[24-1][1-1]=36;
00471 ctbmap[25-1][1-1]=35;
00472 ctbmap[26-1][1-1]=34;
00473 ctbmap[27-1][1-1]=33;
00474 ctbmap[28-1][1-1]=32;
00475 ctbmap[29-1][1-1]=47;
00476 ctbmap[30-1][1-1]=46;
00477 ctbmap[31-1][1-1]=45;
00478 ctbmap[32-1][1-1]=44;
00479 ctbmap[33-1][1-1]=43;
00480 ctbmap[34-1][1-1]=42;
00481 ctbmap[35-1][1-1]=41;
00482 ctbmap[36-1][1-1]=71;
00483 ctbmap[37-1][1-1]=70;
00484 ctbmap[38-1][1-1]=69;
00485 ctbmap[39-1][1-1]=68;
00486 ctbmap[40-1][1-1]=67;
00487 ctbmap[41-1][1-1]=66;
00488 ctbmap[42-1][1-1]=65;
00489 ctbmap[43-1][1-1]=64;
00490 ctbmap[44-1][1-1]=79;
00491 ctbmap[45-1][1-1]=78;
00492 ctbmap[46-1][1-1]=77;
00493 ctbmap[47-1][1-1]=76;
00494 ctbmap[48-1][1-1]=75;
00495 ctbmap[49-1][1-1]=74;
00496 ctbmap[50-1][1-1]=73;
00497 ctbmap[51-1][1-1]=103;
00498 ctbmap[52-1][1-1]=102;
00499 ctbmap[53-1][1-1]=101;
00500 ctbmap[54-1][1-1]=100;
00501 ctbmap[55-1][1-1]=99;
00502 ctbmap[56-1][1-1]=98;
00503 ctbmap[57-1][1-1]=97;
00504 ctbmap[58-1][1-1]=96;
00505 ctbmap[59-1][1-1]=111;
00506 ctbmap[60-1][1-1]=110;
00507 ctbmap[1-1][2-1]=125;
00508 ctbmap[2-1][2-1]=124;
00509 ctbmap[3-1][2-1]=123;
00510 ctbmap[4-1][2-1]=122;
00511 ctbmap[5-1][2-1]=121;
00512 ctbmap[6-1][2-1]=23;
00513 ctbmap[7-1][2-1]=22;
00514 ctbmap[8-1][2-1]=21;
00515 ctbmap[9-1][2-1]=20;
00516 ctbmap[10-1][2-1]=19;
00517 ctbmap[11-1][2-1]=18;
00518 ctbmap[12-1][2-1]=17;
00519 ctbmap[13-1][2-1]=16;
00520 ctbmap[14-1][2-1]=31;
00521 ctbmap[15-1][2-1]=30;
00522 ctbmap[16-1][2-1]=29;
00523 ctbmap[17-1][2-1]=28;
00524 ctbmap[18-1][2-1]=27;
00525 ctbmap[19-1][2-1]=26;
00526 ctbmap[20-1][2-1]=25;
00527 ctbmap[21-1][2-1]=55;
00528 ctbmap[22-1][2-1]=54;
00529 ctbmap[23-1][2-1]=53;
00530 ctbmap[24-1][2-1]=52;
00531 ctbmap[25-1][2-1]=51;
00532 ctbmap[26-1][2-1]=50;
00533 ctbmap[27-1][2-1]=49;
00534 ctbmap[28-1][2-1]=48;
00535 ctbmap[29-1][2-1]=63;
00536 ctbmap[30-1][2-1]=62;
00537 ctbmap[31-1][2-1]=61;
00538 ctbmap[32-1][2-1]=60;
00539 ctbmap[33-1][2-1]=59;
00540 ctbmap[34-1][2-1]=58;
00541 ctbmap[35-1][2-1]=57;
00542 ctbmap[36-1][2-1]=87;
00543 ctbmap[37-1][2-1]=86;
00544 ctbmap[38-1][2-1]=85;
00545 ctbmap[39-1][2-1]=84;
00546 ctbmap[40-1][2-1]=83;
00547 ctbmap[41-1][2-1]=82;
00548 ctbmap[42-1][2-1]=81;
00549 ctbmap[43-1][2-1]=80;
00550 ctbmap[44-1][2-1]=95;
00551 ctbmap[45-1][2-1]=94;
00552 ctbmap[46-1][2-1]=93;
00553 ctbmap[47-1][2-1]=92;
00554 ctbmap[48-1][2-1]=91;
00555 ctbmap[49-1][2-1]=90;
00556 ctbmap[50-1][2-1]=89;
00557 ctbmap[51-1][2-1]=119;
00558 ctbmap[52-1][2-1]=118;
00559 ctbmap[53-1][2-1]=117;
00560 ctbmap[54-1][2-1]=116;
00561 ctbmap[55-1][2-1]=115;
00562 ctbmap[56-1][2-1]=114;
00563 ctbmap[57-1][2-1]=113;
00564 ctbmap[58-1][2-1]=112;
00565 ctbmap[59-1][2-1]=127;
00566 ctbmap[60-1][2-1]=126;
00567 ctbmap[61-1][1-1]=141;
00568 ctbmap[62-1][1-1]=140;
00569 ctbmap[63-1][1-1]=139;
00570 ctbmap[64-1][1-1]=138;
00571 ctbmap[65-1][1-1]=137;
00572 ctbmap[66-1][1-1]=167;
00573 ctbmap[67-1][1-1]=166;
00574 ctbmap[68-1][1-1]=165;
00575 ctbmap[69-1][1-1]=164;
00576 ctbmap[70-1][1-1]=163;
00577 ctbmap[71-1][1-1]=162;
00578 ctbmap[72-1][1-1]=161;
00579 ctbmap[73-1][1-1]=160;
00580 ctbmap[74-1][1-1]=175;
00581 ctbmap[75-1][1-1]=174;
00582 ctbmap[76-1][1-1]=173;
00583 ctbmap[77-1][1-1]=172;
00584 ctbmap[78-1][1-1]=171;
00585 ctbmap[79-1][1-1]=170;
00586 ctbmap[80-1][1-1]=169;
00587 ctbmap[81-1][1-1]=199;
00588 ctbmap[82-1][1-1]=198;
00589 ctbmap[83-1][1-1]=197;
00590 ctbmap[84-1][1-1]=196;
00591 ctbmap[85-1][1-1]=195;
00592 ctbmap[86-1][1-1]=194;
00593 ctbmap[87-1][1-1]=193;
00594 ctbmap[88-1][1-1]=192;
00595 ctbmap[89-1][1-1]=207;
00596 ctbmap[90-1][1-1]=206;
00597 ctbmap[91-1][1-1]=205;
00598 ctbmap[92-1][1-1]=204;
00599 ctbmap[93-1][1-1]=203;
00600 ctbmap[94-1][1-1]=202;
00601 ctbmap[95-1][1-1]=201;
00602 ctbmap[96-1][1-1]=231;
00603 ctbmap[97-1][1-1]=230;
00604 ctbmap[98-1][1-1]=229;
00605 ctbmap[99-1][1-1]=228;
00606 ctbmap[100-1][1-1]=227;
00607 ctbmap[101-1][1-1]=226;
00608 ctbmap[102-1][1-1]=225;
00609 ctbmap[103-1][1-1]=224;
00610 ctbmap[104-1][1-1]=239;
00611 ctbmap[105-1][1-1]=238;
00612 ctbmap[106-1][1-1]=237;
00613 ctbmap[107-1][1-1]=236;
00614 ctbmap[108-1][1-1]=235;
00615 ctbmap[109-1][1-1]=234;
00616 ctbmap[110-1][1-1]=233;
00617 ctbmap[111-1][1-1]=135;
00618 ctbmap[112-1][1-1]=134;
00619 ctbmap[113-1][1-1]=133;
00620 ctbmap[114-1][1-1]=132;
00621 ctbmap[115-1][1-1]=131;
00622 ctbmap[116-1][1-1]=130;
00623 ctbmap[117-1][1-1]=129;
00624 ctbmap[118-1][1-1]=128;
00625 ctbmap[119-1][1-1]=143;
00626 ctbmap[120-1][1-1]=142;
00627 ctbmap[61-1][2-1]=157;
00628 ctbmap[62-1][2-1]=156;
00629 ctbmap[63-1][2-1]=155;
00630 ctbmap[64-1][2-1]=154;
00631 ctbmap[65-1][2-1]=153;
00632 ctbmap[66-1][2-1]=183;
00633 ctbmap[67-1][2-1]=182;
00634 ctbmap[68-1][2-1]=181;
00635 ctbmap[69-1][2-1]=180;
00636 ctbmap[70-1][2-1]=179;
00637 ctbmap[71-1][2-1]=178;
00638 ctbmap[72-1][2-1]=177;
00639 ctbmap[73-1][2-1]=176;
00640 ctbmap[74-1][2-1]=191;
00641 ctbmap[75-1][2-1]=190;
00642 ctbmap[76-1][2-1]=189;
00643 ctbmap[77-1][2-1]=188;
00644 ctbmap[78-1][2-1]=187;
00645 ctbmap[79-1][2-1]=186;
00646 ctbmap[80-1][2-1]=185;
00647 ctbmap[81-1][2-1]=215;
00648 ctbmap[82-1][2-1]=214;
00649 ctbmap[83-1][2-1]=213;
00650 ctbmap[84-1][2-1]=212;
00651 ctbmap[85-1][2-1]=211;
00652 ctbmap[86-1][2-1]=210;
00653 ctbmap[87-1][2-1]=209;
00654 ctbmap[88-1][2-1]=208;
00655 ctbmap[89-1][2-1]=223;
00656 ctbmap[90-1][2-1]=222;
00657 ctbmap[91-1][2-1]=221;
00658 ctbmap[92-1][2-1]=220;
00659 ctbmap[93-1][2-1]=219;
00660 ctbmap[94-1][2-1]=218;
00661 ctbmap[95-1][2-1]=217;
00662 ctbmap[96-1][2-1]=247;
00663 ctbmap[97-1][2-1]=246;
00664 ctbmap[98-1][2-1]=245;
00665 ctbmap[99-1][2-1]=244;
00666 ctbmap[100-1][2-1]=243;
00667 ctbmap[101-1][2-1]=242;
00668 ctbmap[102-1][2-1]=241;
00669 ctbmap[103-1][2-1]=240;
00670 ctbmap[104-1][2-1]=255;
00671 ctbmap[105-1][2-1]=254;
00672 ctbmap[106-1][2-1]=253;
00673 ctbmap[107-1][2-1]=252;
00674 ctbmap[108-1][2-1]=251;
00675 ctbmap[109-1][2-1]=250;
00676 ctbmap[110-1][2-1]=249;
00677 ctbmap[111-1][2-1]=151;
00678 ctbmap[112-1][2-1]=150;
00679 ctbmap[113-1][2-1]=149;
00680 ctbmap[114-1][2-1]=148;
00681 ctbmap[115-1][2-1]=147;
00682 ctbmap[116-1][2-1]=146;
00683 ctbmap[117-1][2-1]=145;
00684 ctbmap[118-1][2-1]=144;
00685 ctbmap[119-1][2-1]=159;
00686 ctbmap[120-1][2-1]=158;
00687 }
00688 void St_trg_Maker::InitCtbArrays(void) {
00689 static int call=0;
00690 call++;
00691 assert(call<=1);
00692 auxctbmap[ 0] = 104;
00693 auxctbmap[ 1] = 120;
00694 auxctbmap[ 2] = 136;
00695 auxctbmap[ 3] = 152;
00696 auxctbmap[ 4] = 168;
00697 auxctbmap[ 5] = 184;
00698 auxctbmap[ 6] = 200;
00699 auxctbmap[ 7] = 216;
00700 auxctbmap[ 8] = 232;
00701 auxctbmap[ 9] = 24;
00702 auxctbmap[10] = 248;
00703 auxctbmap[11] = 40;
00704 auxctbmap[12] = 56;
00705 auxctbmap[13] = 72;
00706 auxctbmap[14] = 8;
00707 auxctbmap[15] = 88;
00708 ctbmap[0][0] = 7;
00709 ctbmap[0][1] = 23;
00710 ctbmap[1][0] = 6;
00711 ctbmap[1][1] = 22;
00712 ctbmap[3-1][0] = 5;
00713 ctbmap[3-1][1] = 21;
00714 ctbmap[4-1][0] = 4;
00715 ctbmap[4-1][1] = 20;
00716 ctbmap[5-1][0] = 3;
00717 ctbmap[5-1][1] = 19;
00718 ctbmap[6-1][0] = 2;
00719 ctbmap[6-1][1] = 18;
00720 ctbmap[7-1][0] = 1;
00721 ctbmap[7-1][1] = 17;
00722 ctbmap[8-1][0] = 0;
00723 ctbmap[8-1][1] = 16;
00724 ctbmap[9-1][0] = 15;
00725 ctbmap[9-1][1] = 31;
00726 ctbmap[10-1][0] = 14;
00727 ctbmap[10-1][1] = 30;
00728 ctbmap[11-1][0] = 13;
00729 ctbmap[11-1][1] = 29;
00730 ctbmap[12-1][0] = 12;
00731 ctbmap[12-1][1] = 28;
00732 ctbmap[13-1][0] = 11;
00733 ctbmap[13-1][1] = 27;
00734 ctbmap[14-1][0] = 10;
00735 ctbmap[14-1][1] = 26;
00736 ctbmap[15-1][0] = 9;
00737 ctbmap[15-1][1] = 25;
00738 ctbmap[16-1][0] = 39;
00739 ctbmap[16-1][1] = 55;
00740 ctbmap[17-1][0] = 38;
00741 ctbmap[17-1][1] = 54;
00742 ctbmap[18-1][0] = 37;
00743 ctbmap[18-1][1] = 53;
00744 ctbmap[19-1][0] = 36;
00745 ctbmap[19-1][1] = 52;
00746 ctbmap[20-1][0] = 35;
00747 ctbmap[20-1][1] = 51;
00748 ctbmap[21-1][0] = 34;
00749 ctbmap[21-1][1] = 50;
00750 ctbmap[22-1][0] = 33;
00751 ctbmap[22-1][1] = 49;
00752 ctbmap[23-1][0] = 32;
00753 ctbmap[23-1][1] = 48;
00754 ctbmap[24-1][0] = 47;
00755 ctbmap[24-1][1] = 63;
00756 ctbmap[25-1][0] = 46;
00757 ctbmap[25-1][1] = 62;
00758 ctbmap[26-1][0] = 45;
00759 ctbmap[26-1][1] = 61;
00760 ctbmap[27-1][0] = 44;
00761 ctbmap[27-1][1] = 60;
00762 ctbmap[28-1][0] = 43;
00763 ctbmap[28-1][1] = 59;
00764 ctbmap[29-1][0] = 42;
00765 ctbmap[29-1][1] = 58;
00766 ctbmap[30-1][0] = 41;
00767 ctbmap[30-1][1] = 57;
00768 ctbmap[31-1][0] = 71;
00769 ctbmap[31-1][1] = 87;
00770 ctbmap[32-1][0] = 70;
00771 ctbmap[32-1][1] = 86;
00772 ctbmap[33-1][0] = 69;
00773 ctbmap[33-1][1] = 85;
00774 ctbmap[34-1][0] = 68;
00775 ctbmap[34-1][1] = 84;
00776 ctbmap[35-1][0] = 67;
00777 ctbmap[35-1][1] = 83;
00778 ctbmap[36-1][0] = 66;
00779 ctbmap[36-1][1] = 82;
00780 ctbmap[37-1][0] = 65;
00781 ctbmap[37-1][1] = 81;
00782 ctbmap[38-1][0] = 64;
00783 ctbmap[38-1][1] = 80;
00784 ctbmap[39-1][0] = 79;
00785 ctbmap[39-1][1] = 95;
00786 ctbmap[40-1][0] = 78;
00787 ctbmap[40-1][1] = 94;
00788 ctbmap[41-1][0] = 77;
00789 ctbmap[41-1][1] = 93;
00790 ctbmap[42-1][0] = 76;
00791 ctbmap[42-1][1] = 92;
00792 ctbmap[43-1][0] = 75;
00793 ctbmap[43-1][1] = 91;
00794 ctbmap[44-1][0] = 74;
00795 ctbmap[44-1][1] = 90;
00796 ctbmap[45-1][0] = 73;
00797 ctbmap[45-1][1] = 89;
00798 ctbmap[46-1][0] = 103;
00799 ctbmap[46-1][1] = 119;
00800 ctbmap[47-1][0] = 102;
00801 ctbmap[47-1][1] = 118;
00802 ctbmap[48-1][0] = 101;
00803 ctbmap[48-1][1] = 117;
00804 ctbmap[49-1][0] = 100;
00805 ctbmap[49-1][1] = 116;
00806 ctbmap[50-1][0] = 99;
00807 ctbmap[50-1][1] = 115;
00808 ctbmap[51-1][0] = 98;
00809 ctbmap[51-1][1] = 114;
00810 ctbmap[52-1][0] = 97;
00811 ctbmap[52-1][1] = 113;
00812 ctbmap[53-1][0] = 96;
00813 ctbmap[53-1][1] = 112;
00814 ctbmap[54-1][0] = 111;
00815 ctbmap[54-1][1] = 127;
00816 ctbmap[55-1][0] = 110;
00817 ctbmap[55-1][1] = 126;
00818 ctbmap[56-1][0] = 109;
00819 ctbmap[56-1][1] = 125;
00820 ctbmap[57-1][0] = 108;
00821 ctbmap[57-1][1] = 124;
00822 ctbmap[58-1][0] = 107;
00823 ctbmap[58-1][1] = 123;
00824 ctbmap[59-1][0] = 106;
00825 ctbmap[59-1][1] = 122;
00826 ctbmap[60-1][0] = 105;
00827 ctbmap[60-1][1] = 121;
00828 ctbmap[61-1][0] = 135;
00829 ctbmap[61-1][1] = 151;
00830 ctbmap[62-1][0] = 134;
00831 ctbmap[62-1][1] = 150;
00832 ctbmap[63-1][0] = 133;
00833 ctbmap[63-1][1] = 149;
00834 ctbmap[64-1][0] = 132;
00835 ctbmap[64-1][1] = 148;
00836 ctbmap[65-1][0] = 131;
00837 ctbmap[65-1][1] = 147;
00838 ctbmap[66-1][0] = 130;
00839 ctbmap[66-1][1] = 146;
00840 ctbmap[67-1][0] = 129;
00841 ctbmap[67-1][1] = 145;
00842 ctbmap[68-1][0] = 128;
00843 ctbmap[68-1][1] = 144;
00844 ctbmap[69-1][0] = 143;
00845 ctbmap[69-1][1] = 159;
00846 ctbmap[70-1][0] = 142;
00847 ctbmap[70-1][1] = 158;
00848 ctbmap[71-1][0] = 141;
00849 ctbmap[71-1][1] = 157;
00850 ctbmap[72-1][0] = 140;
00851 ctbmap[72-1][1] = 156;
00852 ctbmap[73-1][0] = 139;
00853 ctbmap[73-1][1] = 155;
00854 ctbmap[74-1][0] = 138;
00855 ctbmap[74-1][1] = 154;
00856 ctbmap[75-1][0] = 137;
00857 ctbmap[75-1][1] = 153;
00858 ctbmap[76-1][0] = 167;
00859 ctbmap[76-1][1] = 183;
00860 ctbmap[77-1][0] = 166;
00861 ctbmap[77-1][1] = 182;
00862 ctbmap[78-1][0] = 165;
00863 ctbmap[78-1][1] = 181;
00864 ctbmap[79-1][0] = 164;
00865 ctbmap[79-1][1] = 180;
00866 ctbmap[80-1][0] = 163;
00867 ctbmap[80-1][1] = 179;
00868 ctbmap[81-1][0] = 162;
00869 ctbmap[81-1][1] = 178;
00870 ctbmap[82-1][0] = 161;
00871 ctbmap[82-1][1] = 177;
00872 ctbmap[83-1][0] = 160;
00873 ctbmap[83-1][1] = 176;
00874 ctbmap[84-1][0] = 175;
00875 ctbmap[84-1][1] = 191;
00876 ctbmap[85-1][0] = 174;
00877 ctbmap[85-1][1] = 190;
00878 ctbmap[86-1][0] = 173;
00879 ctbmap[86-1][1] = 189;
00880 ctbmap[87-1][0] = 172;
00881 ctbmap[87-1][1] = 188;
00882 ctbmap[88-1][0] = 171;
00883 ctbmap[88-1][1] = 187;
00884 ctbmap[89-1][0] = 170;
00885 ctbmap[89-1][1] = 186;
00886 ctbmap[90-1][0] = 169;
00887 ctbmap[90-1][1] = 185;
00888 ctbmap[91-1][0] = 199;
00889 ctbmap[91-1][1] = 215;
00890 ctbmap[92-1][0] = 198;
00891 ctbmap[92-1][1] = 214;
00892 ctbmap[93-1][0] = 197;
00893 ctbmap[93-1][1] = 213;
00894 ctbmap[94-1][0] = 196;
00895 ctbmap[94-1][1] = 212;
00896 ctbmap[95-1][0] = 195;
00897 ctbmap[95-1][1] = 211;
00898 ctbmap[96-1][0] = 194;
00899 ctbmap[96-1][1] = 210;
00900 ctbmap[97-1][0] = 193;
00901 ctbmap[97-1][1] = 209;
00902 ctbmap[98-1][0] = 192;
00903 ctbmap[98-1][1] = 208;
00904 ctbmap[99-1][0] = 207;
00905 ctbmap[99-1][1] = 223;
00906 ctbmap[100-1][0] = 206;
00907 ctbmap[100-1][1] = 222;
00908 ctbmap[101-1][0] = 205;
00909 ctbmap[101-1][1] = 221;
00910 ctbmap[102-1][0] = 204;
00911 ctbmap[102-1][1] = 220;
00912 ctbmap[103-1][0] = 203;
00913 ctbmap[103-1][1] = 219;
00914 ctbmap[104-1][0] = 202;
00915 ctbmap[104-1][1] = 218;
00916 ctbmap[105-1][0] = 201;
00917 ctbmap[105-1][1] = 217;
00918 ctbmap[106-1][0] = 231;
00919 ctbmap[106-1][1] = 247;
00920 ctbmap[107-1][0] = 230;
00921 ctbmap[107-1][1] = 246;
00922 ctbmap[108-1][0] = 229;
00923 ctbmap[108-1][1] = 245;
00924 ctbmap[109-1][0] = 228;
00925 ctbmap[109-1][1] = 244;
00926 ctbmap[110-1][0] = 227;
00927 ctbmap[110-1][1] = 243;
00928 ctbmap[111-1][0] = 226;
00929 ctbmap[111-1][1] = 242;
00930 ctbmap[112-1][0] = 225;
00931 ctbmap[112-1][1] = 241;
00932 ctbmap[113-1][0] = 224;
00933 ctbmap[113-1][1] = 240;
00934 ctbmap[114-1][0] = 239;
00935 ctbmap[114-1][1] = 255;
00936 ctbmap[115-1][0] = 238;
00937 ctbmap[115-1][1] = 254;
00938 ctbmap[116-1][0] = 237;
00939 ctbmap[116-1][1] = 253;
00940 ctbmap[117-1][0] = 236;
00941 ctbmap[117-1][1] = 252;
00942 ctbmap[118-1][0] = 235;
00943 ctbmap[118-1][1] = 251;
00944 ctbmap[119-1][0] = 234;
00945 ctbmap[119-1][1] = 250;
00946 ctbmap[120-1][0] = 233;
00947 ctbmap[120-1][1] = 249;
00948 }
00949 #if 0
00950 void St_trg_Maker::InitMwcArrays(void) {
00951 static int call=0;
00952 call++;
00953 assert(call<=1);
00954 mwcmap[ 1-1][0] = 71;
00955 mwcmap[ 1-1][1] = 70;
00956 mwcmap[ 1-1][2] = 69;
00957 mwcmap[ 1-1][3] = 68;
00958 mwcmap[ 2-1][0] = 67;
00959 mwcmap[ 2-1][1] = 66;
00960 mwcmap[ 2-1][2] = 65;
00961 mwcmap[ 2-1][3] = 64;
00962 mwcmap[ 3-1][0] = 79;
00963 mwcmap[ 3-1][1] = 78;
00964 mwcmap[ 3-1][2] = 77;
00965 mwcmap[ 3-1][3] = 76;
00966 mwcmap[ 4-1][0] = 95;
00967 mwcmap[ 4-1][1] = 94;
00968 mwcmap[ 4-1][2] = 93;
00969 mwcmap[ 4-1][3] = 92;
00970 mwcmap[ 5-1][0] = 87;
00971 mwcmap[ 5-1][1] = 86;
00972 mwcmap[ 5-1][2] = 85;
00973 mwcmap[ 5-1][3] = 84;
00974 mwcmap[ 6-1][0] = 83;
00975 mwcmap[ 6-1][1] = 82;
00976 mwcmap[ 6-1][2] = 81;
00977 mwcmap[ 6-1][3] = 80;
00978 mwcmap[ 7-1][0] = 99;
00979 mwcmap[ 7-1][1] = 98;
00980 mwcmap[ 7-1][2] = 97;
00981 mwcmap[ 7-1][3] = 96;
00982 mwcmap[ 8-1][0] = 111;
00983 mwcmap[ 8-1][1] = 110;
00984 mwcmap[ 8-1][2] = 109;
00985 mwcmap[ 8-1][3] = 108;
00986 mwcmap[ 9-1][0] = 103;
00987 mwcmap[ 9-1][1] = 102;
00988 mwcmap[ 9-1][2] = 101;
00989 mwcmap[ 9-1][3] = 100;
00990 mwcmap[10-1][0] = 119;
00991 mwcmap[10-1][1] = 118;
00992 mwcmap[10-1][2] = 117;
00993 mwcmap[10-1][3] = 116;
00994 mwcmap[11-1][0] = 115;
00995 mwcmap[11-1][1] = 114;
00996 mwcmap[11-1][2] = 113;
00997 mwcmap[11-1][3] = 112;
00998 mwcmap[12-1][0] = 127;
00999 mwcmap[12-1][1] = 126;
01000 mwcmap[12-1][2] = 125;
01001 mwcmap[12-1][3] = 124;
01002 mwcmap[13-1][0] = 7;
01003 mwcmap[13-1][1] = 6;
01004 mwcmap[13-1][2] = 5;
01005 mwcmap[13-1][3] = 4;
01006 mwcmap[14-1][0] = 3;
01007 mwcmap[14-1][1] = 2;
01008 mwcmap[14-1][2] = 1;
01009 mwcmap[14-1][3] = 0;
01010 mwcmap[15-1][0] = 15;
01011 mwcmap[15-1][1] = 14;
01012 mwcmap[15-1][2] = 13;
01013 mwcmap[15-1][3] = 12;
01014 mwcmap[16-1][0] = 31;
01015 mwcmap[16-1][1] = 30;
01016 mwcmap[16-1][2] = 29;
01017 mwcmap[16-1][3] = 28;
01018 mwcmap[17-1][0] = 23;
01019 mwcmap[17-1][1] = 22;
01020 mwcmap[17-1][2] = 21;
01021 mwcmap[17-1][3] = 20;
01022 mwcmap[18-1][0] = 19;
01023 mwcmap[18-1][1] = 18;
01024 mwcmap[18-1][2] = 17;
01025 mwcmap[18-1][3] = 16;
01026 mwcmap[19-1][0] = 35;
01027 mwcmap[19-1][1] = 34;
01028 mwcmap[19-1][2] = 33;
01029 mwcmap[19-1][3] = 32;
01030 mwcmap[20-1][0] = 47;
01031 mwcmap[20-1][1] = 46;
01032 mwcmap[20-1][2] = 45;
01033 mwcmap[20-1][3] = 44;
01034 mwcmap[21-1][0] = 39;
01035 mwcmap[21-1][1] = 38;
01036 mwcmap[21-1][2] = 37;
01037 mwcmap[21-1][3] = 36;
01038 mwcmap[22-1][0] = 55;
01039 mwcmap[22-1][1] = 54;
01040 mwcmap[22-1][2] = 53;
01041 mwcmap[22-1][3] = 52;
01042 mwcmap[23-1][0] = 51;
01043 mwcmap[23-1][1] = 50;
01044 mwcmap[23-1][2] = 49;
01045 mwcmap[23-1][3] = 48;
01046 mwcmap[24-1][0] = 63;
01047 mwcmap[24-1][1] = 62;
01048 mwcmap[24-1][2] = 61;
01049 mwcmap[24-1][3] = 60;
01050 auxmwcmap[ 0] = 75;
01051 auxmwcmap[ 1] = 74;
01052 auxmwcmap[ 2] = 73;
01053 auxmwcmap[ 3] = 72;
01054 auxmwcmap[ 4] = 91;
01055 auxmwcmap[ 5] = 90;
01056 auxmwcmap[ 6] = 89;
01057 auxmwcmap[ 7] = 88;
01058 auxmwcmap[ 8] = 107;
01059 auxmwcmap[ 9] = 106;
01060 auxmwcmap[10] = 105;
01061 auxmwcmap[11] = 104;
01062 auxmwcmap[12] = 123;
01063 auxmwcmap[13] = 122;
01064 auxmwcmap[14] = 121;
01065 auxmwcmap[15] = 120;
01066 auxmwcmap[16] = 11;
01067 auxmwcmap[17] = 10;
01068 auxmwcmap[18] = 9;
01069 auxmwcmap[19] = 8;
01070 auxmwcmap[20] = 27;
01071 auxmwcmap[21] = 26;
01072 auxmwcmap[22] = 25;
01073 auxmwcmap[23] = 24;
01074 auxmwcmap[24] = 43;
01075 auxmwcmap[25] = 42;
01076 auxmwcmap[26] = 41;
01077 auxmwcmap[27] = 40;
01078 auxmwcmap[28] = 59;
01079 auxmwcmap[29] = 58;
01080 auxmwcmap[30] = 57;
01081 auxmwcmap[31] = 56;
01082 }
01083 #endif
01084
01085
01086
01087
01088
01089
01090
01091
01092
01093
01094
01095
01096
01097
01098
01099
01100
01101
01102
01103
01104
01105
01106
01107
01108
01109
01110
01111
01112
01113
01114
01115
01116
01117
01118
01119
01120
01121
01122
01123
01124
01125
01126
01127
01128
01129
01130
01131
01132
01133
01134
01135
01136
01137
01138
01139
01140
01141
01142
01143
01144
01145
01146
01147
01148
01149
01150
01151
01152
01153
01154
01155
01156
01157
01158
01159
01160
01161
01162
01163
01164
01165
01166
01167
01168
01169
01170
01171
01172
01173
01174
01175
01176
01177
01178
01179
01180
01181
01182
01183
01184
01185
01186
01187
01188
01189
01190
01191
01192
01193
01194
01195
01196
01197
01198
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218
01219
01220
01221
01222
01223
01224
01225
01226
01227
01228
01229
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239
01240
01241
01242
01243
01244
01245
01246
01247
01248
01249
01250
01251
01252
01253
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264
01265
01266
01267
01268
01269
01270
01271
01272
01273