- // SPD part of telescope (MiniBuS)
- data[0] = 0.705;
- data[1] = 0.5*ddettelescope;
- data[2] = 3.536;
- TBRIK *IMB0shape = new TBRIK("IMB0shape","SPD wafer","Si",
- data[0],data[1],data[2]);
- Float_t detMiniBusX,detMiniBusY,detMiniBusZ;
- data[0] = detMiniBusX = 0.64;
- data[1] = detMiniBusY = 0.5*ddettelescope;
- data[2] = detMiniBusZ = 3.48;
- TBRIK *IMBSshape = new TBRIK("IMBSshape","SPD Sensitive volume","Si",
- data[0],data[1],data[2]);
- Float_t chipMiniBusX,chipMiniBusY,chipMiniBusZ;
- data[0] = chipMiniBusX = 0.793;
- data[1] = chipMiniBusY = 0.5*dchipMiniBus;
- data[2] = chipMiniBusZ = 0.68;
- TBRIK *ICMBshape = new TBRIK("ICMBshape","chip Minibus","Si",
- data[0],data[1],data[2]);
- data[0] = TMath::Max(detMiniBusX,chipMiniBusX);
- data[1] = detMiniBusY+chipMiniBusY;
- data[2] = TMath::Max(detMiniBusZ,chipMiniBusZ);
- TBRIK *ITELshape = new TBRIK("ITELshape","ITELshape","Air",
- data[0],data[1],data[2]);
-
- // SPD under test
- Float_t spdX,spdY,spdZ,spdchipX,spdchipY,spdchipZ;
- data[0] = 0.705;
- data[1] = ddettest;
- data[2] = 3.536;
- TBRIK *ITS0shape = new TBRIK("ITS0shape","SPD wafer","Si",
- data[0],data[1],data[2]); // contains detector
- data[0] = spdX = 0.64;
- data[1] = spdY = ddettest;
- data[2] = spdZ = 3.48;
- TBRIK *ITSTshape = new TBRIK("ITSTshape","SPD sensitive volume","Si",
- data[0],data[1],data[2]);
- // ITS0 with no translation and unit rotation matrix.
- data[0] = spdchipX = 0.793;
- data[1] = spdchipY = dchiptest;
- data[2] = spdchipZ = 0.68;
- TBRIK *IPC0shape = new TBRIK("IPC0shape","Readout Chips","Si",
- data[0],data[1],data[2]); // chip under test
- data[0] = TMath::Max(spdchipX,spdX);
- data[1] = spdY+spdchipY;
- data[2] = TMath::Max(spdchipZ,spdZ);
- TBRIK *IDETshape = new TBRIK("IDETshape","Detector Under Test","Air",
- data[0],data[1],data[2]);
- // Place volumes in geometry
- Int_t i,j;
- char name[20],title[50];
- Double_t px=0.0,py=0.0,pz[4]={-38.0,0.0,0.0,0.0};
- pz[1] = pz[0]+2.0;
- pz[2] = pz[1]+38.0+spdY+spdchipY+34.5;
- pz[3] = pz[2]+2.0;
- TNode *ITEL[4],*ICMB[4],*IMB0[4],*IMBS[4];
- TNode *IDET = new TNode("IDET","Detector Under Test",IDETshape,
- 0.0,0.0,pz[1]+38.0,r0,0);
- IDET->cd();
- TNode *ITS0 = new TNode("ITS0","SPD Chip",ITS0shape,
- 0.0,IDETshape->GetDy()-spdY,0.0,0,0);
- TNode *IPC0[5];
- for(i=0;i<5;i++) { //place readout chips on the back of SPD chip under test
- sprintf(name,"IPC0%d",i);
- sprintf(title,"Readout chip #%d",i+1);
- j = i-2;
- IPC0[i] = new TNode(name,title,IPC0shape,
- 0.0,spdchipY-IDETshape->GetDy(),
- j*2.0*spdchipZ+j*0.25*(spdZ-5.*spdchipZ),0,0);
- } // end for i
- ITS0->cd();
- TNode *ITST = new TNode("ITST","SPD sensitive volume",ITSTshape,
- 0.0,0.0,0.0,0,0);
- for(Int_t i=0;i<4;i++){
- ITSV->cd();
- sprintf(name,"ITEL%d",i);
- sprintf(title,"Test beam telescope element #%d",i+1);
- ITEL[i] = new TNode(name,title,ITELshape,px,py,pz[i],r0,0);
- ITEL[i]->cd();
- ICMB[i] = new TNode("ICMB","Chip MiniBus",ICMBshape,
- 0.0,-ITELshape->GetDy()+detMiniBusY,0.0,0,0);
- IMB0[i] = new TNode("IMB0","Chip MiniBus",IMB0shape,
- 0.0, ITELshape->GetDy()-detMiniBusY,0.0,0,0);
- IMB0[i]->cd();
- IMBS[i] = new TNode("IMBS","IMBS",IMBSshape,0.0,0.0,0.0,0,0);
- // place IMBS inside IMB0 with no translation and unit rotation matrix.
- } // end for i
- ALIC->cd();
- ITST->SetLineColor(kYellow);
- fNodes->Add(ITST);
- for(i=0;i<4;i++){
- IMBS[i]->SetLineColor(kGreen);
- fNodes->Add(IMBS[i]);
- } // end for i