! This is version 2a of the definition of the geometry for the G0 experiment ! in the forward-proton configuration. It is based on the original ! "hard-coded" geometry defined by Neven Simicevic (and output using the ! GEANT WEUCLID command). That geometry file was extensively edited and ! augmented by Emmanuel Rollinde de Beaumont. Finally, Steve Williamson ! made the following additional improvements: ! 1) Where possible, dimensions of GEANT entities are defined in terms ! of numbers taken from drawings and mathematical formulae (rather ! than "magic" number which are hard to check). ! 2) Shapes of volumes, especially in the collimator, are represented ! as accurately as possible. ! 3) Thermal contraction has been taken into account for parts specified ! at room temperature. ! 4) Detectors shapes are taken from the parameter definition file ! dated Feb. 18, 1999 (using the program det2euc). ! 5) Principle collimator (AKA C-collimator) surfaces are approximated ! using a series of elliptical cylinder steps. ! 6) The entire geometry has been checked by making measurements in ! Autocad (this geometry file was translated to Autocad using ! euc2acad). ! ! In version 1a all rotation ID numbers now use subsystem identifiers ! there were a few that escaped this change in the original). A problem ! with non-coplanar points in UPB1 has been fixed by using a different ! local coordinate system for this volume (with repurcussions in the ! definitions of UPB2 and UPC) such that the side opposite the zero-length ! side is a rectangle. A similar problem with non-coplanar points for ! USCP and USCS has been resolved by splitting each of these volumes into ! two volumes (USCP is split into USCP and USCQ; USCS is split into USCS and USCT). ! ! Version 2a contains modifications of the target section by C. Jones of 3/30 ! and 3/31. The target + cryoloop + support is in its own in a mother ! volume (TARG). (A slight error in placement of one target window was ! corrected. The euclid file has been modified to work with a new version ! (2a) of GREUCL. SEEN commands have been replaced by the more general SATT ! command. The DETE and HITS command syntax is simplified. Conditional ! execution is now possible with the IF, ELIF, ELSE and FI commands. ! This feature is used to chose forward or backward mode (see the MODE ! variable below). ! ! Version 2B contains modifications for version 2B of GREUCL. This ! includes the new ECHO command and the use of external variables, ! the values defined by FFKEY commmands in the "data card" file (ftn43). ! in particular, MODE is now an external variable. ! ! Version 2C (5/19/99) fixes a bug in the definition of the lower primary ! collimator discovered by Gilles Quemener and Fernand Merchez. The first ! surface had started at a point too far downstream because the length of ! LOS7 was too great (that length should have been diminished by the ! distance along the top of the LOS block that is occupied by LOS4). Now ! the lower primary collimator begins at Z of about 0 with a thickness of ! about 15 cm. ! ! The following MAJOR approximations are made in this model: ! o No hall geometry (walls, floor, beam dump, etc.) ! o No support (the spectrometer and detectors are suspended in vacuum). ! o Vacuum outside the spectrometer rather than air. ! o No LN2 Shield or superinsolation. ! o Crude target ! o No membrane covering exit window ! o Magnetic field only in vacuum regions. ! o Dimensions of upstream and downstream beam pipes and bellows ! are "educated guesses" ! o There is an inconsistency among the drawings that were used (which were ! not all the final drawings) which leads to the collimator modules ! being mis-positioned. This is probably due to the use of obsolete ! drawings for the octagon ring. The octagon ring position has been ! altered (fudged) to correct this. ! Other less critical approximations are described in comments associated ! with specific geometry elements. ! ! The following conventions are used for the names of variables: ! Origin of volume inside its mother volume: ! O_ where is a 4-character volume name. ! Volume parameters: ! _ where is some parameter ! name like RMIN or DX, and is a 4-character volume name. ! Material identifiers ! M_ where name is the 3-character material code ! Tracking medium identifiers ! T_ where name is the 3-character tracking medium code ! Material shrinkage factors ! C_ where name is the 3-character material code ! Subsystem identifiers for positioning copy numbers and rotation ! matricies (see below) ! S_ where name is a short (4-character) subsystem name ! ! Positioning copy numbers and rotation matrix identifiers are chosen ! according to the formula: *SYSFAC + , where is ! a number chosen to indicate the subsystem associated with positioning ! or rotation and is a number which starts at 1, and SYSFAC ! is a multiplicative factor (typically a power of 10) defined to be: SYSFAC = 1000 ! Subsystem numbers currently defined below. We also initialize a copy ! number index, CID_ for each sub-system. It should be incremented ! after each use of the POSI command for a volume in the corresponding ! subsystem. ! ! Generally used mother volumes, generally used rotation matricies. S_GEN = 0*SYSFAC CID_GEN = 1 ! Target S_TRG = 1*SYSFAC CID_TRG = 1 ! Coil case and coil S_COIL = 2*SYSFAC CID_COIL = 1 ! Cryostat (vacuum vessel, heads, ribs, windows, head tube, etc.) S_CRY = 3*SYSFAC CID_CRY = 1 ! Cold mass hardware (octagon ring, hubs, not collimator) S_COLD = 4*SYSFAC CID_COLD = 1 ! Shielding (on head and beamline) S_SHLD = 5*SYSFAC CID_SHLD = 1 ! Beam-line elements (vacuum pipes, flanges) S_BEAM = 6*SYSFAC CID_BEAM = 1 ! Collimator module S_COL = 7*SYSFAC CID_COL = 1 ! Scintillators S_SCI = 8*SYSFAC CID_SCI = 1 ! Minitorus S_COIM = 9*SYSFAC CID_COIM = 1 ! !-------------------------------+ ! Define Materials and Mixtures ! !-------------------------------+ ! Materials consisting of a single element are defined using the MATE command ! (see GEANT CONS100 writeup of the GSMATE subroutine for more details). ! The parameters of the command are: ! IMATE (integer) A unique user material number ! CHNAMA (character) A material name (up to 20 characters) ! A (real) atomic weight ! Z (real) atomic number ! DENS (real) density in g/cm**3 ! RADL (real) radiation length in cm ! ABSL (real) absorbtion length in cm (actually this is ignored by GEANT) ! NWBUF (integer) number of additional user parameters (can be 0) ! UBUF(i) (real) NWBUF values for the user parameters ! ! Currently no new materials are defined. ! ! Mixtures or compounds are defined using the MIXT command (see the GEANT ! CONS110 writeup of the GSMIXT subroutine for more details). The first four ! parameters of the command are always present: ! IMATE (integer) A unique user material number ! NAMATE (character) A material name (up to 20 characters) ! NLMAT (integer) ABS(NLMAT) is the number of elements in the mixture. ! NLMAT > 0 WMAT contains the proportion by weight of each material ! in the mixture. ! NLMAT < 0 WMAT contains the proportion by number of atoms of ! each kind in the mixture ! DENS (real) density in g/cm**3 ! A(i) (real) Atomic weights of each of the ABS(NLMAT) elements ! Z(i) (real) Atomic number of each of the ABS(NLMAT) elements ! WMAT(i) (real) Proportion by weight or number (see NLWAT above) of ! each of the ABS(NLMAT) elements ! Note that user defined material numbers begin at 17 (the first 16 materials ! are pre-defined by the GEANT routine GMATE). Note also that "$" is used ! to terminate names shorter than the maximum. ! ! Scintillator. This assumed to be something like Bicron BC-408, a ! polyvinyltoluene (PVT) based scintillator. The density and H-to-C ratio ! come from the Bicron catalog (on the web). M_SCI = 17 MIXT M_SCI 'Scintillator$' -2 1.032 12.0107 1.00794 6 1 1 1.1 ! ! Borated Polyethylene (Values for density and H-to-B ratio are taken from ! the Reactor Experiments Inc. catalog for type 201 material which is 5% Boron ! by weight). We assume that the H-to-C ratio is 2:1. M_BPO = 18 MIXT M_BPO 'Borated Polyethylene' -3 0.93 12.0107 1.00794 10.811 6 1 5 1 2 0.0793 ! ! Gas Helium (Values for density and H-to-B ratio are taken from ! the Reactor Experiments Inc. catalog for type 201 material which is 5% Boron ! by weight). We assume that the H-to-C ratio is 2:1. M_HEL = 19 MIXT M_HEL 'Gas Helium' -1 0.000177 4.00 2 1 ! Concrete M_CON = 20 MIXT M_CON 'Concrete' 6 2.7 1.0079 15.9994 26.981539 40.078 28.0855 55.8474 1. 8. 13. 20. 14. 28. 0.004 0.509 0.034 0.070 0.345 0.038 ! ! Quartz. This assumed to be something like Bicron BC-408, a ! polyvinyltoluene (PVT) based scintillator. The density and H-to-C ratio ! come from the Bicron catalog (on the web). M_QUA = 21 MIXT M_QUA 'Quartz$' -2 2.27 28.09 16.0 14 8 1 2 ! Glass parameters ! Glass: (SiO2) M_SIO = 22 MIXT M_SIO 'Glass$' -2 2.64 28.0855 15.9994 14. 8. 1. 2. ! Titanium parameters ! Assumed to be solid titanium ! Added 5-30-03 by Juliette M. Mammei M_TIT = 23 MIXT M_TIT 'Titanium' -1 4.507 47.867 22. 1. ! !-----------------------+ ! Define Tracking Media ! !-----------------------+ ! Tracking media are defined using the TMED command (see the GEANT CONS200 ! writeup of GSTMED for more details). The following parameters are ! accepted: ! ITMED (integer) Tracking medium number ! NATMED (character) Tracking medium name (up to 20 characters) ! MNAT (integer) Material number corresponding to this medium ! ISVOL (integer) sensitivity flag (>0 => sensitive). ! IFIELD (integer) magnetic field flag (0 => no field, 1 => strong ! inhomogenous field, other values possible too). ! FIELDM (real) Maximum field value in kgauss ! TMAXFD (real) Maximum angular deviation due to field in one step (deg) ! STEMAX (real) Maximum step permitted (cm) ! DEEMAX (real) Maximum fractional energy loss in one step (0 < DEEMAX < 1) ! EPSIL (real) Boundary crossing precision (cm) ! STMIN (real) minimum value for the maximum step imposed by energy loss, ! multiple scattering, cerenkov or magnetic field effects (cm) ! NWBUF (integer) Number of user parameters ! UBUF(i) (real) the NWBUF user parameters ! Note that we run GEANT with IGAUTO in common /GCTRAK/ set to 1. This means ! TMAXFD, STEMAX, DEEMAX, and STMIN are calculated automatically (independent ! of the values below). If IGAUTO is changed to 0, the negative vaules used ! ensure that GEANT will still use its own formulae to calculate them. ! Note also that "$" is used to terminate names shorter than the maximum. ! ! Air (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, and STMIN. T_AIR = 1 !TMED T_AIR 'AIR$' 15 0 0 0 -1.00 -.100E+11 -.249 .001 -.530 0 TMED T_AIR 'AIR$' 15 0 1 20. -.1 -.001 .004 .004 .004 0 0 ! ! Hydrogen (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. T_HYD = 2 TMED T_HYD 'Liquid Hydrogen$' 1 0 0 0 -20.00 -.100E+11 -.243 .010 -.022 0 ! ! Aluminium (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. Sensitivity flag is ON to permit usage of HITS. T_ALU = 3 TMED T_ALU 'Aluminium$' 9 1 0 0 -20.00 -.100E+11 -.183 .010 -.015 0 ! ! Vacuum (Standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, and ! STMIN. Magnetic field flag set to cause tracking in an inhomogeneous field ! using Runge-Kutta. T_VAC = 4 TMED T_VAC 'Vacuum$' 16 0 1 20. -.1 -.001 .004 .004 .004 0 0 T_VACS = 40 TMED T_VACS 'Vacuum$' 16 1 0 0. .100 .001 .001 .001 .001 0 0 !TMED T_VAC 'Vacuum$' 16 0 1 .98 -.10 -.100E+11 -.100 .002 -.100 0 ! ! Scintillator (user-defined mixture). Auto calculation of TMAXFD, STEMAX, ! DEEMAX and STMIN. Sensitivity flag is ON to permit usage of HITS. T_SCI = 5 !TMED T_SCI 'Scintillator$' M_SCI 1 0 0 -20.00 -.100E+11 -.031 .001 -.006 0 TMED T_SCI 'Scintillator$' M_SCI 1 0 0. .100 .001 .001 .001 .001 0 0 ! ! Lead (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. Sensitivity flag is ON to permit usage of HITS. T_LEA = 6 TMED T_LEA 'Lead$' 13 0 0 0 -20.00 -.100E+11 -.250 .010 -.024 0 ! ! Iron (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. T_IRO = 7 TMED T_IRO 'Iron$' 10 0 0 0 -20.00 -.100E+11 -.250 .010 -.014 0 ! ! Copper (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. T_COP = 8 TMED T_COP 'Copper$' 11 0 0 0 -20.00 -.100E+11 -.250 .010 -.014 0 ! ! Borated Polyethylene (user-defined mixture). Auto calculation of TMAXFD, ! STEMAX, DEEMAX, and STMIN. T_BPO = 9 TMED T_BPO 'Borated Polyethylene' M_BPO 0 0 0 -20.00 -.100E+11 -.188 .010 -.015 0 ! ! Helium (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, and STMIN. T_HEL = 10 TMED T_HEL 'Gas Helium$' M_HEL 0 1 20. -.1 -.001 .004 .004 .004 0 0 ! Concrete T_CON = 20 TMED T_CON 'Concrete$' M_CON 0 0 0 -20.00 -.100E+11 -.250 .010 -.024 0 ! ! Quartz (user-defined mixture). Auto calculation of TMAXFD, STEMAX, ! DEEMAX and STMIN. Sensitivity flag is ON to permit usage of HITS. T_QUA = 21 TMED T_QUA 'Quartz$' M_QUA 1 0 0. .100 .001 .001 .001 .001 0 0 ! Glass SiO2(user-defined mixture). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. (taken from SAMPLE euclid file) (make it sensitive for now). T_SIO = 22 TMED T_SIO 'Glass$' M_SIO 1 0 0 -20.00 -.100E+11 -.250 .010 -.014 0 ! ! Titanium for exit window, started with copy of T_BPO. ! Added 5-30-03 by Juliette M. Mammei T_TIT = 23 TMED T_TIT 'Titanium$' M_TIT 0 0 0 -20.00 -.100E+11 -.188 .010 -.015 0 ! Beryllium for exit window, started with copy of T_ALU. ! Added 9-24-04 by Juliette M. Mammei ! ! Beryllium (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. Sensitivity flag is ON to permit usage of HITS. T_BER = 24 TMED T_BER 'Beryllium$' 5 1 0 0 -20.00 -.100E+11 -.183 .010 -.015 0 ! ! Tungsten (standard material). Auto calculation of TMAXFD, STEMAX, DEEMAX, ! and STMIN. Sensitivity flag is ON to permit usage of HITS. T_TUN = 25 TMED T_TUN 'Tungsten$' 12 0 0 0 -20.00 -.100E+11 -.250 .010 -.024 0 ! !----------------------------------------------+ ! Material Coefficients of Thermal Contraction ! !----------------------------------------------+ ! Some specification dimensions are given only at room temperature. ! Because there is significant contraction of parts which are at ! 4 deg. K, these dimensions must be corrected. Constants are defined ! here for various materials which should multiply linear dimensions ! to make this correction. The warm dimensions were found from cold ! dimensions as follows: ! X(warm) = X(cold) * (1 + DELTA_L/L) ! where DELTA_L/L is specified as a percentage. To convert from warm ! back to cold, then, we use: ! X(cold) = X(warm) / (1 + DELTA_L/L) ! Note that this is NOT the same as: ! X(cold) = X(warm) * (1 - DELTA_L/L) ! because DELTA_L/L is too big for this approximation to be accurate. ! The coeffieients defined here, C_, are the factor ! 1/(1+DELTA_L/L). ! ! For lead, Delta L/L = 0.709%. C_LEA = 1/(1+0.709/100) ! ! For aluminum, Delta L/L = 0.42%. C_ALU = 1./(1+0.42/100) ! !--------------------+ ! Orientation (Mode) ! !--------------------+ ! G0 operates in one of two possible orientations: Forward-proton mode ! with the detector downstream of the spectrometer, and Backward-electron ! mode with the detector upstream of the spectrometer. The geometry is ! changed in a number of ways depending on mode, for example: ! o CED detectors are not defined in forward-proton mode while ! in backward-electron mode, only the front scintillator layer ! is active and the CEDs are defined. ! o The beam pipe shielding (volume names BPBx, BPPx and BPWx) are ! not present in backward-electron mode. ! o Most of the volumes included in the cryostat, detectors, cold mass, ! coils, shielding, beamline, and collimators are reflected in the ! XY plane when going from forward-proton to backward-electron mode. ! for some volumes, this is accomplished by flipping the direction of ! the local coordinate system of the mother volume MODE. This volume ! is congruent with the mother volume GLOB except that in backward- ! electron mode its Z axis points upstream rather than downsteam. ! o Certain volumes do NOT change orientation when the mode is changed ! (for example some parts of the target, the hall geometry, etc.) ! Because the spectrometer is flipped about the standard G0 coordinate ! system when going from forward-proton to backward-electron mode, ! it is likely that these volumes will need to be translated to new ! positions relative to the volumes that were flipped. ! Based on the MODE variable code below is selectively executed using IF ! statements. MODE should be set to true (non-0) for forward-proton mode ! and false (0) for backward-electron mode. MODE can only be set in the ! "data card" file using the appropriate FFKEY command. We do some ! sanity checks here to make sure things are consistent. ! IF MODE*LT0(BFIL) ECHO 'Warning: BFIL negative in forward-proton mode.' ELIF EQ0(MODE)*GT0(BFIL) ECHO 'Warning: BFIL positive in backward-electron mode.' FI ! IF BDIR ECHO 'Warning: BDIR should be 0 when using this euclid+ file.' FI ! IF MODE*LT0(ZTAR) ECHO 'Warning: ZTAR negative in forward-proton mode.' ELIF EQ0(MODE)*GT0(ZTAR) ECHO 'Warning: ZTAR positive in backward-electron mode.' FI ! ! NOTE: In the comments in this file, the descriptions of volumes, ! coordinate systems, etc. may refer to "upstream" and "downstream". ! That nomenclature is valid, and defined in terms of the forward proton ! mode of running. ! !-----------------------------+ ! Rotation Matrix Definitions ! !-----------------------------+ ! The position of a volume in its mother volume is defined by a ! translation vector and a rotation matrix. Rotation matricies ! are defined using the ROTM command by specifying the daughter ! reference frame (primed frame) in terms of angles in the mother ! frame (see the GEANT GEOM200 writeup of GSROTM for more details). ! The following parameters are required: ! IROT (integer) Number (identifier) of the rotation matrix ! THETA1 (real) Polar angle for axis x' ! PHI1 (real) Azimuthal angle for axis x' ! THETA2 (real) Polar angle for axis y' ! PHI2 (real) Azimuthal angle for axis y' ! THETA3 (real) Polar angle for axis z' ! PHI3 (real) Azimuthal angle for axis z' ! ! The 8-fold symmetry of the experiment enters this geometry in ! many places. Of particular use is the angle 180/8 = 22.5. We define ! some trig functions of that angle and the angle itself for later ! use. TH_OCT = 180./8. C_OCT = COSD(TH_OCT) S_OCT = SIND(TH_OCT) T_OCT = TAND(TH_OCT) ! ! The following rotation is used in many different sub-systems. ! It puts X along the old Y, Y along the old Z, Z along old X. This ! turns out to be particularly useful for positioning some of the ! trapezoids in the our geometry. ROTM S_GEN+1 90 90 0 0 90 0 ! ! Note that most of the rotation matricies are specific to particular ! volumes or sub-systems. Those matricies are defined below, when ! the volumes are positioned. ! !------------------------------------+ ! Volume Definitions and Positioning ! !------------------------------------+ ! Volumes are defined using the VOLU command which specifies the ! volume name, its type (one of 16 primitive types known by GEANT) ! and its dimensions. The parameters of the command are as follows: ! CHNAME (character) A unique 4-character volume name ! CHSHAP (character) the name (4-characters) of one of the GEANT ! volume types. ! NMED (integer) Tracking medium number for the volume ! NPAR (integer) Number of additional parameters defining the ! dimensions of the volume. ! PAR(i) (real) the NPAR parameters. ! (See the GEANT GEOM100 writeup of GSVOLU for more details.) ! ! For reference, the parameters of volumes used in this file are listed ! below (see the GEANT GEOM050 writeup). ! BOX Box with faces perpendicular to the axes. It has 3 parameters: ! 1 DX half-length of the box along the x-axis ! 2 DY half-length of the box along the y-axis ! 3 DZ half-length of the box along the z-axis ! TRD1 Trapezoid with the x dimension varying along z. It has 4 parameters: ! 1 DX1 half-length along x at the zsurface positioned at -DZ ! 2 DX2 half-length along x at the z surface positioned at +DZ ! 3 DY half-length along the y-axis ! 4 D0Z half-length along the z-axis ! TRD2 Trapezoid with both x and y dimensions varying along z. It has ! 5 parameters: ! 1 DX1 half-length along x at the z surface positioned at -DZ ! 2 DX2 half-length along x at the z surface positioned at +DZ ! 3 DY1 half-length along y at the z surface positioned at -DZ ! 4 DY2 half-length along y at the z surface positioned at +DZ ! 5 DZ half-length along the z-axis ! TRAP General trapezoid; the faces perpendicular to z are trapezia ! and their centers are not necessarily on a line parallel to the z ! axis. This shape has 11 parameters, but considering that the ! faces should be planar, only 9 are really independent. A check ! is performed by GEANT to insure that surfaces are planar. ! 1 DZ half-length along the z axis ! 2 THET polar angle of the line joining the center of the face at ! -DZ to the center of the one at +DZ ! 3 PHI azimuthal angle of the line joining the center of the face at ! -DZ to the center of the one at +DZ ! 4 H1 half-length along y of the face at -DZ ! 5 BL1 half-length along x of the side at -H1 in y of the face at ! -DZ in z ! 6 TL1 half-length along x of the side at +H1 in y of the face at ! -DZ in z ! 7 ALP1 angle with respect to the y axis from the center of the side ! at -H1 in y to the center of the side at +H1 in y of the face at ! -DZ in z ! 8 H2 half-length along y of the face at +DZ ! 9 BL2 half-length along x of the side at -H2 in y of the face at ! +DZ in z ! 10 TL2 half-length along x of the side at +H2 in y of the face at ! +DZ in z ! 11 ALP2 angle with respect to the y axis from the center of the side ! at -H2 in y to the center of the side at +H2 in y of the face at ! +DZ in z ! TUBE Tube. It has 3 parameters: ! 1 RMIN inside radius ! 2 RMAX outside radius ! 3 DZ half length in z ! TUBS PHI-segment of a tube. It has 5 parameters: ! 1 RMIN inside radius ! 2 RMAX outside radius ! 3 DZ half length in z ! 4 PHI1 starting angle of the segment ! 5 PHI2 ending angle of the segment ! ELTU Elliptical cross-section tube. It has three parameters: ! 1 P1 semi-axis of the ellipse along x ! 2 P2 semi-axis of the ellipse along y ! 3 DZ half-length in z ! The equation of the surface is x2/P1**2 + y2/P2**2 = 1. ! ! The placement of volumes in the geometry is performed by the POSI command. ! Its arguments are described below (see GEANT write-up GEOM110 for more ! details). ! CHNAME (character) name of the volume being positioned ! NR (integer) Copy number of the volume CHNAME being positioned ! CHMOTH (character) name of the mother volume in which copy NR of ! volume CHNAME is being positioned. ! X (real) X position of volume in mother volume reference system ! Y (real) Y position of volume in mother volume reference system ! Z (real) Z position of volume in mother volume reference system ! IROT (integer) rotation matrix identifier (see ROTM). (0 => no ! rotation) ! CHONLY (character) Set to either ONLY or MANY to indicate behavior of ! tracking when volumes overlap. ! ! Many attributes of a volume can be controlled with the SATT command. ! Its parameters are: ! CHNAME (character) name of the volume ! CHIATT (character) attribute to be set (SEEN, COLO, etc.) ! IVAL (integer) value for the attribute. ! (see GSATT routine described in GEANT writeup GEOM500). ! !---------------+ ! Global volume ! !---------------+ ! The global volume GLOB contains the universe as viewed by G0 Geant. ! The dimensions are chosen to include all other volumes DX_GLOB = 396.2 DY_GLOB = 396.2 DZ_GLOB = 700.0 VOLU 'GLOB' 'BOX' T_VAC 3 DX_GLOB DY_GLOB DZ_GLOB SATT 'GLOB' 'SEEN' 0 ! ! We define another mother volume called MODE which is congruent with the ! global mother volume but whose Z axis orientation depends on the value ! of the MODE variable. For MODE=1, the Z axis points downstream in the ! same direction as that of the GLOB volume. This is the forward-proton ! mode. For MODE=0 (backward-electron mode), the orientation is reversed. ! The Y axis is always maintained in the upward direction. Therefore, ! to maintain a right-handed coordinate system, the X axis direcition ! must also be flipped. VOLU 'MODE' 'BOX' T_AIR 3 DX_GLOB DY_GLOB DZ_GLOB IF (MODE) POSI 'MODE' S_GEN+CID_GEN 'GLOB' 0 0 0 0 'MANY' ELSE ROTM SGEN+2 90 180 90 90 180 0 POSI 'MODE' S_GEN+CID_GEN 'GLOB' 0 0 0 SGEN+2 'MANY' FI CID_GEN = CID_GEN+1 SATT 'MODE' 'SEEN' 0 ! ! Due to the use of an incompatible set of drawings (some were obsolete ! but no new drawings are yet available), the position of the collimator ! must be adjusted by a small amount to ensure that its acceptance ! defining surfaces end up at the correct absolute locations. In the ! radial dimension this is accomplished by adjusting the radial (half) ! length of the coil cases. In the beam direction, the position of the ! top hat base plate (which dictates the position of the rest of the ! collimator) is adjusted. The "fudge constants" were found by comparing ! the (COLD) locations of points on the midplane of the primary collimator ! to ideal locations. ! The following "fudge constant" is used to adjust the radial length ! of the coil case. FUDGEX_COL = -0.663918*0.5/C_OCT ! The following "fudge constant" is used to adjust the position along the ! beam of the top hat base plate. FUDGEZ_COL = 0.101862*0.5 ! FUDGEZ_COL = 0 ! !--------+ ! Target ! !--------+ ! The target geometry is defined such that the target cell, cryogenic ! loop and target support structure lie in a (vacuum) mother volume TARG ! defined upon positioning as MANY. Within TARG the individual pieces ! are defined as ONLY volumes. TARG is placed in the global mother volume ! GLOB and, as such, does not change orientation when the orientation mode ! is flipped, from forward-proton to backward-electron mode. However, ! because this flip is done about the origin of the standard G0 coordinate ! system, not the center of the target, the z coordinate of the center of ! the target must be flipped depending on the mode. ! ! Currently the target consists of a set of ONLY volumes which make up ! a cylinder of hydrogen surrounded by aluminium walls. The following ! variables define the dimensions of these materials at 20 K, using the ! correction factor for thermal contraction specified earlier. ! ! Parameters for mother target volume (24 in diameter tube, 2 m long, centered ! on hydrogen cell center) ! ! The Aluminum target (hydrogen cell) wall thickness ! (USE 10 MILS UNTIL PUT IN WINDSOCK) WALL_TRG = .0254 ! ! Half-thickness of upstream window (exit window of hydrogen cell) UPWINDOW_TRG = .5*.0254*3.5/10. ! Half-thickness of downstream window (exit window of hydrogen cell) DOWNWINDOW_TRG = .5*.0254*3.5/10. ! ! Both of these definitions are needed: ! The hydrogen target cell maximum radius RMAX_TARG = 2.54 RMAX_TRG = 2.54-WALL_TRG !Both of these definitions are needed: ! The hydrogen target cell half-length DZ_TARG = 17.5 DZ_TRG = 17.5 ! The z-coordinate of the center of the target OZ_TARG = -650. ! IF EQ0(MODE) ! Flip the position of the target center if MODE=0 (backward electron ! mode). OZ_TARG = -OZ_TARG FI ! ! TARG - the mother volume containing the target cell, cryoloop and support ! structure VOLU 'TARG' 'TUBE' T_AIR 3 0 RMAX_TARG DZ_TARG+2*DOWNWINDOW_TRG POSI 'TARG' S_TRG+CID_TRG 'GLOB' 0 0 OZ_TARG 0 'MANY' SATT 'TARG' 'SEEN' 0 CID_TRG = CID_TRG+1 ! ! TRG - The hydrogen VOLU 'TRG' 'TUBE' T_HYD 3 0 RMAX_TRG DZ_TRG POSI 'TRG' S_TRG+CID_TRG 'TARG' 0 0 0 0 'ONLY' SATT 'TRG' 'COLO' 141 CID_TRG = CID_TRG+1 ! ! TRGT - The Aluminum tube around the hydrogen - 20 mils VOLU 'TRGT' 'TUBE' T_ALU 3 RMAX_TRG RMAX_TRG+WALL_TRG DZ_TRG POSI 'TRGT' S_TRG+CID_TRG 'TARG' 0 0 0 0 'ONLY' SATT 'TRGT' 'COLO' 141 CID_TRG = CID_TRG+1 ! ! The downstream Aluminum endcap - 10 mils VOLU 'TRGD' 'TUBE' T_ALU 3 0 RMAX_TRG+WALL_TRG DOWNWINDOW_TRG POSI 'TRGD' S_TRG+CID_TRG 'TARG' 0 0 DZ_TRG+DOWNWINDOW_TRG 0 'ONLY' SATT 'TRGD' 'COLO' 141 CID_TRG = CID_TRG+1 ! ! The upstream Aluminum endcap - 10 mils VOLU 'TRGU' 'TUBE' T_ALU 3 0 RMAX_TRG+WALL_TRG UPWINDOW_TRG POSI 'TRGU' S_TRG+CID_TRG 'TARG' 0 0 -DZ_TRG-UPWINDOW_TRG 0 'ONLY' SATT 'TRGU' 'COLO' 141 CID_TRG = CID_TRG+1 ! !Aluminum Target Vacuum Exit window - 10 mils DZ_VWIN = .5*.0254 VOLU 'VWIN' 'TUBE' T_ALU 3 RMAX_TRG 20 DZ_VWIN POSI 'VWIN' S_TRG+CID_TRG 'GLOB' 0 0 -627.48+DZ_VWIN 0 'ONLY' SATT VWIN COLO 2 CID_TRG = CID_TRG+1 !-------+ ! Q-weak Collimators !-------+ ! The Qweak collimator system is composed of three collimators upstream ! of QTOR. The first and last collimators are "cleanup" collimators, ! and the second collimator is the acceptance defining, or primary, ! collimator. The cleanup collimators will be made of lead and the ! primary collimator material definition is not included in this ! euclid version yet, but is probably going to be a brass alloy. The ! larger thickness needed is reflected in the thickness of the ! collimator, but it is defined as lead for now. ! ! Define a Mother volume filled with AIR to hold the Q-weak Collimators VOLU 'COH' 'BOX' T_AIR 3 120. 120. 161.3905 POSI 'COH' S_TRG+CID_TRG 'GLOB' 0 0 -422.0195 0 'MANY' SATT COH SEEN 1 CID_TRG = CID_TRG+1 ! Collimator 1: Upstream Cleanup Collimator ! Collimator Mother volume- Concrete around the collimator VOLU 'COU' 'BOX' T_CON 3 120. 120. 7.62 POSI 'COU' S_TRG+CID_TRG 'COH' 0 0 -153.77 0 'MANY' SATT COU COLO 95 CID_TRG = CID_TRG+1 ! ! Lead of the collimator VOLU 'COUB' 'BOX' T_LEA 3 43.18 43.18 7.62 POSI 'COUB' S_TRG+CID_TRG 'COU' 0 0 0 0 'MANY' SATT COUB COLO 44 CID_TRG = CID_TRG+1 ! ! Put air in the collimator opening VOLU 'COUT' 'TUBE' T_AIR 3 4.2 22 7.62 POSI 'COUT' S_TRG+CID_TRG 'COUB' 0 0 0 0 'MANY' SATT COUT SEEN 0 CID_TRG = CID_TRG+1 ! ! Lower edge VOLU 'CUCI' 'PGON' T_LEA 10 -22.5 360 8 2 -7.62 3.8 5.216 7.62 3.8 7.032 POSI 'CUCI' S_TRG+CID_TRG 'COUT' 0 0 0 0 'ONLY' SATT CUCI COLO 44 CID_TRG = CID_TRG+1 ! ! Upper edge VOLU 'CUCO' 'PGON' T_LEA 10 -22.5 360 8 2 -7.62 15.729 43.18 7.62 18.464 43.18 POSI 'CUCO' S_TRG+CID_TRG 'COUT' 0 0 0 0 'ONLY' SATT CUCO COLO 44 CID_TRG = CID_TRG+1 ! ! The definitions are the same in each octant, so just rotate them... ! Similar to the magnet coil definitions. ! VOLU 'UCOL' 'TUBS' T_AIR 5 4. 120. 7.62 360-22.5 22.5 SATT UCOL SEEN 0 ! ROTM S_COL+1 90 -TH_OCT 90 90-TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+1 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+2 90 TH_OCT 90 90+TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+2 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+3 90 3*TH_OCT 90 90+3*TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+3 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+4 90 5*TH_OCT 90 90+5*TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+4 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+5 90 7*TH_OCT 90 90+7*TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+5 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+6 90 9*TH_OCT 90 90+9*TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+6 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+7 90 11*TH_OCT 90 90+11*TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+7 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+8 90 13*TH_OCT 90 TH_OCT 0 0 POSI 'UCOL' S_COL+CID_COL 'COUT' 0 0 0 S_COL+8 'MANY' CID_COL = CID_COL+1 ! ! Sloped Side #1 VOLU 'USS1' 'TRD2' T_LEA 5 5 5 0.567 0.926 7.62 POSI 'USS1' S_TRG+CID_TRG 'UCOL' 10 0 0 0 'ONLY' SATT USS1 COLO 46 CID_TRG = CID_TRG+1 ! ! Sloped Side #2 ! Rotation Matrix: ROTM S_COL+9 90 -14 90 90-14 0 0 ROTM S_COL+10 90 14 90 104 0 0 ! VOLU 'USS2' 'TRD2' T_LEA 5 2 4 .5 .5055 7.62 POSI 'USS2' S_TRG+CID_TRG 'COU' 8.699 -3.216 0 S_COL+9 'ONLY' CID_TRG = CID_TRG+1 POSI 'USS2' S_TRG+CID_TRG 'COU' 8.699 3.216 0 S_COL+10 'ONLY' CID_TRG = CID_TRG+1 SATT USS2 COLO 48 ! ! Straight Side VOLU 'USS3' 'TRD2' T_LEA 5 3 5 .803 .353 7.62 POSI 'USS3' S_TRG+CID_TRG 'COU' 13.2082 4 0 0 'ONLY' CID_TRG = CID_TRG+1 POSI 'USS3' S_TRG+CID_TRG 'COU' 13.2082 -4 0 0 'ONLY' SATT USS3 COLO 46 CID_TRG = CID_TRG+1 ! ! Volume to cover up space between octants VOLU 'USS4' 'TUBS' T_LEA 5 0 25 7.62 -22.5 22.5 POSI 'USS4' S_TRG+CID_TRG 'UCOL' 10 0 0 0 'ONLY' CID_TRG = CID_TRG+1 SATT USS4 COLO 46 ! Collimator 2: Primary (Acceptance Defining) Collimator ! Collimator Mother volume - Concrete around the collimator VOLU 'COP' 'BOX' T_CON 3 120. 120. 7.5 POSI 'COP' S_TRG+CID_TRG 'COH' 0 0 43.8 0 'MANY' SATT COP COLO 95 CID_TRG = CID_TRG+1 ! ! Lead of the collimator VOLU 'COPB' 'BOX' T_LEA 3 71.12 71.12 7.5 POSI 'COPB' S_TRG+CID_TRG 'COP' 0 0 0 0 'MANY' SATT COPB COLO 44 CID_TRG = CID_TRG+1 ! ! Put air in the collimator opening VOLU 'COPT' 'TUBE' T_AIR 3 14. 54.0 7.5 POSI 'COPT' S_TRG+CID_TRG 'COPB' 0 0 0 0 'MANY' SATT COPT SEEN 1 CID_TRG = CID_TRG+1 ! ! Defines lower theta of acceptance VOLU 'CPCI' 'PGON' T_LEA 10 -22.5 360 8 2 -7.5 13 28.56 7.5 13 30.57 POSI 'CPCI' S_TRG+CID_TRG 'COPT' 0 0 0 0 'ONLY' SATT CPCI COLO 44 CID_TRG = CID_TRG+1 ! ! Defines upper theta of acceptance VOLU 'CPCO' 'PGON' T_LEA 10 -22.5 360 8 2 -7.5 51.21 71.12 7.5 53.67 71.12 POSI 'CPCO' S_TRG+CID_TRG 'COPT' 0 0 0 0 'ONLY' SATT CPCO COLO 44 CID_TRG = CID_TRG+1 ! ! The definitions are the same in each octant, so just rotate them... ! Similar to the magnet coil definitions. ! VOLU 'PCOL' 'TUBS' T_AIR 5 14.55 120 7.5 360-22.5 22.5 SATT PCOL SEEN 0 ! ROTM S_COL+11 90 -TH_OCT 90 90-TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+11 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+12 90 TH_OCT 90 90+TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+12 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+13 90 3*TH_OCT 90 90+3*TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+13 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+14 90 5*TH_OCT 90 90+5*TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+14 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+15 90 7*TH_OCT 90 90+7*TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+15 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+16 90 9*TH_OCT 90 90+9*TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+16 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+17 90 11*TH_OCT 90 90+11*TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+17 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+18 90 13*TH_OCT 90 TH_OCT 0 0 POSI 'PCOL' S_COL+CID_COL 'COPT' 0 0 0 S_COL+18 'MANY' CID_COL = CID_COL+1 ! VOLU 'LPHI' 'TRD2' T_LEA 5 15 15 5.22 5.7 7.5 POSI 'LPHI' S_TRG+CID_TRG 'PCOL' 42 0 0 0 'ONLY' SATT LPHI COLO 46 CID_TRG = CID_TRG+1 ! RADIUS = 24 VOLU 'TORD' 'TUBS' T_LEA 5 0 40 7.5 -22.5 22.5 POSI 'TORD' S_TRG+CID_TRG 'PCOL' RADIUS 0 0 0 'ONLY' SATT TORD COLO 46 CID_TRG = CID_TRG+1 ! ! Collimator 3: Downstream Cleanup Collimator ! Collimator Mother volume VOLU 'COD' 'BOX' T_AIR 3 120. 120. 5.615 POSI 'COD' S_TRG+CID_TRG 'COH' 0 0 155.7755 0 'MANY' SATT COD COLO 95 CID_TRG = CID_TRG+1 ! ! Concrete around the collimator VOLU 'CODB' 'PGON' T_CON 10 -22.5 360 8 2 -5.615 0 120 5.615 0 119.38 POSI 'CODB' S_TRG+CID_TRG 'COD' 0 0 0 0 'MANY' SATT CODB COLO 95 CID_TRG = CID_TRG+1 ! ! Put air in the collimator opening VOLU 'CODT' 'TUBE' T_AIR 3 16.21155 85. 5.615 POSI 'CODT' S_TRG+CID_TRG 'CODB' 0 0 0 0 'MANY' SATT CODT SEEN 0 CID_TRG = CID_TRG+1 ! ! Defines lower theta of acceptance VOLU 'CDCI' 'PGON' T_LEA 10 -22.5 360 8 2 -5.615 14.55 38.0 5.615 14.55 39.1 POSI 'CDCI' S_TRG+CID_TRG 'CODB' 0 0 0 0 'ONLY' SATT CDCI COLO 44 CID_TRG = CID_TRG+1 ! ! Defines upper theta of acceptance VOLU 'CDCO' 'PGON' T_LEA 10 -22.5 360 8 2 -5.615 79.0 119.38 5.615 81.21 119.23 POSI 'CDCO' S_TRG+CID_TRG 'CODB' 0 0 0 0 'ONLY' SATT CDCO COLO 44 CID_TRG = CID_TRG+1 ! ! The definitions are the same in each octant, so just rotate them... ! Similar to the magnet coil definitions. ! VOLU 'DCOL' 'TUBS' T_AIR 5 14.55 120 5.615 360-22.5 22.5 SATT DCOL SEEN 0 ! ROTM S_COL+21 90 -TH_OCT 90 90-TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+21 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+22 90 TH_OCT 90 90+TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+22 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+23 90 3*TH_OCT 90 90+3*TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+23 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+24 90 5*TH_OCT 90 90+5*TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+24 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+25 90 7*TH_OCT 90 90+7*TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+25 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+26 90 9*TH_OCT 90 90+9*TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+26 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+27 90 11*TH_OCT 90 90+11*TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+27 'MANY' CID_COL = CID_COL+1 ! ROTM S_COL+28 90 13*TH_OCT 90 TH_OCT 0 0 POSI 'DCOL' S_COL+CID_COL 'CODT' 0 0 0 S_COL+28 'MANY' CID_COL = CID_COL+1 ! VOLU 'DSS1' 'TUBS' T_LEA 5 14.55 85. 5.615 -3.0 3.0 POSI 'DSS1' S_TRG+CID_TRG 'DCOL' 0 0 0 0 'ONLY' SATT DSS1 COLO 46 CID_TRG = CID_TRG+1 ! VOLU 'DSS2' 'TUBS' T_LEA 5 0. 50. 5.615 -22.5 22.5 POSI 'DSS2' S_TRG+CID_TRG 'DCOL' 45. 0 0 0 'ONLY' SATT DSS2 COLO 46 CID_TRG = CID_TRG+1 ! !-------+ ! Collimator Stands and Walls: !-------+ !Top VOLU 'CBTO' 'BOX' T_CON 3 50. 220. 106.34525 POSI 'CBTO' S_TRG+CID_TRG 'GLOB' 170. 0. -477.0645 0 'MANY' SATT CBTO COLO 95 CID_TRG = CID_TRG+1 !Bottom VOLU 'CBSU' 'BOX' T_CON 3 137.8 220. 161.3905 POSI 'CBSU' S_TRG+CID_TRG 'GLOB' -257.8 0. -422.0195 0 'MANY' SATT CBSU COLO 95 CID_TRG = CID_TRG+1 !Add sides to the hut VOLU 'CBSS' 'BOX' T_CON 3 120. 50. 106.34525 POSI 'CBSS' S_TRG+CID_TRG 'GLOB' 0 -170. -477.0645 0 'MANY' CID_TRG = CID_TRG+1 POSI 'CBSS' S_TRG+CID_TRG 'GLOB' 0 170. -477.0645 0 'MANY' SATT CBSS COLO 95 CID_TRG = CID_TRG+1 ! !-------+ ! Lintel Design !-------+ ! 2 cm clearance from envelope ! ! Rotation matrices used for lintels, ! detector hut and main detectors ! ROTM S_SCI+1 90 0 90 90 0 0 ROTM S_SCI+2 90 2*TH_OCT 90 90+2*TH_OCT 0 0 ROTM S_SCI+3 90 4*TH_OCT 90 90+4*TH_OCT 0 0 ROTM S_SCI+4 90 6*TH_OCT 90 90+6*TH_OCT 0 0 ROTM S_SCI+5 90 8*TH_OCT 90 90+8*TH_OCT 0 0 ROTM S_SCI+6 90 10*TH_OCT 90 90+10*TH_OCT 0 0 ROTM S_SCI+7 90 12*TH_OCT 90 90+12*TH_OCT 0 0 ROTM S_SCI+8 90 14*TH_OCT 90 2*TH_OCT 0 0 ! C2_OCT = COSD(2*TH_OCT) S2_OCT = SIND(2*TH_OCT) ! LINRAD = 127.25 ! VOLU 'LINM' 'TRAP' T_LEA 11 4.2 16.574 0 31 8 8 0 31 8 8 0 SATT LINM COLO 117 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' LINRAD 0 -75.8 S_SCI+1 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' LINRAD*C2_OCT LINRAD*S2_OCT -75.8 S_SCI+2 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' 0 LINRAD -75.8 S_SCI+3 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' -LINRAD*C2_OCT LINRAD*S2_OCT -75.8 S_SCI+4 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' -LINRAD 0 -75.8 S_SCI+5 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' -LINRAD*C2_OCT -LINRAD*S2_OCT -75.8 S_SCI+6 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' 0 -LINRAD -75.8 S_SCI+7 'ONLY' CID_TRG = CID_TRG+1 ! POSI 'LINM' S_TRG+CID_TRG 'GLOB' LINRAD*C2_OCT -LINRAD*S2_OCT -75.8 S_SCI+8 'ONLY' CID_TRG = CID_TRG+1 ! !------------------------------ ! Shielding hut and the floor ! ! Shielding walls and windows defined, not yet positoned. ! Added 27-apr-2004 by ako for Yongguang Liang ! !------------------------------ ! !-------------------- ! Floor in the hall ! ! ! An email from Jim Dahlberg 16-mar-2004 gives the beam height ! as 395.6 cm +/- 0.2 cm, depending on the smoothness of the ! floor. The global volume is +/- 400. cm in the x-direction ! so the floor extends from x = -400.0 to -395.6 cm; it is ! 4.4 cm high. 27-apr-2004 ako !-------------------- ! ! Define floor in the HALL VOLU 'FLOR' 'BOX' T_CON 3 2.2 400 700 POSI 'FLOR' S_SHLD+CID_SHLD 'GLOB' -397.8 0 0 0 'ONLY' SATT FLOR SEEN 1 CID_SHLD = CID_SHLD+1 ! ! !-------+ ! Beam line: !-------+ ! ! Designed by Juliette Mammei with input from Mark Pitt ! regarding low angle luminosity monitors and Dave Mack ! concerning the tungsten plug and shielding issues. ! October-2005 ! ! Beamline Mother volume - made helium or air, but need ! to define vacuum volumes inside beamline. VOLU 'BLIN' 'TUBE' T_HEL 3 0. 50. 700. !POSI 'BLIN' S_TRG+CID_TRG 'GLOB' 0 0 0 0 'MANY' SATT BLIN SEEN 0 CID_TRG = CID_TRG+1 ! Sewar pipe - between scattering chamber and upstream ! cleanup collimator. VOLU 'SEWR' 'TUBE' T_ALU 3 29.5275 30.48 24.545 POSI 'SEWR' S_TRG+CID_TRG 'GLOB' 0 0 -607.995 0 'ONLY' SATT SEWR COLO 117 VOLU 'SVAC' 'TUBE' T_VAC 3 0 29.5275 24.545 POSI 'SVAC' S_TRG+CID_TRG 'GLOB' 0 0 -607.995 0 'MANY' SATT SVAC COLO 117 ! Tungsten Plug - to hopefully stop a wide angular range ! upstream of primary collimator. Limited by needed ! angular range of downstream lumi monitors. VOLU 'WPLG' 'CONE' T_TUN 5 3.5 .767 4.2 .877 4.2 POSI 'WPLG' S_TRG+CID_TRG 'COUB' 0 0 -4.12 0 'ONLY' SATT WPLG COLO 117 ! VOLU 'WVAC' 'CONE' T_VAC 5 3.5 0 .767 0 .877 POSI 'WVAC' S_TRG+CID_TRG 'COUB' 0 0 -4.12 0 'MANY' SATT WVAC SEEN 0 ! !Collimator 1 - what isn't covered by the plug VOLU 'BEA1' 'TUBE' T_ALU 3 2.01168 2.2225 4.12 POSI 'BEA1' S_TRG+CID_TRG 'COUB' 0 0 3.5 0 'ONLY' SATT BEA1 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC1' 'TUBE' T_VAC 3 0 2.01168 4.12 POSI 'VAC1' S_TRG+CID_TRG 'COUB' 0 0 3.5 0 'MANY' SATT VAC1 SEEN 0 CID_TRG = CID_TRG+1 ! VOLU 'BES1' 'TUBE' T_LEA 3 2.2225 4.2 4.12 POSI 'BES1' S_TRG+CID_TRG 'COUB' 0 0 3.5 0 'ONLY' SATT BES1 COLO 117 CID_TRG = CID_TRG+1 ! Begin beamline, separated into regions: GEM, minitorus, !region II, QTOR and support structure, and region III ! ! GEM Region VOLU 'BEA2' 'TUBE' T_ALU 3 2.01168 2.2225 18.085 POSI 'BEA2' S_TRG+CID_TRG 'COH' 0 0 -128.0655 0 'ONLY' SATT BEA2 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC2' 'TUBE' T_VAC 3 0 2.01168 18.085 POSI 'VAC2' S_TRG+CID_TRG 'COH' 0 0 -128.0655 0 'MANY' SATT VAC2 SEEN 0 CID_TRG = CID_TRG+1 !VOLU 'BES2' 'TUBE' T_LEA 3 2.2225 5.3975 18.085 VOLU 'BES2' 'TUBE' T_AIR 3 2.2225 5.3975 18.085 POSI 'BES2' S_TRG+CID_TRG 'COH' 0 0 -128.0655 0 'ONLY' !SATT BES2 COLO 117 SATT BES2 SEEN 0 CID_TRG = CID_TRG+1 ! "Minitorus" Region VOLU 'BEA3' 'TUBE' T_ALU 3 4.71043 4.92125 65.00025 POSI 'BEA3' S_TRG+CID_TRG 'COH' 0 0 -44.97975 0 'ONLY' SATT BEA3 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC3' 'TUBE' T_VAC 3 0 4.71043 65.00025 POSI 'VAC3' S_TRG+CID_TRG 'COH' 0 0 -44.97975 0 'MANY' SATT VAC3 SEEN 0 CID_TRG = CID_TRG+1 ! !VOLU 'BES3' 'TUBE' T_LEA 3 4.92125 7.77875 65.00025 VOLU 'BES3' 'TUBE' T_AIR 3 4.92125 7.77875 65.00025 POSI 'BES3' S_TRG+CID_TRG 'COH' 0 0 -44.97975 0 'ONLY' !SATT BES3 COLO 117 SATT BES3 SEEN 0 CID_TRG = CID_TRG+1 ! !Inside "extra" lead VOLU 'BEA4' 'TUBE' T_ALU 3 4.71043 4.92125 5.6 POSI 'BEA4' S_TRG+CID_TRG 'COPL' 0 0 0 0 'ONLY' SATT BEA4 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC4' 'TUBE' T_VAC 3 0 4.71043 5.6 POSI 'VAC4' S_TRG+CID_TRG 'COPL' 0 0 0 0 'MANY' SATT VAC4 SEEN 0 CID_TRG = CID_TRG+1 ! !VOLU 'BES4' 'TUBE' T_LEA 3 4.92125 7.77875 5.6 VOLU 'BES4' 'TUBE' T_AIR 3 4.92125 7.77875 5.6 POSI 'BES4' S_TRG+CID_TRG 'COPL' 0 0 0 0 'ONLY' !SATT BES4 COLO 117 SATT BES4 SEEN 0 CID_TRG = CID_TRG+1 ! !downstream of "extra" lead VOLU 'BEA5' 'TUBE' T_ALU 3 4.71043 4.92125 2.54 POSI 'BEA5' S_TRG+CID_TRG 'COH' 0 0 33.7605 0 'ONLY' SATT BEA5 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC5' 'TUBE' T_VAC 3 0 4.71043 2.54 POSI 'VAC5' S_TRG+CID_TRG 'COH' 0 0 33.7605 0 'MANY' SATT VAC5 SEEN 0 CID_TRG = CID_TRG+1 ! !VOLU 'BES5' 'TUBE' T_LEA 3 4.92125 7.77875 2.54 VOLU 'BES5' 'TUBE' T_AIR 3 4.92125 7.77875 2.54 POSI 'BES5' S_TRG+CID_TRG 'COH' 0 0 33.7605 0 'ONLY' !SATT BES5 COLO 117 SATT BES5 SEEN 0 CID_TRG = CID_TRG+1 ! Collimator II - primary collimator VOLU 'BEA6' 'TUBE' T_ALU 3 6.45668 6.6675 7.5 POSI 'BEA6' S_TRG+CID_TRG 'COPB' 0 0 0 0 'ONLY' SATT BEA6 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC6' 'TUBE' T_VAC 3 0 6.45668 7.5 POSI 'VAC6' S_TRG+CID_TRG 'COPB' 0 0 0 0 'MANY' SATT VAC6 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BES6' 'TUBE' T_TUN 3 6.6675 14 7.5 POSI 'BES6' S_TRG+CID_TRG 'COPB' 0 0 0 0 'ONLY' SATT BES6 COLO 117 CID_TRG = CID_TRG+1 ! Region II VOLU 'BEA7' 'TUBE' T_ALU 3 6.45668 6.6675 49.42995 POSI 'BEA7' S_TRG+CID_TRG 'COH' 0 0 100.7305 0 'ONLY' SATT BEA7 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC7' 'TUBE' T_VAC 3 0 6.45668 49.42995 POSI 'VAC7' S_TRG+CID_TRG 'COH' 0 0 100.7305 0 'MANY' SATT VAC7 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BES7' 'TUBE' T_TUN 3 6.6675 14.2875 49.42995 POSI 'BES7' S_TRG+CID_TRG 'COH' 0 0 100.7305 0 'ONLY' SATT BES7 COLO 117 CID_TRG = CID_TRG+1 ! ! Collimator III VOLU 'BEA8' 'TUBE' T_ALU 3 13.0175 13.97 5.615 POSI 'BEA8' S_TRG+CID_TRG 'CODB' 0 0 0 0 'ONLY' SATT BEA8 COLO 117 CID_TRG = CID_TRG+1 ! VOLU 'VAC8' 'TUBE' T_VAC 3 0 13.0175 5.615 POSI 'VAC8' S_TRG+CID_TRG 'CODB' 0 0 0 0 'MANY' SATT VAC8 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BES8' 'TUBE' T_TUN 3 13.97 16.21155 5.615 POSI 'BES8' S_TRG+CID_TRG 'CODB' 0 0 0 0 'ONLY' SATT BES8 COLO 117 CID_TRG = CID_TRG+1 ! QTOR Support structure VOLU 'BEA9' 'TUBE' T_ALU 3 13.0175 13.97 222.8145 POSI 'BEA9' S_TRG+CID_TRG 'GLOB' 0 0 -37.8145 0 'ONLY' SATT BEA9 COLO 117 CID_TRG = CID_TRG+1 VOLU 'VAC9' 'TUBE' T_VAC 3 0 13.0175 222.8145 POSI 'VAC9' S_TRG+CID_TRG 'GLOB' 0 0 -37.8145 0 'MANY' SATT VAC9 SEEN 0 CID_TRG = CID_TRG+1 !VOLU 'BES9' 'TUBE' T_LEA 3 13.97 222.8145 !POSI 'BES9' S_TRG+CID_TRG 'GLOB' 0 0 -37.8145 0 'ONLY' !SATT BES9 COLO 117 !CID_TRG = CID_TRG+1 ! Region III (downstream of QTOR support structure) VOLU 'BA10' 'TUBE' T_ALU 3 29.5275 30.48 63.605 POSI 'BA10' S_TRG+CID_TRG 'GLOB' 0 0 248.605 0 'ONLY' SATT BA10 COLO 117 CID_TRG = CID_TRG+1 VOLU 'VC10' 'TUBE' T_VAC 3 0 29.5275 63.605 POSI 'VC10' S_TRG+CID_TRG 'GLOB' 0 0 248.605 0 'MANY' SATT VC10 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BS10' 'TUBE' T_TUN 3 30.48 34.29 63.605 POSI 'BS10' S_TRG+CID_TRG 'GLOB' 0 0 248.605 0 'ONLY' SATT BS10 COLO 117 CID_TRG = CID_TRG+1 ! ! In shield wall VOLU 'BA11' 'TUBE' T_ALU 3 29.5275 30.48 25 POSI 'BA11' S_TRG+CID_TRG 'UWM' 0 0 0 0 'ONLY' SATT BA11 COLO 117 CID_TRG = CID_TRG+1 VOLU 'VC11' 'TUBE' T_VAC 3 0 29.5275 25 POSI 'VC11' S_TRG+CID_TRG 'UWM' 0 0 0 0 'ONLY' SATT VC11 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BS11' 'TUBE' T_TUN 3 30.48 34.29 25 POSI 'BS11' S_TRG+CID_TRG 'UWM' 0 0 0 0 'ONLY' SATT BS11 COLO 117 CID_TRG = CID_TRG+1 ! !downstream of shield wall VOLU 'BA12' 'TUBE' T_ALU 3 29.5275 30.48 168.895 POSI 'BA12' S_TRG+CID_TRG 'GLOB' 0 0 531.105 0 'ONLY' SATT BA12 COLO 117 CID_TRG = CID_TRG+1 VOLU 'VC12' 'TUBE' T_VAC 3 0 29.5275 168.895 POSI 'VC12' S_TRG+CID_TRG 'GLOB' 0 0 531.105 0 'MANY' SATT VC12 SEEN 0 CID_TRG = CID_TRG+1 VOLU 'BS12' 'TUBE' T_TUN 3 30.48 34.29 168.895 POSI 'BS12' S_TRG+CID_TRG 'GLOB' 0 0 531.105 0 'ONLY' SATT BS12 COLO 117 CID_TRG = CID_TRG+1 !-------+ ! Coils ! !-------+ ! The conductor (copper) is defined by a series of MANY volumes (SCx and CCx) ! inside another MANY volume (ICOI) with the dimensions of the coil case. ! The result is the intersection of the conductor volumes and the coil ! case volume with the material being defined by the conductor. This ! in turn is included in an ONLY volume (COI) which defines the aluminium ! of the coil case (at least that is the way I think it works). That ! outer-most mother volume is positioned 8 times to define the 8 coils. ! Note that COI also overlaps the OCT volume (the mother volume of detector ! and collimator parts) which is defined as MANY. Some assumptions: ! 1) the conductor is only made of copper ! 2) the coil case is a "BOX" (i.e. it has no "cut-outs" for the octagon ! ring, the hubs, etc. ! 3) no bolts, LHe channels, insulation, etc. is included (anything ! in the coil case which is not copper is aluminium). ! ! First define some constants. ! Nominal dimensions of the coil case (assumed to be rectangular) are ! those of the envelope defined by spec. drawing E-2920-3. Additional ! "fudge constants" are added to the X (radial) and Z (along beam) ! dimensions to adjust the position of the collimator DX_COI = 0.5*150. DY_COI = 0.5*25.4 DZ_COI = 0.5*370 ! Distance in Z between the upstream surface of the coil case and ! the outside surface of the conductor (see spec. drawing E-2920-3) DELZ_COI = 6 ! Radial position of the inner (small r) surface of the coil case (see spec. ! drawing E-2920-3). RMIN_COI=15. ! Coil parameters from G0-95-001 defining the position of centroid of the ! outer-most superconducting cable. ! Laszewskis small r is the distance to the extension of the low-r, low-z ! curve IF IT WERE TO BE EXTENDED TO 90 DEGREES (rather than 90 minus ! DEL_CON). ! The coils consist of 4 layers of 36 turns. The copper matrix that is ! wrapped is 2 cm wide and 0.5 cm thick (see spec drawing B-2920-5). ! Defined here are the (half) dimensions of the coil cross section WIDTH_CON = 0.5*12.7 THICK_CON = 0.5*50. ! The (half) thickness of the superconducting cable imbedded in the copper ! matrix (see spec. drawing B-2920-5). THICK_RUTH = 0.5*0.13 ! ! Position in Z of the upstream surface of the coil case. The centroid ! of the outer coil is at Z=0. Note that we must take into account the ! thickness of the super-conductor in the copper matrix. MINZ_COI=-THICK_RUTH-DELZ_COI ! Radial position of the center of the coil case OR_COI = RMIN_COI+DX_COI ! Z position of the center of the coil case OZ_COI = 0. ! ! Define the coil box volume VOLU 'COI' 'BOX' T_AIR 3 DX_COI DY_COI DZ_COI SATT COI SEEN 0 ! ROTM S_COIL+1 90 -TH_OCT 90 90-TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' OR_COI*C_OCT -OR_COI*S_OCT OZ_COI S_COIL+1 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+2 90 TH_OCT 90 90+TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' OR_COI*C_OCT OR_COI*S_OCT OZ_COI S_COIL+2 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+3 90 3*TH_OCT 90 90+3*TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' OR_COI*S_OCT OR_COI*C_OCT OZ_COI S_COIL+3 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+4 90 5*TH_OCT 90 90+5*TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' -OR_COI*S_OCT OR_COI*C_OCT OZ_COI S_COIL+4 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+5 90 7*TH_OCT 90 90+7*TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' -OR_COI*C_OCT OR_COI*S_OCT OZ_COI S_COIL+5 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+6 90 9*TH_OCT 90 90+9*TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' -OR_COI*C_OCT -OR_COI*S_OCT OZ_COI S_COIL+6 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+7 90 11*TH_OCT 90 90+11*TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' -OR_COI*S_OCT -OR_COI*C_OCT OZ_COI S_COIL+7 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+8 90 13*TH_OCT 90 TH_OCT 0 0 POSI 'COI' S_COIL+CID_COIL 'GLOB' OR_COI*S_OCT -OR_COI*C_OCT OZ_COI S_COIL+8 'MANY' CID_COIL = CID_COIL+1 ! ! Define the parts of the conductor. Origin coordinates are defined ! in a system with X-Z plane in mid-plane of the coil case. X is in ! the "radial" direction. ! The outer radius of coil curved sections RMAX_CON = 75. ! The inner radius of coil curved sections RMIN_CON = 25. ! ! The curved conductor at large z OX_CC2 = 0. OZ_CC2 = -110. VOLU 'CC2' 'TUBS' T_COP 5 RMIN_CON RMAX_CON WIDTH_CON 90 270 ! Define a rotation to put X along old Z, Y along old -X, Z along old -Y ROTM S_COIL+10 0 0 90 180 90 270 POSI 'CC2' S_COIL+CID_COIL 'COI' OX_CC2 0 OZ_CC2 S_COIL+10 'ONLY' SATT CC2 COLO 24 CID_COIL = CID_COIL+1 ! ! The curved conductor at small z OX_CC4 = 0. OZ_CC4 = 110. VOLU 'CC4' 'TUBS' T_COP 5 RMIN_CON RMAX_CON WIDTH_CON 90 270 ! Define a rotation to put X along old -Z, Y along old X, Z along old -y ROTM S_COIL+12 180 0 90 0 90 270 POSI 'CC4' S_COIL+CID_COIL 'COI' OX_CC4 0 OZ_CC4 S_COIL+12 'ONLY' SATT CC4 COLO 24 CID_COIL = CID_COIL+1 ! ! Straight conductor at large r DZ_SC4 = 0.5*220. OX_SC4 = 50. OZ_SC4 = 0. VOLU 'SC2' 'BOX' T_COP 3 THICK_CON WIDTH_CON DZ_SC4 POSI 'SC2' S_COIL+CID_COIL 'COI' OX_SC4 0 OZ_SC4 0 'ONLY' SATT SC2 COLO 24 CID_COIL = CID_COIL+1 ! Straight conductor at small r DZ_SC4 = 0.5*220. OX_SC4 = -50. OZ_SC4 = 0. VOLU 'SC4' 'BOX' T_COP 3 THICK_CON WIDTH_CON DZ_SC4 POSI 'SC4' S_COIL+CID_COIL 'COI' OX_SC4 0 OZ_SC4 0 'ONLY' SATT SC4 COLO 24 CID_COIL = CID_COIL+1 ! ! Aluminum coil holder plates VOLU 'CHP' 'BOX' T_ALU 3 37.5 3.175 185 !POSI 'CHP' S_COIL+CID_COIL 'COI' 37.5 9.525 0 0 'ONLY' CID_COIL = CID_COIL+1 !POSI 'CHP' S_COIL+CID_COIL 'COI' 37.5 -9.525 0 0 'ONLY' CID_COIL = CID_COIL+1 SATT CHP COLO 26 !-------+ ! QTOR Support Structure !-------+ ! preliminary design added 07-09-07 by Katherine Myers ! Define the mother volume VOLU 'QTOR' 'BOX' T_AIR 3 335.28 335.38 253.365 POSI 'QTOR' S_COIL+CID_COIL 'GLOB' 0 0 -0.655 0 'MANY' SATT QTOR SEEN 0 CID_COIL = CID_COIL+1 ! ! Define PGON shapes for lower and upper bars ! Upstream bars VOLU 'QSUL' 'PGON' T_ALU 10 -22.5 360 8 2 -15.24 128.11 145.89 15.24 128.11 145.89 !POSI 'QSUL' S_COIL+CID_COIL 'QTOR' 0 0 -253.365+15.24 0 'ONLY' SATT QSUL COLO 3 CID_COIL = CID_COIL+1 ! VOLU 'QSUU' 'PGON' T_ALU 10 -22.5 360 8 2 -15.24 203.2 220.98 15.24 203.2 220.98 !POSI 'QSUU' S_COIL+CID_COIL 'QTOR' 0 0 -253.365+15.24 0 'ONLY' SATT QSUU COLO 3 CID_COIL = CID_COIL+1 ! ! Downstream bars VOLU 'QSDL' 'PGON' T_ALU 10 -22.5 360 8 2 -15.24 132.5 150.28 15.24 132.5 150.28 !POSI 'QSDL' S_COIL+CID_COIL 'QTOR' 0 0 253.365-15.24 0 'ONLY' SATT QSDL COLO 3 CID_COIL = CID_COIL+1 ! VOLU 'QSDU' 'PGON' T_ALU 10 -22.5 360 8 2 -15.24 299.72 317.5 15.24 299.72 317.5 !POSI 'QSDU' S_COIL+CID_COIL 'QTOR' 0 0 253.365-15.24 0 'ONLY' SATT QSDU COLO 3 CID_COIL = CID_COIL+1 ! ! In between octant volume same, so create rotation matrices VOLU 'QCOL' 'TUBS' T_AIR 5 0 317.5 253.365 360-22.5 22.5 SATT QCOL SEEN 0 ! ROTM S_COIL+13 90 -TH_OCT 90 90-TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+13 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+14 90 TH_OCT 90 90+TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+14 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+15 90 3*TH_OCT 90 90+3*TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+15 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+16 90 5*TH_OCT 90 90+5*TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+16 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+17 90 7*TH_OCT 90 90+7*TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+17 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+18 90 9*TH_OCT 90 90+9*TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+18 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+19 90 11*TH_OCT 90 90+11*TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+19 'MANY' CID_COIL = CID_COIL+1 ! ROTM S_COIL+20 90 13*TH_OCT 90 TH_OCT 0 0 POSI 'QCOL' S_COIL+CID_COIL 'QTOR' 0 0 0 S_COIL+20 'MANY' CID_COIL = CID_COIL+1 ! ! In between octant volume - upstream VOLU 'QSOU' 'BOX' T_ALU 3 40 14.604 15.24 !POSI 'QSOU' S_COIL+CID_COIL 'QCOL' 148+40 0 -253.365+15.24 0 'ONLY' SATT QSOU COLO 3 CID_COIL = CID_COIL+1 ! ! In between octanct volume - downstream VOLU 'QSOD' 'BOX' T_ALU 3 86 14.604 15.24 !POSI 'QSOD' S_COIL+CID_COIL 'QCOL' 158+82 0 253.365-15.24 0 'ONLY' SATT QSOD COLO 3 CID_COIL = CID_COIL+1 ! ! Large QTOR support bars VOLU 'QSBU' 'BOX' T_ALU 3 17.78 243.84 15.24 !POSI 'QSBU' S_COIL+CID_COIL 'QTOR' 220.98 0 -253.365+15.24 0 'ONLY' SATT QSBU COLO 3 CID_COIL = CID_COIL+1 ! VOLU 'QSBD' 'BOX' T_ALU 3 17.78 335.28 15.24 !POSI 'QSBD' S_COIL+CID_COIL 'QTOR' 317.5 0 253.365-15.24 0 'ONLY' SATT QSBD COLO 3 CID_COIL = CID_COIL+1 !-------+ ! Coils - minitorus! !-------+ ! No more minitorus !-----------------------+ ! Focal Plane Detectors ! !-----------------------+ ! The G0 detector shape consists of an inner (small Q**2) and outer ! (large Q**2) circular arc (not necessarily subtending the same angle), ! which are connected by straight line segments (not necessarily on ! radii of either arc). In order to produce this shape with GEANT ! primitives, four volumes are used. The first, (FPxx and FBxx) consisting ! of "scintillator material" is a tube segment (TUBS) which defines the bulk ! of the volume. Its outer radius matches the outer radius of the detector. ! From this are "subtracted" 3 other volumes: 1) an inner tube segment (FIxx) ! whose outer edge defines the inner circular arc of the detector, 2) a ! triangular shape (FLxx) which removes material to define the straight ! edge on beam left (negative Y), and 3) a similar triangular shape ! (FRxx) which removes material to define the straight edge on the beam ! right (positive Y). The triangular shapes are degenerate generalized ! trapezoid (TRAP) volumes where the "BL" parameters have been set to 0. ! In order to do the subtraction, The principle TUBS volumes (FPxx and FBxx) ! are positioned as "MANY" volumes and specified as being made of scintillator. ! The other 3 volumes which overlap the principle volume are positioned ! as "ONLY" and specified to be vacuum. ! ! The thickness of the first 4 detector shapes is 0.5 cm. All remaining ! shapes are 1.0 cm thick. Note that two layers of focal plane detectors ! are created: the FPxx layer is the front layer and the FBxx layer is the ! back layer. The shapes of these volumes are identical, however separate ! volume definitions are used for the principle volumes (not the volumes ! that are "subtracted") as required by the HITS package. ! The detailed information about the detector shapes and the placement and ! orientation of the midplane between detector layers comes from a parameter ! file. This parameter file is used as input to a program, (DET2EUC ! version 1C run on 01:49:50 03/21/99 (last edit 3/21/99)) which interprets ! it to produce the following geometry definition. The parameter file ! used for this was DetParam.log dated February 19, 1999 from David Brown. ! BARRAD = 324 ! ! Define detector number 1 VOLU 'FP01' 'BOX' T_QUA 3 9 100 .625 POSI 'FP01' S_SCI+CID_SCI 'GLOB' BARRAD 0 570. S_SCI+1 'ONLY' SATT FP01 COLO 1 CID_SCI = CID_SCI+1 ! ! Define detector number 2 VOLU 'FP02' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP02' S_SCI+CID_SCI 'GLOB' BARRAD*C2_OCT BARRAD*S2_OCT 570. S_SCI+2 'ONLY' SATT FP02 COLO 2 CID_SCI = CID_SCI+1 ! ! Define detector number 3 VOLU 'FP03' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP03' S_SCI+CID_SCI 'GLOB' 0 BARRAD 570. S_SCI+3 'ONLY' SATT FP03 COLO 3 CID_SCI = CID_SCI+1 ! ! Define detector number 4 VOLU 'FP04' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP04' S_SCI+CID_SCI 'GLOB' -BARRAD*C2_OCT BARRAD*S2_OCT 570. S_SCI+4 'ONLY' SATT FP04 COLO 4 CID_SCI = CID_SCI+1 ! ! Define detector number 5 VOLU 'FP05' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP05' S_SCI+CID_SCI 'GLOB' -BARRAD 0 570. S_SCI+5 'ONLY' SATT FP05 COLO 5 CID_SCI = CID_SCI+1 ! ! Define detector number 6 VOLU 'FP06' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP06' S_SCI+CID_SCI 'GLOB' -BARRAD*C2_OCT -BARRAD*S2_OCT 570. S_SCI+6 'ONLY' SATT FP06 COLO 6 CID_SCI = CID_SCI+1 ! ! Define detector number 7 VOLU 'FP07' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP07' S_SCI+CID_SCI 'GLOB' 0 -BARRAD 570. S_SCI+7 'ONLY' SATT FP07 COLO 7 CID_SCI = CID_SCI+1 ! ! Define detector number 8 VOLU 'FP08' 'BOX' T_QUA 3 9 100 .625 !POSI 'FP08' S_SCI+CID_SCI 'GLOB' BARRAD*C2_OCT -BARRAD*S2_OCT 570. S_SCI+8 'ONLY' SATT FP08 COLO 44 CID_SCI = CID_SCI+1 ! ! Define detector number 9 - Upstream face of upstream cleanup collimator VOLU 'FP09' 'BOX' T_VACS 3 396.2 396.2 .25 !POSI 'FP09' S_SCI+CID_SCI 'GLOB' 0 0 -583.66 S_SCI+1 'ONLY' SATT FP09 SEEN 1 CID_SCI = CID_SCI+1 ! ! Define detector number 10 - Downstream face of upstream cleanup collimator VOLU 'FP10' 'BOX' T_VACS 3 396.2 396.2 .25 !POSI 'FP10' S_SCI+CID_SCI 'GLOB' 0 0 -567.92 S_SCI+1 'ONLY' SATT FP10 SEEN 1 CID_SCI = CID_SCI+1 ! ! Define detector number 11 - downstream face of primary collimator VOLU 'FP11' 'BOX' T_VACS 3 396.2 396.2 .25 !POSI 'FP11' S_SCI+CID_SCI 'GLOB' 0 0 -370.469 S_SCI+1 'ONLY' SATT FP11 SEEN 1 CID_SCI = CID_SCI+1 ! ! Define detector number 12 - downstream side of collimator 3 VOLU 'FP12' 'BOX' T_VACS 3 396.2 396.2 .25 !POSI 'FP12' S_SCI+CID_SCI 'GLOB' 0 0 -260.379 S_SCI+1 'ONLY' SATT FP12 SEEN 1 CID_SCI = CID_SCI+1 ! ! Define detector number 13 - possible Cerenkov bar location VOLU 'FP13' 'BOX' T_VACS 3 396.2 396.2 .25 !POSI 'FP13' S_SCI+CID_SCI 'GLOB' 0 0 570.650 S_SCI+1 'ONLY' SATT FP13 SEEN 1 CID_SCI = CID_SCI+1 ! ! !----------------------------+ ! End of geometry definition + !----------------------------+ ! The following command marks the end of the definition and positioning of ! volumes. Its purpose is to effect a call to GGCLOS. It must be used ! before the HITS and digitization commands can be called. END1 ! !-----------------------+ ! Hits and Digitization ! !-----------------------+ ! NOTE: The structure of this part of the file must match the logic in ! the tracking (GUSTEP) and track storage (GUOUT) code in G0 GEANT. Do ! not alter this part of the file unless you make corresponding alterations ! there. To modify the hits definition or the number of hits: ! o edit the set of hits below ! o change the way the HITS(i) are defined in GUSTEP and then used in GUOUT ! To create a new alias : ! o you may have to define HIT2, HITS3, etc in COMMON /UCHITV/ ! o edit the alias definition below ! o again, change the way the HITS(i), HITS1(i), etc. are defined in ! GUSTEP and then used in GUOUT ! o add (or remove) lines that retrieve alias hits in GUOUT ! ! Three commands may be used in this section of the geometry file: HITS, ! DETE, and DETA. These are used to define the structure of the hits for ! each detector and alias. ! ! The HITS command specifies information about a group of "hit parameters". ! A group of such parameters (called a hit) can be associated with ! either a detector an alias using the DETE or DETA commands respectively. ! The parameters of the command are as follows (See the GEANT HITS110 ! writeup on GSDETH for more details): ! NHIT (integer) An integer identifier for this group ! of hit parameters (hit) (note that there is a ! limit on the maximum value that can be used) ! NH (integer) The number of hit parameters (components) ! of the detector hit (must not excede MAXSETHIT ! in DECK UHITPAR) ! Then, for each of the NH parameters: ! CHNAMH(i) (character) A 4-character parameter name ! NBITSH(i) (integer) Number of bits in which to pack the parameter ! ORIG(i) (real) Offset applied before packing the parameter value ! FACT(i) (real) Scale factor applied before packing the ! parameter value ! ! Currently, only a single hit is defined. HITS 1 12 'X' 32 400. 100. 'Y' 32 400. 100. 'Z' 32 700. 100. 'IPAR' 32 0. 100. 'TYP' 32 0. 100. 'ORDRE' 32 0. 100. 'PX' 32 4000. 100. 'PY' 32 4000. 100. 'PZ' 32 4000. 100. 'E' 32 0. 100. 'EDEP' 32 0. 100. 'TOF' 32 0. 100. ! ! The DETE command is used to include a particular detector volume in ! a group of detectors (called a set) and then to associate a detector ! hit with that detector volume. ! The parameters are as follows: ! CHSET (character) A 4-character name for the set in ! which the detector volume (CHDET) is to be included. ! CHDET (character) 4-character detector volume name ! IDTYP (integer) Detector type (user defined) ! NWHI (integer) Initial size of HITS banks ! NWDI (integer) Initial size of DIGI banks ! NVOL (integer) Number of volume names which will be listed ! to unambiguously define the path through the physical ! volume tree structure to find the detector volume. ! This may be set to a negative or 0 in which case ! the list is computed automatically. ! If NVOL > 0 then, for each of the NVOL volumes in the path: ! CHNMSV(i) (character) The 4-character volume name ! NBITSV(i) (integer) The number of bits in which to pack the ! copy number of volume CHNMSV(i) ! Next, is specified the group of hit parameters for this detector ! NHIT (integer) Identifier of the detector hit (the value ! of NHIT used with the HITS command when the ! group of hit parameters was defined) ! ! Two different sets are defined. In forward proton mode the sets ! are the front layer of focal plane detectors (FOC1) and the backing ! layer (FOC2). In backward-electron mode, the sets are, again, the ! front layer of focal plane detectors (FOC1), but the back layer ! is dropped (it is inactive) replaced by the CED detectors (CED). ! We use the detector type to indicate which set the volume is in as ! follows. The values assigned are arbitrary but should not be change ! without corresponding changes in G0 GEANT (GUSTEP) ! ! The values of NWHI and NWDI above are taken from the example in the Geant ! manual. Note that for the detectors, it suffices to specify which ! copy of OCT the detector is in to unambiguously define the path through ! the physical volume tree to a detector so NVOL is set to 1. The packing ! of copy number requires 4 bits (to specify the copy number which ! currently runs from 2 to 9) ! ! Now define the set for the front focal plane detectors (used in both ! forward-proton and backward-electron mode). ! Assign the detector type for the front focal plane detectors IDTYP_FOC1 = 42 ! !! DETE 'FOC1' 'FP01' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP02' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP03' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP04' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP05' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP06' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP07' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! DETE 'FOC1' 'FP08' IDTYP_FOC1 100 100 1 'OCT' 4 1 ! ! ECHO 'MODE' MODE ECHO 'XINT_1' XINT_1 ECHO 'XINT_2' XINT_2 ECHO 'REAC' REAC ECHO 'ISOT' ISOT ECHO 'PLAB' PLAB ECHO 'BPOX' BPOX ECHO 'BPOY' BPOY ECHO 'BEAX' BEAX ECHO 'BEAY' BEAY ECHO 'ZTAR' ZTAR ECHO 'ZWIN' ZWIN ECHO 'TWIN' TWIN ECHO 'NUMB_OCT' NUMB_OCT ECHO 'MAGF' MAGF ECHO 'BFIL' BFIL ECHO 'BMAX' BMAX ECHO 'KEUC' KEUC ECHO 'FPD' FPD ECHO 'CED' CED ECHO 'TLIM_1' TLIM_1 ECHO 'TLIM_2' TLIM_2 ECHO 'EROT_1' EROT_1 ECHO 'EROT_2' EROT_2 ECHO 'QLIM_1' QLIM_1 ECHO 'QLIM_2' QLIM_2 ECHO 'PLIM_1' PLIM_1 ECHO 'PLIM_2' PLIM_2 ECHO 'ROTR' ROTR ECHO 'BDIV' BDIV ECHO 'BDIR' BDIR ECHO 'HTAR' HTAR ECHO 'IPTY' IPTY ECHO 'TRAP_1' TRAP_1 ECHO 'TRAP_2' TRAP_2 ECHO 'TRAP_3' TRAP_3 ECHO 'TRAP_4' TRAP_4 ECHO 'TRAP_5' TRAP_5 ECHO 'TRAP_6' TRAP_6 ECHO 'TRAP_7' TRAP_7 ECHO 'TRAP_8' TRAP_8 ECHO 'TRAP_9' TRAP_9 ECHO 'TRAP_10' TRAP_10 ECHO 'TRAP_11' TRAP_11 ECHO 'TRAP_12' TRAP_12 ECHO 'TRAP_13' TRAP_13 ECHO 'TRAP_14' TRAP_14 ECHO 'TRAS_1' TRAS_1 ECHO 'TRAS_2' TRAS_2 ECHO 'TRAS_3' TRAS_3 ECHO 'TRAS_4' TRAS_4 ECHO 'TRAS_5' TRAS_5 ECHO 'TRAS_6' TRAS_6 ECHO 'TRAS_7' TRAS_7 ECHO 'TRAS_8' TRAS_8 ECHO 'TRAS_9' TRAS_9 ECHO 'TRAS_10' TRAS_10 ECHO 'TRAS_11' TRAS_11 ECHO 'TRAS_12' TRAS_12 ECHO 'TRAS_13' TRAS_13 ECHO 'TRAS_14' TRAS_14 ! ! The file must end with the following command: END