00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #include <Stiostream.h>
00025 #include <math.h>
00026 #include "StPeCL0.h"
00027 #include "StCtbTriggerDetector.h"
00028 #include "StMuDSTMaker/COMMON/StMuEvent.h"
00029
00030
00031
00032 ClassImp(StPeCL0)
00033
00034 StPeCL0::StPeCL0() {
00035 infoLevel = 0 ;
00036 minAdc = 3 ;
00037 maxAdc = 16 ;
00038 }
00039
00040 StPeCL0::~StPeCL0() {
00041
00042 }
00043
00044 Int_t StPeCL0::dsm1Sum ( ) {
00045
00046
00047 int i, j;
00048 for(i=0; i<nL0Phi; i++){for(j=0; j<nL0Eta; j++){array2[i][j] = 0;}}
00049 for(i=0; i<15; i++){for(j=0; j<nL0Slats; j++){array2[0][2+j]+=weighted1[i][j];}}
00050 for(i=15; i<30; i++){for(j=0; j<nL0Slats; j++){array2[3][2+j]+=weighted1[i][j];}}
00051 for(i=30; i<45; i++){for(j=0; j<nL0Slats; j++){array2[2][2+j]+=weighted1[i][j];}}
00052 for(i=45; i<60; i++){for(j=0; j<nL0Slats; j++){array2[1][2+j]+=weighted1[i][j];}}
00053 for(i=60; i<75; i++){for(j=0; j<nL0Slats; j++){array2[1][1-j]+=weighted1[i][j];}}
00054 for(i=75; i<90; i++){for(j=0; j<nL0Slats; j++){array2[2][1-j]+=weighted1[i][j];}}
00055 for(i=90; i<105; i++){for(j=0; j<nL0Slats; j++){array2[3][1-j]+=weighted1[i][j];}}
00056 for(i=105; i<120; i++){for(j=0; j<nL0Slats; j++){array2[0][1-j]+=weighted1[i][j];}}
00057
00058
00059
00060 int sum ;
00061 for ( i = 0 ; i < nL0Phi ; i++ ) {
00062 for ( j = 0 ; j < nL0Eta ; j++ ) {
00063 sum = array2[i][j] ;
00064 if ( sum > 255 ) weighted2[i][j] = 255 ;
00065 else if ( sum < 0 ) weighted2[i][j] = 0 ;
00066 else weighted2[i][j] = lut2[i][j][sum] ;
00067 }
00068 }
00069 return 0 ;
00070 }
00071
00072 Int_t StPeCL0::dsm2Sum ( ){
00073 array3[0]=0; array3[1]=0;
00074 {for(int i=0; i<nL0Phi; i++){for(int j=0; j<2; j++){array3[0]+=weighted2[i][j];}}}
00075 {for(int i=0; i<nL0Phi; i++){for(int j=2; j<4; j++){array3[1]+=weighted2[i][j];}}}
00076
00077
00078
00079 int sum ;
00080 {for ( int i = 0 ; i < 2 ; i++ ) {
00081 sum = array3[i] ;
00082 if ( sum > 255 ) weighted3[i] = 255 ;
00083 else if ( sum < 0 ) weighted3[i] = 0 ;
00084 else weighted3[i] = lut3[i][sum] ;
00085 }}
00086 return 0 ;
00087 }
00088
00089
00090 void StPeCL0::printWeightedSlats ( ){
00091 int i, j;
00092
00093 char parray[nL0Trays][nL0Slats] ;
00094 for ( i = 0 ; i < nL0Trays ; i++ ) {
00095 for ( j = 0 ; j < nL0Slats ; j++ ) {
00096 parray[i][j] = weighted1[i][j] ;
00097 if ( parray[i][j] > 14 ) parray[i][j] = 14 ;
00098 }
00099 }
00100
00101 cout << " ++++++++++ Weighted Slat Information ++++++++++ " <<endl ;
00102 cout << " : south -> top -> north -> bottom" << endl;
00103 cout << " : 13-1 60-59 | 58-44 | 43-29 | 28-14" << endl;
00104 for(j=1; j>-1; j--){
00105 cout << "west / eta= " << j << " : ";
00106 for(i=12; i>-1; i--) printf ( "%x", parray[i][j] );
00107 for(i=59; i>57; i--) printf ( "%x", parray[i][j] );
00108 printf ( " | " ) ;
00109 for(i=57; i>42; i--) printf ( "%x", parray[i][j] );
00110 printf ( " | " ) ;
00111 for(i=42; i>27; i--) printf ( "%x", parray[i][j] );
00112 printf ( " | " ) ;
00113 for(i=27; i>12; i--) printf ( "%x", parray[i][j] );
00114 printf ( "\n" ) ;
00115 }
00116 for(j=0; j<2; j++){
00117 cout << "east / eta= " << j << " : ";
00118 for(i=102; i<117; i++) printf ( "%x", parray[i][j] );
00119 printf ( " | " ) ;
00120 for(i=117; i<120; i++) printf ( "%x", parray[i][j] );
00121 for(i=60; i< 72; i++) printf ( "%x", parray[i][j] );
00122 printf ( " | " ) ;
00123 for(i=72; i< 87; i++) printf ( "%x", parray[i][j] );
00124 printf ( " | " ) ;
00125 for(i=87; i<102; i++) printf ( "%x", parray[i][j] );
00126 cout << endl;
00127 }
00128 cout << " : 103-117 | 118-120 61-72 | 73-87 | 88-102" << endl;
00129 }
00130
00131 void StPeCL0::printSlats ( ){
00132 int i, j;
00133
00134 char parray[nL0Trays][nL0Slats] ;
00135 for ( i = 0 ; i < nL0Trays ; i++ ) {
00136 for ( j = 0 ; j < nL0Slats ; j++ ) {
00137 parray[i][j] = array1[i][j] ;
00138 if ( parray[i][j] > 14 ) parray[i][j] = 14 ;
00139 }
00140 }
00141 cout << " ++++++++++ Slat Information ++++++++++ " <<endl ;
00142 cout << " : south -> top -> north -> bottom" << endl;
00143 cout << " : 13-1 60-59 | 58-44 | 43-29 | 28-14" << endl;
00144 for(j=1; j>-1; j--){
00145 cout << "west / eta= " << j << " : ";
00146 for(i=12; i>-1; i--) printf ( "%x", parray[i][j] );
00147 for(i=59; i>57; i--) printf ( "%x", parray[i][j] );
00148 printf ( " | " ) ;
00149 for(i=57; i>42; i--) printf ( "%x", parray[i][j] );
00150 printf ( " | " ) ;
00151 for(i=42; i>27; i--) printf ( "%x", parray[i][j] );
00152 printf ( " | " ) ;
00153 for(i=27; i>12; i--) printf ( "%x", parray[i][j] );
00154 printf ( "\n" ) ;
00155 }
00156 for(j=0; j<2; j++){
00157 cout << "east / eta= " << j << " : ";
00158 for(i=102; i<117; i++) printf ( "%x", parray[i][j] );
00159 printf ( " | " ) ;
00160 for(i=117; i<120; i++) printf ( "%x", parray[i][j] );
00161 for(i=60; i< 72; i++) printf ( "%x", parray[i][j] );
00162 printf ( " | " ) ;
00163 for(i=72; i< 87; i++) printf ( "%x", parray[i][j] );
00164 printf ( " | " ) ;
00165 for(i=87; i<102; i++) printf ( "%x", parray[i][j] );
00166 cout << endl;
00167 }
00168 cout << " : 103-117 | 118-120 61-72 | 73-87 | 88-102" << endl;
00169 }
00170
00171 void StPeCL0::printPatches ( ) {
00172 cout << " ------- Patches --------- " << endl;
00173 cout << " : south top/north bottom/south bottom" << endl;
00174 for(int j=0; j<nL0Eta; j++){
00175 cout << "eta= " << j << " : ";
00176 for(int i=0; i<nL0Phi; i++){
00177 cout << " " << (int)array2[i][j]<<" "<<i<<j<<" "<<(int)(lut2[i][j][array2[i][j]]);
00178 }
00179 cout << endl;
00180 }
00181 }
00182
00183 void StPeCL0::printWeightedPatches ( ) {
00184 cout << " ------- Weighted Patches --------- " << endl;
00185 cout << " : south top/north bottom/south bottom" << endl;
00186 for(int j=0; j<nL0Eta; j++){
00187 cout << "eta= " << j << " : ";
00188 for(int i=0; i<nL0Phi; i++){
00189 cout << " " << (int)weighted2[i][j];
00190 }
00191 cout << endl;
00192 }
00193 }
00194
00195
00196 #ifndef __CINT__
00197 Int_t StPeCL0::process ( StEvent* event ) {
00198
00199 StTriggerDetectorCollection* trg = event->triggerDetectorCollection();
00200 StCtbTriggerDetector& ctb = trg->ctb();
00201
00202 if ( !&ctb ){
00203 printf ( "StPeCL0::process: Didn't find CTB" ) ;
00204 return 1;
00205
00206 }
00207 int i, j, slot ;
00208 for ( i=0 ; i<nL0Trays; i++ ){
00209 slot = cabling[i] ;
00210 if ( slot < 0 || slot >= nL0Trays ) {
00211 printf ( "StPeCL0:process: wrong cabling tray %d slot %d \n", i, slot ) ;
00212 continue ;
00213 }
00214 for ( j = 0 ; j < nL0Slats ; j++ ){
00215 int adc = (int)ctb.mips(i,j,0) ;
00216 if ( adc < 0 ) {
00217
00218 adc = 0 ;
00219 }
00220 if ( adc > 255 ) {
00221 printf ( "StPeCL0:process: adc %d out of range \n", adc ) ;
00222 adc = 255 ;
00223 }
00224 array1[i][j] = adc ;
00225 weighted1[slot][j] = lut1[slot][j][adc] ;
00226
00227 if ( infoLevel && adc > 0 )
00228 printf ( " Event %d tray %d slot %d slat %d adc %d matched %d \n",
00229 event->id(), i+1, slot, j+1, adc, weighted1[slot][j] ) ;
00230 }
00231 }
00232
00233
00234 if ( infoLevel ) {
00235 printSlats();
00236 printWeightedSlats();
00237 }
00238
00239 dsm1Sum() ;
00240
00241 if ( infoLevel ) {
00242 printPatches() ;
00243 printWeightedPatches();
00244 }
00245
00246 dsm2Sum() ;
00247
00248 int output = weighted3[0] + weighted3[1] ;
00249 if ( infoLevel )
00250 printf ( "StPeCL0::process: trigger output %d \n", output ) ;
00251
00252 return output ;
00253 }
00254
00255 Int_t StPeCL0::process(StMuDst* mudst)
00256 {
00257 StMuEvent* event = 0;
00258 event = mudst->event();
00259
00260
00261 StCtbTriggerDetector& ctb = event->ctbTriggerDetector();
00262 if (!&ctb)
00263 {
00264 printf("StPeCL0::process: Didn't find CTB");
00265 return 1;
00266 }
00267
00268
00269 int i, j, slot;
00270
00271 for (i=0 ; i<nL0Trays; i++)
00272 {
00273 slot = cabling[i];
00274 if (slot < 0 || slot >= nL0Trays)
00275 {
00276 printf ("StPeCL0:process: wrong cabling tray %d slot %d \n", i, slot ) ;
00277 continue;
00278 }
00279
00280 for (j = 0; j < nL0Slats; j++)
00281 {
00282 int adc = (int)ctb.mips(i, j, 0);
00283 if (adc < 0)
00284 adc = 0;
00285
00286 if (adc > 255)
00287 {
00288 printf ("StPeCL0:process: adc %d out of range \n", adc);
00289 adc = 255;
00290 }
00291
00292 array1[i][j] = adc;
00293 weighted1[slot][j] = lut1[slot][j][adc];
00294 if (infoLevel && adc > 0)
00295 printf (" Event %d tray %d slot %d slat %d adc %d matched %d \n", mudst->event()->eventInfo().id(), i+1, slot, j+1, adc, weighted1[slot][j]);
00296 }
00297 }
00298
00299
00300 if (infoLevel)
00301 {
00302 printSlats();
00303 printWeightedSlats();
00304 }
00305
00306 dsm1Sum();
00307
00308 if (infoLevel)
00309 {
00310 printPatches();
00311 printWeightedPatches();
00312 }
00313
00314 dsm2Sum();
00315
00316 int output = weighted3[0] + weighted3[1];
00317 if (infoLevel)
00318 printf ("StPeCL0::process: trigger output %d \n", output);
00319
00320
00321 return output;
00322 }
00323 #endif
00324
00325 void StPeCL0::setLinearLuts() {
00326
00327 int i, j, k ;
00328 for ( i = 0 ; i < nL0Trays ; i++ ) {
00329 for ( j = 0 ; j < nL0Range ; j++ ) {
00330 lut1[i][0][j] = j ;
00331 lut1[i][1][j] = j ;
00332 }
00333 }
00334 for ( i = 0 ; i < nL0Phi ; i++ ) {
00335 for ( j = 0 ; j < nL0Eta ; j++ ) {
00336 for ( k = 0 ; k < nL0Range ; k++ ) {
00337 lut2[i][j][k] = k ;
00338 lut2[i][j][k] = k ;
00339 }
00340 }
00341 }
00342
00343 for ( k = 0 ; k < nL0Range ; k++ ) {
00344 lut3[0][k] = k ;
00345 lut3[1][k] = k ;
00346 }
00347 }
00348
00349 void StPeCL0::setP4Luts() {
00350
00351 int i, j, k ;
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363 for ( i = 0 ; i < 8 ; i++ ) {
00364 for ( j = 0 ; j < nL0Slats ; j++ ) {
00365 for ( k = 0 ; k < nL0Range ; k++ ) {
00366 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00367 else lut1[i][j][k] = maxAdc ;
00368 }
00369 }
00370 }
00371
00372 for ( i = 49 ; i < 60 ; i++ ) {
00373 for ( j = 0 ; j < nL0Slats ; j++ ) {
00374 for ( k = 0 ; k < nL0Range ; k++ ) {
00375 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00376 else lut1[i][j][k] = maxAdc ;
00377 }
00378 }
00379 }
00380
00381
00382
00383 for ( i = 19 ; i < 34 ; i++ ) {
00384 for ( j = 0 ; j < nL0Slats ; j++ ) {
00385 for ( k = 0 ; k < nL0Range ; k++ ) {
00386 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00387 else lut1[i][j][k] = maxAdc ;
00388 }
00389 }
00390 }
00391
00392
00393
00394 for ( i = 109 ; i < 120 ; i++ ) {
00395 for ( j = 0 ; j < nL0Slats ; j++ ) {
00396 for ( k = 0 ; k < nL0Range ; k++ ) {
00397 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00398 else lut1[i][j][k] = maxAdc ;
00399 }
00400 }
00401 }
00402
00403 for ( i = 60 ; i < 68 ; i++ ) {
00404 for ( j = 0 ; j < nL0Slats ; j++ ) {
00405 for ( k = 0 ; k < nL0Range ; k++ ) {
00406 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00407 else lut1[i][j][k] = maxAdc ;
00408 }
00409 }
00410 }
00411
00412
00413
00414 for ( i = 79 ; i < 94 ; i++ ) {
00415 for ( j = 0 ; j < nL0Slats ; j++ ) {
00416 for ( k = 0 ; k < nL0Range ; k++ ) {
00417 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00418 else lut1[i][j][k] = maxAdc ;
00419 }
00420 }
00421 }
00422
00423
00424
00425
00426
00427
00428 for ( i = 34 ; i < 50 ; i++ ) {
00429 for ( j = 0 ; j < nL0Slats ; j++ ) {
00430 for ( k = 0 ; k < nL0Range ; k++ ) {
00431 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00432 else if ( k < maxAdc ) lut1[i][j][k] = 1 ;
00433 else lut1[i][j][k] = 17 ;
00434 }
00435 }
00436 }
00437
00438
00439
00440 for ( i = 8 ; i < 19 ; i++ ) {
00441 for ( j = 0 ; j < nL0Slats ; j++ ) {
00442 for ( k = 0 ; k < nL0Range ; k++ ) {
00443 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00444 else if ( k < maxAdc ) lut1[i][j][k] = 4 ;
00445 else lut1[i][j][k] = 17 ;
00446 }
00447 }
00448 }
00449
00450
00451
00452 for ( i = 68 ; i < 79 ; i++ ) {
00453 for ( j = 0 ; j < nL0Slats ; j++ ) {
00454 for ( k = 0 ; k < nL0Range ; k++ ) {
00455 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00456 else if ( k < maxAdc ) lut1[i][j][k] = 1 ;
00457 else lut1[i][j][k] = 17 ;
00458 }
00459 }
00460 }
00461
00462
00463
00464 for ( i = 94 ; i < 109 ; i++ ) {
00465 for ( j = 0 ; j < nL0Slats ; j++ ) {
00466 for ( k = 0 ; k < nL0Range ; k++ ) {
00467 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00468 else if ( k < maxAdc ) lut1[i][j][k] = 4 ;
00469 else lut1[i][j][k] = 17 ;
00470 }
00471 }
00472 }
00473
00474
00475
00476 for ( i = 0 ; i < nL0Phi ; i++ ) {
00477 for ( j = 0 ; j < nL0Eta ; j++ ) {
00478 for ( k = 0 ; k < nL0Range ; k++ ) {
00479 if ( k == 1 ) lut2[i][j][k] = 1 ;
00480 else if ( k == 4 ) lut2[i][j][k] = 4 ;
00481 else if ( k == 5 ) lut2[i][j][k] = 5 ;
00482 else if ( k == 8 ) lut2[i][j][k] = 8 ;
00483 else lut2[i][j][k] = 0 ;
00484 }
00485 }
00486 }
00487
00488
00489
00490 for ( i = 0 ; i < 2 ; i++ ) {
00491 for ( k = 0 ; k < nL0Range ; k++ ) {
00492 lut3[i][k] = k ;
00493 }
00494 }
00495 }
00496 void StPeCL0::setCountingLuts() {
00497
00498 int i, j, k ;
00499 for ( i = 0 ; i < nL0Trays ; i++ ) {
00500 for ( j = 0 ; j < nL0Range ; j++ ) {
00501 if ( j < minAdc ) {
00502 lut1[i][0][j] = 0 ;
00503 lut1[i][1][j] = 0 ;
00504 }
00505 else {
00506 lut1[i][0][j] = 1 ;
00507 lut1[i][1][j] = 1 ;
00508 }
00509 }
00510 }
00511 for ( i = 0 ; i < nL0Phi ; i++ ) {
00512 for ( j = 0 ; j < nL0Eta ; j++ ) {
00513 for ( k = 0 ; k < nL0Range ; k++ ) {
00514 if ( i == 0 || i == 2 ) {
00515 if ( k > 0 ) lut2[i][j][k] = 20 ;
00516 }
00517 else if ( i == 1 ) {
00518 if ( k < 10 ) lut2[i][j][k] = 10 * k ;
00519 else lut2[i][j][k] = 255 ;
00520 }
00521 else lut2[i][j][k] = k ;
00522 }
00523 }
00524 }
00525
00526 for ( k = 0 ; k < nL0Range ; k++ ) {
00527 lut3[0][k] = k ;
00528 lut3[1][k] = k ;
00529 }
00530 }
00531
00532 void StPeCL0::setP4PLuts() {
00533
00534 int i, j, k ;
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546 for ( i = 0 ; i < 3 ; i++ ) {
00547 for ( j = 0 ; j < nL0Slats ; j++ ) {
00548 for ( k = 0 ; k < nL0Range ; k++ ) {
00549 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00550 else lut1[i][j][k] = maxAdc ;
00551 }
00552 }
00553 }
00554
00555 for ( i = 52 ; i < 60 ; i++ ) {
00556 for ( j = 0 ; j < nL0Slats ; j++ ) {
00557 for ( k = 0 ; k < nL0Range ; k++ ) {
00558 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00559 else lut1[i][j][k] = maxAdc ;
00560 }
00561 }
00562 }
00563
00564
00565
00566 for ( i = 22 ; i < 33 ; i++ ) {
00567 for ( j = 0 ; j < nL0Slats ; j++ ) {
00568 for ( k = 0 ; k < nL0Range ; k++ ) {
00569 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00570 else lut1[i][j][k] = maxAdc ;
00571 }
00572 }
00573 }
00574
00575
00576
00577 for ( i = 112 ; i < 120 ; i++ ) {
00578 for ( j = 0 ; j < nL0Slats ; j++ ) {
00579 for ( k = 0 ; k < nL0Range ; k++ ) {
00580 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00581 else lut1[i][j][k] = maxAdc ;
00582 }
00583 }
00584 }
00585
00586 for ( i = 60 ; i < 63 ; i++ ) {
00587 for ( j = 0 ; j < nL0Slats ; j++ ) {
00588 for ( k = 0 ; k < nL0Range ; k++ ) {
00589 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00590 else lut1[i][j][k] = maxAdc ;
00591 }
00592 }
00593 }
00594
00595
00596
00597 for ( i = 82 ; i < 93 ; i++ ) {
00598 for ( j = 0 ; j < nL0Slats ; j++ ) {
00599 for ( k = 0 ; k < nL0Range ; k++ ) {
00600 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00601 else lut1[i][j][k] = maxAdc ;
00602 }
00603 }
00604 }
00605
00606
00607
00608
00609
00610
00611 for ( i = 33 ; i < 52 ; i++ ) {
00612 for ( j = 0 ; j < nL0Slats ; j++ ) {
00613 for ( k = 0 ; k < nL0Range ; k++ ) {
00614 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00615 else if ( k < maxAdc ) lut1[i][j][k] = 4 ;
00616 else lut1[i][j][k] = 17 ;
00617 }
00618 }
00619 }
00620
00621
00622
00623 for ( i = 3 ; i < 22 ; i++ ) {
00624 for ( j = 0 ; j < nL0Slats ; j++ ) {
00625 for ( k = 0 ; k < nL0Range ; k++ ) {
00626 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00627 else if ( k < maxAdc ) lut1[i][j][k] = 1 ;
00628 else lut1[i][j][k] = 17 ;
00629 }
00630 }
00631 }
00632
00633
00634
00635 for ( i = 63 ; i < 82 ; i++ ) {
00636 for ( j = 0 ; j < nL0Slats ; j++ ) {
00637 for ( k = 0 ; k < nL0Range ; k++ ) {
00638 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00639 else if ( k < maxAdc ) lut1[i][j][k] = 1 ;
00640 else lut1[i][j][k] = 17 ;
00641 }
00642 }
00643 }
00644
00645
00646
00647 for ( i = 93 ; i < 112 ; i++ ) {
00648 for ( j = 0 ; j < nL0Slats ; j++ ) {
00649 for ( k = 0 ; k < nL0Range ; k++ ) {
00650 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00651 else if ( k < maxAdc ) lut1[i][j][k] = 4 ;
00652 else lut1[i][j][k] = 17 ;
00653 }
00654 }
00655 }
00656
00657
00658
00659 for ( i = 0 ; i < nL0Phi ; i++ ) {
00660 for ( j = 0 ; j < nL0Eta ; j++ ) {
00661 for ( k = 0 ; k < nL0Range ; k++ ) {
00662 if ( k == 1 ) lut2[i][j][k] = 1 ;
00663 else if ( k == 4 ) lut2[i][j][k] = 4 ;
00664 else if ( k == 5 ) lut2[i][j][k] = 5 ;
00665 else if ( k == 8 ) lut2[i][j][k] = 8 ;
00666 else lut2[i][j][k] = 0 ;
00667 }
00668 }
00669 }
00670
00671
00672
00673 for ( i = 0 ; i < 2 ; i++ ) {
00674 for ( k = 0 ; k < nL0Range ; k++ ) {
00675 lut3[i][k] = k ;
00676 }
00677 }
00678 }
00679
00680
00681
00682
00683 void StPeCL0::setP4SLuts() {
00684
00685 int i, j, k ;
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697 for ( i = 0 ; i < 3 ; i++ ) {
00698 for ( j = 0 ; j < nL0Slats ; j++ ) {
00699 for ( k = 0 ; k < nL0Range ; k++ ) {
00700 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00701 else lut1[i][j][k] = maxAdc ;
00702 }
00703 }
00704 }
00705
00706 for ( i = 52 ; i < 60 ; i++ ) {
00707 for ( j = 0 ; j < nL0Slats ; j++ ) {
00708 for ( k = 0 ; k < nL0Range ; k++ ) {
00709 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00710 else lut1[i][j][k] = maxAdc ;
00711 }
00712 }
00713 }
00714
00715
00716
00717 for ( i = 22 ; i < 33 ; i++ ) {
00718 for ( j = 0 ; j < nL0Slats ; j++ ) {
00719 for ( k = 0 ; k < nL0Range ; k++ ) {
00720 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00721 else lut1[i][j][k] = maxAdc ;
00722 }
00723 }
00724 }
00725
00726
00727
00728 for ( i = 112 ; i < 120 ; i++ ) {
00729 for ( j = 0 ; j < nL0Slats ; j++ ) {
00730 for ( k = 0 ; k < nL0Range ; k++ ) {
00731 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00732 else lut1[i][j][k] = maxAdc ;
00733 }
00734 }
00735 }
00736
00737 for ( i = 60 ; i < 63 ; i++ ) {
00738 for ( j = 0 ; j < nL0Slats ; j++ ) {
00739 for ( k = 0 ; k < nL0Range ; k++ ) {
00740 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00741 else lut1[i][j][k] = maxAdc ;
00742 }
00743 }
00744 }
00745
00746
00747
00748 for ( i = 82 ; i < 93 ; i++ ) {
00749 for ( j = 0 ; j < nL0Slats ; j++ ) {
00750 for ( k = 0 ; k < nL0Range ; k++ ) {
00751 if ( k < minAdc ) lut1[i][j][k] = 0 ;
00752 else lut1[i][j][k] = maxAdc ;
00753 }
00754 }
00755 }
00756
00757
00758
00759
00760
00761
00762 for ( i = 33 ; i < 52 ; i++ ) {
00763 for ( j = 0 ; j < nL0Slats ; j++ ) {
00764 for ( k = 0 ; k < nL0Range ; k++ ) {
00765 lut1[i][j][k] = k ;
00766 }
00767 }
00768 }
00769
00770
00771
00772 for ( i = 3 ; i < 22 ; i++ ) {
00773 for ( j = 0 ; j < nL0Slats ; j++ ) {
00774 for ( k = 0 ; k < nL0Range ; k++ ) {
00775 lut1[i][j][k] = k ;
00776 }
00777 }
00778 }
00779
00780
00781
00782 for ( i = 63 ; i < 82 ; i++ ) {
00783 for ( j = 0 ; j < nL0Slats ; j++ ) {
00784 for ( k = 0 ; k < nL0Range ; k++ ) {
00785 lut1[i][j][k] = k ;
00786 }
00787 }
00788 }
00789
00790
00791
00792 for ( i = 93 ; i < 112 ; i++ ) {
00793 for ( j = 0 ; j < nL0Slats ; j++ ) {
00794 for ( k = 0 ; k < nL0Range ; k++ ) {
00795 lut1[i][j][k] = k ;
00796 }
00797 }
00798 }
00799
00800
00801
00802 int ns[4][4] = {{4,4,1,1},{1,1,4,4},{1,1,4,4},{4,4,1,1}};
00803 int adc_sum_min=2, adc_sum_max=9;
00804
00805 for ( i = 0 ; i < nL0Phi ; i++ ) {
00806 for ( j = 0 ; j < nL0Eta ; j++ ) {
00807 for ( k = 0 ; k < nL0Range ; k++ ) {
00808 if ( k <= adc_sum_min ) lut2[i][j][k] = 0 ;
00809 else if ( k <= adc_sum_max ) lut2[i][j][k] = ns[i][j] ;
00810 else if ( k <= 16 ) lut2[i][j][k] = 0 ;
00811 else lut2[i][j][k] = k ;
00812 }
00813 }
00814 }
00815
00816
00817
00818 for ( i = 0 ; i < 2 ; i++ ) {
00819 for ( k = 0 ; k < nL0Range ; k++ ) {
00820 if ( k == 1 || k == 4 || k == 5 ) lut3[i][k] = k ;
00821 else lut3[i][k] = 0 ;
00822 }
00823 }
00824 }
00825
00826 void StPeCL0::setYear1Input() {
00827 for ( int i = 0 ; i < nL0Trays ; i++ ) {
00828 cabling[i] = i ;
00829 }
00830 }
00831
00832 void StPeCL0::setYear2Input() {
00833
00834
00835
00836 {for ( int i = 0 ; i < 50 ; i++ ) {
00837 cabling[i] = i + 10 ;
00838 }}
00839 {for ( int i = 50 ; i < 60 ; i++ ) {
00840 cabling[i] = i - 50 ;
00841 }}
00842
00843
00844
00845 {for ( int i = 65 ; i < 120 ; i++ ) {
00846 cabling[i] = i - 5 ;
00847 }}
00848 {for ( int i = 60 ; i < 65 ; i++ ) {
00849 cabling[i] = 55 + i ;
00850 }}
00851 }