00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 #include "Stypes.h"
00102 #include "StPmdGeom.h"
00103 #include <strings.h>
00104 #include <stdlib.h>
00105 #include <math.h>
00106 #include <TROOT.h>
00107 #include<TMatrix.h>
00108 #include<TH2F.h>
00109 #include<TMarker.h>
00110 #include<TLatex.h>
00111 #include<TCanvas.h>
00112 #include<TPolyLine.h>
00113 #include<TArrayF.h>
00114 #include "TMath.h"
00115 ClassImp(StPmdGeom)
00116
00117
00119 Float_t StPmdGeom::mxcon[17]={22.63367,66.84988,112.60741,66.51461,112.3336,
00120 -23.71335,-1.75714,-1.80849,-69.33651,-69.33518,
00121 3.60214,-45.43217,-67.35937,-112.86835,3.60151,
00122 3.60214,-42.7025};
00123
00124 Float_t StPmdGeom::mycon[17]={13.95724,-36.74996,-63.1415,41.57234,15.11893,
00125 12.62782,76.01182,128.98824,36.68728,89.59438,
00126 -27.89206,-27.81838,-40.5852,-67.40152,-53.35941,
00127 -78.78845,-105.38004};
00131 Float_t StPmdGeom::mdetxcon[12]={-69.33518,-1.80849,-69.33651,-1.75714,
00132 -112.86835,-67.35937,-42.7025,66.51461,
00133 112.3336,66.84988,112.60741,-40.31029};
00134
00135 Float_t StPmdGeom::mdetycon[12]={89.59438,128.98824,36.68728,76.01182,
00136 -67.40152,-40.5852,-105.38004,41.57234,
00137 15.11893,-36.74996,-63.1415,-52.64566};
00138
00141 Int_t StPmdGeom::inorm[192] = {23,24,24,24,24,23,22,23,23,22,21,22,22,20,21,
00142 21,21,19,18,20,19,18,20,20,17,17,19,18,17,17,
00143 19,18,18,17,17,17,17,18,19,18,18,19,20,19,19,
00144 21,20,20,20,22,23,21,22,23,21,21,24,24,22,23,
00145 24,24,22,23,15,16,16,16,16,15,14,15,15,14,13,
00146 14,14,12,13,13,13,11,10,12,11,10,12,12,9,9,11,
00147 10,9,9,11,10,10,9,9,9,9,10,11,10,10,11,12,11,
00148 11,13,12,12,12,14,15,13,14,15,13,13,16,16,14,
00149 15,16,16,14,15,7,8,8,8,8,7,6,7,7,6,5,6,6,4,5,5,
00150 5,3,2,4,3,2,4,4,1,1,3,2,1,1,3,2,2,1,1,1,1,2,3,
00151 2,2,3,4,3,3,5,4,4,4,6,7,5,6,7,5,5,8,8,6,7,8,8,
00152 6,7};
00153
00154 Int_t StPmdGeom::jnorm[192] = {4,4,3,2,1,3,4,2,1,1,1,2,3,1,4,2,3,1,1,2,2,2,4,
00155 3,1,2,3,3,3,4,4,4,5,5,6,7,8,6,5,7,8,8,8,7,6,8,
00156 5,7,6,8,8,7,7,7,5,6,8,7,6,6,6,5,5,5,4,4,3,2,1,
00157 3,4,2,1,1,1,2,3,1,4,2,3,1,1,2,2,2,4,3,1,2,3,3,
00158 3,4,4,4,5,5,6,7,8,6,5,7,8,8,8,7,6,8,5,7,6,8,8,
00159 7,7,7,5,6,8,7,6,6,6,5,5,5,4,4,3,2,1,3,4,2,1,1,
00160 1,2,3,1,4,2,3,1,1,2,2,2,4,3,1,2,3,3,3,4,4,4,5,
00161 5,6,7,8,6,5,7,8,8,8,7,6,8,5,7,6,8,8,7,7,7,5,6,
00162 8,7,6,6,6,5,5,5};
00163
00164 Int_t StPmdGeom::imirr[192] = {4,4,4,3,3,3,2,1,3,4,2,2,2,1,1,3,2,4,1,3,2,1,1,
00165 1,2,4,3,1,2,3,4,4,5,5,5,6,6,6,7,8,6,5,7,7,7,8,
00166 8,6,7,5,8,6,7,8,8,8,7,5,6,8,7,6,5,5,4,4,4,3,3,
00167 3,2,1,3,4,2,2,2,1,1,3,2,4,1,3,2,1,1,1,2,4,3,1,
00168 2,3,4,4,5,5,5,6,6,6,7,8,6,5,7,7,7,8,8,6,7,5,8,
00169 6,7,8,8,8,7,5,6,8,7,6,5,5,4,4,4,3,3,3,2,1,3,4,
00170 2,2,2,1,1,3,2,4,1,3,2,1,1,1,2,4,3,1,2,3,4,4,5,
00171 5,5,6,6,6,7,8,6,5,7,7,7,8,8,6,7,5,8,6,7,8,8,8,
00172 7,5,6,8,7,6,5,5};
00173
00174 Int_t StPmdGeom::jmirr[192] = {2,3,1,1,2,3,1,1,4,4,2,3,4,2,3,5,5,5,4,6,6,5,6,
00175 7,7,6,7,8,8,8,8,7,7,6,8,8,7,6,8,8,5,5,7,6,5,7,
00176 6,4,4,4,5,3,3,4,3,2,2,3,2,1,1,1,1,2,10,11,9,9,
00177 10,11,9,9,12,12,10,11,12,10,11,13,13,13,12,14,
00178 14,13,14,15,15,14,15,16,16,16,16,15,15,14,16,16,
00179 15,14,16,16,13,13,15,14,13,15,14,12,12,12,13,
00180 11,11,12,11,10,10,11,10,9,9,9,9,10,18,19,17,17,
00181 18,19,17,17,20,20,18,19,20,18,19,21,21,21,20,
00182 22,22,21,22,23,23,22,23,24,24,24,24,23,23,22,
00183 24,24,23,22,24,24,21,21,23,22,21,23,22,20,20,
00184 20,21,19,19,20,19,18,18,19,18,17,17,17,17,18};
00185
00186
00187 Int_t status[48][36];
00188
00189 StPmdGeom::StPmdGeom()
00190 {
00191
00192 commonconstants();
00193 readBoardDetail();
00194 }
00195
00196 StPmdGeom::~StPmdGeom(){}
00197
00199 Int_t StPmdGeom::NModule(Int_t sector , Int_t super, Int_t& nmod)
00200 {
00201 nmod=(sector-1)*5 + super;
00202 return nmod;
00203 }
00205 void StPmdGeom::Cell_xy(Int_t nmod,Int_t row, Int_t col,Float_t& xreal, Float_t& yreal,Float_t& eta,Float_t& phi)
00206 {
00207 if(nmod<=5)
00208 {
00209 xreal = mxcon[nmod-1] - (row-1)*mcelldia_y;
00210 yreal = mycon[nmod-1] + (col-1)*mcelldia_x + (row-1)*mcell_rad;
00211 }
00212 if (nmod>5 && nmod<=10)
00213 {
00214 xreal = mxcon[nmod-1] - (col - 1) * mconst2;
00215 yreal = mycon[nmod-1] - (col - 1) * mconst1 - (row - 1) * mcelldia_x;
00216 }
00217 if (nmod>10 && nmod<=17)
00218 {
00219 xreal = mxcon[nmod-1] + (col - 1)*mconst2 + (row - 1)*mconst2;
00220 yreal = mycon[nmod-1] + (row - col ) * mconst1;
00221 }
00222 Cell_eta_phi(xreal,yreal,eta,phi);
00223
00224 }
00225
00227 void StPmdGeom::DetCell_xy(Int_t nmod,Float_t row, Float_t col,Float_t& xreal, Float_t& yreal,Float_t& eta,Float_t& phi)
00228 {
00229 if(nmod<=4)
00230 {
00231 xreal = mdetxcon[nmod-1] - (col - 1) * mconst2;
00232 yreal = mdetycon[nmod-1] - (col - 1) * mconst1 - (row - 1) * mcelldia_x;
00233
00234 }
00235 if (nmod>4 && nmod<=7)
00236 {
00237 xreal = mdetxcon[nmod-1] + (col - 1)*mconst2 + (row - 1)*mconst2;
00238 yreal = mdetycon[nmod-1] + (row - col ) * mconst1;
00239 }
00240
00241 if (nmod>7 && nmod<=11)
00242 {
00243 xreal = mdetxcon[nmod-1] - (row-1)*mcelldia_y;
00244 yreal = mdetycon[nmod-1] + (col-1)*mcelldia_x + (row-1)*mcell_rad;
00245
00246 }
00247 if (nmod==12){
00248 xreal = mdetxcon[nmod-1] + (col - 1)*mconst2 + (row - 1)*mconst2;
00249 yreal = mdetycon[nmod-1] + (row - col ) * mconst1;
00250 }
00251 Cell_eta_phi(xreal,yreal,eta,phi);
00252 }
00254 void StPmdGeom::IntDetCell_xy(Int_t nmod,Int_t row, Int_t col,Float_t& xreal, Float_t& yreal,Float_t& eta,Float_t& phi)
00255 {
00256 if(nmod>12)
00257 { nmod=nmod-12;}
00258 if(nmod<=4)
00259 {
00260 xreal = mdetxcon[nmod-1] - (col - 1) * mconst2;
00261 yreal = mdetycon[nmod-1] - (col - 1) * mconst1 - (row - 1) * mcelldia_x;
00262
00263 }
00264 if (nmod>4 && nmod<=7)
00265 {
00266 xreal = mdetxcon[nmod-1] + (col - 1)*mconst2 + (row - 1)*mconst2;
00267 yreal = mdetycon[nmod-1] + (row - col ) * mconst1;
00268 }
00269
00270 if (nmod>7 && nmod<=11)
00271 {
00272 xreal = mdetxcon[nmod-1] - (row-1)*mcelldia_y;
00273 yreal = mdetycon[nmod-1] + (col-1)*mcelldia_x + (row-1)*mcell_rad;
00274
00275 }
00276 if (nmod==12){
00277 xreal = mdetxcon[nmod-1] + (col - 1)*mconst2 + (row - 1)*mconst2;
00278 yreal = mdetycon[nmod-1] + (row - col ) * mconst1;
00279 }
00280 Cell_eta_phi(xreal,yreal,eta,phi);
00281 }
00282
00284
00285 void StPmdGeom::Cell_eta_phi(Float_t xreal,Float_t yreal,Float_t& eta,Float_t& phi){
00286 Float_t rdist = (TMath::Sqrt(xreal*xreal + yreal*yreal))/mzreal;
00287 Float_t theta = TMath::ATan(rdist);
00288
00289 if(theta !=0.){ eta = TMath::Log(TMath::Tan(0.5*theta));}
00290 if( xreal==0) {
00291 if(yreal>0) {phi = 1.571428;}
00292 if(yreal<0) {phi = -1.571428;}
00293 }
00294 if(xreal != 0) {phi = atan2(yreal,xreal);}
00295
00296 }
00297
00299
00300 void StPmdGeom::Sim2Detmap(Int_t& nmod,Int_t& row,Int_t& col)
00301 {
00302 Int_t module;
00303 module = nmod;
00304 switch(module){
00305 case 1:
00306 nmod = 10;
00307 row = row + 48;
00308 col = col +24;
00309 break;
00310 case 2:
00311 nmod = 10;
00312 row = row;
00313 col = col;
00314 break;
00315 case 3:
00316 nmod = 11;
00317 row = row;
00318 col = col;
00319 break;
00320 case 4:
00321 nmod = 8;
00322 row = row;
00323 col = col;
00324 break;
00325 case 5:
00326 nmod = 9;
00327 row = row;
00328 col = col;
00329 break;
00330 case 6:
00331 nmod = 4;
00332 row = row + 48;
00333 col = col + 24;
00334 break;
00335 case 7:
00336 nmod = 4;
00337 row = row;
00338 col = col;
00339 break;
00340 case 8:
00341 nmod = 2;
00342 row = row;
00343 col = col;
00344 break;
00345 case 9:
00346 nmod = 3;
00347 row = row;
00348 col = col;
00349 break;
00350 case 10:
00351 nmod = 1;
00352 row = row;
00353 col = col;
00354 break;
00355 case 11:
00356 nmod = 12;
00357 row = row + 48;
00358 col = col;
00359 break;
00360 case 12:
00361 nmod = 6;
00362 row = row + 24;
00363 col = col;
00364 break;
00365 case 13:
00366 nmod = 6;
00367 row = row;
00368 col = col;
00369 break;
00370 case 14:
00371 nmod = 5;
00372 row = row;
00373 col = col;
00374 break;
00375 case 15:
00376 nmod = 12;
00377 row = row + 24;
00378 col = col + 24;
00379 break;
00380 case 16:
00381 nmod = 12;
00382 row = row;
00383 col = col + 48;
00384 break;
00385 case 17:
00386 nmod = 7;
00387 row = row;
00388 col = col;
00389 break;
00390 }
00391 }
00392
00393 Int_t StPmdGeom::ChainMapping(Int_t& chainno,Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t&chmod)
00394 {
00395
00396
00397
00398
00399 Int_t chain;
00400 Int_t col1,row1;
00401 chain = chainno;
00402 Int_t chtemp=ch;
00403
00404 Int_t brd=int((ch)/64)+1;
00405 Int_t missing=0;
00406 Int_t brdCount=0;
00407
00408 for(Int_t ibrd=0;ibrd<36;ibrd++){
00409 if(brdCount<brd){
00410 if(status[chainno-1][ibrd]==0){missing++;}
00411 brdCount+=status[chainno-1][ibrd];
00412 }
00413 }
00414 chtemp=ch+missing*64;
00415 chmod=chtemp;
00416
00417 if(chtemp>=1728)return kStWarn;
00418 switch(chain){
00419
00420 case 1:
00421 chain1(chtemp,supmod,col,row);
00422 break;
00423 case 2:
00424 chain2(chtemp,supmod,col,row);
00425 break;
00426 case 3:
00427 chain3(chtemp,supmod,col,row);
00428 break;
00429 case 4:
00430 chain2(chtemp,supmod,col1,row1);
00431 col = col1; row = row1 + 24;
00432 break;
00433 case 5:
00434 chain5(chtemp,supmod,col,row);
00435 break;
00436 case 6:
00437 chain2(chtemp,supmod,col,row);
00438 supmod = 4;
00439 break;
00440 case 7:
00441 chain2(chtemp,supmod,col1,row1);
00442 col = col1; row = row1 + 24; supmod = 4;
00443 break;
00444 case 8:
00445 chain2(chtemp,supmod,col1,row1);
00446 col = 73 - col1; row = 25 - row1; supmod = 5;
00447 break;
00448 case 9:
00449 chain9(chtemp,supmod,col,row);
00450 break;
00451 case 10:
00452 chain10(chtemp,supmod,col,row);
00453 break;
00454 case 11:
00455 chain10(chtemp,supmod,col1,row1);
00456 row =row1;col =col1;
00457 if(supmod==4){col = col1 - 24;}
00458 if(supmod==6){row = row1 + 24;}
00459 break;
00460 case 12:
00461 chain12(chtemp,supmod,col,row);
00462 break;
00463 case 13:
00464 chain12(chtemp,supmod,col1,row1);
00465 row =row1;col =col1;
00466 if(supmod==5) {row = row1 -24; supmod = 6;}
00467 if(supmod==7) {row = row1 + 24;}
00468 break;
00469 case 14:
00470 chain5(chtemp,supmod,col,row);
00471 supmod = 8;
00472 break;
00473 case 15:
00474 chain15(chtemp,supmod,col,row);
00475 break;
00476 case 16:
00477 chain5(chtemp,supmod,col1,row1);
00478 supmod = 8; col = col1 -24; row =row1;
00479 break;
00480 case 17:
00481 chain17(chtemp,supmod,col,row);
00482 break;
00483 case 18:
00484 chain5(chtemp,supmod,col1,row1);
00485 supmod = 10; col = col1 + 24; row =row1;
00486 break;
00487 case 19:
00488 chain2(chtemp,supmod,col,row);
00489 supmod = 11;
00490 break;
00491 case 20:
00492 chain5(chtemp,supmod,col,row);
00493 supmod = 10;
00494 break;
00495 case 21:
00496 chain21(chtemp,supmod,col,row);
00497 break;
00498 case 22:
00499 chain22(chtemp,supmod,col,row);
00500 break;
00501 case 23:
00502 chain23(chtemp,supmod,col,row);
00503 break;
00504 case 24:
00505 chain5(chtemp,supmod,col1,row1);
00506 supmod = 12; col = 121 - col1; row = 73 - row1;
00507 break;
00508 case 25:
00509 chain15(chtemp,supmod, col1, row1);
00510 supmod = 13; col = 49 - row1; row = 49 - col1;
00511 break;
00512 case 26:
00513 chain5(chtemp,supmod,col1,row1);
00514 supmod = 14; col = 73 - row1; row = 49 - col1;
00515 break;
00516 case 27:
00517 chain17(chtemp,supmod,col1,row1);
00518 supmod = supmod + 4;
00519 col = 49 - row1;
00520 row = 49 - col1;
00521 if(supmod==15){ row = 73 - col1;}
00522 break;
00523 case 28:
00524 chain5(chtemp,supmod,col1,row1);
00525 supmod = 14; col = 73 - row1; row = 49 - col1 +24;
00526 break;
00527 case 29:
00528 chain2(chtemp,supmod,col1,row1);
00529 supmod = 15; col = 49 - row1; row = 73 - col1;
00530 break;
00531 case 30:
00532 chain5(chtemp,supmod,col1,row1);
00533 supmod = 16; col = 73 - row1; row = 49 - col1;
00534 break;
00535 case 31:
00536 chain5(chtemp,supmod,col1,row1);
00537 supmod = 16; col = 73 - row1; row = 49 - col1 +24;
00538 break;
00539 case 32:
00540 chain5(chtemp,supmod,col1,row1);
00541 supmod = 17; col = row1; row = col1 -24;
00542 break;
00543 case 33:
00544 chain22(chtemp,supmod,col1,row1);
00545 row =row1;col =col1;
00546 if(supmod==11){
00547 supmod = 15;
00548 col = 49 - row1;
00549 row = 73 - col1;
00550 }
00551 if(supmod==12){
00552 supmod = 17;
00553 col = 73 - row1;
00554 row = 97 - col1;
00555 }
00556 break;
00557 case 34:
00558 chain34(chtemp,supmod,col,row);
00559 break;
00560 case 35:
00561 chain34(chtemp,supmod,col1,row1);
00562 row =row1;col =col1;
00563 if(supmod == 16){ col = col1 - 24;}
00564 if(supmod == 18){ row = row1 + 24;}
00565 break;
00566 case 36:
00567 chain34(chtemp,supmod,col1,row1);
00568 row =row1;col =col1;
00569 if(supmod == 16) {col = 121-col1;row = 97 - row1;}
00570 supmod = supmod + 1;
00571 break;
00572 case 37:
00573 chain34(chtemp,supmod,col1,row1);
00574 row =row1;col =col1;
00575 if(supmod==18){row = row1 + 24;supmod = 19;}
00576 if(supmod == 16){
00577 col = 121-col1; row = 73 - row1;
00578 supmod = 18;}
00579 break;
00580 case 38:
00581 chain2(chtemp,supmod,col1,row1);
00582 supmod = 20; col = 49 - row1; row = 73 - col1;
00583 break;
00584 case 39:
00585 chain39(chtemp,supmod,col1,row1);
00586 col = 49 - row1; row = 49 - col1;
00587 break;
00588 case 40:
00589 chain2(chtemp,supmod,col1,row1);
00590 supmod = 20; col = 25 - row1; row = 73 - col1;
00591 break;
00592 case 41:
00593 chain41(chtemp,supmod,col1,row1);
00594 if(supmod==21){col = 49 - row1; row = 49 - col1;}
00595 if(supmod==23){col = 73 - row1; row = 49 - col1;}
00596 break;
00597 case 42:
00598 chain2(chtemp,supmod,col1,row1);
00599 supmod = 22; col = 73 - row1; row = 73 - col1;
00600 break;
00601 case 43:
00602 chain5(chtemp,supmod,col1,row1);
00603 supmod = 23; col = 73 - row1; row = 49 - col1;
00604 break;
00605 case 44:
00606 chain2(chtemp,supmod,col1,row1);
00607 supmod = 22; col = 49 - row1; row = 73 - col1;
00608 break;
00609 case 45:
00610 chain45(chtemp,supmod,col,row);
00611 break;
00612 case 46:
00613 chain46(chtemp,supmod,col1,row1);
00614 if(supmod==23){col = 73 - row1; row = 49 - col1;}
00615 if(supmod==24){col = col1; row = row1;}
00616 break;
00617 case 47:
00618 chain45(chtemp,supmod,col1,row1);
00619 row =row1;col =col1;
00620 if(supmod ==22){col = 49 - col1; row = 73 -row1;}
00621 if(supmod==24){col = 48 + col1; row = row1 - 48;}
00622 supmod = 24;
00623 break;
00624 case 48:
00625 chain2(chtemp,supmod,col1,row1);
00626 supmod = 24; col = 72 + row1; row = col1;
00627 break;
00628
00629 }
00630 return kStOk;
00631 }
00632
00633
00634 void StPmdGeom::chain1(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00635 {
00636 supmod = 1;
00637 int zone = ch/192;
00638 switch(zone){
00639 case 0:
00640 col = inorm[ch] + 24; row = jnorm[ch];
00641
00642 break;
00643 case 1:
00644 col = inorm[ch-192]; row = jnorm[ch-192];
00645
00646 break;
00647 case 2:
00648 col = 25 - inorm[ch-2*192]; row = 9 - jnorm[ch-2*192] + 8;
00649
00650 break;
00651 case 3:
00652 col = 25 - inorm[ch-3*192] + 24; row = 9 - jnorm[ch-3*192] + 8;
00653
00654 break;
00655 case 4:
00656 col = inorm[ch-4*192] + 24; row = jnorm[ch - 4*192] + 16;
00657
00658 break;
00659 case 5:
00660 col = inorm[ch-5*192]; row = jnorm[ch-5*192] + 16;
00661
00662 break;
00663 case 6:
00664 col = inorm[ch-6*192]; row = jnorm[ch-6*192] + 24;
00665
00666 break;
00667 case 7:
00668 col = 25 - inorm[ch-7*192]; row = 9 - jnorm[ch-7*192] + 24 + 8;
00669
00670 break;
00671 case 8:
00672 col = inorm[ch-8*192]; row = jnorm[ch-8*192] + 24 + 16;
00673
00674 break;
00675 }
00676 }
00677
00678 void StPmdGeom::chain2(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00679 {
00680 supmod = 2;
00681 int zone = ch/192;
00682 switch(zone){
00683 case 0:
00684 col = inorm[ch] + 48; row = jnorm[ch];
00685 break;
00686 case 1:
00687 col = inorm[ch-192] + 24; row = jnorm[ch-192];
00688 break;
00689 case 2:
00690 col = inorm[ch-2*192]; row = jnorm[ch-2*192];
00691 break;
00692 case 3:
00693 col = 25 - inorm[ch-3*192]; row = 9 - jnorm[ch-3*192] + 8;
00694 break;
00695 case 4:
00696 col = 25 - inorm[ch-4*192] + 24; row = 9 - jnorm[ch-4*192] + 8;
00697 break;
00698 case 5:
00699 col = 25 - inorm[ch-5*192] + 48; row = 9 - jnorm[ch-5*192] + 8;
00700 break;
00701 case 6:
00702 col = inorm[ch-6*192] + 48; row = jnorm[ch-6*192] + 16;
00703 break;
00704 case 7:
00705 col = inorm[ch-7*192] + 24; row = jnorm[ch-7*192] + 16;
00706 break;
00707 case 8:
00708 col = inorm[ch-8*192]; row = jnorm[ch-8*192] + 16;
00709 break;
00710 }
00711 }
00712
00713
00714 void StPmdGeom::chain3(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00715 {
00716 supmod = 1;
00717 int zone = ch/192;
00718 switch(zone){
00719 case 0:
00720 col = inorm[ch] + 24; row = jnorm[ch] + 24;
00721
00722 break;
00723 case 1:
00724 col = 25 - inorm[ch-192] + 24; row = 9 - jnorm[ch-192] + 24 + 8;
00725
00726 break;
00727 case 2:
00728 col = inorm[ch-2*192] + 24; row = jnorm[ch-2*192] + 24 + 16;
00729
00730 break;
00731 case 3:
00732 col = imirr[ch-3*192] + 16; row = jmirr[ch-3*192];
00733 supmod = 3;
00734 break;
00735 case 4:
00736 col = imirr[ch-4*192] + 16; row = jmirr[ch-4*192] + 24;
00737 supmod = 3;
00738 break;
00739 case 5:
00740 col = 9 - imirr[ch-5*192] + 8; row = 25 - jmirr[ch-5*192] + 24;
00741 supmod = 3;
00742 break;
00743 case 6:
00744 col = 9 - imirr[ch-6*192] + 8; row = 25 - jmirr[ch-6*192];
00745 supmod = 3;
00746 break;
00747 case 7:
00748 col = imirr[ch-7*192]; row = jmirr[ch-7*192];
00749 supmod = 3;
00750 break;
00751 case 8:
00752 col = imirr[ch-8*192] ; row = jmirr[ch-8*192] + 24;
00753 supmod = 3;
00754 break;
00755 }
00756 }
00757
00758 void StPmdGeom::chain5(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00759 {
00760 supmod = 3;
00761 int zone = ch/192;
00762 switch(zone){
00763 case 0:
00764 col = imirr[ch] + 24 + 16; row = jmirr[ch];
00765 break;
00766 case 1:
00767 col = imirr[ch-192] + 24 +16; row = jmirr[ch-192] + 24;
00768 break;
00769 case 2:
00770 col = imirr[ch-2*192] + 24 + 16; row = jmirr[ch-2*192] + 48;
00771 break;
00772 case 3:
00773 col = 9 - imirr[ch-3*192] + 24 + 8; row = 25 - jmirr[ch-3*192] +48;
00774 break;
00775 case 4:
00776 col = 9 - imirr[ch-4*192] + 24 +8; row = 25 -jmirr[ch-4*192] + 24;
00777 break;
00778 case 5:
00779 col = 9 - imirr[ch-5*192] + 24 +8; row = 25 -jmirr[ch-5*192];
00780 break;
00781 case 6:
00782 col = imirr[ch-6*192] + 24 ; row = jmirr[ch-6*192];
00783 break;
00784 case 7:
00785 col = imirr[ch-7*192] + 24; row = jmirr[ch-7*192] + 24;
00786 break;
00787 case 8:
00788 col = imirr[ch-8*192] + 24; row = jmirr[ch-8*192] + 48;
00789 break;
00790 }
00791 }
00792
00793 void StPmdGeom::chain9(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00794 {
00795 supmod = 3;
00796 int zone = ch/192;
00797 switch(zone){
00798 case 0:
00799 col = imirr[ch] + 16; row = jmirr[ch] + 48;
00800 break;
00801 case 1:
00802 col = 9 - imirr[ch-192] + 8; row = 25 - jmirr[ch-192] + 48;
00803 break;
00804 case 2:
00805 col = imirr[ch-2*192]; row = jmirr[ch-2*192] + 48;
00806 break;
00807 case 3:
00808
00809 col = 25 - inorm[ch-3*192]; row = 9-jnorm[ch-3*192] +24 + 16;
00810 supmod = 5;
00811 break;
00812 case 4:
00813
00814 col = 25 - inorm[ch-4*192] + 24; row = 9-jnorm[ch-4*192] + 24 + 16;
00815 supmod = 5;
00816 break;
00817 case 5:
00818
00819 col = inorm[ch-5*192] + 24; row = jnorm[ch-5*192] + 24 + 8;
00820 supmod = 5;
00821 break;
00822 case 6:
00823
00824 col = inorm[ch-6*192]; row = jnorm[ch-6*192]+ 24 +8;
00825 supmod = 5;
00826 break;
00827 case 7:
00828
00829 col = 25 - inorm[ch-7*192]; row = 9-jnorm[ch-7*192] + 24;
00830 supmod = 5;
00831 break;
00832 case 8:
00833
00834 col = 25 - inorm[ch-8*192] + 24; row = 9-jnorm[ch-8*192] + 24;
00835 supmod = 5;
00836 break;
00837 }
00838 }
00839 void StPmdGeom::chain10(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00840 {
00841 supmod = 4;
00842 int zone = ch/192;
00843 switch(zone){
00844 case 0:
00845 col = inorm[ch] + 48; row = jnorm[ch] + 48;
00846 break;
00847 case 1:
00848 col = 25 - inorm[ch-192] + 48; row = 9 - jnorm[ch-192] +48 + 8;
00849 break;
00850 case 2:
00851 col = inorm[ch-2*192] + 48; row = jnorm[ch-2*192] + 48 + 16;
00852 break;
00853 case 3:
00854 col = 25 - inorm[ch-3*192]; row = 9 -jnorm[ch-3*192] + 16;
00855 supmod = 6;
00856 break;
00857 case 4:
00858 col = 25 - inorm[ch-4*192] + 24; row = 9 -jnorm[ch-4*192] + 16;
00859 supmod = 6;
00860 break;
00861 case 5:
00862 col = inorm[ch-5*192] + 24; row = jnorm[ch-5*192] + 8;
00863 supmod = 6;
00864 break;
00865 case 6:
00866 col = inorm[ch-6*192]; row = jnorm[ch-6*192] +8;
00867 supmod = 6;
00868 break;
00869 case 7:
00870 col = 25 - inorm[ch-7*192]; row = 9 -jnorm[ch-7*192];
00871 supmod = 6;
00872 break;
00873 case 8:
00874 col = 25 - inorm[ch-8*192]+ 24; row = 9-jnorm[ch-8*192];
00875 supmod = 6;
00876 break;
00877 }
00878 }
00879 void StPmdGeom::chain12(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00880 {
00881 supmod = 5;
00882 int zone = ch/192;
00883 switch(zone){
00884 case 0:
00885 col = 25 - inorm[ch]+ 48; row = 9-jnorm[ch] +24 + 16;
00886 break;
00887 case 1:
00888 col = inorm[ch-192] + 48; row = jnorm[ch-192] + 24 + 8;
00889 break;
00890 case 2:
00891 col = 25 - inorm[ch-2*192]+ 48; row = 9-jnorm[ch-2*192] +24;
00892 break;
00893 case 3:
00894 col = 25 - inorm[ch-3*192]; row = 9-jnorm[ch-3*192] + 16;
00895 supmod = 7;
00896 break;
00897 case 4:
00898 col = 25 - inorm[ch-4*192]+24; row = 9-jnorm[ch-4*192] + 16;
00899 supmod = 7;
00900 break;
00901 case 5:
00902 col = inorm[ch-5*192] + 24; row = jnorm[ch-5*192] + 8;
00903 supmod = 7;
00904 break;
00905 case 6:
00906 col = inorm[ch-6*192]; row = jnorm[ch-6*192] + 8;
00907 supmod = 7;
00908 break;
00909 case 7:
00910 col = 25 - inorm[ch-7*192]; row = 9-jnorm[ch-7*192];
00911 supmod = 7;
00912 break;
00913 case 8:
00914 col = 25 - inorm[ch-8*192]+24; row = 9-jnorm[ch-8*192];
00915 supmod = 7;
00916 break;
00917 }
00918 }
00919
00920 void StPmdGeom::chain15(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00921 {
00922 supmod = 9;
00923 Int_t zone = ch/192;
00924 switch(zone){
00925 case 0:
00926 col = imirr[ch] + 24 + 16; row = jmirr[ch];
00927 break;
00928 case 1:
00929 col = imirr[ch-192] + 24 +16; row = jmirr[ch-192] + 24;
00930 break;
00931 case 2:
00932 col = 9 - imirr[ch-2*192] + 24 + 8; row = 25 - jmirr[ch-2*192] +24;
00933 break;
00934 case 3:
00935 col = 9 - imirr[ch-3*192] + 24 + 8; row = 25 - jmirr[ch-3*192];
00936 break;
00937 case 4:
00938 col = imirr[ch-4*192] + 24; row = jmirr[ch-4*192];
00939 break;
00940 case 5:
00941 col = imirr[ch-5*192] + 24; row = jmirr[ch-5*192] + 24;
00942 break;
00943 case 6:
00944 col = imirr[ch-6*192] + 16; row = jmirr[ch-6*192] + 24;
00945 break;
00946 case 7:
00947 col = 9 - imirr[ch-7*192] + 8; row = 25 - jmirr[ch-7*192] +24;
00948 break;
00949 case 8:
00950 col = imirr[ch-8*192]; row = jmirr[ch-8*192] + 24;
00951 break;
00952 }
00953 }
00954 void StPmdGeom:: chain17(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00955 {
00956 supmod = 9;
00957 int zone = ch/192;
00958 switch(zone){
00959 case 0:
00960 col = imirr[ch] + 16; row = jmirr[ch];
00961 break;
00962 case 1:
00963 col = 9 - imirr[ch-192] + 8; row = 25 - jmirr[ch-192];
00964 break;
00965 case 2:
00966 col = imirr[ch-2*192]; row = jmirr[ch-2*192];
00967 break;
00968 case 3:
00969 col = inorm[ch-3*192] + 48; row = jnorm[ch-3*192] + 24;
00970 supmod = 11;
00971 break;
00972 case 4:
00973 col = inorm[ch-4*192] + 24; row = jnorm[ch-4*192] + 24;
00974 supmod = 11;
00975 break;
00976 case 5:
00977 col = 25 - inorm[ch-5*192] + 24; row = 9 - jnorm[ch-5*192] +24 + 8;
00978 supmod = 11;
00979 break;
00980 case 6:
00981 col = 25 - inorm[ch-6*192] + 48; row = 9 - jnorm[ch-6*192] +24 + 8;
00982 supmod = 11;
00983 break;
00984 case 7:
00985 col = inorm[ch-7*192] + 48; row = jnorm[ch-7*192] + 24 + 16;
00986 supmod = 11;
00987 break;
00988 case 8:
00989 col = inorm[ch-8*192] + 24; row = jnorm[ch-8*192] + 24 + 16;
00990 supmod = 11;
00991 break;
00992 }
00993 }
00994
00995 void StPmdGeom::chain21(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
00996 {
00997 supmod = 10;
00998 int zone = ch/192;
00999 switch(zone){
01000 case 0:
01001 col = imirr[ch] + 16; row = jmirr[ch];
01002 break;
01003 case 1:
01004 col = imirr[ch-192] +16; row = jmirr[ch-192] + 24;
01005 break;
01006 case 2:
01007 col = 9 - imirr[ch-2*192] + 8; row = 25 - jmirr[ch-2*192] +24;
01008 break;
01009 case 3:
01010 col = 9 - imirr[ch-3*192] + 8; row = 25 - jmirr[ch-3*192];
01011 break;
01012 case 4:
01013 col = imirr[ch-4*192] ; row = jmirr[ch-4*192];
01014 break;
01015 case 5:
01016 col = imirr[ch-5*192]; row = jmirr[ch-5*192] + 24;
01017 break;
01018 case 6:
01019 col = 9 - imirr[ch-6*192]; row = 25 -jmirr[ch-6*192] + 48;
01020 supmod = 12;
01021 break;
01022 case 7:
01023 col = imirr[ch-7*192] + 8; row = jmirr[ch-7*192] + 48;
01024 supmod = 12;
01025 break;
01026 case 8:
01027 col = 9 - imirr[ch-8*192]+ 16; row = 25 -jmirr[ch-8*192] + 48;
01028 supmod = 12;
01029 break;
01030 }
01031 }
01032 void StPmdGeom::chain22(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01033 {
01034 supmod = 11;
01035 int zone = ch/192;
01036 switch(zone){
01037 case 0:
01038 col = inorm[ch]; row = jnorm[ch] + 24;
01039 break;
01040 case 1:
01041 col = 25 - inorm[ch-192]; row = 9 - jnorm[ch-192] +24 + 8;
01042 break;
01043 case 2:
01044 col = inorm[ch-2*192]; row = jnorm[ch-2*192] + 24 +16;
01045 break;
01046 case 3:
01047 col = 9 - imirr[ch-3*192]+48; row = 25 -jmirr[ch-3*192] + 48;
01048 supmod = 12;
01049 break;
01050 case 4:
01051 col = 9 - imirr[ch-4*192]+48; row = 25 -jmirr[ch-4*192] + 24;
01052 supmod = 12;
01053 break;
01054 case 5:
01055 col = imirr[ch-5*192] +48+ 8; row = jmirr[ch-5*192] + 24;
01056 supmod = 12;
01057 break;
01058 case 6:
01059 col = imirr[ch-6*192] + 48 + 8; row = jmirr[ch-6*192] + 48;
01060 supmod = 12;
01061 break;
01062 case 7:
01063 col = 9 - imirr[ch-7*192]+48 + 16; row = 25 -jmirr[ch-7*192] + 48;
01064 supmod = 12;
01065 break;
01066 case 8:
01067 col = 9 - imirr[ch-8*192]+48 + 16; row = 25 -jmirr[ch-8*192] + 24;
01068 supmod = 12;
01069 break;
01070 }
01071 }
01072 void StPmdGeom::chain23(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01073 {
01074 supmod = 12;
01075 int zone = ch/192;
01076 switch(zone){
01077 case 0:
01078 col = 9 - imirr[ch]+ 24; row = 25 -jmirr[ch] + 48;
01079 break;
01080 case 1:
01081 col = 9 - imirr[ch-192]+ 24; row = 25 -jmirr[ch-192] + 24;
01082 break;
01083 case 2:
01084 col = imirr[ch-2*192] +24+ 8; row = jmirr[ch-2*192] + 24;
01085 break;
01086 case 3:
01087 col = imirr[ch-3*192] +24+ 8; row = jmirr[ch-3*192] + 48;
01088 break;
01089 case 4:
01090 col = 9 - imirr[ch-4*192]+ 24 +16; row = 25 -jmirr[ch-4*192] + 48;
01091 break;
01092 case 5:
01093 col = 9 - imirr[ch-5*192]+ 24 +16; row = 25 -jmirr[ch-5*192] + 24;
01094 break;
01095 case 6:
01096 col = 9 - imirr[ch-6*192]+ 48; row = 25 -jmirr[ch-6*192];
01097 break;
01098 case 7:
01099 col = imirr[ch-7*192] +48+ 8; row = jmirr[ch-7*192];
01100 break;
01101 case 8:
01102 col = 9 - imirr[ch-8*192]+ 48 +16; row = 25 -jmirr[ch-8*192];
01103 break;
01104 }
01105 }
01106 void StPmdGeom::chain34(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01107 {
01108 supmod = 16;
01109 int zone = ch/192;
01110 switch(zone){
01111 case 0:
01112 col = 73 - jmirr[ch]; row = 9 - imirr[ch] +48;
01113 break;
01114 case 1:
01115 col = 48 + jmirr[ch-192]; row = 48 + imirr[ch-192] +8;
01116 break;
01117 case 2:
01118 col = 73 - jmirr[ch-2*192]; row = 9- imirr[ch-2*192] +48 +16;
01119 break;
01120 case 3:
01121 col = jmirr[ch-3*192]; row = imirr[ch-3*192] + 16;
01122 supmod = 18;
01123 break;
01124 case 4:
01125 col = jmirr[ch-4*192] + 24; row = imirr[ch-4*192] +16;
01126 supmod = 18;
01127 break;
01128 case 5:
01129 col = 49 - jmirr[ch-5*192]; row = 9 - imirr[ch-5*192] + 8;
01130 supmod = 18;
01131 break;
01132 case 6:
01133 col = 25 - jmirr[ch-6*192]; row = 9 - imirr[ch-6*192] + 8;
01134 supmod = 18;
01135 break;
01136 case 7:
01137 col = jmirr[ch-7*192]; row = imirr[ch-7*192];
01138 supmod = 18;
01139 break;
01140 case 8:
01141 col = jmirr[ch-8*192]+24; row = imirr[ch-8*192];
01142 supmod = 18;
01143 break;
01144 }
01145 }
01146
01147 void StPmdGeom::chain39(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01148 {
01149 supmod = 21;
01150 int zone = ch/192;
01151 switch(zone){
01152 case 0:
01153 col = inorm[ch] + 24; row = jnorm[ch];
01154 break;
01155 case 1:
01156 col = inorm[ch-192]; row = jnorm[ch-192];
01157 break;
01158 case 2:
01159 col = 25 - inorm[ch-2*192]; row = 9 - jnorm[ch-2*192] + 8;
01160 break;
01161 case 3:
01162 col = 25 - inorm[ch-3*192] + 24; row = 9 - jnorm[ch-3*192] + 8;
01163 break;
01164 case 4:
01165 col = inorm[ch-4*192] + 24; row = jnorm[ch - 4*192] + 16;
01166 break;
01167 case 5:
01168 col = inorm[ch-5*192]; row = jnorm[ch-5*192] + 16;
01169 break;
01170 case 6:
01171 col = inorm[ch-6*192]; row = jnorm[ch-6*192] + 24;
01172 break;
01173 case 7:
01174 col = 25 - inorm[ch-7*192]; row = 9 - jnorm[ch-7*192] + 24 + 8;
01175 break;
01176 case 8:
01177 col = inorm[ch-8*192]; row = jnorm[ch-8*192] + 24 + 16;
01178 break;
01179 }
01180 }
01181
01182 void StPmdGeom::chain41(int& ch,int& supmod,int& col,int& row)
01183 {
01184 supmod = 21;
01185 int zone = ch/192;
01186 switch(zone){
01187 case 0:
01188 col = inorm[ch] + 24; row = jnorm[ch] + 24;
01189 break;
01190 case 1:
01191 col = 25 - inorm[ch-192] + 24; row = 9 - jnorm[ch-192] + 24 + 8;
01192 break;
01193 case 2:
01194 col = inorm[ch-2*192] + 24; row = jnorm[ch-2*192] + 24 + 16;
01195 break;
01196 case 3:
01197 col = imirr[ch-3*192] + 16; row = jmirr[ch-3*192];
01198 supmod = 23;
01199 break;
01200 case 4:
01201 col = imirr[ch-4*192] + 16; row = jmirr[ch-4*192] + 24;
01202 supmod = 23;
01203 break;
01204 case 5:
01205 col = 9 - imirr[ch-5*192] + 8; row = 25 - jmirr[ch-5*192] + 24;
01206 supmod = 23;
01207 break;
01208 case 6:
01209 col = 9 - imirr[ch-6*192] + 8; row = 25 - jmirr[ch-6*192];
01210 supmod = 23;
01211 break;
01212 case 7:
01213 col = imirr[ch-7*192]; row = jmirr[ch-7*192];
01214 supmod = 23;
01215 break;
01216 case 8:
01217 col = imirr[ch-8*192] ; row = jmirr[ch-8*192] + 24;
01218 supmod = 23;
01219 break;
01220 }
01221 }
01222
01223 void StPmdGeom::chain45(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01224 {
01225 supmod = 22;
01226 int zone = ch/192;
01227 switch(zone){
01228 case 0:
01229 col = 25 - jnorm[ch]; row = 25 - inorm[ch];
01230 break;
01231 case 1:
01232 col = 25 - jnorm[ch-192]; row = 25 - inorm[ch-192] + 24;
01233 break;
01234 case 2:
01235 col = jnorm[ch-2*192] +8;row = inorm[ch-2*192]+24;
01236 break;
01237 case 3:
01238 col = jnorm[ch-3*192] +8;row = inorm[ch-3*192];
01239 break;
01240 case 4:
01241 col = 9 - jnorm[ch-4*192] ; row = 25 - inorm[ch-4*192];
01242 break;
01243 case 5:
01244 col = 9 - jnorm[ch-5*192] ; row = 25 - inorm[ch-5*192]+ 24;
01245 break;
01246 case 6:
01247 col = jnorm[ch-6*192]; row = 48 + inorm[ch-6*192];
01248 supmod = 24;
01249 break;
01250 case 7:
01251 col = 9 - jnorm[ch-7*192] + 8; row = 73 - inorm[ch-7*192];
01252 supmod = 24;
01253 break;
01254 case 8:
01255 col = jnorm[ch-8*192] + 16; row = 48 + inorm[ch-8*192];
01256 supmod = 24;
01257 break;
01258 }
01259 }
01260
01261 void StPmdGeom::chain46(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row)
01262 {
01263 supmod = 23;
01264 int zone = ch/192;
01265 switch(zone){
01266 case 0:
01267 col = imirr[ch] + 16; row = jmirr[ch] + 48;
01268 break;
01269 case 1:
01270 col = 9 - imirr[ch-192] + 8; row = 25 - jmirr[ch-192] + 48;
01271 break;
01272 case 2:
01273 col = imirr[ch-2*192]; row = jmirr[ch-2*192] + 48;
01274 break;
01275 case 3:
01276 col = 48 + jnorm[ch-3*192]; row = 48 + inorm[ch-3*192];
01277 supmod = 24;
01278 break;
01279 case 4:
01280 col = 48 + jnorm[ch-4*192]; row = 24 + inorm[ch-4*192];
01281 supmod = 24;
01282 break;
01283 case 5:
01284 col = 9 - jnorm[ch-5*192] + 56; row = 49 - inorm[ch-5*192];
01285 supmod = 24;
01286 break;
01287 case 6:
01288 col = 9 - jnorm[ch-6*192] + 56; row = 73 - inorm[ch-6*192];
01289 supmod = 24;
01290 break;
01291 case 7:
01292 col = jnorm[ch-7*192] + 64; row = 48 + inorm[ch-7*192];
01293 supmod = 24;
01294 break;
01295 case 8:
01296 col = jnorm[ch-8*192] + 64; row = 24 + inorm[ch-8*192];
01297 supmod = 24;
01298 break;
01299 }
01300 }
01301 void StPmdGeom::ADC2Edep(Int_t ADC, Float_t& Edep)
01302 {
01303 const Float_t Coeff[4] = {-0.7802, 0.09678, -3.054e-05, 0.0};
01304
01305
01306 Edep = Coeff[0] + Coeff[1]*ADC + Coeff[2]*pow(Float_t(ADC),2) + Coeff[3]*pow(Float_t(ADC),3);
01307 }
01308
01309 void StPmdGeom::readBoardDetail()
01310 {
01311
01312 for(Int_t i=0;i<48;i++){
01313
01314 for(Int_t ib=0;ib<36;ib++){
01315 status[i][ib]=1;
01316 }
01317 }
01318 }
01319
01320 void StPmdGeom::readBoardDetail(Int_t runno1)
01321 {
01322
01323
01324
01325
01326 Int_t alive_stat[48];
01327 for(Int_t i=0;i<48;i++){alive_stat[i]=0;}
01328 for(Int_t i=0;i<48;i++){
01329
01330 for(Int_t ib=0;ib<36;ib++){
01331 status[i][ib]=1;
01332 if (ib>=27) {status[i][ib]=0;}
01333 alive_stat[i]=alive_stat[i]+status[i][ib];
01334 }
01335
01336
01337 alive_stat[i]=0;
01338 }
01339
01340
01341
01342
01343
01344
01345
01346
01347
01348
01349
01350
01351
01352
01353
01354 Int_t rn =0;
01355 Int_t year =0;
01356 GetRunYear(runno1,rn,year);
01357
01358
01359
01360 if(year==5){
01361
01362
01363
01364
01365 if( rn >=1)
01366 {
01367
01368 for(Int_t i=3;i<6;i++)status[0][i]=0;
01369 for(Int_t i=12;i<18;i++)status[0][i]=0;
01370
01371 status[1][19]=0;
01372
01373 status[3][22]=0; status[3][25]=0; status[3][26]=0;
01374
01375 status[5][1]=0;for(Int_t i=24;i<27;i++)status[5][i]=0;
01376
01377 status[6][24]=0;for(Int_t i=6;i<9;i++)status[6][i]=0;
01378
01379 for(Int_t i=0;i<27;i++)status[7][i]=0;
01380
01381 status[8][22]=0;
01382
01383 for(Int_t i=0;i<27;i++)status[9][i]=0;
01384
01385 for(Int_t i=0;i<27;i++)status[10][i]=0;
01386
01387 for(Int_t i=0;i<9;i++)status[11][i]=0;
01388
01389 for(Int_t i=0;i<9;i++)status[12][i]=0;
01390
01391 for(Int_t i=0;i<27;i++)status[13][i]=0;
01392
01393 for(Int_t i=0;i<27;i++)status[14][i]=0;
01394
01395 for(Int_t i=0;i<27;i++)status[15][i]=0;
01396
01397 for(Int_t i=0;i<9;i++)status[16][i]=0;
01398
01399 for(Int_t i=6;i<12;i++)status[17][i]=0;
01400 for(Int_t i=24;i<27;i++)status[17][i]=0;
01401
01402 for(Int_t i=3;i<6;i++)status[19][i]=0;
01403 for(Int_t i=21;i<24;i++)status[19][i]=0;
01404 status[19][12]=0;
01405
01406 status[20][18]=0;
01407
01408 status[21][0]=0;
01409
01410 status[22][0]=0;
01411
01412 status[23][6]=0;status[23][24]=0;
01413
01414 status[25][16]=0;
01415
01416 status[31][8]=0;
01417
01418 status[38][24]=0;status[38][25]=0;
01419
01420 status[39][24]=0;
01421
01422 status[40][7]=0;
01423
01424 status[44][14]=0;
01425
01426 status[46][16]=0;
01427
01428 }
01429
01430 if( rn >=21)
01431 {
01432
01433 status[30][21]=0;
01434
01435 status[38][5]=0;
01436
01437 status[43][20]=0;
01438
01439 for(Int_t i=18;i<27;i++)status[44][i]=0;
01440
01441 for(Int_t i=3;i<6;i++)status[45][i]=0;
01442 for(Int_t i=9;i<27;i++)status[45][i]=0;
01443 }
01444
01445 if( rn >=27)
01446 {
01447
01448 status[24][1]=0;
01449 status[24][25]=0;
01450
01451 status[35][14]=0;
01452
01453 for(Int_t i=18;i<27;i++)status[44][i]=1;
01454
01455 status[45][6]=0;
01456 for(Int_t i=9;i<27;i++)status[45][i]=1;
01457
01458 status[46][16]=0;
01459
01460 }
01461
01462 if( rn >=35)
01463 {
01464
01465 for(Int_t i=0;i<21;i++)status[0][i]=0;
01466 status[0][18]=1;
01467
01468 status[1][19]=1;status[1][9]=0;
01469
01470 status[2][3]=0;status[2][6]=0;
01471 status[2][7]=0;status[2][8]=0;
01472 status[2][10]=0;status[2][13]=0;
01473
01474 status[3][25]=1; status[3][26]=1;
01475 status[3][13]=0; status[3][15]=0;
01476 status[3][18]=0; status[3][19]=0;
01477 status[3][20]=0; status[3][22]=0;
01478 status[3][24]=0;
01479
01480 status[4][2]=0; status[4][17]=0;
01481
01482 status[5][1]=0;
01483 for(Int_t i=21;i<27;i++)status[5][i]=0;
01484 status[5][23]=1;
01485
01486
01487 for(Int_t i=2;i<4;i++)status[6][i]=0;
01488 status[6][15]=0;
01489 for(Int_t i=17;i<21;i++)status[6][i]=0;
01490
01491
01492 status[6][24]=0;
01493
01494 status[8][9]=0; status[8][11]=0;
01495
01496 status[11][14]=0; status[11][26]=0;
01497
01498 for(Int_t i=5;i<13;i++)status[17][i]=0;
01499 status[17][14]=0; status[17][18]=0;
01500 status[17][21]=0; status[17][22]=0;
01501 for(Int_t i=24;i<27;i++)status[17][i]=0;
01502
01503 status[18][1]=0; status[18][6]=0;
01504 status[18][18]=0;
01505 for(Int_t i=24;i<27;i++)status[18][i]=0;
01506
01507
01508
01509 status[20][2]=0; status[20][8]=0;
01510 status[20][9]=0; status[20][18]=0;
01511 status[20][20]=0; status[20][24]=0;
01512 status[20][25]=0;
01513
01514
01515
01516 status[28][23]=0; status[28][24]=0;
01517
01518 status[36][25]=0;
01519
01520
01521 status[44][3]=0; status[44][4]=0;
01522 status[44][14]=0;
01523
01524 for(Int_t i=3;i<6;i++)status[45][i]=1;
01525 }
01526
01527
01528 if( rn >=43)
01529 {
01530
01531 status[33][2]=0;
01532 }
01533
01534 if( rn >=49 )
01535 {
01536
01537
01538 status[38][19]=0;
01539 status[38][22]=0;
01540
01541
01542
01543
01544 }
01545
01546 if(rn>=63)
01547 {
01548
01549 status[24][20]=0;
01550
01551 status[38][14]=0;
01552
01553 status[46][8] = 0;
01554 }
01555
01556 if( rn >=78 )
01557 {
01558
01559 status[24][12]=0;
01560
01561 status[30][18]=0;
01562
01563 status[32][21]=0;
01564
01565 status[35][12]=0;
01566
01567 status[36][24]=0;
01568
01569 status[38][7]=0;
01570
01571 status[42][7]=0;
01572
01573 status[45][8]=0;
01574
01575 status[44][6]=0;status[44][11]=0;
01576
01577 status[46][8]=0;status[46][16]=0;
01578
01579 status[47][11]=0;status[47][19]=0;
01580 status[47][20]=0;
01581
01582 }
01583 }
01584
01585
01586 if( rn >=1 && year==6)
01587 {
01588
01589 for(Int_t i=3;i<9;i++)status[0][i]=0;
01590 for(Int_t i=24;i<27;i++)status[0][i]=0;
01591
01592
01593
01594 status[2][4]=0;status[2][6]=0;
01595
01596 status[3][4]=0;
01597 for(Int_t i=19;i<22;i++)status[3][i]=0;
01598 status[3][24]=0;
01599
01600 status[4][12]=0;
01601
01602 for(Int_t i=0;i<27;i++)status[5][i]=0;
01603
01604 status[6][0]=0;status[6][5]=0;
01605 for(Int_t i=12;i<14;i++)status[6][i]=0;
01606 for(Int_t i=21;i<23;i++)status[6][i]=0;
01607
01608 status[7][3]=0;status[7][23]=0;
01609 for(Int_t i=10;i<14;i++)status[7][i]=0;
01610 for(Int_t i=25;i<26;i++)status[7][i]=0;
01611
01612 status[8][0]=0;status[8][7]=0;
01613 status[8][19]=0;status[8][25]=0;status[8][26]=0;
01614
01615 status[9][5]=0; status[9][8]=0; status[9][22]=0;
01616
01617 status[10][0]=0;status[10][7]=0;
01618 for(Int_t i=12;i<14;i++)status[10][i]=0;
01619 for(Int_t i=22;i<27;i++)status[10][i]=0;
01620
01621 for(Int_t i=4;i<7;i++)status[11][i]=0;
01622 status[11][9]=0;
01623 for(Int_t i=12;i<14;i++)status[11][i]=0;
01624 for(Int_t i=18;i<27;i++)status[11][i]=0;
01625
01626 status[12][6]=0;
01627 for(Int_t i=10;i<12;i++)status[12][i]=0;
01628 status[12][15]=0;status[12][23]=0;status[12][24]=0;status[12][26]=0;
01629
01630 for(Int_t i=0;i<27;i++)status[13][i]=0;
01631
01632 for(Int_t i=18;i<27;i++)status[14][i]=0;
01633
01634 for(Int_t i=12;i<14;i++)status[15][i]=0;
01635 for(Int_t i=18;i<27;i++)status[15][i]=0;
01636
01637 status[16][0]=0; status[16][17]=0; status[16][19]=0;
01638 status[16][20]=0; status[16][25]=0;status[16][26]=0;
01639
01640 for(Int_t i=0;i<27;i++)status[17][i]=0;
01641
01642 status[18][1]=0; status[18][6]=0; status[18][12]=0;
01643 for(Int_t i=18;i<21;i++)status[18][i]=0;
01644 for(Int_t i=24;i<27;i++)status[18][i]=0;
01645
01646 for(Int_t i=0;i<27;i++)status[19][i]=0;
01647
01648 status[20][0]=0; status[20][6]=0; status[20][7]=0;
01649 for(Int_t i=10;i<16;i++)status[20][i]=0;
01650 status[20][20]=0; status[20][26]=0;
01651
01652 for(Int_t i=0;i<27;i++)status[21][i]=0;
01653
01654 for(Int_t i=1;i<3;i++)status[22][i]=0;
01655 status[22][15]=0;
01656
01657 for(Int_t i=6;i<8;i++)status[23][i]=0;
01658 status[23][17]=0;
01659 for(Int_t i=23;i<27;i++)status[23][i]=0;
01660
01661 for(Int_t i=5;i<7;i++)status[24][i]=0;
01662 for(Int_t i=11;i<14;i++)status[24][i]=0;
01663 for(Int_t i=15;i<17;i++)status[24][i]=0;
01664 status[24][20]=0;
01665
01666 for(Int_t i=15;i<18;i++)status[25][i]=0;
01667
01668 for(Int_t i=1;i<3;i++)status[26][i]=0;
01669
01670 status[27][18]=0;
01671
01672 status[28][10]=0;status[28][24]=0;
01673
01674 for(Int_t i=0;i<3;i++)status[29][i]=0;
01675 for(Int_t i=15;i<21;i++)status[29][i]=0;
01676
01677 for(Int_t i=18;i<23;i++)status[30][i]=0;
01678
01679
01680 for(Int_t i=10;i<12;i++)status[32][i]=0;
01681 for(Int_t i=17;i<19;i++)status[32][i]=0;
01682 for(Int_t i=24;i<27;i++)status[32][i]=0;
01683
01684 status[33][18]=0;
01685
01686 for(Int_t i=0;i<3;i++)status[34][i]=0;
01687
01688 status[35][23]=0;
01689
01690 status[36][2]=0; status[36][12]=0;
01691 for(Int_t i=6;i<8;i++)status[36][i]=0;
01692 for(Int_t i=15;i<17;i++)status[36][i]=0;
01693
01694 status[37][8]=0;
01695 for(Int_t i=20;i<22;i++)status[37][i]=0;
01696
01697 status[38][14]=0;
01698
01699 status[39][2]=0; status[39][10]=0; status[39][20]=0;
01700 for(Int_t i=6;i<8;i++)status[39][i]=0;
01701 for(Int_t i=24;i<27;i++)status[39][i]=0;
01702
01703 status[40][7]=0;
01704 for(Int_t i=9;i<11;i++)status[40][i]=0;
01705 for(Int_t i=13;i<15;i++)status[40][i]=0;
01706
01707
01708 status[42][7]=0;
01709
01710
01711 status[44][3]=0;status[44][6]=0;
01712 for(Int_t i=12;i<18;i++)status[44][i]=0;
01713 for(Int_t i=18;i<27;i++)status[44][i]=0;
01714
01715 for(Int_t i=9;i<27;i++)status[45][i]=0;
01716
01717 for(Int_t i=0;i<4;i++)status[46][i]=0;
01718 for(Int_t i=6;i<9;i++)status[46][i]=0;
01719 status[46][10]=0;status[46][15]=0;status[46][17]=0;status[46][24]=0;
01720
01721 status[47][0]=0;status[47][5]=0;status[47][11]=0;
01722 for(Int_t i=14;i<16;i++)status[47][i]=0;
01723 for(Int_t i=17;i<19;i++)status[47][i]=0;
01724 for(Int_t i=24;i<27;i++)status[47][i]=0;
01725 }
01726
01727 if(rn >=1 && year==8){
01728
01729
01730
01731
01732 for(Int_t i=0;i<48;i++){
01733 for(Int_t ib=27;ib<36;ib++){
01734 if (i==0 || i==6 || i==18 || i==19 || i==22 || i==23){
01735 status[i][ib]=1;
01736 }else {
01737 status[i][ib]=0;
01738 }
01739 }
01740 }
01741
01742
01743 for(Int_t i=0;i<9;i++)status[0][i]=0;
01744 for(Int_t i=12;i<18;i++)status[0][i]=0;
01745 for(Int_t i=33;i<36;i++)status[0][i]=0;
01746
01747
01748
01749
01750 status[2][4]=0;
01751 status[2][6]=0;
01752
01753 status[3][4]=0;
01754 for(Int_t i=19;i<22;i++)status[3][i]=0;
01755 status[3][24]=0;
01756
01757 status[4][12]=0;
01758
01759
01760
01761 status[6][0]=0;
01762 status[6][5]=0;
01763 status[6][12]=0;
01764 status[6][13]=0;
01765 status[6][18]=0;
01766 for(Int_t i=22;i<32;i++)status[6][i]=0;
01767
01768 status[7][3]=0;
01769 for(Int_t i=10;i<14;i++)status[7][i]=0;
01770 status[7][23]=0;
01771 status[7][25]=0;
01772 status[7][26]=0;
01773
01774 status[8][0]=0;
01775 status[8][7]=0;
01776 status[8][19]=0;
01777 status[8][25]=0;
01778 status[8][26]=0;
01779
01780 status[9][5]=0;
01781 status[9][8]=0;
01782 status[9][22]=0;
01783
01784 status[10][0]=0;
01785 status[10][7]=0;
01786 status[10][12]=0;
01787 status[10][13]=0;
01788 for(Int_t i=22;i<27;i++)status[10][i]=0;
01789
01790 for(Int_t i=4;i<7;i++)status[11][i]=0;
01791 status[11][9]=0;
01792 status[11][12]=0;
01793 status[11][13]=0;
01794 for(Int_t i=18;i<27;i++)status[11][i]=0;
01795
01796 status[12][6]=0;
01797 status[12][10]=0;
01798 status[12][11]=0;
01799 status[12][15]=0;
01800 status[12][23]=0;
01801 status[12][24]=0;
01802 status[12][26]=0;
01803
01804
01805
01806 for(Int_t i=24;i<27;i++)status[14][i]=0;
01807
01808
01809
01810
01811 status[17][20]=0;
01812
01813 for(Int_t i=3;i<6;i++)status[18][i]=0;
01814 status[18][9]=0;
01815 for(Int_t i=15;i<18;i++)status[18][i]=0;
01816 status[18][34]=0;
01817 status[18][35]=0;
01818
01819 for(Int_t i=0;i<3;i++)status[19][i]=0;
01820 for(Int_t i=6;i<10;i++)status[19][i]=0;
01821 for(Int_t i=14;i<18;i++)status[19][i]=0;
01822 status[19][32]=0;
01823 status[19][33]=0;
01824
01825
01826
01827
01828
01829
01830 for(Int_t i=18;i<25;i++)status[22][i]=0;
01831 status[22][29]=0;
01832 status[22][35]=0;
01833
01834 status[23][5]=0;
01835 status[23][6]=0;
01836 status[23][16]=0;
01837 for(Int_t i=22;i<30;i++)status[23][i]=0;
01838
01839 status[24][5]=0;
01840 status[24][6]=0;
01841 for(Int_t i=11;i<14;i++)status[24][i]=0;
01842 status[24][15]=0;
01843 status[24][16]=0;
01844 status[24][20]=0;
01845
01846
01847
01848 status[26][1]=0;
01849 status[26][2]=0;
01850
01851
01852
01853
01854
01855 for(Int_t i=0;i<3;i++)status[29][i]=0;
01856 status[29][8]=0;
01857 for(Int_t i=15;i<21;i++)status[29][i]=0;
01858
01859 for(Int_t i=18;i<23;i++)status[30][i]=0;
01860
01861
01862
01863 status[32][10]=0;
01864 status[32][11]=0;
01865 status[32][17]=0;
01866 status[32][18]=0;
01867 for(Int_t i=23;i<27;i++)status[32][i]=0;
01868
01869 status[33][18]=0;
01870
01871 status[34][2]=0;
01872 status[34][10]=0;
01873
01874 status[35][23]=0;
01875
01876 status[36][2]=0;
01877 for(Int_t i=6;i<9;i++)status[36][i]=0;
01878 status[36][12]=0;
01879 for(Int_t i=14;i<17;i++)status[36][i]=0;
01880
01881 status[37][7]=0;
01882 status[37][8]=0;
01883 status[37][20]=0;
01884 status[37][21]=0;
01885
01886 status[38][14]=0;
01887
01888 status[39][2]=0;
01889 status[39][6]=0;
01890 status[39][7]=0;
01891 status[39][10]=0;
01892 status[39][20]=0;
01893 for(Int_t i=24;i<27;i++)status[39][i]=0;
01894
01895 status[40][7]=0;
01896 status[40][9]=0;
01897 status[40][10]=0;
01898 status[40][13]=0;
01899 status[40][14]=0;
01900
01901
01902
01903 status[42][7]=0;
01904
01905
01906
01907 for(Int_t i=10;i<27;i++)status[44][i]=0;
01908
01909
01910
01911 }
01912 if(rn>87&&year==8){
01913
01914 status[32][6]=0;
01915
01916 status[45][17]=0;
01917 status[45][18]=0;
01918 }
01919
01920 if(rn>101&&year==8){
01921
01922 status[24][4]=0;
01923
01924 status[28][6]=0;
01925 status[28][11]=0;
01926 status[28][25]=0;
01927
01928 status[32][0]=0;
01929 status[32][4]=0;
01930 }
01931
01932 if(rn>114&&year==8){
01933 status[46][6]=0;
01934 }
01935
01936
01937
01938
01939
01940
01941
01942
01943
01944
01945 if(rn>300 && year==8){
01946 status[38][0]=0;
01947 status[38][3]=0;
01948 status[38][4]=0;
01949 status[38][5]=0;
01950 status[25][7]=0;
01951 status[25][12]=0;
01952 status[22][0]=0;
01953 status[22][3]=0;
01954 status[22][4]=0;
01955 status[28][6]=0;
01956 status[28][11]=0;
01957 status[36][9]=0;
01958 }
01959
01960 if(rn >=1 && (year==10||year==11||year==12)){
01961
01962
01963
01964
01965 for(Int_t i=0;i<48;i++){
01966 for(Int_t ib=27;ib<36;ib++){
01967 if (i==7 || i==11 || i==22 || i==23){
01968 status[i][ib]=1;
01969 }else {
01970 status[i][ib]=0;
01971 }
01972 }
01973 }
01974
01975
01976 for(Int_t brd = 0;brd<=2;brd++){
01977 status[0][brd]=0;
01978 }
01979 for(Int_t brd = 6;brd<=8;brd++){
01980 status[0][brd]=0;
01981 }
01982 for(Int_t brd = 24;brd<=26;brd++){
01983 status[0][brd]=0;
01984 }
01985
01986
01987 status[2][4]=0;
01988 status[2][6]=0;
01989 status[2][20]=0;
01990
01991 status[3][4]=0;
01992 status[3][19]=0;
01993 status[3][20]=0;
01994 status[3][21]=0;
01995 status[3][24]=0;
01996
01997 status[4][12]=0;
01998
01999
02000
02001 status[7][14]=0;
02002 status[7][16]=0;
02003 status[7][17]=0;
02004 for(Int_t brd=19;brd<=22;brd++){
02005 status[7][brd]=0;
02006 }
02007 status[7][30]=0;
02008
02009
02010 status[9][2]=0;
02011 status[9][5]=0;
02012 status[9][13]=0;
02013
02014 status[10][16]=0;
02015
02016 status[11][1]=0;
02017 status[11][2]=0;
02018 status[11][6]=0;
02019 status[11][14]=0;
02020 status[11][15]=0;
02021 status[11][17]=0;
02022 for(Int_t brd=22;brd<=24;brd++){
02023 status[11][brd]=0;
02024 }
02025 status[11][27]=0;
02026 status[11][30]=0;
02027 status[11][31]=0;
02028
02029
02030
02031 for(Int_t brd=18;brd<=20;brd++){
02032 status[14][brd]=0;
02033 }
02034
02035 status[15][3]=0;
02036
02037
02038 status[17][20]=0;
02039
02040
02041 status[19][14]=0;
02042 status[19][15]=0;
02043
02044
02045 for(Int_t brd = 11;brd<=14;brd++){
02046 status[21][brd]=0;
02047 }
02048
02049 status[22][11]=0;
02050 status[22][12]=0;
02051 for(Int_t brd = 18;brd <=24;brd++){
02052 status[22][brd]=0;
02053 }
02054 status[22][29]=0;
02055 status[22][35]=0;
02056
02057 status[23][6]=0;
02058 status[23][7]=0;
02059 status[23][17]=0;
02060 for(Int_t i=23;i<=30;i++){status[23][i]=0;}
02061
02062
02063
02064
02065
02066
02067
02068
02069
02070
02071
02072 for(Int_t brd = 3;brd<=5;brd++){
02073 status[25][brd]=0;
02074 }
02075 for(Int_t brd = 12;brd<=14;brd++){
02076 status[25][brd]=0;
02077 }
02078 for(Int_t brd = 21;brd<=23;brd++){
02079 status[25][brd]=0;
02080 }
02081
02082
02083
02084
02085
02086
02087
02088
02089 status[33][18]=0;
02090
02091
02092
02093
02094 status[37][7]=0;
02095 status[37][8]=0;
02096 status[37][20]=0;
02097 status[37][21]=0;
02098
02099 status[38][24]=0;
02100
02101 status[39][2]=0;
02102 status[39][6]=0;
02103 status[39][7]=0;
02104 status[39][10]=0;
02105 status[39][20]=0;
02106 for(Int_t brd=24;brd<=26;brd++){
02107 status[39][brd]=0;
02108 }
02109
02110 status[40][9]=0;
02111 status[40][10]=0;
02112 status[40][13]=0;
02113 status[40][14]=0;
02114
02115
02116 status[42][7]=0;
02117
02118 status[43][19]=0;
02119
02120 for(Int_t brd = 10;brd<=26;brd++){
02121 status[44][brd]=0;
02122 }
02123
02124 status[45][17]=0;
02125 status[45][20]=0;
02126
02127 status[46][6]=0;
02128 status[46][8]=0;
02129 status[46][9]=0;
02130 status[46][10]=0;
02131 status[46][26]=0;
02132
02133 }
02134 if(rn>48 && (year==10||year==11)){
02135
02136 status[29][17]=0;
02137 }
02138
02139 if(rn>84 && (year==10||year==11)){
02140
02141
02142 status[25][10]=0;
02143 status[25][25]=1;
02144 }
02145 if(rn>96 && (year==10||year==11)){
02146
02147
02148 for(Int_t brd = 6;brd<12;brd++){
02149 status[29][brd]=0;
02150 }
02151 status[29][8]=1;
02152 status[29][24]=0;
02153 status[29][25]=0;
02154 status[29][26]=0;
02155 status[25][25]=0;
02156 }
02157
02158
02159 for(Int_t i=0;i<48;i++){
02160 for(Int_t ib=0;ib<36;ib++){
02161 alive_stat[i]=alive_stat[i]+status[i][ib];
02162 }
02163
02164 }
02165 }
02166
02167
02168 Int_t StPmdGeom::ChainMapping(Int_t& chainno,Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t&chmod,Int_t year)
02169 {
02170
02171
02172 supmod =0;
02173 col =0;
02174 row = 0;
02175
02176 Int_t chain = chainno;
02177 Int_t chtemp=ch;
02178 Int_t brd=Int_t((ch)/64)+1;
02179 Int_t missing=0;
02180 Int_t brdCount=0;
02181
02182
02183 for(Int_t ibrd=0;ibrd<36;ibrd++){
02184 if(brdCount<brd){
02185 if(status[chainno-1][ibrd]==0){missing++;}
02186 brdCount+=status[chainno-1][ibrd];
02187 }
02188 }
02189 chtemp=ch+missing*64;
02190 chmod=chtemp;
02191
02192
02193 if(year==8){
02194 if(chain==1 || chain==7 || chain==19 || chain==20 || chain==23 || chain==24) {
02195
02196 if( chtemp>=2304){return kStWarn;}
02197 }else{
02198
02199 if(chtemp >=1728){
02200
02201 return kStWarn;
02202 }
02203 }
02204
02205 if(chain==6 || chain==17 || chain == 21 ){return kStWarn;}
02206 }else{
02207 if(year==10||year==11||year==12){
02208
02209 if(chain==8||chain==12||chain==23||chain==24){
02210 if(chtemp>=2304){return kStWarn;}
02211 }else{
02212 if(chtemp>=1728){return kStWarn;}
02213 }
02214 if(chain==6||chain==21){return kStWarn;}
02215 }else{
02216
02217 if(chtemp>=1728){ return kStWarn;}
02218 }
02219 }
02220
02221
02222 switch(chain){
02223
02224 case 1:
02225 chain1(chtemp,supmod,col,row,year);
02226 break;
02227 case 2:
02228 chain2(chtemp,supmod,col,row,year);
02229 break;
02230 case 3:
02231 chain3(chtemp,supmod,col,row,year);
02232 break;
02233 case 4:
02234 chain4(chtemp,supmod,col,row,year);
02235 break;
02236 case 5:
02237 chain5(chtemp,supmod,col,row,year);
02238 break;
02239 case 6:
02240 chain6(chtemp,supmod,col,row,year);
02241 break;
02242 case 7:
02243 chain7(chtemp,supmod,col,row,year);
02244 break;
02245 case 8:
02246 chain8(chtemp,supmod,col,row,year);
02247 break;
02248 case 9:
02249 chain9(chtemp,supmod,col,row,year);
02250 break;
02251 case 10:
02252 chain10(chtemp,supmod,col,row,year);
02253 break;
02254 case 11:
02255 chain11(chtemp,supmod,col,row,year);
02256 break;
02257 case 12:
02258 chain12(chtemp,supmod,col,row,year);
02259 break;
02260 case 13:
02261 chain13(chtemp,supmod,col,row,year);
02262 break;
02263 case 14:
02264 chain14(chtemp,supmod,col,row,year);
02265 break;
02266 case 15:
02267 chain15(chtemp,supmod,col,row,year);
02268 break;
02269 case 16:
02270 chain16(chtemp,supmod,col,row,year);
02271 break;
02272 case 17:
02273 chain17(chtemp,supmod,col,row,year);
02274 break;
02275 case 18:
02276 chain18(chtemp,supmod,col,row,year);
02277 break;
02278 case 19:
02279 chain19(chtemp,supmod,col,row,year);
02280 break;
02281 case 20:
02282 chain20(chtemp,supmod,col,row,year);
02283 break;
02284 case 21:
02285 chain21(chtemp,supmod,col,row,year);
02286 break;
02287 case 22:
02288 chain22(chtemp,supmod,col,row,year);
02289 break;
02290 case 23:
02291 chain23(chtemp,supmod,col,row,year);
02292 break;
02293 case 24:
02294 chain24(chtemp,supmod,col,row,year);
02295 break;
02296 case 25:
02297 chain25(chtemp,supmod,col,row,year);
02298 break;
02299 case 26:
02300 chain26(chtemp,supmod,col,row,year);
02301 break;
02302 case 27:
02303 chain27(chtemp,supmod,col,row,year);
02304 break;
02305 case 28:
02306 chain28(chtemp,supmod,col,row,year);
02307 break;
02308 case 29:
02309 chain29(chtemp,supmod,col,row,year);
02310 break;
02311 case 30:
02312 chain30(chtemp,supmod,col,row,year);
02313 break;
02314 case 31:
02315 chain31(chtemp,supmod,col,row,year);
02316 break;
02317 case 32:
02318 chain32(chtemp,supmod,col,row,year);
02319 break;
02320 case 33:
02321 chain33(chtemp,supmod,col,row,year);
02322 break;
02323 case 34:
02324 chain34(chtemp,supmod,col,row,year);
02325 break;
02326 case 35:
02327 chain35(chtemp,supmod,col,row,year);
02328 break;
02329 case 36:
02330 chain36(chtemp,supmod,col,row,year);
02331 break;
02332 case 37:
02333 chain37(chtemp,supmod,col,row,year);
02334 break;
02335 case 38:
02336 chain38(chtemp,supmod,col,row,year);
02337 break;
02338 case 39:
02339 chain39(chtemp,supmod,col,row,year);
02340 break;
02341 case 40:
02342 chain40(chtemp,supmod,col,row,year);
02343 break;
02344 case 41:
02345 chain41(chtemp,supmod,col,row,year);
02346 break;
02347 case 42:
02348 chain42(chtemp,supmod,col,row,year);
02349 break;
02350 case 43:
02351 chain43(chtemp,supmod,col,row,year);
02352 break;
02353 case 44:
02354 chain44(chtemp,supmod,col,row,year);
02355 break;
02356 case 45:
02357 chain45(chtemp,supmod,col,row,year);
02358 break;
02359 case 46:
02360 chain46(chtemp,supmod,col,row,year);
02361 break;
02362 case 47:
02363 chain47(chtemp,supmod,col,row,year);
02364 break;
02365 case 48:
02366 chain48(chtemp,supmod,col,row,year);
02367 break;
02368 }
02369 if(supmod<=0 || col<=0 || row<=0){
02370
02371 return kStWarn;
02372 }
02373
02374
02375 return kStOk;
02376 }
02377
02378
02379 void StPmdGeom::chain1(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
02380 {
02381 Int_t zone = ch/192;
02382 switch(year){
02383
02384
02385
02386
02387
02388
02389
02390
02391
02392
02393
02394
02395
02396
02397
02398
02399
02400
02401
02402
02403
02404
02405
02406
02407
02408
02409
02410
02411
02412
02413
02414
02415
02416
02417
02418
02419
02420
02421
02422
02423
02424
02425
02426
02427 case 6: {
02428
02429 switch(zone){
02430 case 0:
02431 col = inorm[ch]; row = 8 + jnorm[ch];
02432 supmod = 1;
02433 break;
02434 case 1:
02435 col = 25 - inorm[ch-192]; row = 25 - jnorm[ch-192];
02436 supmod = 1;
02437 break;
02438 case 2:
02439 col = 49 - inorm[ch-2*192]; row = 25 - jnorm[ch-2*192];
02440 supmod = 1;
02441 break;
02442 case 3:
02443 col = 24 + inorm[ch-3*192]; row = 24 + jnorm[ch-3*192];
02444 supmod = 1;
02445 break;
02446 case 4:
02447 col = inorm[ch-4*192]; row = 24 + jnorm[ch-4*192];
02448 supmod = 1;
02449 break;
02450 case 5:
02451 col = 25 - inorm[ch-5*192]; row = 41 - jnorm[ch-5*192];
02452 supmod = 1;
02453 break;
02454 case 6:
02455 col = 49 - inorm[ch-6*192]; row = 41 - jnorm[ch-6*192];
02456 supmod = 1;
02457 break;
02458 case 7:
02459 col = 24 + inorm[ch-7*192]; row = 40 + jnorm[ch-7*192];
02460 supmod = 1;
02461 break;
02462 case 8:
02463 col = inorm[ch-8*192]; row = 40 + jnorm[ch-8*192];
02464 supmod = 1;
02465 break;
02466 }
02467
02468 break;
02469 }
02470 case 8: {
02471
02472 switch(zone){
02473 case 0:
02474 col = 25 - inorm[ch]; row = 9 - jnorm[ch];
02475 supmod = 1;
02476 break;
02477 case 1:
02478 col = 49 - inorm[ch-192]; row = 9 - jnorm[ch-192];
02479 supmod = 1;
02480 break;
02481 case 2:
02482 col = 24 + inorm[ch-2*192]; row = 8 + jnorm[ch-2*192];
02483 supmod = 1;
02484 break;
02485 case 3:
02486 col = inorm[ch-3*192]; row = 8 + jnorm[ch-3*192];
02487 supmod = 1;
02488 break;
02489 case 4:
02490 col = 25 - inorm[ch-4*192]; row = 25 - jnorm[ch-4*192];
02491 supmod = 1;
02492 break;
02493 case 5:
02494 col = 49 - inorm[ch-5*192]; row = 25 - jnorm[ch-5*192];
02495 supmod = 1;
02496 break;
02497 case 6:
02498 col = 24 + inorm[ch-6*192]; row = 24 + jnorm[ch-6*192];
02499 supmod = 1;
02500 break;
02501 case 7:
02502 col = inorm[ch-7*192]; row = 24 + jnorm[ch-7*192];
02503 supmod = 1;
02504 break;
02505 case 8:
02506 col = 25 - inorm[ch-8*192]; row = 41 - jnorm[ch-8*192];
02507 supmod = 1;
02508 break;
02509 case 9:
02510 col = 49 - inorm[ch-9*192]; row = 41 - jnorm[ch-9*192];
02511 supmod = 1;
02512 break;
02513 case 10:
02514 col = 24 + inorm[ch-10*192]; row = 40 + jnorm[ch-10*192];
02515 supmod = 1;
02516 break;
02517 case 11:
02518 col = inorm[ch-11*192]; row = 40 + jnorm[ch-11*192];
02519 supmod = 1;
02520 break;
02521 }
02522 break;
02523 }
02524 case 10:
02525 case 11:
02526 case 12:
02527 switch(zone)
02528 {
02529 case 0:
02530 col = 25 - inorm[ch];
02531 row = 9 - jnorm[ch];
02532 supmod = 1;
02533 break;
02534 case 1:
02535 col = inorm[ch-192];
02536 row = 8 + jnorm[ch-192];
02537 supmod = 1;
02538 break;
02539 case 2:
02540 col = 25 - inorm[ch-2*192];
02541 row = 25 - jnorm[ch-2*192];
02542 supmod = 1;
02543 break;
02544 case 3:
02545 col = 25 - inorm[ch-3*192];
02546 row = 33 - jnorm[ch-3*192];
02547 supmod = 1;
02548 break;
02549 case 4:
02550 col = 49 - inorm[ch-4*192];
02551 row = 33 -jnorm[ch-4*192];
02552 supmod = 1;
02553 break;
02554 case 5:
02555 col = 24 + inorm[ch-5*192];
02556 row = 32 + jnorm[ch-5*192];
02557 supmod = 1;
02558 break;
02559 case 6:
02560 col = inorm[ch-6*192];
02561 row = 32 + jnorm[ch-6*192];
02562 supmod = 1;
02563 break;
02564 case 7:
02565 col = 25 - inorm[ch-7*192];
02566 row = 49 - jnorm[ch-7*192];
02567 supmod = 1;
02568 break;
02569 case 8:
02570 col = 49 - inorm[ch-8*192];
02571 row = 49 - jnorm[ch-8*192];
02572 supmod = 1;
02573 break;
02574 }
02575 break;
02576 }
02577 }
02578
02579 void StPmdGeom::chain2(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
02580 {
02581 Int_t zone = ch/192;
02582 switch(year){
02583 case 6:
02584
02585 switch(zone)
02586 {
02587 case 0:
02588 col = 48 + inorm[ch];
02589 row = jnorm[ch];
02590 supmod = 2;
02591 break;
02592 case 1:
02593 col = 24 + inorm[ch-192];
02594 row = jnorm[ch-192];
02595 supmod = 2;
02596 break;
02597 case 2:
02598 col = inorm[ch-2*192];
02599 row = jnorm[ch-2*192];
02600 supmod = 2;
02601 break;
02602 case 3:
02603 col = 25 - inorm[ch-3*192];
02604 row = 17 - jnorm[ch-3*192];
02605 supmod = 2;
02606 break;
02607 case 4:
02608 col = 49 - inorm[ch-4*192];
02609 row = 17 - jnorm[ch-4*192];
02610 supmod = 2;
02611 break;
02612 case 5:
02613 col = 73 - inorm[ch-5*192];
02614 row = 17 - jnorm[ch-5*192];
02615 supmod = 2;
02616 break;
02617 case 6:
02618 col = 48 + inorm[ch-6*192];
02619 row = 16 + jnorm[ch-6*192];
02620 supmod = 2;
02621 break;
02622 case 7:
02623 col = 24 + inorm[ch-7*192];
02624 row = 16 + jnorm[ch-7*192];
02625 supmod = 2;
02626 break;
02627 case 8:
02628 col = inorm[ch-8*192];
02629 row = 16 + jnorm[ch-8*192];
02630 supmod = 2;
02631 break;
02632 }
02633 break;
02634 case 8:
02635 case 10:
02636 case 11:
02637 case 12:
02638 switch(zone)
02639 {
02640 case 0:
02641 col = 48 + inorm[ch];
02642 row = jnorm[ch];
02643 supmod = 2;
02644 break;
02645 case 1:
02646 col = 24 + inorm[ch-192];
02647 row = jnorm[ch-192];
02648 supmod = 2;
02649 break;
02650 case 2:
02651 col = inorm[ch-2*192];
02652 row = jnorm[ch-2*192];
02653 supmod = 2;
02654 break;
02655 case 3:
02656 col = 25 - inorm[ch-3*192];
02657 row = 17 - jnorm[ch-3*192];
02658 supmod = 2;
02659 break;
02660 case 4:
02661 col = 49 - inorm[ch-4*192];
02662 row = 17 - jnorm[ch-4*192];
02663 supmod = 2;
02664 break;
02665 case 5:
02666 col = 73 - inorm[ch-5*192];
02667 row = 17 - jnorm[ch-5*192];
02668 supmod = 2;
02669 break;
02670 case 6:
02671 col = 48 + inorm[ch-6*192];
02672 row = 16 + jnorm[ch-6*192];
02673 supmod = 2;
02674 break;
02675 case 7:
02676 col = 24 + inorm[ch-7*192];
02677 row = 16 + jnorm[ch-7*192];
02678 supmod = 2;
02679 break;
02680 case 8:
02681 col = inorm[ch-8*192];
02682 row = 16 + jnorm[ch-8*192];
02683 supmod = 2;
02684 break;
02685 }
02686 break;
02687 }
02688 }
02689
02690 void StPmdGeom::chain3(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
02691 {
02692 Int_t zone = ch/192;
02693 switch(year){
02694 case 6:
02695
02696 switch(zone)
02697 {
02698 case 0:
02699 col = 16 + imirr[ch];
02700 row = jmirr[ch];
02701 supmod = 3;
02702 break;
02703 case 1:
02704 col = 16 + imirr[ch-192];
02705 row = 24 + jmirr[ch-192];
02706 supmod = 3;
02707 break;
02708 case 2:
02709 col = 16 + imirr[ch-2*192];
02710 row = 48 + jmirr[ch-2*192];
02711 supmod = 3;
02712 break;
02713 case 3:
02714 col = 17 - imirr[ch-3*192];
02715 row = 73 - jmirr[ch-3*192];
02716 supmod = 3;
02717 break;
02718 case 4:
02719 col = 17 - imirr[ch-4*192];
02720 row = 49 - jmirr[ch-4*192];
02721 supmod = 3;
02722 break;
02723 case 5:
02724 col = 17 - imirr[ch-5*192];
02725 row = 25 - jmirr[ch-5*192];
02726 supmod = 3;
02727 break;
02728 case 6:
02729 col = imirr[ch-6*192];
02730 row = jmirr[ch-6*192];
02731 supmod = 3;
02732 break;
02733 case 7:
02734 col = imirr[ch-7*192];
02735 row = 24 + jmirr[ch-7*192];
02736 supmod = 3;
02737 break;
02738 case 8:
02739 col = imirr[ch-8*192];
02740 row = 48 + jmirr[ch-8*192];
02741 supmod = 3;
02742 break;
02743 }
02744 break;
02745 case 8:
02746 case 10:
02747 case 11:
02748 case 12:
02749 switch(zone)
02750 {
02751 case 0:
02752 col = 16 + imirr[ch];
02753 row = jmirr[ch];
02754 supmod = 3;
02755 break;
02756 case 1:
02757 col = 16 + imirr[ch-192];
02758 row = 24 + jmirr[ch-192];
02759 supmod = 3;
02760 break;
02761 case 2:
02762 col = 16 + imirr[ch-2*192];
02763 row = 48 + jmirr[ch-2*192];
02764 supmod = 3;
02765 break;
02766 case 3:
02767 col = 17 - imirr[ch-3*192];
02768 row = 73 - jmirr[ch-3*192];
02769 supmod = 3;
02770 break;
02771 case 4:
02772 col = 17 - imirr[ch-4*192];
02773 row = 49 - jmirr[ch-4*192];
02774 supmod = 3;
02775 break;
02776 case 5:
02777 col = 17 - imirr[ch-5*192];
02778 row = 25 - jmirr[ch-5*192];
02779 supmod = 3;
02780 break;
02781 case 6:
02782 col = imirr[ch-6*192];
02783 row = jmirr[ch-6*192];
02784 supmod = 3;
02785 break;
02786 case 7:
02787 col = imirr[ch-7*192];
02788 row = 24 + jmirr[ch-7*192];
02789 supmod = 3;
02790 break;
02791 case 8:
02792 col = imirr[ch-8*192];
02793 row = 48 + jmirr[ch-8*192];
02794 supmod = 3;
02795 break;
02796 }
02797 break;
02798 }
02799 }
02800 void StPmdGeom::chain4(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
02801 {
02802
02803 Int_t zone = ch/192;
02804 switch(year){
02805 case 6:
02806
02807 switch(zone)
02808 {
02809 case 0:
02810 col = 48 + inorm[ch];
02811 row = 24 + jnorm[ch];
02812 supmod = 2;
02813 break;
02814 case 1:
02815 col = 24 + inorm[ch-192];
02816 row = 24 + jnorm[ch-192];
02817 supmod = 2;
02818 break;
02819 case 2:
02820 col = inorm[ch-2*192];
02821 row = 24 + jnorm[ch-2*192];
02822 supmod = 2;
02823 break;
02824 case 3:
02825 col = 25 - inorm[ch-3*192];
02826 row = 41 - jnorm[ch-3*192];
02827 supmod = 2;
02828 break;
02829 case 4:
02830 col = 49 - inorm[ch-4*192];
02831 row = 41 - jnorm[ch-4*192];
02832 supmod = 2;
02833 break;
02834 case 5:
02835 col = 73 - inorm[ch-5*192];
02836 row = 41 - jnorm[ch-5*192];
02837 supmod = 2;
02838 break;
02839 case 6:
02840 col = 48 + inorm[ch-6*192];
02841 row = 40 + jnorm[ch-6*192];
02842 supmod = 2;
02843 break;
02844 case 7:
02845 col = 24 + inorm[ch-7*192];
02846 row = 40 + jnorm[ch-7*192];
02847 supmod = 2;
02848 break;
02849 case 8:
02850 col = inorm[ch-8*192];
02851 row = 40 + jnorm[ch-8*192];
02852 supmod = 2;
02853 break;
02854 }
02855 break;
02856 case 8:
02857 case 10:
02858 case 11:
02859 case 12:
02860 switch(zone)
02861 {
02862 case 0:
02863 col = 48 + inorm[ch];
02864 row = 24 + jnorm[ch];
02865 supmod = 2;
02866 break;
02867 case 1:
02868 col = 24 + inorm[ch-192];
02869 row = 24 + jnorm[ch-192];
02870 supmod = 2;
02871 break;
02872 case 2:
02873 col = inorm[ch-2*192];
02874 row = 24 + jnorm[ch-2*192];
02875 supmod = 2;
02876 break;
02877 case 3:
02878 col = 25 - inorm[ch-3*192];
02879 row = 41 - jnorm[ch-3*192];
02880 supmod = 2;
02881 break;
02882 case 4:
02883 col = 49 - inorm[ch-4*192];
02884 row = 41 - jnorm[ch-4*192];
02885 supmod = 2;
02886 break;
02887 case 5:
02888 col = 73 - inorm[ch-5*192];
02889 row = 41 - jnorm[ch-5*192];
02890 supmod = 2;
02891 break;
02892 case 6:
02893 col = 48 + inorm[ch-6*192];
02894 row = 40 + jnorm[ch-6*192];
02895 supmod = 2;
02896 break;
02897 case 7:
02898 col = 24 + inorm[ch-7*192];
02899 row = 40 + jnorm[ch-7*192];
02900 supmod = 2;
02901 break;
02902 case 8:
02903 col = inorm[ch-8*192];
02904 row = 40 + jnorm[ch-8*192];
02905 supmod = 2;
02906 break;
02907 }
02908
02909 }
02910 }
02911 void StPmdGeom::chain5(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
02912 {
02913 Int_t zone = ch/192;
02914 switch(year){
02915 case 6:
02916
02917 switch(zone)
02918 {
02919 case 0:
02920 col = 40 + imirr[ch];
02921 row = jmirr[ch];
02922 supmod = 3;
02923 break;
02924 case 1:
02925 col = 40 + imirr[ch-192];
02926 row = 24 + jmirr[ch-192];
02927 supmod = 3;
02928 break;
02929 case 2:
02930 col = 40 + imirr[ch-2*192];
02931 row = 48 + jmirr[ch-2*192];
02932 supmod = 3;
02933 break;
02934 case 3:
02935 col = 41 - imirr[ch-3*192];
02936 row = 73 - jmirr[ch-3*192];
02937 supmod = 3;
02938 break;
02939 case 4:
02940 col = 41 - imirr[ch-4*192];
02941 row = 49 - jmirr[ch-4*192];
02942 supmod = 3;
02943 break;
02944 case 5:
02945 col = 41 - imirr[ch-5*192];
02946 row = 25 - jmirr[ch-5*192];
02947 supmod = 3;
02948 break;
02949 case 6:
02950 col = 24 + imirr[ch-6*192];
02951 row = jmirr[ch-6*192];
02952 supmod = 3;
02953 break;
02954 case 7:
02955 col = 24 + imirr[ch-7*192];
02956 row = 24 + jmirr[ch-7*192];
02957 supmod = 3;
02958 break;
02959 case 8:
02960 col = 24 + imirr[ch-8*192];
02961 row = 48 + jmirr[ch-8*192];
02962 supmod = 3;
02963 break;
02964 }
02965 break;
02966 case 8:
02967 case 10:
02968 case 11:
02969 case 12:
02970 switch(zone)
02971 {
02972 case 0:
02973 col = 40 + imirr[ch];
02974 row = jmirr[ch];
02975 supmod = 3;
02976 break;
02977 case 1:
02978 col = 40 + imirr[ch-192];
02979 row = 24 + jmirr[ch-192];
02980 supmod = 3;
02981 break;
02982 case 2:
02983 col = 40 + imirr[ch-2*192];
02984 row = 48 + jmirr[ch-2*192];
02985 supmod = 3;
02986 break;
02987 case 3:
02988 col = 41 - imirr[ch-3*192];
02989 row = 73 - jmirr[ch-3*192];
02990 supmod = 3;
02991 break;
02992 case 4:
02993 col = 41 - imirr[ch-4*192];
02994 row = 49 - jmirr[ch-4*192];
02995 supmod = 3;
02996 break;
02997 case 5:
02998 col = 41 - imirr[ch-5*192];
02999 row = 25 - jmirr[ch-5*192];
03000 supmod = 3;
03001 break;
03002 case 6:
03003 col = 24 + imirr[ch-6*192];
03004 row = jmirr[ch-6*192];
03005 supmod = 3;
03006 break;
03007 case 7:
03008 col = 24 + imirr[ch-7*192];
03009 row = 24 + jmirr[ch-7*192];
03010 supmod = 3;
03011 break;
03012 case 8:
03013 col = 24 + imirr[ch-8*192];
03014 row = 48 + jmirr[ch-8*192];
03015 supmod = 3;
03016 break;
03017 }
03018 break;
03019 }
03020 }
03021 void StPmdGeom::chain6(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03022 {
03023 supmod = 0;
03024 col = 0;
03025 row = 0;
03026 }
03027 void StPmdGeom::chain7(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03028 {
03029 Int_t zone = ch/192;
03030 switch(year){
03031 case 6:
03032
03033 switch(zone)
03034 {
03035 case 0:
03036 col = 48 + inorm[ch];
03037 row = jnorm[ch];
03038 supmod = 4;
03039 break;
03040 case 1:
03041 col = 24 + inorm[ch-192];
03042 row = jnorm[ch-192];
03043 supmod = 4;
03044 break;
03045 case 2:
03046 col = inorm[ch-2*192];
03047 row = jnorm[ch-2*192];
03048 supmod = 4;
03049 break;
03050 case 3:
03051 col = 25 - inorm[ch-3*192];
03052 row = 17 - jnorm[ch-3*192];
03053 supmod = 4;
03054 break;
03055 case 4:
03056 col = 49 - inorm[ch-4*192];
03057 row = 17 - jnorm[ch-4*192];
03058 supmod = 4;
03059 break;
03060 case 5:
03061 col = 73 - inorm[ch-5*192];
03062 row = 17 - jnorm[ch-5*192];
03063 supmod = 4;
03064 break;
03065 case 6:
03066 col = 40 + inorm[ch-6*192];
03067 row = 16 + jnorm[ch-6*192];
03068 supmod = 4;
03069 break;
03070 case 7:
03071 col = 24 + inorm[ch-7*192];
03072 row = 24 + jnorm[ch-7*192];
03073 supmod = 4;
03074 break;
03075 case 8:
03076 col = inorm[ch-8*192];
03077 row = 24 + jnorm[ch-8*192];
03078 supmod = 4;
03079 break;
03080 }
03081 break;
03082 case 8:
03083
03084 switch(zone)
03085 {
03086 case 0:
03087 col = 48 + inorm[ch];
03088 row = jnorm[ch];
03089 supmod = 4;
03090 break;
03091 case 1:
03092 col = 24 + inorm[ch-192];
03093 row = jnorm[ch-192];
03094 supmod = 4;
03095 break;
03096 case 2:
03097 col = inorm[ch-2*192];
03098 row = jnorm[ch-2*192];
03099 supmod = 4;
03100 break;
03101 case 3:
03102 col = 25 - inorm[ch-3*192];
03103 row = 17 - jnorm[ch-3*192];
03104 supmod = 4;
03105 break;
03106 case 4:
03107 col = 49 - inorm[ch-4*192];
03108 row = 17 - jnorm[ch-4*192];
03109 supmod = 4;
03110 break;
03111 case 5:
03112 col = 73 - inorm[ch-5*192];
03113 row = 17 - jnorm[ch-5*192];
03114 supmod = 4;
03115 break;
03116 case 6:
03117 col = 48 + inorm[ch-6*192];
03118 row = 16 + jnorm[ch-6*192];
03119 supmod = 4;
03120 break;
03121 case 7:
03122 col = 24 + inorm[ch-7*192];
03123 row = 16 + jnorm[ch-7*192];
03124 supmod = 4;
03125 break;
03126 case 8:
03127 col = inorm[ch-8*192];
03128 row = 16 + jnorm[ch-8*192];
03129 supmod = 4;
03130 break;
03131 case 9:
03132 col = 48 + inorm[ch-9*192];
03133 row = 24 + jnorm[ch-9*192];
03134 supmod = 4;
03135 break;
03136 case 10:
03137 col = 24 + inorm[ch-10*192];
03138 row = 24 + jnorm[ch-10*192];
03139 supmod = 4;
03140 break;
03141 case 11:
03142 col = inorm[ch-11*192];
03143 row = 24 + jnorm[ch-11*192];
03144 supmod = 4;
03145 break;
03146 }
03147 break;
03148 case 10:
03149 case 11:
03150 case 12:
03151 switch(zone)
03152 {
03153 case 0:
03154 col = 48 + inorm[ch];
03155 row = jnorm[ch];
03156 supmod = 4;
03157 break;
03158 case 1:
03159 col = 24 + inorm[ch-192];
03160 row = jnorm[ch-192];
03161 supmod = 4;
03162 break;
03163 case 2:
03164 col = inorm[ch-2*192];
03165 row = jnorm[ch-2*192];
03166 supmod = 4;
03167 break;
03168 case 3:
03169 col = 25 - inorm[ch-3*192];
03170 row = 17 - jnorm[ch-3*192];
03171 supmod = 4;
03172 break;
03173 case 4:
03174 col = 49 - inorm[ch-4*192];
03175 row = 17 - jnorm[ch-4*192];
03176 supmod = 4;
03177 break;
03178 case 5:
03179 col = 73 - inorm[ch-5*192];
03180 row = 17 - jnorm[ch-5*192];
03181 supmod = 4;
03182 break;
03183 case 6:
03184 col = 48 + inorm[ch-6*192];
03185 row = 16 + jnorm[ch-6*192];
03186 supmod = 4;
03187 break;
03188 case 7:
03189 col = 24 + inorm[ch-7*192];
03190 row = 16 + jnorm[ch-7*192];
03191 supmod = 4;
03192 break;
03193 case 8:
03194 col = inorm[ch-8*192];
03195 row = 16 + jnorm[ch-8*192];
03196 supmod = 4;
03197 break;
03198 }
03199 break;
03200 }
03201 }
03202
03203 void StPmdGeom::chain8(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03204 {
03205 Int_t zone = ch/192;
03206 switch(year){
03207 case 6:
03208
03209 switch(zone)
03210 {
03211 case 0:
03212 col = 48 + inorm[ch];
03213 row = jnorm[ch];
03214 supmod = 5;
03215 break;
03216 case 1:
03217 col = 24 + inorm[ch-192];
03218 row = jnorm[ch-192];
03219 supmod = 5;
03220 break;
03221 case 2:
03222 col = inorm[ch-2*192];
03223 row = jnorm[ch-2*192];
03224 supmod = 5;
03225 break;
03226 case 3:
03227 col = 25 - inorm[ch-3*192];
03228 row = 17 - jnorm[ch-3*192];
03229 supmod = 5;
03230 break;
03231 case 4:
03232 col = 49 - inorm[ch-4*192];
03233 row = 17 - jnorm[ch-4*192];
03234 supmod = 5;
03235 break;
03236 case 5:
03237 col = 73 - inorm[ch-5*192];
03238 row = 17 - jnorm[ch-5*192];
03239 supmod = 5;
03240 break;
03241 case 6:
03242 col = 48 + inorm[ch-6*192];
03243 row = 16 + jnorm[ch-6*192];
03244 supmod = 5;
03245 break;
03246 case 7:
03247 col = 24 + inorm[ch-7*192];
03248 row = 16 + jnorm[ch-7*192];
03249 supmod = 5;
03250 break;
03251 case 8:
03252 col = inorm[ch-8*192];
03253 row = 16 + jnorm[ch-8*192];
03254 supmod = 5;
03255 break;
03256 }
03257 break;
03258 case 8:
03259
03260 switch(zone)
03261 {
03262 case 0:
03263 col = 48 + inorm[ch];
03264 row = jnorm[ch];
03265 supmod = 5;
03266 break;
03267 case 1:
03268 col = 24 + inorm[ch-192];
03269 row = jnorm[ch-192];
03270 supmod = 5;
03271 break;
03272 case 2:
03273 col = inorm[ch-2*192];
03274 row = jnorm[ch-2*192];
03275 supmod = 5;
03276 break;
03277 case 3:
03278 col = 25 - inorm[ch-3*192];
03279 row = 17 - jnorm[ch-3*192];
03280 supmod = 5;
03281 break;
03282 case 4:
03283 col = 49 - inorm[ch-4*192];
03284 row = 17 - jnorm[ch-4*192];
03285 supmod = 5;
03286 break;
03287 case 5:
03288 col = 73 - inorm[ch-5*192];
03289 row = 17 - jnorm[ch-5*192];
03290 supmod = 5;
03291 break;
03292 case 6:
03293 col = 48 + inorm[ch-6*192];
03294 row = 16 + jnorm[ch-6*192];
03295 supmod = 5;
03296 break;
03297 case 7:
03298 col = 24 + inorm[ch-7*192];
03299 row = 16 + jnorm[ch-7*192];
03300 supmod = 5;
03301 break;
03302 case 8:
03303 col = inorm[ch-8*192];
03304 row = 16 + jnorm[ch-8*192];
03305 supmod = 5;
03306 break;
03307 }
03308 break;
03309 case 10:
03310 case 11:
03311 case 12:
03312 switch(zone)
03313 {
03314 case 0:
03315 col = 48 + inorm[ch];
03316 row = 40 + jnorm[ch];
03317 supmod = 5;
03318 break;
03319 case 1:
03320 col = 73 - inorm[ch-192];
03321 row = 41 - jnorm[ch-192];
03322 supmod = 5;
03323 break;
03324 case 2:
03325 col = 48 + inorm[ch-2*192];
03326 row = 24 + jnorm[ch-2*192];
03327 supmod = 5;
03328 break;
03329 case 3:
03330 col = 48 + inorm[ch-3*192];
03331 row = 16 + jnorm[ch-3*192];
03332 supmod = 5;
03333 break;
03334 case 4:
03335 col = 24 + inorm[ch-4*192];
03336 row = 16 + jnorm[ch-4*192];
03337 supmod = 5;
03338 break;
03339 case 5:
03340 col = inorm[ch-5*192];
03341 row = 16 + jnorm[ch-5*192];
03342 supmod = 5;
03343 break;
03344 case 6:
03345 col = 25 - inorm[ch-6*192];
03346 row = 17 - jnorm[ch-6*192];
03347 supmod = 5;
03348 break;
03349 case 7:
03350 col = 49 - inorm[ch-7*192];
03351 row = 17 - jnorm[ch-7*192];
03352 supmod = 5;
03353 break;
03354 case 8:
03355 col = 73 - inorm[ch-8*192];
03356 row = 17 - jnorm[ch-8*192];
03357 supmod = 5;
03358 break;
03359 case 9:
03360 col = 48 + inorm[ch-9*192];
03361 row = jnorm[ch-9*192];
03362 supmod = 5;
03363 break;
03364 case 10:
03365 col = 24 + inorm[ch-10*192];
03366 row = jnorm[ch-10*192];
03367 supmod = 5;
03368 break;
03369 case 11:
03370 col = inorm[ch-11*192];
03371 row = jnorm[ch-11*192];
03372 supmod = 5;
03373 break;
03374 }
03375 break;
03376 }
03377 }
03378
03379 void StPmdGeom::chain9(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03380 {
03381 Int_t zone = ch/192;
03382 switch(year){
03383 case 6:
03384
03385 switch(zone)
03386 {
03387 case 0:
03388 col = 48 + inorm[ch];
03389 row = 48 + jnorm[ch];
03390 supmod = 4;
03391 break;
03392 case 1:
03393 col = 73 - inorm[ch-192];
03394 row = 65 - jnorm[ch-192];
03395 supmod = 4;
03396 break;
03397 case 2:
03398 col = 48 + inorm[ch-2*192];
03399 row = 64 + jnorm[ch-2*192];
03400 supmod = 4;
03401 break;
03402 case 3:
03403 col = 25 - inorm[ch-3*192];
03404 row = 25 - jnorm[ch-3*192];
03405 supmod = 6;
03406 break;
03407 case 4:
03408 col = 49 - inorm[ch-4*192];
03409 row = 25 - jnorm[ch-4*192];
03410 supmod = 6;
03411 break;
03412 case 5:
03413 col = 24 + inorm[ch-5*192];
03414 row = 8 + jnorm[ch-5*192];
03415 supmod = 6;
03416 break;
03417 case 6:
03418 col = inorm[ch-6*192];
03419 row = 8 + jnorm[ch-6*192];
03420 supmod = 6;
03421 break;
03422 case 7:
03423 col = 25 - inorm[ch-7*192];
03424 row = 9 - jnorm[ch-7*192];
03425 supmod = 6;
03426 break;
03427 case 8:
03428 col = 49 - inorm[ch-8*192];
03429 row = 9 - jnorm[ch-8*192];
03430 supmod = 6;
03431 break;
03432 }
03433 break;
03434 case 8:
03435
03436 switch(zone)
03437 {
03438 case 0:
03439 col = 48 + inorm[ch];
03440 row = 48 + jnorm[ch];
03441 supmod = 4;
03442 break;
03443 case 1:
03444 col = 73 - inorm[ch-192];
03445 row = 65 - jnorm[ch-192];
03446 supmod = 4;
03447 break;
03448 case 2:
03449 col = 48 + inorm[ch-2*192];
03450 row = 64 + jnorm[ch-2*192];
03451 supmod = 4;
03452 break;
03453 case 3:
03454 col = 25 - inorm[ch-3*192];
03455 row = 25 - jnorm[ch-3*192];
03456 supmod = 6;
03457 break;
03458 case 4:
03459 col = 49 - inorm[ch-4*192];
03460 row = 25 - jnorm[ch-4*192];
03461 supmod = 6;
03462 break;
03463 case 5:
03464 col = 24 + inorm[ch-5*192];
03465 row = 8 + jnorm[ch-5*192];
03466 supmod = 6;
03467 break;
03468 case 6:
03469 col = inorm[ch-6*192];
03470 row = 8 + jnorm[ch-6*192];
03471 supmod = 6;
03472 break;
03473 case 7:
03474 col = 25 - inorm[ch-7*192];
03475 row = 9 - jnorm[ch-7*192];
03476 supmod = 6;
03477 break;
03478 case 8:
03479 col = 49 - inorm[ch-8*192];
03480 row = 9 - jnorm[ch-8*192];
03481 supmod = 6;
03482 break;
03483 }
03484 break;
03485 case 10:
03486 case 11:
03487 case 12:
03488 switch(zone){
03489 case 0:
03490 col = 48+inorm[ch];
03491 row = 40+jnorm[ch];
03492 supmod = 4;
03493 break;
03494 case 1:
03495 col = 24+inorm[ch-192];
03496 row = 40+jnorm[ch-192];
03497 supmod = 4;
03498 break;
03499 case 2:
03500 col = inorm[ch-2*192];
03501 row = 40+jnorm[ch-2*192];
03502 supmod = 4;
03503 break;
03504 case 3:
03505 col = 25 - inorm[ch-3*192];
03506 row = 41 - jnorm[ch-3*192];
03507 supmod = 4;
03508 break;
03509 case 4:
03510 col = 49 - inorm[ch-4*192];
03511 row = 41 - jnorm[ch-4*192];
03512 supmod = 4;
03513 break;
03514 case 5:
03515 col = 73 - inorm[ch-5*192];
03516 row = 41 - jnorm[ch-5*192];
03517 supmod = 4;
03518 break;
03519 case 6:
03520 col = 48+inorm[ch-6*192];
03521 row = 24+jnorm[ch-6*192];
03522 supmod = 4;
03523 break;
03524 case 7:
03525 col = 24+inorm[ch-7*192];
03526 row = 24+jnorm[ch-7*192];
03527 supmod = 4;
03528 break;
03529 case 8:
03530 col = inorm[ch-8*192];
03531 row = 24+jnorm[ch-8*192];
03532 supmod = 4;
03533 break;
03534 }
03535 break;
03536 }
03537 }
03538
03539 void StPmdGeom::chain10(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03540 {
03541 Int_t zone = ch/192;
03542 switch(year){
03543 case 6:
03544
03545 switch(zone)
03546 {
03547 case 0:
03548 col = 48 + inorm[ch];
03549 row = 24 + jnorm[ch];
03550 supmod = 5;
03551 break;
03552 case 1:
03553 col = 24 + inorm[ch-192];
03554 row = 24 + jnorm[ch-192];
03555 supmod = 5;
03556 break;
03557 case 2:
03558 col = inorm[ch-2*192];
03559 row = 24 + jnorm[ch-2*192];
03560 supmod = 5;
03561 break;
03562 case 3:
03563 col = 25 - inorm[ch-3*192];
03564 row = 41 - jnorm[ch-3*192];
03565 supmod = 5;
03566 break;
03567 case 4:
03568 col = 49 - inorm[ch-4*192];
03569 row = 41 - jnorm[ch-4*192];
03570 supmod = 5;
03571 break;
03572 case 5:
03573 col = 73 - inorm[ch-5*192];
03574 row = 41 - jnorm[ch-5*192];
03575 supmod = 5;
03576 break;
03577 case 6:
03578 col = 48 + inorm[ch-6*192];
03579 row = 40 + jnorm[ch-6*192];
03580 supmod = 5;
03581 break;
03582 case 7:
03583 col = 24 + inorm[ch-7*192];
03584 row = 40 + jnorm[ch-7*192];
03585 supmod = 5;
03586 break;
03587 case 8:
03588 col = inorm[ch-8*192];
03589 row = 40 + jnorm[ch-8*192];
03590 supmod = 5;
03591 break;
03592 }
03593 break;
03594 case 8:
03595
03596 switch(zone)
03597 {
03598 case 0:
03599 col = 48 + inorm[ch];
03600 row = 24 + jnorm[ch];
03601 supmod = 5;
03602 break;
03603 case 1:
03604 col = 24 + inorm[ch-192];
03605 row = 24 + jnorm[ch-192];
03606 supmod = 5;
03607 break;
03608 case 2:
03609 col = inorm[ch-2*192];
03610 row = 24 + jnorm[ch-2*192];
03611 supmod = 5;
03612 break;
03613 case 3:
03614 col = 25 - inorm[ch-3*192];
03615 row = 41 - jnorm[ch-3*192];
03616 supmod = 5;
03617 break;
03618 case 4:
03619 col = 49 - inorm[ch-4*192];
03620 row = 41 - jnorm[ch-4*192];
03621 supmod = 5;
03622 break;
03623 case 5:
03624 col = 73 - inorm[ch-5*192];
03625 row = 41 - jnorm[ch-5*192];
03626 supmod = 5;
03627 break;
03628 case 6:
03629 col = 48 + inorm[ch-6*192];
03630 row = 40 + jnorm[ch-6*192];
03631 supmod = 5;
03632 break;
03633 case 7:
03634 col = 24 + inorm[ch-7*192];
03635 row = 40 + jnorm[ch-7*192];
03636 supmod = 5;
03637 break;
03638 case 8:
03639 col = inorm[ch-8*192];
03640 row = 40 + jnorm[ch-8*192];
03641 supmod = 5;
03642 break;
03643 }
03644 break;
03645 case 10:
03646 case 11:
03647 case 12:
03648 switch(zone)
03649 {
03650 case 0:
03651 col = 24 + inorm[ch];
03652 row = 24 + jnorm[ch];
03653 supmod = 5;
03654 break;
03655 case 1:
03656 col = inorm[ch-192];
03657 row = 24 + jnorm[ch-192];
03658 supmod = 5;
03659 break;
03660 case 2:
03661 col = 25 - inorm[ch-2*192];
03662 row = 41 - jnorm[ch-2*192];
03663 supmod = 5;
03664 break;
03665 case 3:
03666 col = 49 - inorm[ch-3*192];
03667 row = 41 - jnorm[ch-3*192];
03668 supmod = 5;
03669 break;
03670 case 4:
03671 col = 24 + inorm[ch-4*192];
03672 row = 40 + jnorm[ch-4*192];
03673 supmod = 5;
03674 break;
03675 case 5:
03676 col = inorm[ch-5*192];
03677 row = 40 + jnorm[ch-5*192];
03678 supmod = 5;
03679 break;
03680 case 6:
03681 col = 25 - inorm[ch-6*192];
03682 row = 9 - jnorm[ch-6*192];
03683 supmod = 6;
03684 break;
03685 case 7:
03686 col = inorm[ch-7*192];
03687 row = 8 + jnorm[ch-7*192];
03688 supmod = 6;
03689 break;
03690 case 8:
03691 col = 25 - inorm[ch-8*192];
03692 row = 25 - jnorm[ch-8*192];
03693 supmod = 6;
03694 break;
03695 }
03696 break;
03697 }
03698 }
03699 void StPmdGeom::chain11(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03700 {
03701 Int_t zone = ch/192;
03702 switch(year){
03703 case 6:
03704
03705 switch(zone)
03706 {
03707 case 0:
03708 col = 24 + inorm[ch];
03709 row = 48 + jnorm[ch];
03710 supmod = 4;
03711 break;
03712 case 1:
03713 col = 49 - inorm[ch-192];
03714 row = 65 - jnorm[ch-192];
03715 supmod = 4;
03716 break;
03717 case 2:
03718 col = 24 + inorm[ch-2*192];
03719 row = 64 + jnorm[ch-2*192];
03720 supmod = 4;
03721 break;
03722 case 3:
03723 col = 25 - inorm[ch-3*192];
03724 row = 49 - jnorm[ch-3*192];
03725 supmod = 6;
03726 break;
03727 case 4:
03728 col = 49 - inorm[ch-4*192];
03729 row = 49 - jnorm[ch-4*192];
03730 supmod = 6;
03731 break;
03732 case 5:
03733 col = 24 + inorm[ch-5*192];
03734 row = 32 + jnorm[ch-5*192];
03735 supmod = 6;
03736 break;
03737 case 6:
03738 col = inorm[ch-6*192];
03739 row = 32 + jnorm[ch-6*192];
03740 supmod = 6;
03741 break;
03742 case 7:
03743 col = 25 - inorm[ch-7*192];
03744 row = 33 - jnorm[ch-7*192];
03745 supmod = 6;
03746 break;
03747 case 8:
03748 col = 49 - inorm[ch-8*192];
03749 row = 33 - jnorm[ch-8*192];
03750 supmod = 6;
03751 break;
03752 }
03753 break;
03754 case 8:
03755
03756 switch(zone)
03757 {
03758 case 0:
03759 col = 24 + inorm[ch];
03760 row = 48 + jnorm[ch];
03761 supmod = 4;
03762 break;
03763 case 1:
03764 col = 49 - inorm[ch-192];
03765 row = 65 - jnorm[ch-192];
03766 supmod = 4;
03767 break;
03768 case 2:
03769 col = 24 + inorm[ch-2*192];
03770 row = 64 + jnorm[ch-2*192];
03771 supmod = 4;
03772 break;
03773 case 3:
03774 col = 25 - inorm[ch-3*192];
03775 row = 49 - jnorm[ch-3*192];
03776 supmod = 6;
03777 break;
03778 case 4:
03779 col = 49 - inorm[ch-4*192];
03780 row = 49 - jnorm[ch-4*192];
03781 supmod = 6;
03782 break;
03783 case 5:
03784 col = 24 + inorm[ch-5*192];
03785 row = 32 + jnorm[ch-5*192];
03786 supmod = 6;
03787 break;
03788 case 6:
03789 col = inorm[ch-6*192];
03790 row = 32 + jnorm[ch-6*192];
03791 supmod = 6;
03792 break;
03793 case 7:
03794 col = 25 - inorm[ch-7*192];
03795 row = 33 - jnorm[ch-7*192];
03796 supmod = 6;
03797 break;
03798 case 8:
03799 col = 49 - inorm[ch-8*192];
03800 row = 33 - jnorm[ch-8*192];
03801 supmod = 6;
03802 break;
03803 }
03804 break;
03805 case 10:
03806 case 11:
03807 case 12:
03808 switch(zone)
03809 {
03810 case 0:
03811 col = 48 + inorm[ch];
03812 row = 48 + jnorm[ch];
03813 supmod = 4;
03814 break;
03815 case 1:
03816 col = 24 + inorm[ch-192];
03817 row = 48 + jnorm[ch-192];
03818 supmod = 4;
03819 break;
03820 case 2:
03821 col = 49 - inorm[ch-2*192];
03822 row = 65 - jnorm[ch-2*192];
03823 supmod = 4;
03824 break;
03825 case 3:
03826 col = 73 - inorm[ch-3*192];
03827 row = 65 - jnorm[ch-3*192];
03828 supmod = 4;
03829 break;
03830 case 4:
03831 col = 48 + inorm[ch-4*192];
03832 row = 64 + jnorm[ch-4*192];
03833 supmod = 4;
03834 break;
03835 case 5:
03836 col = 24 + inorm[ch-5*192];
03837 row = 64 + jnorm[ch-5*192];
03838 supmod = 4;
03839 break;
03840 case 6:
03841 col = 25 - inorm[ch-6*192];
03842 row = 49 - jnorm[ch-6*192];
03843 supmod = 6;
03844 break;
03845 case 7:
03846 col = inorm[ch-7*192];
03847 row = 32 + jnorm[ch-7*192];
03848 supmod = 6;
03849 break;
03850 case 8:
03851 col = 25 - inorm[ch-8*192];
03852 row = 33 - jnorm[ch-8*192];
03853 supmod = 6;
03854 break;
03855 }
03856 break;
03857 }
03858 }
03859
03860 void StPmdGeom::chain12(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
03861 {
03862 Int_t zone = ch/192;
03863 switch(year){
03864 case 6:
03865
03866 switch(zone)
03867 {
03868 case 0:
03869 col = 25 - inorm[ch];
03870 row = 25 - jnorm[ch];
03871 supmod = 7;
03872 break;
03873 case 1:
03874 col = 49 - inorm[ch-192];
03875 row = 25 - jnorm[ch-192];
03876 supmod = 7;
03877 break;
03878 case 2:
03879 col = 24 + inorm[ch-2*192];
03880 row = 8 + jnorm[ch-2*192];
03881 supmod = 7;
03882 break;
03883 case 3:
03884 col = inorm[ch-3*192];
03885 row = 8 + jnorm[ch-3*192];
03886 supmod = 7;
03887 break;
03888 case 4:
03889 col = 25 - inorm[ch-4*192];
03890 row = 9 - jnorm[ch-4*192];
03891 supmod = 7;
03892 break;
03893 case 5:
03894 col = 49 - inorm[ch-5*192];
03895 row = 9 - jnorm[ch-5*192];
03896 supmod = 7;
03897 break;
03898 }
03899 break;
03900 case 8:
03901
03902 switch(zone)
03903 {
03904 case 0:
03905 col = 25 - inorm[ch];
03906 row = 25 - jnorm[ch];
03907 supmod = 7;
03908 break;
03909 case 1:
03910 col = 49 - inorm[ch-192];
03911 row = 25 - jnorm[ch-192];
03912 supmod = 7;
03913 break;
03914 case 2:
03915 col = 24 + inorm[ch-2*192];
03916 row = 8 + jnorm[ch-2*192];
03917 supmod = 7;
03918 break;
03919 case 3:
03920 col = inorm[ch-3*192];
03921 row = 8 + jnorm[ch-3*192];
03922 supmod = 7;
03923 break;
03924 case 4:
03925 col = 25 - inorm[ch-4*192];
03926 row = 9 - jnorm[ch-4*192];
03927 supmod = 7;
03928 break;
03929 case 5:
03930 col = 49 - inorm[ch-5*192];
03931 row = 9 - jnorm[ch-5*192];
03932 supmod = 7;
03933 break;
03934 }
03935 break;
03936 case 10:
03937 case 11:
03938 case 12:
03939 switch(zone)
03940 {
03941 case 0:
03942 col = 25 - inorm[ch];
03943 row = 49 - jnorm[ch];
03944 supmod = 7;
03945 break;
03946 case 1:
03947 col = 49 - inorm[ch-192];
03948 row = 49 - jnorm[ch-192];
03949 supmod = 7;
03950 break;
03951 case 2:
03952 col = 24 + inorm[ch-2*192];
03953 row = 32 + jnorm[ch-2*192];
03954 supmod = 7;
03955 break;
03956 case 3:
03957 col = inorm[ch-3*192];
03958 row = 32 + jnorm[ch-3*192];
03959 supmod = 7;
03960 break;
03961 case 4:
03962 col = 25 - inorm[ch-4*192];
03963 row = 33 - jnorm[ch-4*192];
03964 supmod = 7;
03965 break;
03966 case 5:
03967 col = 49 - inorm[ch-5*192];
03968 row = 33 - jnorm[ch-5*192];
03969 supmod = 7;
03970 break;
03971 case 6:
03972 col = 25 - inorm[ch-6*192];
03973 row = 25 - jnorm[ch-6*192];
03974 supmod = 7;
03975 break;
03976 case 7:
03977 col = 49 - inorm[ch-7*192];
03978 row = 25 - jnorm[ch-7*192];
03979 supmod = 7;
03980 break;
03981 case 8:
03982 col = 24 + inorm[ch-8*192];
03983 row = 8 + jnorm[ch-8*192];
03984 supmod = 7;
03985 break;
03986 case 9:
03987 col = inorm[ch-9*192];
03988 row = 8 + jnorm[ch-9*192];
03989 supmod = 7;
03990 break;
03991 case 10:
03992 col = 25 -inorm[ch-10*192];
03993 row = 9 - jnorm[ch-10*192];
03994 supmod = 7;
03995 break;
03996 case 11:
03997 col = 49 -inorm[ch-11*192];
03998 row = 9 - jnorm[ch-11*192];
03999 supmod = 7;
04000 break;
04001 }
04002 break;
04003 }
04004 }
04005
04006 void StPmdGeom::chain13(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04007 {
04008 Int_t zone = ch/192;
04009 switch(year){
04010 case 6:
04011
04012 switch(zone)
04013 {
04014 case 0:
04015 col = 73 - inorm[ch];
04016 row = 9 - jnorm[ch];
04017 supmod = 6;
04018 break;
04019 case 1:
04020 col = 48 + inorm[ch-192];
04021 row = 8 + jnorm[ch-192];
04022 supmod = 6;
04023 break;
04024 case 2:
04025 col = 73 - inorm[ch-2*192];
04026 row = 25 - jnorm[ch-2*192];
04027 supmod = 6;
04028 break;
04029 case 3:
04030 col = 25 - inorm[ch-3*192];
04031 row = 49 - jnorm[ch-3*192];
04032 supmod = 7;
04033 break;
04034 case 4:
04035 col = 49 - inorm[ch-4*192];
04036 row = 49 - jnorm[ch-4*192];
04037 supmod = 7;
04038 break;
04039 case 5:
04040 col = 24 + inorm[ch-5*192];
04041 row = 32 + jnorm[ch-5*192];
04042 supmod = 7;
04043 break;
04044 case 6:
04045 col = inorm[ch-6*192];
04046 row = 32 + jnorm[ch-6*192];
04047 supmod = 7;
04048 break;
04049 case 7:
04050 col = 25 - inorm[ch-7*192];
04051 row = 33 - jnorm[ch-7*192];
04052 supmod = 7;
04053 break;
04054 case 8:
04055 col = 49 - inorm[ch-8*192];
04056 row = 33 - jnorm[ch-8*192];
04057 supmod = 7;
04058 break;
04059 }
04060 break;
04061 case 8:
04062
04063 switch(zone)
04064 {
04065 case 0:
04066 col = 73 - inorm[ch];
04067 row = 9 - jnorm[ch];
04068 supmod = 6;
04069 break;
04070 case 1:
04071 col = 48 + inorm[ch-192];
04072 row = 8 + jnorm[ch-192];
04073 supmod = 6;
04074 break;
04075 case 2:
04076 col = 73 - inorm[ch-2*192];
04077 row = 25 - jnorm[ch-2*192];
04078 supmod = 6;
04079 break;
04080 case 3:
04081 col = 25 - inorm[ch-3*192];
04082 row = 49 - jnorm[ch-3*192];
04083 supmod = 7;
04084 break;
04085 case 4:
04086 col = 49 - inorm[ch-4*192];
04087 row = 49 - jnorm[ch-4*192];
04088 supmod = 7;
04089 break;
04090 case 5:
04091 col = 24 + inorm[ch-5*192];
04092 row = 32 + jnorm[ch-5*192];
04093 supmod = 7;
04094 break;
04095 case 6:
04096 col = inorm[ch-6*192];
04097 row = 32 + jnorm[ch-6*192];
04098 supmod = 7;
04099 break;
04100 case 7:
04101 col = 25 - inorm[ch-7*192];
04102 row = 33 - jnorm[ch-7*192];
04103 supmod = 7;
04104 break;
04105 case 8:
04106 col = 49 - inorm[ch-8*192];
04107 row = 33 - jnorm[ch-8*192];
04108 supmod = 7;
04109 break;
04110 }
04111 break;
04112 case 10:
04113 case 11:
04114 case 12:
04115 switch(zone)
04116 {
04117 case 0:
04118 col = 49 - inorm[ch];
04119 row = 49 - jnorm[ch];
04120 supmod = 6;
04121 break;
04122 case 1:
04123 col = 24 + inorm[ch-192];
04124 row = 32 + jnorm[ch-192];
04125 supmod = 6;
04126 break;
04127 case 2:
04128 col = 49 - inorm[ch-2*192];
04129 row = 33 - jnorm[ch-2*192];
04130 supmod = 6;
04131 break;
04132 case 3:
04133 col = 49 - inorm[ch-3*192];
04134 row = 25 - jnorm[ch-3*192];
04135 supmod = 6;
04136 break;
04137 case 4:
04138 col = 73 - inorm[ch-4*192];
04139 row = 25 - jnorm[ch-4*192];
04140 supmod = 6;
04141 break;
04142 case 5:
04143 col = 48 + inorm[ch-5*192];
04144 row = 8 + jnorm[ch-5*192];
04145 supmod = 6;
04146 break;
04147 case 6:
04148 col = 24 + inorm[ch-6*192];
04149 row = 8 + jnorm[ch-6*192];
04150 supmod = 6;
04151 break;
04152 case 7:
04153 col = 49 - inorm[ch-7*192];
04154 row = 9 - jnorm[ch-7*192];
04155 supmod = 6;
04156 break;
04157 case 8:
04158 col = 73 - inorm[ch-8*192];
04159 row = 9 - jnorm[ch-8*192];
04160 supmod = 6;
04161 break;
04162 }
04163 break;
04164 }
04165 }
04166
04167 void StPmdGeom::chain14(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04168 {
04169 Int_t zone = ch/192;
04170 switch(year){
04171 case 6:
04172 supmod = 0;
04173 col = 0;
04174 row = 0;
04175 break;
04176 case 8:
04177 case 10:
04178 case 11:
04179 case 12:
04180 switch(zone)
04181 {
04182 case 0:
04183 col = 40 + imirr[ch];
04184 row = 73 - jmirr[ch];
04185 supmod = 8;
04186 break;
04187 case 1:
04188 col= 40 + imirr[ch-192];
04189 row= 49 - jmirr[ch-192];
04190 supmod = 8;
04191 break;
04192 case 2:
04193 col= 40 + imirr[ch-2*192];
04194 row= 25 - jmirr[ch-2*192];
04195 supmod = 8;
04196 break;
04197 case 3:
04198 col = 41 - imirr[ch-3*192];
04199 row = jmirr[ch-3*192];
04200 supmod = 8;
04201 break;
04202 case 4:
04203 col = 41 - imirr[ch-4*192];
04204 row = 24 + jmirr[ch-4*192];
04205 supmod = 8;
04206 break;
04207 case 5:
04208 col = 41 - imirr[ch-5*192];
04209 row = 48 + jmirr[ch-5*192];
04210 supmod = 8;
04211 break;
04212 case 6:
04213 col= 24 + imirr[ch-6*192];
04214 row= 73 - jmirr[ch-6*192];
04215 supmod = 8;
04216 break;
04217 case 7:
04218 col= 24 + imirr[ch-7*192];
04219 row= 49 - jmirr[ch-7*192];
04220 supmod = 8;
04221 break;
04222 case 8:
04223 col= 24 + imirr[ch-8*192];
04224 row= 25 - jmirr[ch-8*192];
04225 supmod = 8;
04226 break;
04227 }
04228 break;
04229 }
04230 }
04231
04232 void StPmdGeom::chain15(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04233 {
04234 Int_t zone = ch/192;
04235 switch(year){
04236 case 6:
04237
04238 switch(zone)
04239 {
04240 case 0:
04241 col = 40 + imirr[ch];
04242 row = jmirr[ch];
04243 supmod = 9;
04244 break;
04245 case 1:
04246 col = 40 + imirr[ch-192];
04247 row = 24 + jmirr[ch-192];
04248 supmod = 9;
04249 break;
04250 case 2:
04251 col = 41 - imirr[ch-2*192];
04252 row = 49 - jmirr[ch-2*192];
04253 supmod = 9;
04254 break;
04255 case 3:
04256 col = 41 - imirr[ch-3*192];
04257 row = 25 - jmirr[ch-3*192];
04258 supmod = 9;
04259 break;
04260 case 4:
04261 col = 24 + imirr[ch-4*192];
04262 row = jmirr[ch-4*192];
04263 supmod = 9;
04264 break;
04265 case 5:
04266 col = 24 + imirr[ch-5*192];
04267 row = 24 + jmirr[ch-5*192];
04268 supmod = 9;
04269 break;
04270 }
04271 break;
04272 case 8:
04273 case 10:
04274 case 11:
04275 case 12:
04276 switch(zone)
04277 {
04278 case 0:
04279 col = 40 + imirr[ch];
04280 row = jmirr[ch];
04281 supmod = 9;
04282 break;
04283 case 1:
04284 col = 40 + imirr[ch-192];
04285 row = 24 + jmirr[ch-192];
04286 supmod = 9;
04287 break;
04288 case 2:
04289 col = 41 - imirr[ch-2*192];
04290 row = 49 - jmirr[ch-2*192];
04291 supmod = 9;
04292 break;
04293 case 3:
04294 col = 41 - imirr[ch-3*192];
04295 row = 25 - jmirr[ch-3*192];
04296 supmod = 9;
04297 break;
04298 case 4:
04299 col = 24 + imirr[ch-4*192];
04300 row = jmirr[ch-4*192];
04301 supmod = 9;
04302 break;
04303 case 5:
04304 col = 24 + imirr[ch-5*192];
04305 row = 24 + jmirr[ch-5*192];
04306 supmod = 9;
04307 break;
04308 case 6:
04309 col = imirr[ch-6*192];
04310 row = jmirr[ch-6*192];
04311 supmod = 9;
04312 break;
04313 case 7:
04314 col = 8 + imirr[ch-7*192];
04315 row = 25 - jmirr[ch-7*192];
04316 supmod = 9;
04317 break;
04318 case 8:
04319 col = 16 + imirr[ch-8*192];
04320 row = jmirr[ch-8*192];
04321 supmod = 9;
04322 break;
04323 }
04324 break;
04325 }
04326 }
04327
04328 void StPmdGeom::chain16(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04329 {
04330 Int_t zone = ch/192;
04331 switch(year){
04332 case 6:
04333
04334 switch(zone)
04335 {
04336 case 0:
04337 col = 16 + imirr[ch];
04338 row = jmirr[ch];
04339 supmod = 9;
04340 break;
04341 case 1:
04342 col = 16 + imirr[ch-192];
04343 row = 24 + jmirr[ch-192];
04344 supmod = 9;
04345 break;
04346 case 2:
04347 col = 17 - imirr[ch-2*192];
04348 row = 49 - jmirr[ch-2*192];
04349 supmod = 9;
04350 break;
04351 case 3:
04352 col = 17 - imirr[ch-3*192];
04353 row = 25 - jmirr[ch-3*192];
04354 supmod = 9;
04355 break;
04356 case 4:
04357 col = imirr[ch-4*192];
04358 row = jmirr[ch-4*192];
04359 supmod = 9;
04360 break;
04361 case 5:
04362 col = imirr[ch-5*192];
04363 row = 24 + jmirr[ch-5*192];
04364 supmod = 9;
04365 break;
04366 }
04367 break;
04368 case 8:
04369 case 10:
04370 case 11:
04371 case 12:
04372 switch(zone)
04373 {
04374 case 0:
04375 col = 9 - imirr[ch];
04376 row = jmirr[ch];
04377 supmod = 8;
04378 break;
04379 case 1:
04380 col = 8 + imirr[ch-192];
04381 row = 25 - jmirr[ch-192];
04382 supmod = 8;
04383 break;
04384 case 2:
04385 col = 25 - imirr[ch-2*192];
04386 row = jmirr[ch-2*192];
04387 supmod = 8;
04388 break;
04389 case 3:
04390 col = 17 - imirr[ch-3*192];
04391 row = 24 + jmirr[ch-3*192];
04392 supmod = 8;
04393 break;
04394 case 4:
04395 col = 17 - imirr[ch-4*192];
04396 row = 48 + jmirr[ch-4*192];
04397 supmod = 8;
04398 break;
04399 case 5:
04400 col = 16 + imirr[ch-5*192];
04401 row = 73 - jmirr[ch-5*192];
04402 supmod = 8;
04403 break;
04404 case 6:
04405 col = 16 + imirr[ch-6*192];
04406 row = 49 - jmirr[ch-6*192];
04407 supmod = 8;
04408 break;
04409 case 7:
04410 col = imirr[ch-7*192];
04411 row = 73 - jmirr[ch-7*192];
04412 supmod = 8;
04413 break;
04414 case 8:
04415 col = imirr[ch-8*192];
04416 row = 49 - jmirr[ch-8*192];
04417 supmod = 8;
04418 break;
04419 }
04420 break;
04421 }
04422 }
04423
04424 void StPmdGeom::chain17(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04425 {
04426 Int_t zone = ch/192;
04427 switch(year){
04428 case 6:
04429
04430 switch(zone)
04431 {
04432 case 0:
04433 col = 48 + inorm[ch];
04434 row = 24 + jnorm[ch];
04435 supmod = 11;
04436 break;
04437 case 1:
04438 col = 24 + inorm[ch-192];
04439 row = 24 + jnorm[ch-192];
04440 supmod = 11;
04441 break;
04442 case 2:
04443 col = inorm[ch-2*192];
04444 row = 24 + jnorm[ch-2*192];
04445 supmod = 11;
04446 break;
04447 case 3:
04448 col = 25 - inorm[ch-3*192];
04449 row = 41 - jnorm[ch-3*192];
04450 supmod = 11;
04451 break;
04452 case 4:
04453 col = 49 - inorm[ch-4*192];
04454 row = 41 - jnorm[ch-4*192];
04455 supmod = 11;
04456 break;
04457 case 5:
04458 col = 73 - inorm[ch-5*192];
04459 row = 41 - jnorm[ch-5*192];
04460 supmod = 11;
04461 break;
04462 case 6:
04463 col = 48 + inorm[ch-6*192];
04464 row = 40 + jnorm[ch-6*192];
04465 supmod = 11;
04466 break;
04467 case 7:
04468 col = 24 + inorm[ch-7*192];
04469 row = 40 + jnorm[ch-7*192];
04470 supmod = 11;
04471 break;
04472 case 8:
04473 col = inorm[ch-8*192];
04474 row = 40 + jnorm[ch-8*192];
04475 supmod = 11;
04476 break;
04477 }
04478 break;
04479 case 8:
04480 supmod = 0;
04481 col = 0;
04482 row = 0;
04483 break;
04484 case 10:
04485 case 11:
04486 case 12:
04487 switch(zone)
04488 {
04489 case 0:
04490 col = 25 - inorm[ch];
04491 row = 33 - jnorm[ch];
04492 supmod = 11;
04493 break;
04494 case 1:
04495 col = 49 - inorm[ch-192];
04496 row = 33 - jnorm[ch-192];
04497 supmod = 11;
04498 break;
04499 case 2:
04500 col = 73 - inorm[ch-2*192];
04501 row = 33 - jnorm[ch-2*192];
04502 supmod = 11;
04503 break;
04504 case 3:
04505 col = 48 + inorm[ch-3*192];
04506 row = 32 + jnorm[ch-3*192];
04507 supmod = 11;
04508 break;
04509 case 4:
04510 col = 24 + inorm[ch-4*192];
04511 row = 32 + jnorm[ch-4*192];
04512 supmod = 11;
04513 break;
04514 case 5:
04515 col = inorm[ch-5*192];
04516 row = 32 + jnorm[ch-5*192];
04517 supmod = 11;
04518 break;
04519 case 6:
04520 col = 25 - inorm[ch-6*192];
04521 row = 49 - jnorm[ch-6*192];
04522 supmod = 11;
04523 break;
04524 case 7:
04525 col = 49 - inorm[ch-7*192];
04526 row = 49 - jnorm[ch-7*192];
04527 supmod = 11;
04528 break;
04529 case 8:
04530 col = 73 - inorm[ch-8*192];
04531 row = 49 - jnorm[ch-8*192];
04532 supmod = 11;
04533 break;
04534 }
04535 break;
04536 }
04537 }
04538
04539 void StPmdGeom::chain18(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04540 {
04541 Int_t zone = ch/192;
04542
04543 switch(year){
04544 case 6:
04545
04546 supmod = 0;
04547 col = 0;
04548 row = 0;
04549 break;
04550 case 8:
04551 case 10:
04552 case 11:
04553 case 12:
04554 switch(zone)
04555 {
04556 case 0:
04557 col = 64 + imirr[ch];
04558 row = 48 + jmirr[ch];
04559 supmod = 10;
04560 break;
04561 case 1:
04562 col = 65 - imirr[ch-192];
04563 row = 73 - jmirr[ch-192];
04564 supmod = 10;
04565 break;
04566 case 2:
04567 col = 48 + imirr[ch-2*192];
04568 row = 48 + jmirr[ch-2*192];
04569 supmod = 10;
04570 break;
04571 case 3:
04572 col = 40 + imirr[ch-3*192];
04573 row = 24 + jmirr[ch-3*192];
04574 supmod = 10;
04575 break;
04576 case 4:
04577 col = 40 + imirr[ch-4*192];
04578 row = 48 + jmirr[ch-4*192];
04579 supmod = 10;
04580 break;
04581 case 5:
04582 col = 41 - imirr[ch-5*192];
04583 row = 73 - jmirr[ch-5*192];
04584 supmod = 10;
04585 break;
04586 case 6:
04587 col = 41 - imirr[ch-6*192];
04588 row = 49 - jmirr[ch-6*192];
04589 supmod = 10;
04590 break;
04591 case 7:
04592 col = 24 + imirr[ch-7*192];
04593 row = 24 + jmirr[ch-7*192];
04594 supmod = 10;
04595 break;
04596 case 8:
04597 col = 24 + imirr[ch-8*192];
04598 row = 48 + jmirr[ch-8*192];
04599 supmod = 10;
04600 break;
04601 }
04602 break;
04603 }
04604 }
04605
04606 void StPmdGeom::chain19(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04607 {
04608 Int_t zone = ch/192;
04609 switch(year){
04610 case 6:
04611 switch(zone)
04612 {
04613 case 0:
04614 col = 48 + inorm[ch];
04615 row = jnorm[ch];
04616 supmod = 11;
04617 break;
04618 case 1:
04619 col = 24 + inorm[ch-192];
04620 row = jnorm[ch-192];
04621 supmod = 11;
04622 break;
04623 case 2:
04624 col = inorm[ch-2*192];
04625 row = jnorm[ch-2*192];
04626 supmod = 11;
04627 break;
04628 case 3:
04629 col = 25 - inorm[ch-3*192];
04630 row = 17 - jnorm[ch-3*192];
04631 supmod = 11;
04632 break;
04633 case 4:
04634 col = 49 - inorm[ch-4*192];
04635 row = 17 - jnorm[ch-4*192];
04636 supmod = 11;
04637 break;
04638 case 5:
04639 col = 73 - inorm[ch-5*192];
04640 row = 17 - jnorm[ch-5*192];
04641 supmod = 11;
04642 break;
04643 case 6:
04644 col = 48 + inorm[ch-6*192];
04645 row = 16 + jnorm[ch-6*192];
04646 supmod = 11;
04647 break;
04648 case 7:
04649 col = 24 + inorm[ch-7*192];
04650 row = 16 + jnorm[ch-7*192];
04651 supmod = 11;
04652 break;
04653 case 8:
04654 col = inorm[ch-8*192];
04655 row = 16 + jnorm[ch-8*192];
04656 supmod = 11;
04657 break;
04658 }
04659 break;
04660 case 8:
04661
04662 switch(zone)
04663 {
04664 case 0:
04665 col = 24 + inorm[ch];
04666 row = jnorm[ch];
04667 supmod = 11;
04668 break;
04669 case 1:
04670 col = inorm[ch-192];
04671 row = jnorm[ch-192];
04672 supmod = 11;
04673 break;
04674 case 2:
04675 col = 25 - inorm[ch-2*192];
04676 row = 17 - jnorm[ch-2*192];
04677 supmod = 11;
04678 break;
04679 case 3:
04680 col = 49 - inorm[ch-3*192];
04681 row = 17 - jnorm[ch-3*192];
04682 supmod = 11;
04683 break;
04684 case 4:
04685 col = 24 + inorm[ch-4*192];
04686 row = 16 + jnorm[ch-4*192];
04687 supmod = 11;
04688 break;
04689 case 5:
04690 col = inorm[ch-5*192];
04691 row = 16 + jnorm[ch-5*192];
04692 supmod = 11;
04693 break;
04694 case 6:
04695 col = 24 + inorm[ch-6*192];
04696 row = 24 + jnorm[ch-6*192];
04697 supmod = 11;
04698 break;
04699 case 7:
04700 col = inorm[ch-7*192];
04701 row = 24 + jnorm[ch-7*192];
04702 supmod = 11;
04703 break;
04704 case 8:
04705 col= 25 - inorm[ch-8*192];
04706 row= 41 - jnorm[ch-8*192];
04707 supmod = 11;
04708 break;
04709 case 9:
04710 col= 49 - inorm[ch-9*192];
04711 row= 41 - jnorm[ch-9*192];
04712 supmod = 11;
04713 break;
04714 case 10:
04715 col = 24 + inorm[ch-10*192];
04716 row = 40 + jnorm[ch-10*192];
04717 supmod = 11;
04718 break;
04719 case 11:
04720 col = inorm[ch-11*192];
04721 row = 40 + jnorm[ch-11*192];
04722 supmod = 11;
04723 break;
04724 }
04725 break;
04726 case 10:
04727 case 11:
04728 case 12:
04729 switch(zone)
04730 {
04731 case 0:
04732 col = 25 -inorm[ch];
04733 row = 9 - jnorm[ch];
04734 supmod = 11;
04735 break;
04736 case 1:
04737 col = 49 -inorm[ch-192];
04738 row = 9 - jnorm[ch-192];
04739 supmod = 11;
04740 break;
04741 case 2:
04742 col = 73 -inorm[ch-2*192];
04743 row = 9 - jnorm[ch-2*192];
04744 supmod = 11;
04745 break;
04746 case 3:
04747 col = 48 + inorm[ch-3*192];
04748 row = 8+ jnorm[ch-3*192];
04749 supmod = 11;
04750 break;
04751 case 4:
04752 col = 24 + inorm[ch-4*192];
04753 row = 8+ jnorm[ch-4*192];
04754 supmod = 11;
04755 break;
04756 case 5:
04757 col = inorm[ch-5*192];
04758 row = 8+ jnorm[ch-5*192];
04759 supmod = 11;
04760 break;
04761 case 6:
04762 col = 25 - inorm[ch-6*192];
04763 row = 25 - jnorm[ch-6*192];
04764 supmod = 11;
04765 break;
04766 case 7:
04767 col = 49 - inorm[ch-7*192];
04768 row = 25 - jnorm[ch-7*192];
04769 supmod = 11;
04770 break;
04771 case 8:
04772 col = 73 - inorm[ch-8*192];
04773 row = 25 - jnorm[ch-8*192];
04774 supmod = 11;
04775 break;
04776 }
04777 break;
04778 }
04779 }
04780
04781 void StPmdGeom::chain20(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04782 {
04783
04784 Int_t zone = ch/192;
04785 switch(year){
04786 case 6:
04787
04788 supmod = 0;
04789 col = 0;
04790 row = 0;
04791 break;
04792 case 8:
04793
04794 switch(zone)
04795 {
04796 case 0:
04797 col = 48 + inorm[ch];
04798 row = jnorm[ch];
04799 supmod = 11;
04800 break;
04801 case 1:
04802 col = 73 - inorm[ch-192];
04803 row = 17 - jnorm[ch-192];
04804 supmod = 11;
04805 break;
04806 case 2:
04807 col = 48 + inorm[ch-2*192];
04808 row = 16 + jnorm[ch-2*192];
04809 supmod = 11;
04810 break;
04811 case 3:
04812 col = 48 + inorm[ch-3*192];
04813 row = 24 + jnorm[ch-3*192];
04814 supmod = 11;
04815 break;
04816 case 4:
04817 col = 73 - inorm[ch-4*192];
04818 row = 41 - jnorm[ch-4*192];
04819 supmod = 11;
04820 break;
04821 case 5:
04822 col = 48 + inorm[ch-5*192];
04823 row = 40 - jnorm[ch-5*192];
04824 supmod = 11;
04825 break;
04826 case 6:
04827 col = 64 + imirr[ch-6*192];
04828 row = jmirr[ch-6*192];
04829 supmod = 10;
04830 break;
04831 case 7:
04832 col = 64 + imirr[ch-7*192];
04833 row = 24 + jmirr[ch-7*192];
04834 supmod = 10;
04835 break;
04836 case 8:
04837 col = 65 - imirr[ch-8*192];
04838 row = 49 - jmirr[ch-8*192];
04839 supmod = 10;
04840 break;
04841 case 9:
04842 col = 65 - imirr[ch-9*192];
04843 row = 25 - jmirr[ch-9*192];
04844 supmod = 10;
04845 break;
04846 case 10:
04847 col = 48 + imirr[ch-10*192];
04848 row = jmirr[ch-10*192];
04849 supmod = 10;
04850 break;
04851 case 11:
04852 col = 48 + imirr[ch-11*192];
04853 row = 24 + jmirr[ch-11*192];
04854 supmod = 10;
04855 break;
04856 }
04857 break;
04858 case 10:
04859 case 11:
04860 case 12:
04861 switch(zone)
04862 {
04863 case 0:
04864 col = 64 + imirr[ch];
04865 row = jmirr[ch];
04866 supmod = 10;
04867 break;
04868 case 1:
04869 col = 64 + imirr[ch-192];
04870 row = 24 + jmirr[ch-192];
04871 supmod = 10;
04872 break;
04873 case 2:
04874 col = 65 - imirr[ch-2*192];
04875 row = 49 - jmirr[ch-2*192];
04876 supmod = 10;
04877 break;
04878 case 3:
04879 col = 65 - imirr[ch-3*192];
04880 row = 25 - jmirr[ch-3*192];
04881 supmod = 10;
04882 break;
04883 case 4:
04884 col = 48 + imirr[ch-4*192];
04885 row = jmirr[ch-4*192];
04886 supmod = 10;
04887 break;
04888 case 5:
04889 col = 48 + imirr[ch-5*192];
04890 row = 24 + jmirr[ch-5*192];
04891 supmod = 10;
04892 break;
04893 case 6:
04894 supmod = 0;
04895 col = 0;
04896 row = 0;
04897 break;
04898 case 7:
04899 supmod = 0;
04900 col = 0;
04901 row = 0;
04902 break;
04903 case 8:
04904 supmod = 0;
04905 col = 0;
04906 row = 0;
04907 break;
04908 }
04909 break;
04910 }
04911 }
04912
04913 void StPmdGeom::chain21(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04914 {
04915 Int_t zone = ch/192;
04916 switch(year){
04917 case 6:{
04918
04919 switch(zone)
04920 {
04921 case 0:
04922 col = 9 - imirr[ch];
04923 row = 73 - jmirr[ch];
04924 supmod = 12;
04925 break;
04926 case 1:
04927 col = 8 + imirr[ch-192];
04928 row = 48 + jmirr[ch-192];
04929 supmod = 12;
04930 break;
04931 case 2:
04932 col = 25 - imirr[ch-2*192];
04933 row = 73 - jmirr[ch-2*192];
04934 supmod = 12;
04935 break;
04936 case 3:
04937 col = 33 - imirr[ch-3*192];
04938 row = 73 - jmirr[ch-3*192];
04939 supmod = 12;
04940 break;
04941 case 4:
04942 col = 33 - imirr[ch-4*192];
04943 row = 49 - jmirr[ch-4*192];
04944 supmod = 12;
04945 break;
04946 case 5:
04947 col = 32 + imirr[ch-5*192];
04948 row = 24 + jmirr[ch-5*192];
04949 supmod = 12;
04950 break;
04951 case 6:
04952 col = 32 + imirr[ch-6*192];
04953 row = 48 + jmirr[ch-6*192];
04954 supmod = 12;
04955 break;
04956 case 7:
04957 col = 49 - imirr[ch-7*192];
04958 row = 73 - jmirr[ch-7*192];
04959 supmod = 12;
04960 break;
04961 case 8:
04962 col = 49 - imirr[ch-8*192];
04963 row = 49 - jmirr[ch-8*192];
04964 supmod = 12;
04965 break;
04966 }
04967 break;
04968 }
04969 case 8:
04970 case 10:
04971 case 11:
04972 case 12:
04973 {
04974 supmod = 0;
04975 col = 0;
04976 row = 0;
04977 break;
04978 }
04979 }
04980 }
04981
04982 void StPmdGeom::chain22(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
04983 {
04984 Int_t zone = ch/192;
04985
04986 switch(year){
04987 case 6:
04988
04989 supmod = 0;
04990 col = 0;
04991 row = 0;
04992 break;
04993 case 8:
04994 switch(zone)
04995 {
04996 case 0:
04997 col = 40 + imirr[ch];
04998 row = 25 - jmirr[ch];
04999 supmod = 10;
05000 break;
05001 case 1:
05002 col = 41 - imirr[ch-192];
05003 row = jmirr[ch-192];
05004 supmod = 10;
05005 break;
05006 case 2:
05007 col = 24 + imirr[ch-2*192];
05008 row = 25 - jmirr[ch-2*192];
05009 supmod = 10;
05010 break;
05011 case 3:
05012 col = 25 - imirr[ch-3*192];
05013 row = 49 - jmirr[ch-3*192];
05014 supmod = 10;
05015 break;
05016 case 4:
05017 col = 25 - imirr[ch-4*192];
05018 row = 25 - jmirr[ch-4*192];
05019 supmod = 10;
05020 break;
05021 case 5:
05022 col = 8 + imirr[ch-5*192];
05023 row = jmirr[ch-5*192];
05024 supmod = 10;
05025 break;
05026 case 6:
05027 col = 8 + imirr[ch-6*192];
05028 row = 24 + jmirr[ch-6*192];
05029 supmod = 10;
05030 break;
05031 case 7:
05032 col = 9 - imirr[ch-7*192];
05033 row = 49 - jmirr[ch-7*192];
05034 supmod = 10;
05035 break;
05036 case 8:
05037 col = 9 - imirr[ch-8*192];
05038 row = 25 - jmirr[ch-8*192];
05039 supmod = 10;
05040 break;
05041 }
05042 break;
05043 case 10:
05044 case 11:
05045 case 12:
05046 switch(zone)
05047 {
05048 case 0:
05049 col = imirr[ch];
05050 row = jmirr[ch];
05051 supmod = 10;
05052 break;
05053 case 1:
05054 col = imirr[ch-1*192];
05055 row = 24 + jmirr[ch -1*192];
05056 supmod = 10;
05057 break;
05058 case 2:
05059 col = 17 - imirr[ch-2*192];
05060 row = 49 - jmirr[ch-2*192];
05061 supmod = 10;
05062 break;
05063 case 3:
05064 col = 17 - imirr[ch-3*192];
05065 row = 25 - jmirr[ch-3*192];
05066 supmod = 10;
05067 break;
05068 case 4:
05069 col = 16 + imirr[ch-4*192];
05070 row = jmirr[ch-4*192];
05071 supmod = 10;
05072 break;
05073 case 5:
05074 col = 16 + imirr[ch-5*192];
05075 row = 24 + jmirr[ch-5*192];
05076 supmod = 10;
05077 break;
05078 case 6:
05079 col = 24 + imirr[ch-6*192];
05080 row = jmirr[ch-6*192];
05081 supmod = 10;
05082 break;
05083 case 7:
05084 col = 41 - imirr[ch-7*192];
05085 row = 25 - jmirr[ch-7*192];
05086 supmod = 10;
05087 break;
05088 case 8:
05089 col = 40 + imirr[ch-8*192];
05090 row = jmirr[ch-8*192];
05091 supmod = 10;
05092 break;
05093
05094 }
05095 break;
05096 }
05097 }
05098
05099 void StPmdGeom::chain23(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05100 {
05101 Int_t zone = ch/192;
05102
05103 switch(year){
05104 case 6:
05105
05106 switch(zone)
05107 {
05108 case 0:
05109 col = 57 - imirr[ch];
05110 row = 73 - jmirr[ch];
05111 supmod = 12;
05112 break;
05113 case 1:
05114 col = 57 - imirr[ch-192];
05115 row = 49 - jmirr[ch-192];
05116 supmod = 12;
05117 break;
05118 case 2:
05119 col = 57 - imirr[ch-2*192];
05120 row = 25 - jmirr[ch-2*192];
05121 supmod = 12;
05122 break;
05123 case 3:
05124 col = 56 + imirr[ch-3*192];
05125 row = jmirr[ch-3*192];
05126 supmod = 12;
05127 break;
05128 case 4:
05129 col = 56 + imirr[ch-4*192];
05130 row = 24 + jmirr[ch-4*192];
05131 supmod = 12;
05132 break;
05133 case 5:
05134 col = 56 + imirr[ch-5*192];
05135 row = 48 + jmirr[ch-5*192];
05136 supmod = 12;
05137 break;
05138 case 6:
05139 col = 73 - imirr[ch-6*192];
05140 row = 73 - jmirr[ch-6*192];
05141 supmod = 12;
05142 break;
05143 case 7:
05144 col = 73 - imirr[ch-7*192];
05145 row = 49 - jmirr[ch-7*192];
05146 supmod = 12;
05147 break;
05148 case 8:
05149 col = 73 - imirr[ch-8*192];
05150 row = 25 - jmirr[ch-8*192];
05151 supmod = 12;
05152 break;
05153 }
05154 break;
05155 case 8:
05156 case 10:
05157 case 11:
05158 case 12:
05159 switch(zone)
05160 {
05161 case 0:
05162 col = 73 - imirr[ch];
05163 row = 49 - jmirr[ch];
05164 supmod = 12;
05165 break;
05166 case 1:
05167 col = 73 - imirr[ch-192];
05168 row = 25 - jmirr[ch-192];
05169 supmod = 12;
05170 break;
05171 case 2:
05172 col = 56 + imirr[ch-2*192];
05173 row = jmirr[ch-2*192];
05174 supmod = 12;
05175 break;
05176 case 3:
05177 col = 56 + imirr[ch-3*192];
05178 row = 24 + jmirr[ch-3*192];
05179 supmod = 12;
05180 break;
05181 case 4:
05182 col = 57 - imirr[ch-4*192];
05183 row = 49 - jmirr[ch-4*192];
05184 supmod = 12;
05185 break;
05186 case 5:
05187 col = 57 - imirr[ch-5*192];
05188 row = 25 - jmirr[ch-5*192];
05189 supmod = 12;
05190 break;
05191 case 6:
05192 col = 33 - imirr[ch-6*192];
05193 row = 73 - jmirr[ch-6*192];
05194 supmod = 12;
05195 break;
05196 case 7:
05197 col = 33 - imirr[ch-7*192];
05198 row = 49 - jmirr[ch-7*192];
05199 supmod = 12;
05200 break;
05201 case 8:
05202 col = 32 + imirr[ch-8*192];
05203 row = 24 + jmirr[ch-8*192];
05204 supmod = 12;
05205 break;
05206 case 9:
05207 col = 32 + imirr[ch-9*192];
05208 row = 48 + jmirr[ch-9*192];
05209 supmod = 12;
05210 break;
05211 case 10:
05212 col = 49 - imirr[ch-10*192];
05213 row = 73 - jmirr[ch-10*192];
05214 supmod = 12;
05215 break;
05216 case 11:
05217 col = 49 - imirr[ch-11*192];
05218 row = 49 - jmirr[ch-11*192];
05219 supmod = 12;
05220 break;
05221 }
05222 break;
05223 }
05224 }
05225 void StPmdGeom::chain24(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05226 {
05227 Int_t zone = ch/192;
05228 switch(year){
05229 case 6:
05230
05231 switch(zone)
05232 {
05233 case 0:
05234 col = 97 - imirr[ch];
05235 row = 73 - jmirr[ch];
05236 supmod = 12;
05237 break;
05238 case 1:
05239 col = 97 - imirr[ch-192];
05240 row = 49 - jmirr[ch-192];
05241 supmod = 12;
05242 break;
05243 case 2:
05244 col = 97 - imirr[ch-2*192];
05245 row = 25 - jmirr[ch-2*192];
05246 supmod = 12;
05247 break;
05248 case 3:
05249 col = 80 + imirr[ch-3*192];
05250 row = jmirr[ch-3*192];
05251 supmod = 12;
05252 break;
05253 case 4:
05254 col = 80 + imirr[ch-4*192];
05255 row = 24 + jmirr[ch-4*192];
05256 supmod = 12;
05257 break;
05258 case 5:
05259 col = 80 + imirr[ch-5*192];
05260 row = 48 + jmirr[ch-5*192];
05261 supmod = 12;
05262 break;
05263 case 6:
05264 col = 81 - imirr[ch-6*192];
05265 row = 73 - jmirr[ch-6*192];
05266 supmod = 12;
05267 break;
05268 case 7:
05269 col = 81 - imirr[ch-7*192];
05270 row = 49 - jmirr[ch-7*192];
05271 supmod = 12;
05272 break;
05273 case 8:
05274 col = 81 - imirr[ch-8*192];
05275 row = 25 - jmirr[ch-8*192];
05276 supmod = 12;
05277 break;
05278 }
05279 break;
05280 case 8:
05281 case 10:
05282 case 11:
05283 case 12:
05284 switch(zone)
05285 {
05286 case 0:
05287 col = 97 - imirr[ch];
05288 row = 73 - jmirr[ch];
05289 supmod = 12;
05290 break;
05291 case 1:
05292 col = 97 - imirr[ch-192];
05293 row = 49 - jmirr[ch-192];
05294 supmod = 12;
05295 break;
05296 case 2:
05297 col = 97 - imirr[ch-2*192];
05298 row = 25 - jmirr[ch-2*192];
05299 supmod = 12;
05300 break;
05301 case 3:
05302 col = 80 + imirr[ch-3*192];
05303 row = jmirr[ch-3*192];
05304 supmod = 12;
05305 break;
05306 case 4:
05307 col = 80 + imirr[ch-4*192];
05308 row = 24 + jmirr[ch-4*192];
05309 supmod = 12;
05310 break;
05311 case 5:
05312 col = 80 + imirr[ch-5*192];
05313 row = 48 + jmirr[ch-5*192];
05314 supmod = 12;
05315 break;
05316 case 6:
05317 col = 81 - imirr[ch-6*192];
05318 row = 73 - jmirr[ch-6*192];
05319 supmod = 12;
05320 break;
05321 case 7:
05322 col = 81 - imirr[ch-7*192];
05323 row = 49 - jmirr[ch-7*192];
05324 supmod = 12;
05325 break;
05326 case 8:
05327 col = 81 - imirr[ch-8*192];
05328 row = 48 + jmirr[ch-8*192];
05329 supmod = 12;
05330 break;
05331 case 9:
05332 col = 57 - imirr[ch-9*192];
05333 row = 73 - jmirr[ch-9*192];
05334 supmod = 12;
05335 break;
05336 case 10:
05337 col = 56 + imirr[ch-10*192];
05338 row = 48 + jmirr[ch-10*192];
05339 supmod = 12;
05340 break;
05341 case 11:
05342 col = 73 - imirr[ch-11*192];
05343 row = 73 - jmirr[ch-11*192];
05344 supmod = 12;
05345 break;
05346 }
05347 break;
05348 }
05349 }
05350
05351 void StPmdGeom::chain25(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05352 {
05353 Int_t zone = ch/192;
05354 switch(zone)
05355 {
05356 case 0:
05357 col = 49 - jmirr[ch];
05358 row = 9 - imirr[ch];
05359 supmod = 1+12;
05360 break;
05361 case 1:
05362 col = 25 - jmirr[ch-192];
05363 row = 9 - imirr[ch-192];
05364 supmod = 1+12;
05365 break;
05366 case 2:
05367 col = jmirr[ch-2*192];
05368 row = 8 + imirr[ch-2*192];
05369 supmod = 1+12;
05370 break;
05371 case 3:
05372 col = 24 + jmirr[ch-3*192];
05373 row = 8 + imirr[ch-3*192];
05374 supmod = 1+12;
05375 break;
05376 case 4:
05377 col = 49 - jmirr[ch-4*192];
05378 row = 25 - imirr[ch-4*192];
05379 supmod = 1+12;
05380 break;
05381 case 5:
05382 col = 25 - jmirr[ch-5*192];
05383 row = 25 - imirr[ch-5*192];
05384 supmod = 1+12;
05385 break;
05386 case 6:
05387 col = 25 - jmirr[ch-6*192];
05388 row = 33 - imirr[ch-6*192];
05389 supmod = 1+12;
05390 break;
05391 case 7:
05392 col = jmirr[ch-7*192];
05393 row = 32 + imirr[ch-7*192];
05394 supmod = 1+12;
05395 break;
05396 case 8:
05397 col = 25 - jmirr[ch-8*192];
05398 row = 49 - imirr[ch-8*192];
05399 supmod = 1+12;
05400 break;
05401 }
05402 }
05403
05404 void StPmdGeom::chain26(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05405 {
05406 Int_t zone = ch/192;
05407 switch(zone)
05408 {
05409 case 0:
05410 col = 73 - jmirr[ch];
05411 row = 9 - imirr[ch];
05412 supmod = 2+12;
05413 break;
05414 case 1:
05415 col = 49 - jmirr[ch-192];
05416 row = 9 - imirr[ch-192];
05417 supmod = 2+12;
05418 break;
05419 case 2:
05420 col = 25 - jmirr[ch-2*192];
05421 row = 9 - imirr[ch-2*192];
05422 supmod = 2+12;
05423 break;
05424 case 3:
05425 col = jmirr[ch-3*192];
05426 row = 8 + imirr[ch-3*192];
05427 supmod = 2+12;
05428 break;
05429 case 4:
05430 col = 24 + jmirr[ch-4*192];
05431 row = 8 + imirr[ch-4*192];
05432 supmod = 2+12;
05433 break;
05434 case 5:
05435 col = 48 + jmirr[ch-5*192];
05436 row = 8 + imirr[ch-5*192];
05437 supmod = 2+12;
05438 break;
05439 case 6:
05440 col = 73 - jmirr[ch-6*192];
05441 row = 25 - imirr[ch-6*192];
05442 supmod = 2+12;
05443 break;
05444 case 7:
05445 col = 49 - jmirr[ch-7*192];
05446 row = 25 - imirr[ch-7*192];
05447 supmod = 2+12;
05448 break;
05449 case 8:
05450 col = 25 - jmirr[ch-8*192];
05451 row = 25 - imirr[ch-8*192];
05452 supmod = 2+12;
05453 break;
05454 }
05455 }
05456 void StPmdGeom::chain27(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05457 {
05458 Int_t zone = ch/192;
05459 switch(zone)
05460 {
05461 case 0:
05462 col = 49 - jmirr[ch];
05463 row = 49 - 16 - imirr[ch];
05464 supmod = 1+12;
05465 break;
05466 case 1:
05467 col = 24 + jmirr[ch-192];
05468 row = 32 + imirr[ch-192];
05469 supmod = 1+12;
05470 break;
05471 case 2:
05472 col = 49 - jmirr[ch-2*192];
05473 row = 49- imirr[ch-2*192];
05474 supmod = 1+12;
05475 break;
05476 case 3:
05477 col = 25-jnorm[ch-3*192];
05478 row = 25-inorm[ch-3*192];
05479 supmod = 3+12;
05480 break;
05481 case 4:
05482 col = 25-jnorm[ch-4*192];
05483 row = 49-inorm[ch-4*192];
05484 supmod = 3+12;
05485 break;
05486 case 5:
05487 col = 8+jnorm[ch-5*192];
05488 row = 24+inorm[ch-5*192];
05489 supmod = 3+12;
05490 break;
05491 case 6:
05492 col = 8+jnorm[ch-6*192];
05493 row = inorm[ch-6*192];
05494 supmod = 3+12;
05495 break;
05496 case 7:
05497 col = 9-jnorm[ch-7*192];
05498 row = 25-inorm[ch-7*192];
05499 supmod = 3+12;
05500 break;
05501 case 8:
05502 col = 9-jnorm[ch-8*192];
05503 row = 49-inorm[ch-8*192];
05504 supmod = 3+12;
05505 break;
05506 }
05507 }
05508
05509 void StPmdGeom::chain28(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05510 {
05511 Int_t zone = ch/192;
05512 switch(zone)
05513 {
05514 case 0:
05515 col = 73 - jmirr[ch];
05516 row = 33 - imirr[ch];
05517 supmod = 2+12;
05518 break;
05519 case 1:
05520 col = 49 - jmirr[ch-192];
05521 row = 33 - imirr[ch-192];
05522 supmod = 2+12;
05523 break;
05524 case 2:
05525 col = 25 - jmirr[ch-2*192];
05526 row = 33 - imirr[ch-2*192];
05527 supmod = 2+12;
05528 break;
05529 case 3:
05530 col = jmirr[ch-3*192];
05531 row = 32 + imirr[ch-3*192];
05532 supmod = 2+12;
05533 break;
05534 case 4:
05535 col = 24 + jmirr[ch-4*192];
05536 row = 32 + imirr[ch-4*192];
05537 supmod = 2+12;
05538 break;
05539 case 5:
05540 col = 48 + jmirr[ch-5*192];
05541 row = 32 + imirr[ch-5*192];
05542 supmod = 2+12;
05543 break;
05544 case 6:
05545 col = 73 - jmirr[ch-6*192];
05546 row = 49 - imirr[ch-6*192];
05547 supmod = 2+12;
05548 break;
05549 case 7:
05550 col = 49 - jmirr[ch-7*192];
05551 row = 49 - imirr[ch-7*192];
05552 supmod = 2+12;
05553 break;
05554 case 8:
05555 col = 25 - jmirr[ch-8*192];
05556 row = 49 - imirr[ch-8*192];
05557 supmod = 2+12;
05558 break;
05559 }
05560 }
05561
05562 void StPmdGeom::chain29(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05563 {
05564 Int_t zone = ch/192;
05565 switch(zone)
05566 {
05567 case 0:
05568 col = 49 - jnorm[ch];
05569 row = 25 - inorm[ch];
05570 supmod = 3+12;
05571 break;
05572 case 1:
05573 col = 49 - jnorm[ch-192];
05574 row = 49 - inorm[ch-192];
05575 supmod = 3+12;
05576 break;
05577 case 2:
05578 col = 49 - jnorm[ch-2*192];
05579 row = 73 - inorm[ch-2*192];
05580 supmod = 3+12;
05581 break;
05582 case 3:
05583 col = 32 + jnorm[ch-3*192];
05584 row = 48 + inorm[ch-3*192];
05585 supmod = 3+12;
05586 break;
05587 case 4:
05588 col = 32 + jnorm[ch-4*192];
05589 row = 24 + inorm[ch-4*192];
05590 supmod = 3+12;
05591 break;
05592 case 5:
05593 col = 32 + jnorm[ch-5*192];
05594 row = inorm[ch-5*192];
05595 supmod = 3+12;
05596 break;
05597 case 6:
05598 col = 33 - jnorm[ch-6*192];
05599 row = 25 - inorm[ch-6*192];
05600 supmod = 3+12;
05601 break;
05602 case 7:
05603 col = 33 - jnorm[ch-7*192];
05604 row = 49 - inorm[ch-7*192];
05605 supmod = 3+12;
05606 break;
05607 case 8:
05608 col = 33 - jnorm[ch-8*192];
05609 row = 73 - inorm[ch-8*192];
05610 supmod = 3+12;
05611 break;
05612 }
05613 }
05614 void StPmdGeom::chain30(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05615 {
05616 Int_t zone = ch/192;
05617 switch(zone)
05618 {
05619 case 0:
05620 col = 73 - jmirr[ch];
05621 row = 9 - imirr[ch];
05622 supmod = 4+12;
05623 break;
05624 case 1:
05625 col = 49 - jmirr[ch-192];
05626 row = 9 - imirr[ch-192];
05627 supmod = 4+12;
05628 break;
05629 case 2:
05630 col = 25 - jmirr[ch-2*192];
05631 row = 9 - imirr[ch-2*192];
05632 supmod = 4+12;
05633 break;
05634 case 3:
05635 col = jmirr[ch-3*192];
05636 row = 8 + imirr[ch-3*192];
05637 supmod = 4+12;
05638 break;
05639 case 4:
05640 col = 24 + jmirr[ch-4*192];
05641 row = 8 + imirr[ch-4*192];
05642 supmod = 4+12;
05643 break;
05644 case 5:
05645 col = 48 + jmirr[ch-5*192];
05646 row = 8 + imirr[ch-5*192];
05647 supmod = 4+12;
05648 break;
05649
05650 case 6:
05651 col = 73 - jmirr[ch-6*192];
05652 row = 25 - imirr[ch-6*192];
05653 supmod = 4+12;
05654 break;
05655 case 7:
05656 col = 49 - jmirr[ch-7*192];
05657 row = 25 - imirr[ch-7*192];
05658 supmod = 4+12;
05659 break;
05660 case 8:
05661 col = 25 - jmirr[ch-8*192];
05662 row = 25 - imirr[ch-8*192];
05663 supmod = 4+12;
05664 break;
05665 }
05666 }
05667
05668 void StPmdGeom::chain31(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05669 {
05670 Int_t zone = ch/192;
05671 switch(zone)
05672 {
05673 case 0:
05674 col = 73 - jmirr[ch];
05675 row = 33 - imirr[ch];
05676 supmod = 4+12;
05677 break;
05678 case 1:
05679 col = 49 - jmirr[ch-192];
05680 row = 33 - imirr[ch-192];
05681 supmod = 4+12;
05682 break;
05683 case 2:
05684 col = 25 - jmirr[ch-2*192];
05685 row = 33 - imirr[ch-2*192];
05686 supmod = 4+12;
05687 break;
05688 case 3:
05689 col = jmirr[ch-3*192];
05690 row = 32 + imirr[ch-3*192];
05691 supmod = 4+12;
05692 break;
05693 case 4:
05694 col = 24 + jmirr[ch-4*192];
05695 row = 32 + imirr[ch-4*192];
05696 supmod = 4+12;
05697 break;
05698 case 5:
05699 col = 48 + jmirr[ch-5*192];
05700 row = 32 + imirr[ch-5*192];
05701 supmod = 4+12;
05702 break;
05703 case 6:
05704 col = 73 - jmirr[ch-6*192];
05705 row = 49 - imirr[ch-6*192];
05706 supmod = 4+12;
05707 break;
05708 case 7:
05709 col = 49 - jmirr[ch-7*192];
05710 row = 49 - imirr[ch-7*192];
05711 supmod = 4+12;
05712 break;
05713 case 8:
05714 col = 25 - jmirr[ch-8*192];
05715 row = 49 - imirr[ch-8*192];
05716 supmod = 4+12;
05717 break;
05718 }
05719
05720 }
05721
05722
05723 void StPmdGeom::chain32(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05724 {
05725 Int_t zone = ch/192;
05726 switch(zone)
05727 {
05728 case 0:
05729 col = jmirr[ch];
05730 row = 16 + imirr[ch];
05731 supmod = 5+12;
05732 break;
05733 case 1:
05734 col = 24 + jmirr[ch-192];
05735 row = 16 + imirr[ch-192];
05736 supmod = 5+12;
05737 break;
05738 case 2:
05739 col = 48 + jmirr[ch-2*192];
05740 row = 16 + imirr[ch-2*192];
05741 supmod = 5+12;
05742 break;
05743 case 3:
05744 col = 73 - jmirr[ch-3*192];
05745 row = 17 - imirr[ch-3*192];
05746 supmod = 5+12;
05747 break;
05748 case 4:
05749 col = 49 - jmirr[ch-4*192];
05750 row = 17 - imirr[ch-4*192];
05751 supmod = 5+12;
05752 break;
05753 case 5:
05754 col = 25 - jmirr[ch-5*192];
05755 row = 17 - imirr[ch-5*192];
05756 supmod = 5+12;
05757 break;
05758 case 6:
05759 col = jmirr[ch-6*192];
05760 row = imirr[ch-6*192];
05761 supmod = 5+12;
05762 break;
05763 case 7:
05764 col = 24 + jmirr[ch-7*192];
05765 row = imirr[ch-7*192];
05766 supmod = 5+12;
05767 break;
05768 case 8:
05769 col = 48 + jmirr[ch-8*192];
05770 row = imirr[ch-8*192];
05771 supmod = 5+12;
05772 break;
05773 }
05774 }
05775
05776
05777
05778
05779
05780 void StPmdGeom::chain33(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05781 {
05782 Int_t zone = ch/192;
05783 switch(zone)
05784 {
05785 case 0:
05786 col = 25 - jnorm[ch];
05787 row = 73 - inorm[ch];
05788 supmod = 3+12;
05789 break;
05790 case 1:
05791 col = 8 + jnorm[ch-192];
05792 row = 48 + inorm[ch-192];
05793 supmod = 3+12;
05794 break;
05795 case 2:
05796 col = 9 - jnorm[ch-2*192];
05797 row = 73 - inorm[ch-2*192];
05798 supmod = 3+12;
05799 break;
05800 case 3:
05801 col = 73 - jmirr[ch-3*192];
05802 row = 57 - imirr[ch-3*192];
05803 supmod = 4+12;
05804 break;
05805 case 4:
05806 col = 49 - jmirr[ch-4*192];
05807 row = 57 - imirr[ch-4*192];
05808 supmod = 4+12;
05809 break;
05810 case 5:
05811 col = 24 + jmirr[ch-5*192];
05812 row = 56 + imirr[ch-5*192];
05813 supmod = 4+12;
05814 break;
05815 case 6:
05816 col = 48 + jmirr[ch-6*192];
05817 row = 56 + imirr[ch-6*192];
05818 supmod = 4+12;
05819 break;
05820 case 7:
05821 col = 73 - jmirr[ch-7*192];
05822 row = 73 - imirr[ch-7*192];
05823 supmod = 4+12;
05824 break;
05825 case 8:
05826 col = 49 - jmirr[ch-8*192];
05827 row = 73 - imirr[ch-8*192];
05828 supmod = 4+12;
05829 break;
05830 }
05831 }
05832
05833 void StPmdGeom::chain34(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05834 {
05835 Int_t zone = ch/192;
05836 switch(zone)
05837 {
05838 case 0:
05839 col = jmirr[ch];
05840 row = 40 + imirr[ch];
05841 supmod = 5+12;
05842 break;
05843 case 1:
05844 col = 24 + jmirr[ch-192];
05845 row = 40 + imirr[ch-192];
05846 supmod = 5+12;
05847 break;
05848 case 2:
05849 col = 48 + jmirr[ch - 2*192];
05850 row = 40 + imirr[ch - 2*192];
05851 supmod = 5+12;
05852 break;
05853 case 3:
05854 col = 73 - jmirr[ch - 3*192];
05855 row = 41 - imirr[ch - 3*192];
05856 supmod = 5+12;
05857 break;
05858 case 4:
05859 col = 49 - jmirr[ch-4*192];
05860 row = 41 - imirr[ch-4*192];
05861 supmod = 5+12;
05862 break;
05863 case 5:
05864 col = 25 - jmirr[ch-5*192];
05865 row = 41 - imirr[ch-5*192];
05866 supmod = 5+12;
05867 break;
05868 case 6:
05869 col = jmirr[ch-6*192];
05870 row = 24 + imirr[ch-6*192];
05871 supmod = 5+12;
05872 break;
05873 case 7:
05874 col = 24 + jmirr[ch-7*192];
05875 row = 24 + imirr[ch-7*192];
05876 supmod = 5+12;
05877 break;
05878 case 8:
05879 col = 48 + jmirr[ch-8*192];
05880 row = 24 + imirr[ch-8*192];
05881 supmod = 5+12;
05882 break;
05883 }
05884 }
05885 void StPmdGeom::chain35(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05886 {
05887 Int_t zone = ch/192;
05888 switch(zone)
05889 {
05890 case 0:
05891 col = jmirr[ch];
05892 row = 40 + imirr[ch];
05893 supmod = 6+12;
05894 break;
05895 case 1:
05896 col = 25 - jmirr[ch-192];
05897 row = 41 - imirr[ch-192];
05898 supmod = 6+12;
05899 break;
05900 case 2:
05901 col = jmirr[ch-2*192];
05902 row = 24 + imirr[ch-2*192];
05903 supmod = 6+12;
05904 break;
05905 case 3:
05906 col = jmirr[ch-3*192];
05907 row = 16 + imirr[ch-3*192];
05908 supmod = 6+12;
05909 break;
05910 case 4:
05911 col = 24 + jmirr[ch-4*192];
05912 row = 16 + imirr[ch-4*192];
05913 supmod = 6+12;
05914 break;
05915 case 5:
05916 col = 49 - jmirr[ch-5*192];
05917 row = 17 - imirr[ch-5*192];
05918 supmod = 6+12;
05919 break;
05920 case 6:
05921 col = 25 - jmirr[ch-6*192];
05922 row = 17 - imirr[ch-6*192];
05923 supmod = 6+12;
05924 break;
05925 case 7:
05926 col = jmirr[ch-7*192];
05927 row = imirr[ch-7*192];
05928 supmod = 6+12;
05929 break;
05930 case 8:
05931 col = 24 + jmirr[ch-8*192];
05932 row = imirr[ch-8*192];
05933 supmod = 6+12;
05934 break;
05935 }
05936 }
05937
05938 void StPmdGeom::chain36(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05939 {
05940 Int_t zone = ch/192;
05941 switch(zone)
05942 {
05943 case 0:
05944 col = 24 + jmirr[ch];
05945 row = 40 + imirr[ch];
05946 supmod = 6+12;
05947 break;
05948 case 1:
05949 col = 49 - jmirr[ch-192];
05950 row = 41 - imirr[ch-192];
05951 supmod = 6+12;
05952 break;
05953 case 2:
05954 col = 24 + jmirr[ch-2*192];
05955 row = 24 + imirr[ch-2*192];
05956 supmod = 6+12;
05957 break;
05958 case 3:
05959 col = 48 + jmirr[ch-3*192];
05960 row = 16 + imirr[ch-3*192];
05961 supmod = 6+12;
05962 break;
05963 case 4:
05964 col = 73 - jmirr[ch-4*192];
05965 row = 17 - imirr[ch-4*192];
05966 supmod = 6+12;
05967 break;
05968 case 5:
05969 col = 48 + jmirr[ch-5*192];
05970 row = imirr[ch-5*192];
05971 supmod = 6+12;
05972 break;
05973 case 6:
05974 col = jmirr[ch-6*192];
05975 row = 40 + imirr[ch-6*192];
05976 supmod = 7+12;
05977 break;
05978 case 7:
05979 col = 25 - jmirr[ch-7*192];
05980 row = 41 - imirr[ch-7*192];
05981 supmod = 7+12;
05982 break;
05983 case 8:
05984 col = jmirr[ch-8*192];
05985 row = 24 + imirr[ch-8*192];
05986 supmod = 7+12;
05987 break;
05988 }
05989 }
05990 void StPmdGeom::chain37(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
05991 {
05992 Int_t zone = ch/192;
05993 switch(year){
05994 case 6:
05995 case 8:
05996 switch(zone)
05997 {
05998 case 0:
05999 col = 24 + jmirr[ch];
06000 row = 40 + imirr[ch];
06001 supmod = 7+12;
06002 break;
06003 case 1:
06004 col = 49 - jmirr[ch-192];
06005 row = 41 - imirr[ch-192];
06006 supmod = 7+12;
06007 break;
06008 case 2:
06009 col = 24 + jmirr[ch-2*192];
06010 row = 24 + imirr[ch-2*192];
06011 supmod = 7+12;
06012 break;
06013 case 3:
06014 col = jmirr[ch-3*192];
06015 row = 16 + imirr[ch-3*192];
06016 supmod = 7+12;
06017 break;
06018 case 4:
06019 col = 24 + jmirr[ch-4*192];
06020 row = 16 + imirr[ch-4*192];
06021 supmod = 7+12;
06022 break;
06023 case 5:
06024 col = 49 - jmirr[ch-5*192];
06025 row = 17 - imirr[ch-5*192];
06026 supmod = 7+12;
06027 break;
06028 case 6:
06029 col = 25 - jmirr[ch-6*192];
06030 row = 17 - imirr[ch-6*192];
06031 supmod = 7+12;
06032 break;
06033 case 7:
06034 col = jmirr[ch-7*192];
06035 row = imirr[ch-7*192];
06036 supmod = 7+12;
06037 break;
06038 case 8:
06039 col = 24 + jmirr[ch-8*192];
06040 row = imirr[ch-8*192];
06041 supmod = 7+12;
06042 break;
06043 }
06044 case 10:
06045 case 11:
06046 case 12:
06047 switch(zone)
06048 {
06049 case 0:
06050 col = jmirr[ch];
06051 row = imirr[ch];
06052 supmod = 7+12;
06053 break;
06054 case 1:
06055 col = 24 + jmirr[ch-192];
06056 row = imirr[ch-192];
06057 supmod = 7 + 12;
06058 break;
06059 case 2:
06060 col = 49 - jmirr[ch-2*192];
06061 row = 17 - imirr[ch-2*192];
06062 supmod = 7 + 12;
06063 break;
06064 case 3:
06065 col = 25 - jmirr[ch-3*192];
06066 row = 17 - imirr[ch-3*192];
06067 supmod = 7 + 12;
06068 break;
06069 case 4:
06070 col = jmirr[ch-4*192];
06071 row = 16 + imirr[ch-4*192];
06072 supmod = 7 + 12;
06073 break;
06074 case 5:
06075 col = 24 + jmirr[ch-5*192];
06076 row = 16 + imirr[ch-5*192];
06077 supmod = 7 + 12;
06078 break;
06079 case 6:
06080 col = 24 + jmirr[ch-6*192];
06081 row = 24 + imirr[ch-6*192];
06082 supmod = 7 + 12;
06083 break;
06084 case 7:
06085 col = 49 - jmirr[ch-7*192];
06086 row = 41 - imirr[ch-7*192];
06087 supmod = 7 + 12;
06088 break;
06089 case 8:
06090 col = 24 + jmirr[ch-8*192];
06091 row = 40 + imirr[ch-8*192];
06092 supmod = 7 + 12;
06093 break;
06094 }
06095 break;
06096 }
06097 }
06098 void StPmdGeom::chain38(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06099 {
06100 Int_t zone = ch/192;
06101 switch(zone)
06102 {
06103 case 0:
06104 col = 49 - jnorm[ch];
06105 row = 25 - inorm[ch];
06106 supmod = 8+12;
06107 break;
06108 case 1:
06109 col = 49 - jnorm[ch-192];
06110 row = 49 - inorm[ch-192];
06111 supmod = 8+12;
06112 break;
06113 case 2:
06114 col = 49 - jnorm[ch-2*192];
06115 row = 73 - inorm[ch-2*192];
06116 supmod = 8+12;
06117 break;
06118 case 3:
06119 col = 32 + jnorm[ch-3*192];
06120 row = 48 + inorm[ch-3*192];
06121 supmod = 8+12;
06122 break;
06123 case 4:
06124 col = 32 + jnorm[ch-4*192];
06125 row = 24 + inorm[ch-4*192];
06126 supmod = 8+12;
06127 break;
06128 case 5:
06129 col = 32 + jnorm[ch-5*192];
06130 row = inorm[ch-5*192];
06131 supmod = 8+12;
06132 break;
06133 case 6:
06134 col = 33 - jnorm[ch-6*192];
06135 row = 25 - inorm[ch-6*192];
06136 supmod = 8+12;
06137 break;
06138 case 7:
06139 col = 33 - jnorm[ch-7*192];
06140 row = 49 - inorm[ch-7*192];
06141 supmod = 8+12;
06142 break;
06143 case 8:
06144 col = 33 - jnorm[ch-8*192];
06145 row = 73 - inorm[ch-8*192];
06146 supmod = 8+12;
06147 break;
06148 }
06149 }
06150
06151 void StPmdGeom::chain39(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06152 {
06153 Int_t zone = ch/192;
06154 switch(zone)
06155 {
06156 case 0:
06157 col = 49 - jnorm[ch];
06158 row = 25 - inorm[ch];
06159 supmod = 9+12;
06160 break;
06161 case 1:
06162 col = 49 - jnorm[ch-192];
06163 row = 49 - inorm[ch-192];
06164 supmod = 9+12;
06165 break;
06166 case 2:
06167 col = 32 + jnorm[ch-2*192];
06168 row = 24 + inorm[ch-2*192];
06169 supmod = 9+12;
06170 break;
06171 case 3:
06172 col = 32 + jnorm[ch-3*192];
06173 row = inorm[ch-3*192];
06174 supmod = 9+12;
06175 break;
06176 case 4:
06177 col = 33 - jnorm[ch-4*192];
06178 row = 25 - inorm[ch-4*192];
06179 supmod = 9+12;
06180 break;
06181 case 5:
06182 col = 33 - jnorm[ch-5*192];
06183 row = 49 - inorm[ch-5*192];
06184 supmod = 9+12;
06185 break;
06186 case 6:
06187 col = 25 - jnorm[ch-6*192];
06188 row = 49 - inorm[ch-6*192];
06189 supmod = 9+12;
06190 break;
06191 case 7:
06192 col = 8 + jnorm[ch-7*192];
06193 row = 24 + inorm[ch-7*192];
06194 supmod = 9+12;
06195 break;
06196 case 8:
06197 col = 9 - jnorm[ch-8*192];
06198 row = 49 - inorm[ch-8*192];
06199 supmod = 9+12;
06200 break;
06201 }
06202 }
06203 void StPmdGeom::chain40(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06204 {
06205 Int_t zone = ch/192;
06206 switch(zone)
06207 {
06208 case 0:
06209 col = 25 - jnorm[ch];
06210 row = 25 - inorm[ch];
06211 supmod = 8+12;
06212 break;
06213 case 1:
06214 col = 25 - jnorm[ch-192];
06215 row = 49 - inorm[ch-192];
06216 supmod = 8+12;
06217 break;
06218 case 2:
06219 col = 25 - jnorm[ch-2*192];
06220 row = 73 - inorm[ch-2*192];
06221 supmod = 8+12;
06222 break;
06223 case 3:
06224 col = 8 + jnorm[ch-3*192];
06225 row = 48 + inorm[ch-3*192];
06226 supmod = 8+12;
06227 break;
06228 case 4:
06229 col = 8 + jnorm[ch-4*192];
06230 row = 24 + inorm[ch-4*192];
06231 supmod = 8+12;
06232 break;
06233 case 5:
06234 col = 8 + jnorm[ch-5*192];
06235 row = inorm[ch-5*192];
06236 supmod = 8+12;
06237 break;
06238 case 6:
06239 col = 9 - jnorm[ch-6*192];
06240 row = 25 - inorm[ch-6*192];
06241 supmod = 8+12;
06242 break;
06243 case 7:
06244 col = 9 - jnorm[ch-7*192];
06245 row = 49 - inorm[ch-7*192];
06246 supmod = 8+12;
06247 break;
06248 case 8:
06249 col = 9 - jnorm[ch-8*192];
06250 row = 73 - inorm[ch-8*192];
06251 supmod = 8+12;
06252 break;
06253 }
06254 }
06255
06256 void StPmdGeom::chain41(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06257 {
06258 Int_t zone = ch/192;
06259 switch(zone)
06260 {
06261 case 0:
06262 col = 25 - jnorm[ch];
06263 row = 25 - inorm[ch];
06264 supmod = 9+12;
06265 break;
06266 case 1:
06267 col = 8 + jnorm[ch-192];
06268 row = inorm[ch-192];
06269 supmod = 9+12;
06270 break;
06271 case 2:
06272 col = 9 - jnorm[ch-2*192];
06273 row = 25 - inorm[ch-2*192];
06274 supmod = 9+12;
06275 break;
06276 case 3:
06277 col = 73 - jmirr[ch-3*192];
06278 row = 33 - imirr[ch-3*192];
06279 supmod = 11+12;
06280 break;
06281 case 4:
06282 col = 49 - jmirr[ch-4*192];
06283 row = 33 - imirr[ch-4*192];
06284 supmod = 11+12;
06285 break;
06286 case 5:
06287 col = 24 + jmirr[ch-5*192];
06288 row = 32 + imirr[ch-5*192];
06289 supmod = 11+12;
06290 break;
06291 case 6:
06292 col = 48 + jmirr[ch-6*192];
06293 row = 32 + imirr[ch-6*192];
06294 supmod = 11+12;
06295 break;
06296 case 7:
06297 col = 73 - jmirr[ch-7*192];
06298 row = 49 - imirr[ch-7*192];
06299 supmod = 11+12;
06300 break;
06301 case 8:
06302 col = 49 - jmirr[ch-8*192];
06303 row = 49 - imirr[ch-8*192];
06304 supmod = 11+12;
06305 break;
06306 }
06307 }
06308 void StPmdGeom::chain42(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06309 {
06310 Int_t zone = ch/192;
06311 switch(zone)
06312 {
06313 case 0:
06314 col = 73 - jnorm[ch];
06315 row = 25 - inorm[ch];
06316 supmod = 10+12;
06317 break;
06318 case 1:
06319 col = 73 - jnorm[ch-192];
06320 row = 49 - inorm[ch-192];
06321 supmod = 10+12;
06322 break;
06323 case 2:
06324 col = 73 - jnorm[ch-2*192];
06325 row = 73 - inorm[ch-2*192];
06326 supmod = 10+12;
06327 break;
06328 case 3:
06329 col = 56 + jnorm[ch-3*192];
06330 row = 48 + inorm[ch-3*192];
06331 supmod = 10+12;
06332 break;
06333 case 4:
06334 col = 56 + jnorm[ch-4*192];
06335 row = 24 + inorm[ch-4*192];
06336 supmod = 10+12;
06337 break;
06338 case 5:
06339 col = 56 + jnorm[ch-5*192];
06340 row = inorm[ch-5*192];
06341 supmod = 10+12;
06342 break;
06343 case 6:
06344 col = 57 - jnorm[ch-6*192];
06345 row = 25 - inorm[ch-6*192];
06346 supmod = 10+12;
06347 break;
06348 case 7:
06349 col = 57 - jnorm[ch-7*192];
06350 row = 49 - inorm[ch-7*192];
06351 supmod = 10+12;
06352 break;
06353 case 8:
06354 col = 57 - jnorm[ch-8*192];
06355 row = 73 - inorm[ch-8*192];
06356 supmod = 10+12;
06357 break;
06358 }
06359 }
06360 void StPmdGeom::chain43(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06361 {
06362 Int_t zone = ch/192;
06363 switch(zone)
06364 {
06365 case 0:
06366 col = 73 - jmirr[ch];
06367 row = 9 - imirr[ch];
06368 supmod = 11+12;
06369 break;
06370 case 1:
06371 col = 49 - jmirr[ch-192];
06372 row = 9 - imirr[ch-192];
06373 supmod = 11+12;
06374 break;
06375 case 2:
06376 col = 25 - jmirr[ch-2*192];
06377 row = 9 - imirr[ch-2*192];
06378 supmod = 11+12;
06379 break;
06380 case 3:
06381 col = jmirr[ch-3*192];
06382 row = 8 + imirr[ch-3*192];
06383 supmod = 11+12;
06384 break;
06385 case 4:
06386 col = 24 + jmirr[ch-4*192];
06387 row = 8 + imirr[ch-4*192];
06388 supmod = 11+12;
06389 break;
06390 case 5:
06391 col = 48 + jmirr[ch-5*192];
06392 row = 8 + imirr[ch-5*192];
06393 supmod = 11+12;
06394 break;
06395 case 6:
06396 col = 73 - jmirr[ch-6*192];
06397 row = 25 - imirr[ch-6*192];
06398 supmod = 11+12;
06399 break;
06400 case 7:
06401 col = 49 - jmirr[ch-7*192];
06402 row = 25 - imirr[ch-7*192];
06403 supmod = 11+12;
06404 break;
06405 case 8:
06406 col = 25 - jmirr[ch-8*192];
06407 row = 25 - imirr[ch-8*192];
06408 supmod = 11+12;
06409 break;
06410 }
06411 }
06412 void StPmdGeom::chain44(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06413 {
06414 Int_t zone = ch/192;
06415 switch(zone)
06416 {
06417 case 0:
06418 col = 49 - jnorm[ch];
06419 row = 25 - inorm[ch];
06420 supmod = 10+12;
06421 break;
06422 case 1:
06423 col = 49 - jnorm[ch-192];
06424 row = 49 - inorm[ch-192];
06425 supmod = 10+12;
06426 break;
06427 case 2:
06428 col = 49 - jnorm[ch-2*192];
06429 row = 73 - inorm[ch-2*192];
06430 supmod = 10+12;
06431 break;
06432 case 3:
06433 col = 32 + jnorm[ch-3*192];
06434 row = 48 + inorm[ch-3*192];
06435 supmod = 10+12;
06436 break;
06437 case 4:
06438 col = 32 + jnorm[ch-4*192];
06439 row = 24 + inorm[ch-4*192];
06440 supmod = 10+12;
06441 break;
06442 case 5:
06443 col = 32 + jnorm[ch-5*192];
06444 row = inorm[ch-5*192];
06445 supmod = 10+12;
06446 break;
06447 case 6:
06448 col =33 - jnorm[ch-6*192];
06449 row =25 - inorm[ch-6*192];
06450 supmod = 10+12;
06451 break;
06452 case 7:
06453 col =33 - jnorm[ch-7*192];
06454 row =49 - inorm[ch-7*192];
06455 supmod = 10+12;
06456 break;
06457 case 8:
06458 col =33 - jnorm[ch-8*192];
06459 row =73 - inorm[ch-8*192];
06460 supmod = 10+12;
06461 break;
06462 }
06463 }
06464 void StPmdGeom::chain45(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06465 {
06466 Int_t zone = ch/192;
06467 switch(year){
06468 case 6:
06469
06470 switch(zone)
06471 {
06472 case 0:
06473 col = 25 - jnorm[ch];
06474 row = 25 - inorm[ch];
06475 supmod = 10+12;
06476 break;
06477 case 1:
06478 col = 25 - jnorm[ch-192];
06479 row = 49 - inorm[ch-192];
06480 supmod = 10+12;
06481 break;
06482 case 2:
06483 col = 8 + jnorm[ch-2*192];
06484 row = 24 + inorm[ch-2*192];
06485 supmod = 10+12;
06486 break;
06487 case 3:
06488 col = 8 + jnorm[ch-3*192];
06489 row = inorm[ch-3*192];
06490 supmod = 10+12;
06491 break;
06492 case 4:
06493 col = 9 - jnorm[ch-4*192];
06494 row = 25 - inorm[ch-4*192];
06495 supmod = 10+12;
06496 break;
06497 case 5:
06498 col = 9 - jnorm[ch-5*192];
06499 row = 49 - inorm[ch-5*192];
06500 supmod = 10+12;
06501 break;
06502 }
06503 break;
06504 case 8:
06505 case 10:
06506 case 11:
06507 case 12:
06508 switch(zone)
06509 {
06510 case 0:
06511 col = 25 - jmirr[ch];
06512 row = 33 - imirr[ch];
06513 supmod = 11+12;
06514 break;
06515 case 1:
06516 col = jmirr[ch-192];
06517 row = 32 + imirr[ch-192];
06518 supmod = 11+12;
06519 break;
06520 case 2:
06521 col = 25 - jmirr[ch-2*192];
06522 row = 49- imirr[ch-2*192];
06523 supmod = 11+12;
06524 break;
06525 case 3:
06526 col = 25 - jnorm[ch-3*192];
06527 row = 25 - inorm[ch-3*192];
06528 supmod = 10+12;
06529 break;
06530 case 4:
06531 col = 25 - jnorm[ch-4*192];
06532 row = 49 - inorm[ch-4*192];
06533 supmod = 10+12;
06534 break;
06535 case 5:
06536 col = 8 + jnorm[ch-5*192];
06537 row = 24 + inorm[ch-5*192];
06538 supmod = 10+12;
06539 break;
06540 case 6:
06541 col = 8 + jnorm[ch-6*192];
06542 row = inorm[ch-6*192];
06543 supmod = 10+12;
06544 break;
06545 case 7:
06546 col = 9 - jnorm[ch-7*192];
06547 row = 25 - inorm[ch-7*192];
06548 supmod = 10+12;
06549 break;
06550 case 8:
06551 col = 9 - jnorm[ch-8*192];
06552 row = 49 - inorm[ch-8*192];
06553 supmod = 10+12;
06554 break;
06555 }
06556 break;
06557 }
06558 }
06559
06560 void StPmdGeom::chain46(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06561 {
06562 Int_t zone = ch/192;
06563 switch(year){
06564 case 6:
06565
06566 switch(zone)
06567 {
06568 case 0:
06569 col = 25 - jmirr[ch];
06570 row = 33 - imirr[ch];
06571 supmod = 11+12;
06572 break;
06573 case 1:
06574 col = jmirr[ch-192];
06575 row = 32 + imirr[ch-192];
06576 supmod = 11+12;
06577 break;
06578 case 2:
06579 col = 25 - jmirr[ch-2*192];
06580 row = 49- imirr[ch-2*192];
06581 supmod = 11+12;
06582 break;
06583 }
06584 break;
06585 case 8:
06586 case 10:
06587 case 11:
06588 case 12:
06589 switch(zone)
06590 {
06591 case 0:
06592 col = jnorm[ch];
06593 row = 48 + inorm[ch];
06594 supmod = 12 + 12;
06595 break;
06596 case 1:
06597 col = 17 - jnorm[ch-192];
06598 row = 73 - inorm[ch-192];
06599 supmod = 12 + 12;
06600 break;
06601 case 2:
06602 col = 16 + jnorm[ch-2*192];
06603 row = 48 + inorm[ch-2*192];
06604 supmod = 12 + 12;
06605 break;
06606 case 3:
06607 col = 24 + jnorm[ch-3*192];
06608 row = 48 + inorm[ch-3*192];
06609 supmod = 12+12;
06610 break;
06611 case 4:
06612 col = 24 + jnorm[ch-4*192];
06613 row = 24 + inorm[ch-4*192];
06614 supmod = 12+12;
06615 break;
06616 case 5:
06617 col = 41 - jnorm[ch-5*192];
06618 row = 49 - inorm[ch-5*192];
06619 supmod = 12+12;
06620 break;
06621 case 6:
06622 col = 41 - jnorm[ch-6*192];
06623 row = 73 - inorm[ch-6*192];
06624 supmod = 12+12;
06625 break;
06626 case 7:
06627 col = 40 + jnorm[ch-7*192];
06628 row = 48 + inorm[ch-7*192];
06629 supmod = 12+12;
06630 break;
06631 case 8:
06632 col = 40 + jnorm[ch-8*192];
06633 row = 24 + inorm[ch-8*192];
06634 supmod = 12+12;
06635 break;
06636 }
06637 break;
06638 }
06639 }
06640
06641 void StPmdGeom::chain47(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06642 {
06643 Int_t zone = ch/192;
06644 switch(year){
06645 case 6:
06646
06647 switch(zone)
06648 {
06649 case 0:
06650 col = 24 + jnorm[ch];
06651 row = 48 + inorm[ch];
06652 supmod = 12+12;
06653 break;
06654 case 1:
06655 col = 24 + jnorm[ch-192];
06656 row = 24 + inorm[ch-192];
06657 supmod = 12+12;
06658 break;
06659 case 2:
06660 col = 41 - jnorm[ch-2*192];
06661 row = 49 - inorm[ch-2*192];
06662 supmod = 12+12;
06663 break;
06664 case 3:
06665 col = 41 - jnorm[ch-3*192];
06666 row = 73 - inorm[ch-3*192];
06667 supmod = 12+12;
06668 break;
06669 case 4:
06670 col = 40 + jnorm[ch-4*192];
06671 row = 48 + inorm[ch-4*192];
06672 supmod = 12+12;
06673 break;
06674 case 5:
06675 col = 40 + jnorm[ch-5*192];
06676 row = 24 + inorm[ch-5*192];
06677 supmod = 12+12;
06678 break;
06679 case 6:
06680 col = 48 + jnorm[ch-6*192];
06681 row = inorm[ch-6*192];
06682 supmod = 12+12;
06683 break;
06684 case 7:
06685 col = 65 - jnorm[ch-7*192];
06686 row = 25 - inorm[ch-7*192];
06687 supmod = 12+12;
06688 break;
06689 case 8:
06690 col = 64 + jnorm[ch-8*192];
06691 row = inorm[ch-8*192];
06692 supmod = 12+12;
06693 break;
06694 }
06695 break;
06696 case 8:
06697 case 10:
06698 case 11:
06699 case 12:
06700 switch(zone)
06701 {
06702 case 0:
06703 col = 48 + jnorm[ch];
06704 row = 48 + inorm[ch];
06705 supmod = 12+12;
06706 break;
06707 case 1:
06708 col = 48 + jnorm[ch-192];
06709 row = 24 + inorm[ch-192];
06710 supmod = 12 + 12;
06711 break;
06712 case 2:
06713 col = 48 + jnorm[ch-2*192];
06714 row = inorm[ch-2*192];
06715 supmod = 12 + 12;
06716 break;
06717 case 3:
06718 col = 65 - jnorm[ch-3*192];
06719 row = 25 - inorm[ch-3*192];
06720 supmod = 12+12;
06721 break;
06722 case 4:
06723 col = 65 - jnorm[ch-4*192];
06724 row = 49 - inorm[ch-4*192];
06725 supmod = 12+12;
06726 break;
06727 case 5:
06728 col = 65 - jnorm[ch-5*192];
06729 row = 73 - inorm[ch-5*192];
06730 supmod = 12+12;
06731 break;
06732 case 6:
06733 col = 64 + jnorm[ch-6*192];
06734 row = 48 + inorm[ch-6*192];
06735 supmod = 12+12;
06736 break;
06737 case 7:
06738 col = 64 + jnorm[ch-7*192];
06739 row = 24 + inorm[ch-7*192];
06740 supmod = 12+12;
06741 break;
06742 case 8:
06743 col = 64 + jnorm[ch-8*192];
06744 row = inorm[ch-8*192];
06745 supmod = 12+12;
06746 break;
06747 }
06748 break;
06749 }
06750 }
06751 void StPmdGeom::chain48(Int_t& ch,Int_t& supmod,Int_t& col,Int_t& row,Int_t year)
06752 {
06753 Int_t zone = ch/192;
06754 switch(year){
06755 case 6:
06756
06757 switch(zone)
06758 {
06759 case 0:
06760 col = 48 + jnorm[ch];
06761 row = 48 + inorm[ch];
06762 supmod = 12+12;
06763 break;
06764 case 1:
06765 col = 65 - jnorm[ch-192];
06766 row = 73 - inorm[ch-192];
06767 supmod = 12+12;
06768 break;
06769 case 2:
06770 col = 64 + jnorm[ch-2*192];
06771 row = 48 + inorm[ch-2*192];
06772 supmod = 12+12;
06773 break;
06774 case 3:
06775 col = 72 + jnorm[ch-3*192];
06776 row = 48 + inorm[ch-3*192];
06777 supmod = 12+12;
06778 break;
06779 case 4:
06780 col = 72 + jnorm[ch-4*192];
06781 row = 24 + inorm[ch-4*192];
06782 supmod = 12+12;
06783 break;
06784 case 5:
06785 col = 89 - jnorm[ch-5*192];
06786 row = 49 - inorm[ch-5*192];
06787 supmod = 12+12;
06788 break;
06789 case 6:
06790 col = 89 - jnorm[ch-6*192];
06791 row = 73 - inorm[ch-6*192];
06792 supmod = 12+12;
06793 break;
06794 case 7:
06795 col = 88 + jnorm[ch-7*192];
06796 row = 48 + inorm[ch-7*192];
06797 supmod = 12+12;
06798 break;
06799 case 8:
06800 col = 88 + jnorm[ch-8*192];
06801 row = 24 + inorm[ch-8*192];
06802 supmod = 12+12;
06803 break;
06804 }
06805 break;
06806 case 8:
06807 case 10:
06808 case 11:
06809 case 12:
06810 switch(zone)
06811 {
06812 case 0:
06813 col = 72 + jnorm[ch];
06814 row = 48 + inorm[ch];
06815 supmod = 12+12;
06816 break;
06817 case 1:
06818 col = 72 + jnorm[ch-192];
06819 row = 24 + inorm[ch-192];
06820 supmod = 12 + 12;
06821 break;
06822 case 2:
06823 col = 72 + jnorm[ch-2*192];
06824 row = inorm[ch-2*192];
06825 supmod = 12 + 12;
06826 break;
06827 case 3:
06828 col = 89 - jnorm[ch-3*192];
06829 row = 25 - inorm[ch-3*192];
06830 supmod = 12+12;
06831 break;
06832 case 4:
06833 col = 89 - jnorm[ch-4*192];
06834 row = 49 - inorm[ch-4*192];
06835 supmod = 12+12;
06836 break;
06837 case 5:
06838 col = 89 - jnorm[ch-5*192];
06839 row = 73 - inorm[ch-5*192];
06840 supmod = 12+12;
06841 break;
06842 case 6:
06843 col = 88 + jnorm[ch-6*192];
06844 row = 48 + inorm[ch-6*192];
06845 supmod = 12+12;
06846 break;
06847 case 7:
06848 col = 88 + jnorm[ch-7*192];
06849 row = 24 + inorm[ch-7*192];
06850 supmod = 12+12;
06851 break;
06852 case 8:
06853 col = 88 + jnorm[ch-8*192];
06854 row = inorm[ch-8*192];
06855 supmod = 12+12;
06856 break;
06857 }
06858 break;
06859 }
06860 }
06861
06862 void StPmdGeom::drawPMDXY(Int_t firstchain,Int_t lastchain, Int_t runno){
06864 readBoardDetail(runno);
06865
06866 Int_t rn=0,year=0;
06867 GetRunYear(runno,rn,year);
06868 cout<<"runnumber = "<<rn<<" year="<<year<<endl;
06869
06870 char histname[20];
06871 char gifname[20];
06872 if (firstchain<25){
06873 sprintf(histname,"CPVXY%d",runno);
06874 sprintf(gifname,"CPVXY%d.gif",runno);
06875 }else{
06876 sprintf(histname,"PMDXY%d",runno);
06877 sprintf(gifname,"PMDXY%d.gif",runno);
06878 }
06879 TH2F * hpmdXY = new TH2F("hpmdXY",histname,100,-135,135,100,-135,135);
06880 TCanvas *pmdC2 = new TCanvas("pmdC2","PMDXY canvas",800,800);
06881 hpmdXY->SetStats(kFALSE);
06882 pmdC2->cd(1);
06883 hpmdXY->Draw("pmdC2");
06884
06885 Int_t sm=0,row=0,col=0,chmod=-1;
06886 Int_t bmax[49];
06887 for(Int_t chain=1;chain<49;chain++){
06888 bmax[chain]=27;
06889
06890 if (year==8){
06891 if(chain==1 || chain==7 || chain==19 || chain==20 ||
06892 chain==23 || chain==24)
06893 {bmax[chain]=36;}
06894 }
06895 if(year==10||year==11||year==12){
06896 if(chain==8||chain==12||chain==23||chain==24){bmax[chain]=36;}
06897 }
06898 }
06899 for (Int_t chain=firstchain;chain<=lastchain;chain++){
06900
06901
06902 for(Int_t chan = 0;chan<27*64;chan++){
06903 Int_t mapcheck;
06904 if (year==5){
06905 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod);
06906 }else{
06907 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod,year);
06908 }
06909
06910 if(mapcheck==kStOK && sm>0){
06911 Float_t xreal = 0, yreal =0, eta=0,phi=0;
06912 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
06913
06914 hpmdXY->Fill(xreal,yreal);
06915 }
06916 }
06917 }
06918 pmdC2->Print(gifname,"gif");
06919 }
06920
06921 void StPmdGeom::drawPMDetaphi(Int_t firstchain,Int_t lastchain, Int_t runno){
06923 readBoardDetail(runno);
06924
06925 Int_t rn=0,year=0;
06926 GetRunYear(runno,rn,year);
06927 cout<<"runnumber = "<<rn<<" year="<<year<<endl;
06928
06929 char histname[20];
06930 char gifname[20];
06931 if (firstchain<25){
06932 sprintf(histname,"CPVetaphi%d",runno);
06933 sprintf(gifname,"CPVetaphi%d.gif",runno);
06934 }else{
06935 sprintf(histname,"PMDetaphi%d",runno);
06936 sprintf(gifname,"PMDetaphi%d.gif",runno);
06937 }
06938 TH2F * hpmdetaphi = new TH2F("hpmdetaphi",histname,40,-4.0,-2.0,180,-1.0*TMath::Pi(),TMath::Pi());
06939 TCanvas *pmdC3 = new TCanvas("pmdC3","PMDetaphi canvas",800,800);
06940 hpmdetaphi->SetStats(kFALSE);
06941 pmdC3->cd(1);
06942 hpmdetaphi->Draw("pmdC3");
06943
06944 Int_t sm,row,col,chmod;
06945 Int_t bmax[49];
06946 for(Int_t chain=1;chain<49;chain++){
06947 bmax[chain]=27;
06948
06949 if (year==8){
06950 if(chain==1 || chain==7 || chain==19 || chain==20 ||
06951 chain==23 || chain==24)
06952 {bmax[chain]=36;}
06953 }
06954 if(year==10||year==11||year==12){
06955 if(chain==8||chain==12||chain==23||chain==24){bmax[chain]=36;}
06956 }
06957 }
06958 for (Int_t chain=firstchain;chain<=lastchain;chain++){
06959
06960
06961 for(Int_t chan = 0;chan<27*64;chan++){
06962 Int_t mapcheck;
06963 if (year==5){
06964 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod);
06965 }else{
06966 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod,year);
06967 }
06968
06969 if(mapcheck==kStOK && sm>0){
06970 Float_t xreal = 0, yreal =0, eta=0,phi=0;
06971 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
06972
06973 hpmdetaphi->Fill(eta,phi);
06974 }
06975 }
06976 }
06977 pmdC3->Print(gifname,"gif");
06978 }
06979
06980 void StPmdGeom::drawPMD(Int_t firstchain,Int_t lastchain, Int_t runno){
06982 readBoardDetail(runno);
06983
06984 Int_t rn=0,year=0;
06985 GetRunYear(runno,rn,year);
06986
06987
06988 char histname[20];
06989 char gifname[20];
06990 if (firstchain<25){
06991 sprintf(histname,"CPV%d",runno);
06992 sprintf(gifname,"CPV%d.gif",runno);
06993 }else{
06994 sprintf(histname,"PMD%d",runno);
06995 sprintf(gifname,"PMD%d.gif",runno);
06996 }
06997
06998 TH2F * hpmdxy = new TH2F("hpmdxy",histname,100,-135,135,100,-135,135);
06999 TCanvas *pmdC = new TCanvas("pmdC","PMD canvas",800,800);
07000 hpmdxy->SetStats(kFALSE);
07001 pmdC->cd(1);
07002 hpmdxy->Draw("pmdC");
07003 Int_t sm,row,col,chmod;
07004 Float_t xcon[5],ycon[5];
07005 Int_t icorner=0;
07006 Int_t bmax[49];
07007 for(Int_t chain=1;chain<49;chain++){
07008 bmax[chain]=27;
07009
07010 if (year==8){
07011 if(chain==1 || chain==7 || chain==19 || chain==20 ||
07012 chain==23 || chain==24)
07013 {bmax[chain]=36;}
07014 }
07015 if(year==10||year==11||year==12){
07016 if(chain==8||chain==12||chain==23||chain==24){bmax[chain]=36;}
07017 }
07018 }
07019 for (Int_t chain=firstchain;chain<=lastchain;chain++){
07020
07021 Int_t workingboard = 0;
07022 Float_t xboard[27],yboard[27];
07023 Int_t workingchannel = 0;
07024
07025 for(Int_t chan = 0;chan<27*64;chan++){
07026 Int_t mapcheck;
07027 if (year==5){
07028 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod);
07029 }else{
07030 mapcheck = ChainMapping(chain,chan,sm,col,row,chmod,year);
07031 }
07032
07033
07034 if(mapcheck==kStOk && sm > 0){
07035
07036 DrawRhombus(chain,chan,sm,row,col,icorner,xcon,ycon);
07037 if(icorner==4){
07038 xboard[workingboard]=0;
07039 yboard[workingboard]=0;
07040 for(Int_t i=0;i<4;i++){
07041 xboard[workingboard]=xboard[workingboard]+xcon[i];
07042 yboard[workingboard]=yboard[workingboard]+ycon[i];
07043
07044 }
07045 xboard[workingboard]=xboard[workingboard]/4;
07046 yboard[workingboard]=yboard[workingboard]/4;
07047
07048 workingboard++;
07049 icorner = 0;
07050 }
07051
07052 workingchannel++;
07053 }
07054
07055 }
07056 if(workingboard>0){
07057
07058 cout<<"working channels are "<<workingchannel<<endl;
07059 cout<<"working boards are "<<workingboard<<endl;
07060
07061 TPolyLine * dchain;
07062 if (chain>24){
07063 Float_t xmboard[27];
07064 for(Int_t ib=0;ib<27;ib++){xmboard[ib]=-1*xboard[ib];}
07065 dchain = new TPolyLine(workingboard,xmboard,yboard);
07066 }else{
07067 dchain = new TPolyLine(workingboard,xboard,yboard);
07068 }
07069 dchain->SetLineWidth(2);
07070 dchain->SetLineColor(2);
07071 dchain->Draw();
07072 char chainnum[3];
07073 sprintf(chainnum,"%d",chain);
07074 if (chain>24){
07075 TLatex* chainno = new TLatex(-xboard[0]+1,yboard[0]+1,chainnum);
07076 TMarker * startchain = new TMarker(-xboard[0],yboard[0],20);
07077 startchain->SetMarkerColor(2);
07078 startchain->Draw();
07079 chainno->SetTextSize(0.04);
07080 chainno->Draw();
07081 }else{
07082 TLatex* chainno = new TLatex(xboard[0]+1,yboard[0]+1,chainnum);
07083 TMarker * startchain = new TMarker(xboard[0],yboard[0],20);
07084 startchain->SetMarkerColor(2);
07085 startchain->Draw();
07086 chainno->SetTextSize(0.05);
07087 chainno->Draw();
07088 }
07089 }
07090 }
07091 pmdC->Print(gifname,"gif");
07092
07093 }
07094
07095 void StPmdGeom::DrawRhombus(Int_t chain,Int_t chan,Int_t sm, Int_t row, Int_t col, Int_t& icorner,Float_t* xcon,Float_t* ycon)
07096 {
07097 Float_t xreal,yreal,eta,phi;
07098 if(row%8==1 && col%8==1){
07099 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
07100 xcon[0]=xreal;ycon[0]=yreal;
07101 xcon[4]=xreal;ycon[4]=yreal;
07102 icorner++;
07103 }
07104 if(row%8==1 && col%8==0){
07105 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
07106 xcon[1]=xreal;ycon[1]=yreal;
07107 icorner++;
07108 }
07109 if(row%8==0 && col%8==0){
07110 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
07111 xcon[2]=xreal;ycon[2]=yreal;
07112 icorner++;
07113 }
07114 if(row%8==0 && col%8==1){
07115 IntDetCell_xy(sm,row,col,xreal,yreal,eta,phi);
07116 xcon[3]=xreal; ycon[3]=yreal;
07117 icorner++;
07118 }
07119 if(icorner==4){
07120
07121
07122
07123
07124
07125
07126 Float_t xrhomb[5];
07127 TPolyLine * rhombus;
07128 if (chain>24){
07129 for(Int_t rh=0;rh<=5;rh++){xrhomb[rh]=-1*xcon[rh];}
07130 rhombus = new TPolyLine(5,xrhomb,ycon);
07131 }else{
07132 rhombus = new TPolyLine(5,xcon,ycon);
07133 }
07134
07135 rhombus->SetLineWidth(1);
07136 rhombus->SetLineColor(1);
07137
07138
07139
07140
07141
07142
07143
07144
07145 rhombus->Draw();
07146
07147 }
07148 }
07149
07150 void StPmdGeom::GetRunYear(Int_t runno,Int_t&rn,Int_t&year){
07151
07152
07153
07154 year = Int_t(runno/1000000);
07155 Int_t rest = runno-year*1000000;
07156 rn = Int_t(rest/1000);
07157
07158
07159 }
07160
07161 Int_t StPmdGeom::GetNBoardsChain(Int_t chain){
07162
07163 Int_t aliveboard = 0;
07164 for(Int_t i=0;i<36;i++){
07165 if (status[chain-1][i]==1) aliveboard++;
07166 }
07167
07168 return aliveboard;
07169
07170 }
07171
07172 void StPmdGeom::GetNBoardsSM(Int_t year , Int_t * aliveboard){
07173
07174 Int_t channel;
07175
07176 for(Int_t i=0;i<24;i++){
07177 aliveboard[i] = 0;
07178 }
07179
07180 for(Int_t chain = 1;chain<=48;chain++){
07181 for(Int_t brd = 0;brd<27;brd++){
07182 channel = brd*64 + 10;
07183 Int_t supmod,col,row,chmod;
07184 Int_t mapcheck;
07185 if (year==5){
07186 mapcheck = ChainMapping(chain,channel,supmod,col,row,chmod);
07187 }else{
07188 mapcheck = ChainMapping(chain,channel,supmod,col,row,chmod,year);
07189 }
07190 if(mapcheck==kStOk && supmod > 0) {
07191 aliveboard[supmod-1]++;
07192 }
07193 }
07194 }
07195
07196 }