C ============================================================ SUBROUTINE VER_CCAGE ( CAGE_TYPE, N_CAGES, XYZ_CAGE, x ORIENTATION ) C ============================================================ IMPLICIT NONE C C Description:- C ============= C This subroutine defines the geometry for a C-cage C containing two Si detector wafers C C Author:- C ======== C JPSullivan 22-Aug-2000, using some code from the C original MVD PISA simulation written around C 17-April-1992 by Ju Kang. C C Creation Date: 22-Aug-2000 C ========================== C C Revisions:- C =========== C Date Name Description C ---- ---- ---------------------------------------- C C Arguments:- C =========== INTEGER CAGE_TYPE(24) !0-6 = # Si detectors on cage INTEGER N_CAGES !total number of cages to be positioned REAL XYZ_CAGE(3,24) !xyz positions of the cages INTEGER ORIENTATION(24) !0=null rotation, 1=rotated C C Implicit inputs, outputs, side effects:- C ======================================== C C Called by: GUGEOM C Calls : GSROTM, GSVOLU, GSATT, VER_ROCAGE, VER_SIDETS, GSPOS C Side effects: Numerous changes to Geants GEOM banks. C C Global Specifications:- C ======================= C include 'g77trigdef.inc' include 'gugeom.inc' include 'gcunit.inc' C include 'fstore.inc' include 'sublink.inc' include 'fpvlink.inc' C C External Specifications:- C ========================= C None C C Local Specifications:- C ====================== C C Following contains the geometry data for a single C-cage C C One C-cage in the MVD contains up to 6 Si detector wafers. C C*************************************************************************** C C--> Define dimensions of two different types of wafers: C REAL DVWR1(3) ! Box with X, Y, Z REAL DVWR2(3) ! Box with X, Y, Z C C--> Define dimensions of sensitive volume (strips) inside the wafer: C REAL DVSL1(3) ! Box with X, Y, Z REAL DVSL2(3) ! Box with X, Y, Z REAL PITCH ! Read-out interval INTEGER NSTRIP ! Number of strips in the wafer C C--> Distance from the ladders to the beam axis: C REAL VISLR ! Radius for VISL REAL VOSLR ! Radius for VOSL C C-------------------------------------------------------------------------- C INTEGER COLOR_VER ! Color (visible/invisible) INTEGER MED_VER_SEN ! Silicon sensitive INTEGER MED_VER_INS ! Silicon insensitive INTEGER MED_VER_HE ! helium is default fill material C C names of some volumes C CHARACTER*4 C_CAGE_NAME !main volume for C-cage C C======================================================================== C INTEGER IVOLU ! Error flag returned by GSVOLU INTEGER I ! Loop index INTEGER NMED ! Medium number C REAL VER_PGON_MAIN(10) ! main volume for C-cage REAL CCAGE_DZ2 ! half-length (beam direction of a c cage) REAL SI_R1_THICK ! thickness (radial direction), inner Si REAL SI_R2_THICK ! thickness (radial direction), outer Si INTEGER MYROT !local copy of rotation matrix number INTEGER MYROTSAV !local copy of rotation matrix number C INTEGER N_CAGE_TYPE INTEGER FIRST_OF_TYPE(7) SAVE FIRST_OF_TYPE C DATA FIRST_OF_TYPE / 7*0 / C C------------------------------------------------------------------------- C C Executable Statements:- C ======================= C C Extract the relevant material codes from the Zebra bank C MED_VER_SEN = QF(LFV_PARA + OFVA_MED_SEN) MED_VER_INS = QF(LFV_PARA + OFVA_MED_INS) MED_VER_HE = QF(LFV_PARA + OFVA_MED_HE) VISLR = QF(LFV_PARA + OFVA_VISLR) VOSLR = QF(LFV_PARA + OFVA_VOSLR) CCAGE_DZ2 = QF(LFV_PARA + OFVA_DVWR1+2) SI_R1_THICK = QF(LFV_PARA + OFVA_DVWR1) SI_R2_THICK = QF(LFV_PARA + OFVA_DVWR2) C IROT=IROT+1 MYROTSAV = IROT CALL GSROTM(IROT,90.,180.,90.,90.,180.,0. ) C DO I=1,N_CAGES C C check for legal values of CAGE_TYPE then construct C name of volume C N_CAGE_TYPE = CAGE_TYPE(I) C C This volume contains a whole C-cage C WRITE ( C_CAGE_NAME, 10 ) N_CAGE_TYPE 10 FORMAT ( 'VCG',I1) C IF ( N_CAGE_TYPE.LT.0 ) THEN WRITE ( LOUT, * ) 'ver_ccage: CAGE_TYPE(I)=',N_CAGE_TYPE , x ', I=',I,' change it to 0' N_CAGE_TYPE=0 ELSE IF ( N_CAGE_TYPE.GT.6 ) THEN WRITE ( LOUT, * ) 'ver_ccage: CAGE_TYPE(I)=',N_CAGE_TYPE , x ', I=',I,' change it to 6' N_CAGE_TYPE=6 END IF IF ( FIRST_OF_TYPE(N_CAGE_TYPE+1).EQ.0 ) THEN FIRST_OF_TYPE(N_CAGE_TYPE+1) = 1 C C--> Define main volume holding a C-cage. C VER_PGON_MAIN(1) = -90. VER_PGON_MAIN(2) = 180. VER_PGON_MAIN(3) = 3. VER_PGON_MAIN(4) = 2. VER_PGON_MAIN(5) = -CCAGE_DZ2 VER_PGON_MAIN(6) = VISLR - SI_R1_THICK VER_PGON_MAIN(7) = VOSLR + SI_R2_THICK VER_PGON_MAIN(8) = CCAGE_DZ2 VER_PGON_MAIN(9) = VER_PGON_MAIN(6) VER_PGON_MAIN(10)= VER_PGON_MAIN(7) C NMED = MED_VER_HE ! really air C CALL GSVOLU( C_CAGE_NAME, 'PGON', NMED, VER_PGON_MAIN, x 10, IVOLU ) CALL GSATT ( C_CAGE_NAME, 'SEEN', 0 ) !its not a "real" volume C CALL GSATT ( C_CAGE_NAME, 'COLO', COLOR_VER ) C C define all of the rohacell inside the C-cage C CALL VER_ROCAGE ( C_CAGE_NAME,VER_PGON_MAIN,N_CAGE_TYPE ) C C define the Si wafers on the C-cage C CALL VER_SIDETS ( C_CAGE_NAME,VER_PGON_MAIN,N_CAGE_TYPE ) END IF C C position the whole thing C IF ( ORIENTATION(I).EQ.0 ) THEN MYROT=IROTNULL ELSE MYROT = MYROTSAV END IF C C WRITE ( 6,1234 ) C_CAGE_NAME, I, XYZ_CAGE(1,I), C x XYZ_CAGE(2,I), XYZ_CAGE(3,I) C1234 FORMAT ( ' VER_CCAGE: position ccage= ',A4,' i=',I5, C x ' x=',F10.4,'y=',F10.4,' z=',F10.4 ) C CALL GSPOS ( C_CAGE_NAME, I, 'VERT', x XYZ_CAGE(1,I),XYZ_CAGE(2,I),XYZ_CAGE(3,I), x MYROT, 'ONLY' ) END DO C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C RETURN END