- epsilSi,stminSi);
-}
-//______________________________________________________________________
-void AliITSvSPD02::InitAliITSgeom(){
- // Based on the geometry tree defined in Geant 3.21, this
- // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
- // sturture.
- // Inputs:
- // none.
- // Outputs:
- // none.
- // Return:
- // none.
- if(strcmp(gMC->GetName(),"TGeant3")) {
- Error("InitAliITSgeom",
- "Wrong Monte Carlo. InitAliITSgeom uses TGeant3 calls");
- return;
- } // end if
- cout << "Reading Geometry transformation directly from Geant 3." << endl;
- const Int_t nlayers = 6;
- const Int_t ndeep = 5;
- Int_t itsGeomTreeNames[nlayers][ndeep],lnam[20],lnum[20];
- Int_t nlad[nlayers],ndet[nlayers];
- Double_t t[3],r[10];
- Float_t par[20],att[20];
- Int_t npar,natt,idshape,imat,imed;
- AliITSGeant3Geometry *ig = new AliITSGeant3Geometry();
- Int_t mod,lay,lad,det,i,j,k;
- Char_t names[nlayers][ndeep][4];
- Int_t itsGeomTreeCopys[nlayers][ndeep];
- Char_t *namesA[nlayers][ndeep] = {
- {"ALIC","ITSV","ITEL","IMB0","IMBS"}, // lay=1
- {"ALIC","ITSV","IDET","ITS0","ITST"}};// Test SPD
- Int_t itsGeomTreeCopysA[nlayers][ndeep]= {{1,1,4,1,1},// lay=1
- {1,1,1,1,1}};//lay=2 TestSPD
- for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
- for(k=0;k<4;k++) names[i][j][k] = namesA[i][j][k];
- itsGeomTreeCopys[i][j] = itsGeomTreeCopysA[i][j];
- } // end for i,j
- // Sorry, but this is not very pritty code. It should be replaced
- // at some point with a version that can search through the geometry
- // tree its self.
- cout << "Reading Geometry informaton from Geant3 common blocks" << endl;
- for(i=0;i<20;i++) lnam[i] = lnum[i] = 0;
- for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++)
- itsGeomTreeNames[i][j] = ig->StringToInt(names[i][j]);
- mod = 0;
- for(i=0;i<nlayers;i++){
- k = 1;
- for(j=0;j<ndeep;j++) if(itsGeomTreeCopys[i][j]!=0)
- k *= TMath::Abs(itsGeomTreeCopys[i][j]);
- mod += k;
- } // end for i
-
- if(fITSgeom!=0) delete fITSgeom;
- nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
- ndet[0]=4;ndet[1]=4;ndet[2]=6;ndet[3]=8;ndet[4]=22;ndet[5]=25;
- fITSgeom = new AliITSgeom(0,6,nlad,ndet,mod);
- mod = -1;
- for(lay=1;lay<=nlayers;lay++){
- for(j=0;j<ndeep;j++) lnam[j] = itsGeomTreeNames[lay-1][j];
- for(j=0;j<ndeep;j++) lnum[j] = itsGeomTreeCopys[lay-1][j];
- switch (lay){
- case 1: case 2: // layers 1 and 2 are a bit special
- lad = 0;
- for(j=1;j<=itsGeomTreeCopys[lay-1][4];j++){
- lnum[4] = j;
- for(k=1;k<=itsGeomTreeCopys[lay-1][5];k++){
- lad++;
- lnum[5] = k;
- for(det=1;det<=itsGeomTreeCopys[lay-1][6];det++){
- lnum[6] = det;
- mod++;
- ig->GetGeometry(ndeep,lnam,lnum,t,r,idshape,npar,natt,
- par,att,imat,imed);
- fITSgeom->CreatMatrix(mod,lay,lad,det,kSPD,t,r);
- if(!(fITSgeom->IsShapeDefined((Int_t)kSPD)))
- fITSgeom->ReSetShape(kSPD,
- new AliITSgeomSPD425Short(npar,par));
- } // end for det
- } // end for k
- } // end for j
- break;
- } // end switch
- } // end for lay
- return;