The number of nested volumes (nv),
is the total number of parent volumes for the sensitive volume
(sensitive volume is indicated by the HITS in the tree structure below).
For the Jason and CVS files this nv number seems to be the same
(see block tree structures below).
Then why volume ids id in g2t tables has changed?
The answer I found (which seems trivial to me know)
is that in the original (CVS) file ECAL
block has been instantiated (positioned) twice.
The second appearance is the prototype (East) version of the Endcap
(Original ecalgeo.g from CVS)
if (emcg_OnOff==1 | emcg_OnOff==3) then Position ECAL in CAVE z=+center endif if (emcg_OnOff==2 | emcg_OnOff==3) then Position ECAL in CAVE z=-center ThetaZ=180 endif
In Jason version the second appearance has been removed
(what seems natural and it should not have any effect)
(ecalgeo.g Jason edits, g23):
IF (emcg_OnOff>0) THEN Create ECAL ..... IF (emcg_OnOff==2 ) THEN Prin1 ('East Endcap has been removed from the geometry' ) ENDIF EndIF! emcg_OnOff
Unfortunately, this affects the way GEANT counts nested volumes
(effectively the total number was reduced by 1, from 8 to 7)
and this is the reason why the volume numbering scheme
in g2t tables has been affected.
I propose to put back these East Endcap line back,
since in this case it will not require any additional
changes to the EEMC decoder and g2t tables.
blue - added volumes in Jason file
red - G10 volume removed in Jason file
HITS - sensitive volumes
---- Jason file ----
ECAL
EAGA
|EMSS
| -EFLP
| |ECVO
| | |EMOD
| | | |ESEC
| | | | |ERAD
| | | | | -ELED
| | | | |EMGT
| | | | | |EPER
| | | | | | |ETAR
| | | | | | | -EALP
| | | | | | | -ESCI -> HITS
| |ESHM
| | |ESPL
| | | |EXSG
| | | | -EXPS
| | | | -EHMS -> HITS
| | | | -EBLS
| | | | -EFLS
| | |ERSM
| -ESSP
| -ERCM
| -EPSB
|ECGH
| -ECHC
---- CVS file ----
ECAL
EAGA
|EMSS
| -EFLP
| |ECVO
| | |EMOD
| | | |ESEC
| | | | |ERAD
| | | | | -ELED
| | | | |EMGT
| | | | | |EPER
| | | | | | |ETAR
| | | | | | | -EALP
| | | | | | | -ESCI -> HITS
| |ESHM
| | |ESPL
| | | |EXSG
| | | | -EHMS -> HITS
| | | -EXGT
| | -ERSM
| -ESSP
| -ERCM
| -EPSB
|ECGH
| -ECHC
Create ECAL Block ECAL is one EMC EndCap wheel Create and Position EAGA AlphaZ=halfi EndBlock Block EAGA IS HALF OF WHEEL AIR VOLUME FORTHE ENDCAP MODULE Create AND Position EMSS konly='MANY' Create AND Position ECGH alphaz=90 kOnly='ONLY' EndBlock Block EMSS is the steel support of the endcap module Create AND Position EFLP z=zslice-center+zwidth/2 Create AND Position ECVO z=zslice-center+zwidth/2 Create AND Position ESHM z=zslice-center+zwidth/2 kOnly='MANY' Create AND Position ECVO z=zslice-center+zwidth/2 Create AND Position ESSP z=zslice-center+zwidth/2 Create ERCM Create EPSB EndBlock Block ECVO is one of endcap volume with megatiles and radiators Create AND Position EMOD alphaz=d3 ncopy=i_sector EndBlock Block ESHM is the shower maxsection Create and Position ESPL z=currentk Only='MANY' Create ERSM EndBlock Block ECGH is air gap between endcap half wheels Create ECHC EndBlock Block ECHC is steel endcap half cover EndBlock Block ESSP is stainless steelback plate EndBlock Block EPSB IS A PROJECTILE STAINLESS STEEL BAR EndBlock Block ERCM is stainless steel tie rod in calorimeter sections EndBlock Block ERSM is stainless steel tie rod in shower max EndBlock Block EMOD (fsect,lsect) IS ONE MODULEOF THE EM ENDCAP Create AND Position ESEC z=section-curr+secwid/2 EndBlock Block ESEC is a single em section Create AND Position ERAD z=length+(cell)/2+esec_deltaz Create AND Position EMGT z=length+(gap+cell)/2+esec_deltaz Create AND Position ERAD z=length+cell/2+esec_deltaz EndBlock Block EMGT is a 30 degree megatile Create AND Position EPER alphaz=myPhi EndBlock Block EPER is a 5 degree slice of a 30 degree megatile (subsector) Create and Position ETAR x=(rbot+rtop)/2ort=yzx EndBlock Block ETAR is a single calorimeter cell, containing scintillator, fiber router, etc... Create AND Position EALP y=(-megatile+emcs_alincell)/2 Create AND Position ESCI y=(-megatile+g10)/2+emcs_alincell _ EndBlock Block ESCI is the active scintillator (polystyrene) layer EndBlock Block ERAD is the lead radiator with stainless steel cladding Create AND Position ELED EndBlock Block ELED is a lead absorber plate EndBlock Block EFLP is the aluminum (aluminium) front plate of the endcap EndBlock Block EALP is the thin aluminium plate in calorimeter cell EndBlock Block ESPL is the logical volume containing an SMD plane Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' Create and Position EXSG alphaz=d3 ort=x-y-z ncopy=isec kOnly='MANY' Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' Create and Position EXSG alphaz=d3 ort=x-y-z ncopy=isec kOnly='MANY' Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' EndBlock Block EXSG Is another logical volume... this one acutally creates the planes Create and Position EXPS kONLY='MANY' Create and Position EHMS x=xc y=yc alphaz=-45 kOnly='ONLY' Create and Position EBLS x=xc y=yc z=(+esmd_apex/2+esmd_back_layer/2) alphaz=-45 kOnly='ONLY' Create and Position EHMS x=xc y=yc alphaz=-45 ort=x-y-z kOnly='ONLY' Create and Position EFLS x=xc y=yc z=(-esmd_apex/2-esmd_front_layer/2) alphaz=-45 ort=x-y-z kOnly='ONLY' EndBlock Block EHMS defines the triangular SMD strips Endblock! EHMS Block EFLS is the layer of material on the front of the SMD planes EndBlock! EFLS Block EBLS is the layer of material on the back of the SMD planes EndBlock! EFLS Block EXPS is the plastic spacer in the shower maximum section EndBlock
Create ECAL Block ECAL is one EMC EndCap wheel Create and Position EAGA AlphaZ=halfi EndBlock Block EAGA is half of wheel air volume forthe EndCap module Create and Position EMSS konly='MANY' Create and Position ECGH AlphaZ=90 konly='ONLY' EndBlock Block EMSS is steel support of the EndCap module Create and Position EFLP z=zslice-center+slcwid/2 Create and Position ECVO z=zslice-center+slcwid/2 Create and Position ESHM z=zslice-center+slcwid/2 Create and Position ECVO z=zslice-center+slcwid/2 Create and Position ESSP z=zslice-center+slcwid/2 Create ERCM Create EPSB EndBlock Block ECVO is one of EndCap Volume with megatiles and radiators Create and Position EMOD AlphaZ=d3 Ncopy=J_section EndBlock Block ESHM is the SHower Maxsection Create and Position ESPL z=current Create ERSM Endblock Block ECGH is air Gap between endcap Half wheels Create ECHC EndBlock Block ECHC is steel EndCap Half Cover EndBlock Block ESSP is Stainless Steelback Plate endblock Block EPSB is Projectile Stainless steel Bar endblock Block ERCM is stainless steel tie Rod in CaloriMeter sections endblock Block ERSM is stainless steel tie Rod in Shower Max endblock Block EMOD is one moduleof the EM EndCap Create and Position ESEC z=section-curr+secwid/2 endblock Block ESEC is a single EM section Create and Position ERAD z=len + (cell)/2 Create and Position EMGT z=len +(gap+cell)/2 Create and Position ERAD z=len + cell/2 Endblock Block EMGT is a megatile EM section Create and Position EPER AlphaZ=(emcs_Nslices/2-isec+0.5)*dphi Endblock Block EPER is a EM subsection period (super layer) Create and Position ETAR x=(RBot+RTop)/2ORT=YZX EndBlock Block ETAR is one CELL of scintillator, fiber and plastic Create and Position EALP y=(-mgt+emcs_AlinCell)/2 Create and Position ESCI y=(-mgt+G10)/2+emcs_AlinCell _ EndBlock Block ESCI is the active scintillator (polystyren) layer endblock Block ERAD is radiator Create and PositionELED endblock Block ELED is lead absorber Plate endblock Block EFLP is First Aluminium plate endblock Block EALP is ALuminiumPlate in calorimeter cell endblock Block ESPL is one of the Shower maxPLanes Create and position EXSG AlphaZ=d3Ncopy=isec Create and position EXSG AlphaZ=d3Ncopy=isec Create and position EXGT z=msecwd AlphaZ=d3 Create and position EXSG AlphaZ=d3 ORT=X-Y-Z Ncopy=isec Create and position EXGT z=-msecwd AlphaZ=d3 Create and position EXSG AlphaZ=d3Ncopy=isec Create and position EXGT z=msecwd AlphaZ=d3 Create and position EXSG AlphaZ=d3 ORT=X-Y-Z Ncopy=isec Create and position EXGT z=-msecwd AlphaZ=d3 Endblock Block EXSG is the Shower maxGap for scintillator strips Create EHMS endblock Block EHMS is sHower Max Strip Endblock Block EXGT is the G10 layer in the Shower Max EndBlock
Original (ecalgeo.g) file from CVS
****************************************************************************** Module ECALGEO is the EM EndCap Calorimeter GEOmetry Created 26 jan 1996 Author Rashid Mehdiyev * * Version 1.1, W.J. Llope * - changed sensitive medium names... * * Version 2.0, R.R. Mehdiyev 16.04.97 * - Support walls included * - intercell and intermodule gaps width updated * - G10 layers inserted * Version 2.1, R.R. Mehdiyev 23.04.97 * - Shower Max Detector geometry added * - Variable eta grid step size introduced * Version 2.2, R.R. Mehdiyev 03.12.97 * - Eta grid corrected * - Several changes in volume's dimensions * - Material changes in SMD * * Version 3.0, O. Rogachevsky 28.11.99 * - New proposal for calorimeter SN 0401 * * Version 4.1, O.Akio 3 Jan 01 * - Include forward pion detectors * Version 5.0, O. Rogachevsky 20.11.01 * - FPD is eliminated in this version * - More closed to proposal description * of calorimeter and SMD structure * ****************************************************************************** +CDE,AGECOM,GCONST,GCUNIT. * Content EAGA,EALP,ECAL,ECHC,ECVO,ECGH,EFLP,EHMS, ELED,EMGT,EMOD,EPER,EPSB,ERAD,ERCM,ERSM, ESHM,ESEC,ESCI,ESGH,ESPL,ESSP,EMSS, ETAR,EXGT,EXSG * Structure EMCG { Version, int Onoff, int fillMode} Structure EMCS { Type,ZOrig,ZEnd,EtaMin,EtaMax, PhiMin,PhiMax,Offset, Nsupsec,Nsector,Nsection,Nslices, Front,AlinCell,Frplast,Bkplast,PbPlate,LamPlate, BckPlate,Hub,Rmshift,SMShift,GapPlt,GapCel, GapSMD,SMDcentr,TieRod(2),Bckfrnt,GapHalf,Cover} * Structure EETR { Type,Etagr,Phigr,Neta,EtaBin(13)} * Structure ESEC { Isect, FPlmat, Cell, Scint, Nlayer } * Structure EMXG {Version,Sapex,Sbase,Rin,Rout,F4} * Structure EXSE {Jsect,Zshift,Sectype(6)} * Integer I_section,J_section,Ie,is,isec,i_str,Nstr,Type,ii,jj, cut,fsect,lsect,ihalf,filled * Real center,Plate,Cell,G10,diff,halfi, tan_low,tan_upp,Tanf,RBot,Rtop,Deta,etax,sq2,sq3, dup,dd,d2,d3,rshift,dphi,radiator,orgkeep,endkeep * Real maxcnt,msecwd,mxgten,curr,Secwid,Section, curcl,EtaTop,EtaBot,slcwid,zslice,Gap,mgt, xleft,xright,yleft,yright,current, rth,len,p,xc,yc,xx,yy,rbotrad, Rdel,dxy,ddn,ddup Integer N Parameter (N=12) * Tanf(etax) = tan(2*atan(exp(-etax))) * * ---------------------------------------------------------------------------- * * FillMode =1 only 2-5 sectors (in the first half) filled with scintillators * FillMode =2 all sectors filled (still only one half of one side) * FillMode =3 both halves (ie all 12 sectors are filled) Fill EMCG ! EM EndCAp Calorimeter basic data Version = 5.0 ! Geometry version OnOff = 3 ! Configurations 0-no, 1-west 2-east 3-both FillMode = 3 ! sectors fill mode Fill EMCS ! EM Endcap Calorimeter geometry Type = 1 ! =1 endcap, =2 fpd edcap prototype ZOrig = 268.763 ! calorimeter origin in z ZEnd = 310.007 ! Calorimeter end in z EtaMin = 1.086 ! upper feducial eta cut EtaMax = 2.0, ! lower feducial eta cut PhiMin = -90 ! Min phi PhiMax = 90 ! Max phi Offset = 0.0 ! offset in x Nsupsec = 6 ! Number of azimuthal supersectors Nsector = 30 ! Number of azimutal sectors (Phi granularity) Nslices = 5 ! number of phi slices in supersector Nsection = 4 ! Number of readout sections Front = 0.953 ! thickness of the front AL plates AlinCell = 0.02 ! Aluminim plate in cell Frplast = 0.015 ! Front plastic in megatile Bkplast = 0.155 ! Fiber routing guides and back plastic Pbplate = 0.457 ! Lead radiator thickness LamPlate = 0.05 ! Laminated SS plate thickness BckPlate = 3.175 ! Back SS plate thickness Hub = 3.81 ! thickness of EndCap hub Rmshift = 2.121 ! radial shift of module smshift = 0.12 ! radial shift of steel support walls GapPlt = 0.3/2 ! HALF of the inter-plate gap in phi GapCel = 0.03/2 ! HALF of the radial inter-cell gap GapSMD = 3.400 ! space for SMD detector SMDcentr = 279.542 ! SMD position TieRod = {160.,195} ! Radial position of tie rods Bckfrnt = 306.832 ! Backplate front Z GapHalf = 0.4 ! 1/2 Gap between halves of endcap wheel Cover = 0.075 ! Cover of wheel half * Rmshift = 2.121 ! radial shift of module * -------------------------------------------------------------------------- Fill EETR ! Eta and Phi grid values Type = 1 ! =1 endcap, =2 fpd EtaGr = 1.0536 ! eta_top/eta_bot tower granularity PhiGr = 0.0981747 ! Phi granularity (radians) NEta = 12 ! Eta granularity EtaBin = {2.0,1.9008,1.8065,1.7168,1.6317,1.5507,1.4738, 1.4007,1.3312,1.2651,1.2023,1.1427,1.086}! Eta rapidities *--------------------------------------------------------------------------- Fill ESEC ! First EM section ISect = 1 ! Section number Nlayer = 1 ! Number of Sci layers along z Cell = 1.505 ! Cell full width in z Scint = 0.5 ! Sci layer thickness * Fill ESEC ! First EM section ISect = 2 ! Section number Nlayer = 1 ! Number of Sci layers along z Cell = 1.505 ! Cell full width in z Scint = 0.5 ! Sci layer thickness * Fill ESEC ! Second EM section ISect = 3 ! Section number Nlayer = 4 ! Number of Sci layers along z Cell = 1.405 ! Cell full width in z Scint = 0.4 ! Sci layer thickness * Fill ESEC ! Third EM section ISect = 4 ! Section Nlayer = 18 ! Number of layers along z Cell = 1.405 ! Cell full width in z Scint = 0.4 ! Sci layer thickness * Fill ESEC ! 4th EM section ISect = 5 ! Section Nlayer = 1 ! Number of layers along z Cell = 1.505 ! Cell full width in z Scint = 0.5 ! Sci layer thickness *---------------------------------------------------------------------------- Fill EMXG ! EM Endcap SMD basic data Version = 1 ! Geometry version Sapex = 0.7 ! Scintillator strip apex Sbase = 1.0 ! Scintillator strip base Rin = 77.41 ! inner radius of SMD plane Rout = 213.922 ! outer radius of SMD plane F4 = .15 ! F4 thickness *---------------------------------------------------------------------------- Fill EXSE ! First SMD section JSect = 1 ! Section number Zshift = -1.215 ! Section width sectype = {4,1,0,2,1,0} ! 1-V,2-U,3-cutV,4-cutU * Fill EXSE ! Second SMD section JSect = 2 ! Section number Zshift = 0. ! Section width sectype = {0,2,1,0,2,3} ! 1-V,2-U,3-cutV,4-cutU * Fill EXSE ! Third SMD section JSect = 3 ! Section number Zshift = 1.215 ! Section width sectype = {1,0,2,1,0,2} ! 1-V,2-U,3-cutV,4-cutU *---------------------------------------------------------------------------- * Use EMCG * sq3 = sqrt(3.) sq2 = sqrt(2.) prin1 emcg_version ('ECALGEO version ', F4.2) * Endcap USE EMCS type=1 USE EETR type=1 orgkeep = emcs_ZOrig endkeep = emcs_ZEnd if(emcg_OnOff>0) then diff = 0.0 center = (emcs_ZOrig+emcs_ZEnd)/2 Tan_Upp = tanf(emcs_EtaMin) Tan_Low = tanf(emcs_EtaMax) rth = sqrt(1. + Tan_Low*Tan_Low) rshift = emcs_Hub * rth dup=emcs_Rmshift*Tan_Upp dd=emcs_Rmshift*rth d2=rshift + dd radiator = emcs_Pbplate + 2*emcs_LamPlate * d3=emcs_Rmshift-2*emcs_smshift dphi = (emcs_PhiMax-emcs_PhiMin)/emcs_Nsector Create ECAL if (emcg_OnOff==1 | emcg_OnOff==3) then Position ECAL in CAVE z=+center endif if (emcg_OnOff==2 | emcg_OnOff==3) then Position ECAL in CAVE z=-center ThetaZ=180 endif if(section > emcs_Zend) then prin0 section,emcs_Zend (' ECALGEO error: sum of sections exceeds maximum ',2F12.4) endif prin1 section (' EndCap calorimeter total depth ',F12.4) endif prin1 ('ECALGEO finished') * * ---------------------------------------------------------------------------- Block ECAL is one EMC EndCap wheel Material Air Medium standard Attribute ECAL seen=1 colo=7 ! lightblue shape CONE dz=(emcs_Zend-emcs_ZOrig)/2, Rmn1=orgkeep*Tan_Low-d2 Rmn2=endkeep*Tan_Low-d2, Rmx1=orgkeep*Tan_Upp+dup Rmx2=endkeep*Tan_Upp+dup do ihalf=1,2 filled=1 halfi = -105 + (ihalf-1)*180 if (ihalf=2 & emcg_FillMode<3) filled = 0 Create and Position EAGA AlphaZ=halfi enddo * EndBlock * ---------------------------------------------------------------------------- Block EAGA is half of wheel air volume for the EndCap module Attribute EAGA seen=1 colo=1 serial=filled ! black Material Air shape CONS dz=(emcs_Zend-emcs_ZOrig)/2, Rmn1=orgkeep*Tan_Low-d2 Rmn2=endkeep*Tan_Low-d2, Rmx1=orgkeep*Tan_Upp+dup Rmx2=endkeep*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax if (filled=1) then Create and Position EMSS konly='MANY' curr = orgkeep ; curcl = endkeep Create and position ECGH AlphaZ=90 konly='ONLY' endif EndBlock * ---------------------------------------------------------------------------- Block EMSS is steel support of the EndCap module Attribute EMSS seen=1 colo=1 ! black Material Iron shape CONS dz=(emcs_Zend-emcs_ZOrig)/2, Rmn1=orgkeep*Tan_Low-d2 Rmn2=endkeep*Tan_Low-d2, Rmx1=orgkeep*Tan_Upp+dup Rmx2=endkeep*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax zslice = emcs_ZOrig prin1 zslice (' Front Al plane starts at: ',F12.4) slcwid = emcs_Front Create and Position EFLP z=zslice-center+slcwid/2 zslice = zslice + slcwid prin1 zslice (' First calorimeter starts at: ',F12.4) fsect = 1; lsect = 3 slcwid = emcs_SMDcentr - emcs_GapSMD/2 - zslice * Create and Position ECVO z=zslice-center+slcwid/2 slcwid = emcs_GapSMD zslice = emcs_SMDcentr - emcs_GapSMD/2 prin1 section,zslice (' 1st calorimeter ends, SMD starts at: ',2F10.5) Create and Position ESHM z=zslice-center+slcwid/2 zslice = zslice + slcwid prin1 zslice (' SMD ends at: ',F10.5) * slcwid = 0 fsect = 4; lsect = 5 do I_section =fsect,lsect USE ESEC Isect=I_section Slcwid = slcwid + esec_cell*esec_Nlayer enddo slcwid = emcs_bckfrnt - zslice * Create and Position ECVO z = zslice-center+slcwid/2 zslice = emcs_bckfrnt prin1 section,zslice (' 2nd calorimeter ends, Back plate starts at: ',2F10.5) slcwid = emcs_BckPlate * Create and Position ESSP z=zslice-center+slcwid/2 zslice = zslice + slcwid prin1 zslice (' BackPlate ends at: ',F10.5) slcwid = emcs_Zend-emcs_ZOrig Create ERCM do i_str = 1,2 do is = 1,5 xx = emcs_phimin + is*30 yy = xx*degrad xc = cos(yy)*emcs_TieRod(i_str) yc = sin(yy)*emcs_TieRod(i_str) Position ERCM z=0 x=xc y=yc enddo enddo rth = orgkeep*Tan_Upp+dup + 2.5/2 xc = (endkeep - orgkeep)*Tan_Upp len = .5*(endkeep + orgkeep)*Tan_Upp + dup + 2.5/2 yc = emcs_Zend-emcs_ZOrig p = atan(xc/yc)/degrad Create EPSB do is = 1,6 xx = -75 + (is-1)*30 yy = xx*degrad xc = cos(yy)*len yc = sin(yy)*len Position EPSB x=xc y=yc AlphaZ=xx enddo EndBlock * ---------------------------------------------------------------------------- Block ECVO is one of EndCap Volume with megatiles and radiators Material Air Attribute ECVO seen=1 colo=3 ! green shape CONS dz=slcwid/2, Rmn1=zslice*Tan_Low-dd Rmn2=(zslice+slcwid)*Tan_Low-dd, Rmx1=zslice*Tan_Upp+dup Rmx2=(zslice+slcwid)*Tan_Upp+dup do J_section = 1,6 if (1 < J_section < 6 | emcg_FillMode > 1)then filled = 1 else filled = 0 endif d3 = 75 - (J_section-1)*30 Create and Position EMOD AlphaZ=d3 Ncopy=J_section enddo * EndBlock * ---------------------------------------------------------------------------- Block ESHM is the SHower Max section * Material Air Attribute ESHM seen=1 colo=4 ! blue Shape CONS dz=SlcWid/2, rmn1=zslice*Tan_Low-dd, rmn2=(zslice+slcwid)*Tan_Low-dd, rmx1=(zslice)*Tan_Upp+dup, rmx2=(zslice+slcwid)*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax USE EMXG Version=1 maxcnt = emcs_SMDcentr prin1 zslice,section,center (' Z start for SMD,section: ',3F12.4) * do J_section = 1,3 USE EXSE Jsect=J_section * current = exse_Zshift secwid = emxg_Sapex + 2.*emxg_F4 section = maxcnt + exse_zshift prin1 j_section,current,section,secwid (' layer, Z, width : ',i3,3F12.4) rbot=section*Tan_Low rtop=section*Tan_Upp prin1 j_section,rbot,rtop (' layer, rbot,rtop : ',i3,2F12.4) Create and position ESPL z=current * end do Create ERSM do i_str = 1,2 do is = 1,5 xx = emcs_phimin + (is)*30 yy = xx*degrad xc = cos(yy)*emcs_TieRod(i_str) yc = sin(yy)*emcs_TieRod(i_str) Position ERSM z=0 x=xc y=yc enddo enddo Endblock * ---------------------------------------------------------------------------- Block ECGH is air Gap between endcap Half wheels Material Air Medium standard Attribute ECGH seen=0 colo=7 ! lightblue shape TRD1 dz=(emcs_Zend-emcs_ZOrig)/2, dy =(emcs_gaphalf+emcs_cover)/2, dx1=orgkeep*Tan_Upp+dup, dx2=endkeep*Tan_Upp+dup rth = emcs_GapHalf + emcs_cover xx=curr*Tan_Low-d2 xleft = sqrt(xx*xx - rth*rth) yy=curr*Tan_Upp+dup xright = sqrt(yy*yy - rth*rth) secwid = yy - xx xx=curcl*Tan_Low-d2 yleft = sqrt(xx*xx - rth*rth) yy=curcl*Tan_Upp+dup yright = sqrt(yy*yy - rth*rth) slcwid = yy - xx xx=(xleft+xright)/2 yy=(yleft + yright)/2 xc = yy - xx len = (xx+yy)/2 yc = curcl - curr p = atan(xc/yc)/degrad rth = -(emcs_GapHalf + emcs_cover)/2 Create ECHC Position ECHC x=len y=rth Position ECHC x=-len y=rth AlphaZ=180 EndBlock * ---------------------------------------------------------------------------- Block ECHC is steel EndCap Half Cover Attribute ECHC seen=1 colo=1 ! black Material Iron shape TRAP dz=(curcl-curr)/2, thet=p, bl1=secwid/2, tl1=secwid/2, bl2=slcwid/2, tl2=slcwid/2, h1=emcs_cover/2 h2=emcs_cover/2, phi=0 alp1=0 alp2=0 EndBlock * ---------------------------------------------------------------------------- Block ESSP is Stainless Steel back Plate * Material Iron Attribute ESSP seen=1 colo=6 fill=1 shape CONS dz=emcs_BckPlate/2, Rmn1=zslice*Tan_Low-dd Rmn2=(zslice+slcwid)*Tan_Low-dd, Rmx1=zslice*Tan_Upp+dup Rmx2=(zslice+slcwid)*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax endblock * ---------------------------------------------------------------------------- Block EPSB is Projectile Stainless steel Bar * Material Iron Attribute EPSB seen=1 colo=6 fill=1 shape TRAP dz=(emcs_Zend-emcs_ZOrig)/2, thet=p, bl1=2.5/2, tl1=2.5/2, bl2=2.5/2, tl2=2.5/2, h1=2.0/2 h2=2.0/2, phi=0 alp1=0 alp2=0 endblock * ---------------------------------------------------------------------------- Block ERCM is stainless steel tie Rod in CaloriMeter sections * Material Iron Attribute ERSM seen=1 colo=6 fill=1 shape TUBE dz=slcwid/2, rmin=0, rmax=1.0425 ! nobody knows exactly endblock * ---------------------------------------------------------------------------- Block ERSM is stainless steel tie Rod in Shower Max * Material Iron Attribute ERSM seen=1 colo=6 fill=1 shape TUBE dz=slcwid/2, rmin=0, rmax=1.0425 endblock * ---------------------------------------------------------------------------- Block EMOD is one module of the EM EndCap Attribute EMOD seen=1 colo=3 serial=filled ! green Material Air Shape CONS dz=slcwid/2, phi1=emcs_PhiMin/emcs_Nsupsec, phi2=emcs_PhiMax/emcs_Nsupsec, Rmn1=zslice*Tan_Low-dd Rmn2=(zslice+slcwid)*Tan_Low-dd, Rmx1=zslice*Tan_Upp+dup Rmx2=(zslice+slcwid)*Tan_Upp+dup * * Running parameter 'section' contains the position of the current section * It should not be modified in daughters, use 'current' variable instead. * SecWid is used in all 'CONS' daughters to define dimensions. * * section = zslice curr = zslice + slcwid/2 Do I_section =fsect,lsect USE ESEC Isect=I_section * Secwid = esec_cell*esec_Nlayer if (I_section = 3 | I_section = 5) then ! no last radiator Secwid = Secwid - radiator else if (I_section = 4) then ! add one more radiator Secwid = Secwid - esec_cell + radiator endif Create and position ESEC z=section-curr+secwid/2 section = section + secwid * enddo endblock * ---------------------------------------------------------------------------- Block ESEC is a single EM section Attribute ESEC seen=1 colo=1 serial=filled Material Air Medium standard * Shape CONS dz=secwid/2, rmn1=(section-diff)*Tan_Low-dd, rmn2=(section+secwid-diff)*Tan_Low-dd, rmx1=(section-diff)*Tan_Upp+dup, rmx2=(section+secwid-diff)*Tan_Upp+dup * len = -secwid/2 current = section mgt = esec_scint + emcs_AlinCell _ + emcs_FrPlast + emcs_BkPlast gap = esec_cell - radiator - mgt prin2 I_section,section (' ESEC:I_section,section',i3,F12.4) Do is = 1,esec_Nlayer * define actual cell thickness: Cell = esec_cell plate = radiator * if (is=nint(esec_Nlayer) & (I_section = 3 | I_section = 5)) then Cell = mgt + gap Plate=0 else if (I_section = 4 & is = 1) then ! radiator only Cell = radiator endif * prin2 I_section,is,len,cell,current (' ESEC:I_section,is,len,cell,current ',2i3,3F12.4) if (I_section = 4 & is = 1) then ! radiator only cell = radiator + .14 Create and Position ERAD z=len + (cell)/2 len = len + cell current = current + cell else cell = mgt if(filled = 1) then Create and Position EMGT z=len +(gap+cell)/2 xx = current + (gap+cell)/2 prin2 I_section,is,xx (' MEGA I_section,is ',2i3,F10.4) endif len = len + cell + gap current = current + cell + gap if (Plate>0) then cell = radiator Create and Position ERAD z=len + cell/2 len = len + cell current = current + cell end if end if end do Endblock * ---------------------------------------------------------------------------- Block EMGT is a megatile EM section Attribute EMGT seen=1 colo=1 Material Air Medium standard * Shape CONS dz=mgt/2, rmn1=(current-diff)*Tan_Low-dd, rmn2=(current+mgt-diff)*Tan_Low-dd, rmx1=(current-diff)*Tan_Upp+dup, rmx2=(current+mgt-diff)*Tan_Upp+dup if (I_section=1 | I_section=2 | I_section=5) then Call GSTPAR (ag_imed,'CUTGAM',0.00001) Call GSTPAR (ag_imed,'CUTELE',0.00001) else Call GSTPAR (ag_imed,'CUTGAM',0.00008) Call GSTPAR (ag_imed,'CUTELE',0.001) Call GSTPAR (ag_imed,'BCUTE',0.0001) end if * Do isec=1,nint(emcs_Nslices) Create and Position EPER AlphaZ=(emcs_Nslices/2-isec+0.5)*dphi End Do Endblock *--------------------------------------------------------------------------- Block EPER is a EM subsection period (super layer) * Material POLYSTYREN Attribute EPER seen=1 colo=1 Shape CONS dz=mgt/2, phi1=emcs_PhiMin/emcs_Nsector, phi2=+emcs_PhiMax/emcs_Nsector, rmn1=(current-diff)*Tan_Low-dd, rmn2=(current+mgt-diff)*Tan_Low-dd, rmx1=(current-diff)*Tan_Upp+dup, rmx2=(current+mgt-diff)*Tan_Upp+dup * curcl = current+mgt/2 Do ie = 1,nint(eetr_NEta) EtaBot = eetr_EtaBin(ie) EtaTop = eetr_EtaBin(ie+1) RBot=(curcl-diff)*Tanf(EtaBot) * if(Plate > 0) then ! Ordinary Sci layer RTop=min((curcl-diff)*Tanf(EtaTop), _ ((current-diff)*Tan_Upp+dup)) else ! last Sci layer in section RTop=min((curcl-diff)*Tanf(EtaTop), _ ((current-diff)*Tan_Upp+dup)) endif check RBot<RTop * xx=tan(pi*emcs_PhiMax/180.0/emcs_Nsector) yy=cos(pi*emcs_PhiMax/180.0/emcs_Nsector) Create and Position ETAR x=(RBot+RTop)/2 ORT=YZX prin2 ie,EtaTop,EtaBot,rbot,rtop (' EPER : ie,EtaTop,EtaBot,rbot,rtop ',i3,4F12.4) enddo * EndBlock * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block ETAR is one CELL of scintillator, fiber and plastic * Attribute ETAR seen=1 colo=4 ! blue * local z goes along the radius, y is the thickness Shape TRD1 dy=mgt/2 dz=(RTop-RBot)/2, dx1=RBot*xx-emcs_GapCel/yy, dx2=RTop*xx-emcs_GapCel/yy * Create and Position EALP y=(-mgt+emcs_AlinCell)/2 G10 = esec_scint Create and Position ESCI y=(-mgt+G10)/2+emcs_AlinCell _ +emcs_FrPlast EndBlock * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block ESCI is the active scintillator (polystyren) layer * Material POLYSTYREN Material Cpolystyren Isvol=1 Attribute ESCI seen=1 colo=7 fill=0 ! lightblue * local z goes along the radius, y is the thickness Shape TRD1 dy=esec_scint/2, dz=(RTop-RBot)/2-emcs_GapCel Call GSTPAR (ag_imed,'CUTGAM',0.00008) Call GSTPAR (ag_imed,'CUTELE',0.001) Call GSTPAR (ag_imed,'BCUTE',0.0001) Call GSTPAR (ag_imed,'CUTNEU',0.001) Call GSTPAR (ag_imed,'CUTHAD',0.001) Call GSTPAR (ag_imed,'CUTMUO',0.001) * define Birks law parameters Call GSTPAR (ag_imed,'BIRK1',1.) Call GSTPAR (ag_imed,'BIRK2',0.013) Call GSTPAR (ag_imed,'BIRK3',9.6E-6) * HITS ESCI Birk:0:(0,10) * xx:16:H(-250,250) yy:16:(-250,250) zz:16:(-350,350), * px:16:(-100,100) py:16:(-100,100) pz:16:(-100,100), * Slen:16:(0,1.e4) Tof:16:(0,1.e-6) Step:16:(0,100), * none:16: endblock * ---------------------------------------------------------------------------- Block ERAD is radiator * Material Iron Attribute ERAD seen=1 colo=6 fill=1 ! violet Shape CONS dz=radiator/2, rmn1=(current)*Tan_Low-dd, rmn2=(current+cell)*Tan_Low-dd, rmx1=(current)*Tan_Upp+dup, rmx2=(current+radiator)*Tan_Upp+dup Create and Position ELED endblock * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Block ELED is lead absorber Plate * Material Lead Attribute ELED seen=1 colo=4 fill=1 Shape TUBS dz=emcs_Pbplate/2, rmin=(current)*Tan_Low, rmax=(current+emcs_Pbplate)*Tan_Upp, Call GSTPAR (ag_imed,'CUTGAM',0.00008) Call GSTPAR (ag_imed,'CUTELE',0.001) Call GSTPAR (ag_imed,'BCUTE',0.0001) Call GSTPAR (ag_imed,'CUTNEU',0.001) Call GSTPAR (ag_imed,'CUTHAD',0.001) Call GSTPAR (ag_imed,'CUTMUO',0.001) endblock * ---------------------------------------------------------------------------- Block EFLP is First Aluminium plate * Material Aluminium Attribute EFLP seen=1 colo=3 fill=1 ! green shape CONS dz=emcs_Front/2, Rmn1=68.813 Rmn2=68.813, Rmx1=(zslice-diff)*Tan_Upp+dup, Rmx2=(zslice + slcwid-diff)*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax endblock * ---------------------------------------------------------------------------- Block EALP is ALuminium Plate in calorimeter cell * Material Aluminium Material StrAluminium isvol=0 Attribute EALP seen=1 colo=1 Shape TRD1 dy=emcs_AlinCell/2 dz=(RTop-RBot)/2 Call GSTPAR (ag_imed,'CUTGAM',0.00001) Call GSTPAR (ag_imed,'CUTELE',0.00001) Call GSTPAR (ag_imed,'LOSS',1.) Call GSTPAR (ag_imed,'STRA',1.) endblock * ---------------------------------------------------------------------------- Block ESPL is one of the Shower max PLanes * Material Air Attribute ESPL seen=1 colo=3 ! blue Shape TUBS dz=SecWid/2, rmin=section*Tan_Low-1.526, rmax=(section-secwid/2)*Tan_Upp+dup, phi1=emcs_PhiMin phi2=emcs_PhiMax USE EMXG Version=1 msecwd = (emxg_Sapex+emxg_F4)/2 do isec=1,6 cut=1 d3 = 75 - (isec-1)*30 if (exse_sectype(isec) = 0 | (emcg_FillMode=1 & (isec=6 | isec=1))) then cut = 0 Create and position EXSG AlphaZ=d3 Ncopy=isec else if(exse_sectype(isec) = 1) then ! V Create and position EXSG AlphaZ=d3 Ncopy=isec Create and position EXGT z=msecwd AlphaZ=d3 else if(exse_sectype(isec) = 2) then ! U Create and position EXSG AlphaZ=d3 ORT=X-Y-Z Ncopy=isec Create and position EXGT z=-msecwd AlphaZ=d3 else if(exse_sectype(isec) = 3) then ! cut V cut=2 Create and position EXSG AlphaZ=d3 Ncopy=isec Create and position EXGT z=msecwd AlphaZ=d3 else if(exse_sectype(isec) = 4) then ! cut U cut=2 Create and position EXSG AlphaZ=d3 ORT=X-Y-Z Ncopy=isec Create and position EXGT z=-msecwd AlphaZ=d3 endif enddo Endblock * ---------------------------------------------------------------------------- Block EXSG is the Shower max Gap for scintillator strips * Attribute EXSG seen=1 colo=7 serial=cut ! black Material Air Shape TUBS dz=SecWid/2, rmin=section*Tan_Low-1.526, rmax=(section-secwid/2)*Tan_Upp+dup, phi1=emcs_PhiMin/emcs_Nsupsec, phi2=emcs_PhiMax/emcs_Nsupsec * Rbot = emxg_Rin Rtop = emxg_Rout if(cut > 0) then if(cut = 1) then Rdel = 3.938 Nstr = 288 else Rdel = -.475 Nstr = 285 endif rth = .53*rdel ! .53 --- tentatavily ddn = sq3*1.713 + Rdel ddup = .5*1.846 + 1.713 prin2 Rbot,Rtop,Nstr (' EXSG: Rbot,Rtop,Nstr',2F12.4,I5) mgt = emxg_Sbase + .01 do i_str = 1,nstr p = .5*(i_str-1)*mgt + 41.3655 * if (p <= (.5*rbot*sq3 + rth)) then dxy = 1.9375*sq2 xleft = .5*sq2*p*(sq3 + 1.) - dxy yleft = .5*sq2*p*(sq3 - 1.) - dxy yright = .5*sq2*(sqrt( rbot*rbot - p*p) - p) xright = sq2*p + yright else if ((.5*rbot*sq3 + rth) < p <= (.5*Rtop + 1.5)) then prin2 i_str,p (' EXSG: 2 - -i_str,p:',i3,F12.4) dxy = 1.9375*sq2 xleft = .5*sq2*p*(sq3 + 1.) - dxy yleft = .5*sq2*p*(sq3 - 1.) - dxy dxy = rdel*sq2/sq3 yright = .5*sq2*p*(1.- 1./sq3) xright = sq2*p - yright - dxy yright = -yright - dxy else if (p > (.5*rtop +1.5)) then prin2 i_str,p (' EXSG: 3 - - i_str,p:',i3,F12.4) yleft = (sqrt(rtop*rtop - p*p) - p)/sq2 xleft = sq2*p + yleft dxy = rdel*sq2/sq3 yright = .5*sq2*p*(1.- 1./sq3) xright = sq2*p - yright - dxy yright = -yright - dxy dxy = 0. if ((.5*sq3*160.- ddn) < p <= (.5*sq3*160.+ ddup) ) then prin2 i_str,p (' EXSG: 4 - - i_str,p:',i3,F12.4) xc = .5*(sq3*160.+1.846) yc = xc - .5*sq3*1.713 if (p > yc) then dxy = .5*sq2*(2/sq3*rdel + .5*sq3*1.846 +_ sqrt(1.713*1.713 - (p-xc)*(p-xc))) else dxy = sq2/sq3*(p - .5*sq3* 160. + ddn) endif else if ((.5*sq3*195.- ddn) < p <= (.5*sq3*195. + ddup) ) then prin2 i_str,p (' EXSG: 5 - - i_str,p:',i3,F12.4) xc = .5*(sq3*195.+1.846) yc = xc - .5*sq3*1.713 if (p > yc) then dxy = .5*sq2*(2/sq3*rdel + .5*sq3*1.846 +_ sqrt(1.713*1.713 - (p-xc)*(p-xc))) else dxy = sq2/sq3*(p - .5*sq3*195. + ddn) endif endif xright = xright + dxy yright = yright + dxy endif dxy = section*Tan_Upp - Rtop xc = .5*(xright+xleft) + dxy yc = .5*(yright+yleft) xx = .5*sq2*(xleft+yleft) yy = .5*sq2*(xright+yright) len = xx-yy prin2 i_str,p,yy,xx,len,xc,yc (' EXSG: i_str,x,y1,y2,len,xc,yc:',i3,6F12.4) * Create EHMS if (mod(i_str,2) != 0 ) then Position EHMS x=xc y=yc AlphaZ=-45 else Position EHMS x=xc y=yc AlphaZ=-45 ORT=X-Y-Z endif end do endif * dcut exsg z 0 0 10 0.1 0.1 * dcut exsg y 0 10 -50 0.7 0.7 endblock * ---------------------------------------------------------------------------- Block EHMS is sHower Max Strip * Material POLYSTYREN Material Cpolystyren Isvol=1 Attribute EHMS seen=1 colo=2 serial=cut ! red Shape TRD1 dx1=0 dx2=emxg_Sbase/2 dy=len/2 dz=emxg_Sapex/2 Call GSTPAR (ag_imed,'CUTGAM',0.00008) Call GSTPAR (ag_imed,'CUTELE',0.001) Call GSTPAR (ag_imed,'BCUTE',0.0001) * define Birks law parameters Call GSTPAR (ag_imed,'BIRK1',1.) Call GSTPAR (ag_imed,'BIRK2',0.0130) Call GSTPAR (ag_imed,'BIRK3',9.6E-6) * HITS EHMS Birk:0:(0,10) * xx:16:SH(-250,250) yy:16:(-250,250) zz:16:(-350,350), * px:16:(-100,100) py:16:(-100,100) pz:16:(-100,100), * Slen:16:(0,1.e4) Tof:16:(0,1.e-6) Step:16:(0,100), * none:16: Eloss:0:(0,10) * Endblock * ---------------------------------------------------------------------------- Block EXGT is the G10 layer in the Shower Max * * G10 is about 60% SiO2 and 40% epoxy Component Si A=28.08 Z=14 W=0.6*1*28./60. Component O A=16 Z=8 W=0.6*2*16./60. Component C A=12 Z=6 W=0.4*8*12./174. Component H A=1 Z=1 W=0.4*14*1./174. Component O A=16 Z=8 W=0.4*4*16./174. Mixture g10 Dens=1.7 Attribute EXGT seen=1 colo=7 Shape TUBS dz=emxg_F4/2, rmin=(section-diff)*Tan_Low-1.526, rmax=(section+msecwd-diff)*Tan_Upp, phi1=emcs_PhiMin/emcs_Nsupsec, phi2=emcs_PhiMax/emcs_Nsupsec Call GSTPAR (ag_imed,'CUTGAM',0.00001) Call GSTPAR (ag_imed,'CUTELE',0.00001) EndBlock * ---------------------------------------------------------------------------- * ECAL nice views: dcut ecvo x 1 10 -5 .5 .1 * draw emdi 105 0 160 2 13 .2 .1 * draw emdi 120 180 150 1 14 .12 .12 * --------------------------------------------------------------------------- end
ecalgeo.g geometry file (Jason Webb edits, g23)
c***************************************************************************** Module ECALGEO is the EM EndCap Calorimeter GEOmetry c-- Created 26 jan 1996 Author Rashid Mehdiyev c-- c Version 1.1, W.J. Llope c - changed sensitive medium names... c c Version 2.0, R.R. Mehdiyev 16.04.97 c - Support walls included c - intercell and intermodule gaps width updated c - G10 layers inserted c Version 2.1, R.R. Mehdiyev 23.04.97 c - Shower Max Detector geometry added c - Variable eta grid step size introduced c Version 2.2, R.R. Mehdiyev 03.12.97 c - Eta grid corrected c - Several changes in volumes dimensions c - Material changes in SMD c c Version 3.0, O. Rogachevsky 28.11.99 c - New proposal for calorimeter SN 0401 c c Version 4.1, O.Akio 3 Jan 01 c - Include forward pion detectors c c Version 5.0, O. Rogachevsky 20.11.01 c - FPD is eliminated in this version c - More closed to proposal description c of calorimeter and SMD structure c c***************************************************************************** +CDE,AGECOM,GCONST,GCUNIT. * Content EAGA,EALP,ECAL,ECHC,ECVO,ECGH,EFLP,EHMS, ELED,EMGT,EMOD,EPER,EPSB,ERAD,ERCM,ERSM, ESHM,ESEC,ESCI,ESGH,ESPL,ESSP,EMSS,ETAR, EXGT,EXSG,EXPS,EFLS,EBLS Structure EMCG { Version, int Onoff, int fillMode} Structure EMCS { Version,Type,zorg,zend,EtaMin,EtaMax, PhiMin,PhiMax,Offset, Nsupsec,Nsector,Nsection,Nslices, Front,AlinCell,Frplast,Bkplast,PbPlate,LamPlate, BckPlate,Hub,Rmshift,SMShift,GapPlt,GapCel, GapSMD,SMDcentr,TieRod(2),Bckfrnt,GapHalf,Cover, Rtie,slop} Structure EETR { Type,Etagr,Phigr,Neta,EtaBin(13)} Structure ESEC { Isect, FPlmat, Cell, Scint, Nlayer, deltaz, Jiggle(18) } Structure EMXG {Version,Sapex,Sbase,Rin,Rout,F4} Structure EXSE {Jsect,Zshift,Sectype(6)} Structure ESMD {Version, front_layer, back_layer, spacer_layer, base, apex } Integer I_section,J_section,Ie,is,isec,istrip,Nstr,Type,ii,jj, cut,fsect,lsect,ihalf,filled,i,j,k,i_sector Real center,Plate,Cell,G10,halfi, tan_low,tan_upp,Tanf,RBot,Rtop,Deta,etax,sq2,sq3, dup,dd,d2,d3,rshift,dphi,radiator Real maxcnt,msecwd,mxgten,curr,Secwid,Section, curcl,EtaTop,EtaBot,zwidth,zslice,Gap,megatile, xleft,xright,yleft,yright,current, rth,length,p,xc,yc,xx,yy,rdel,dxy,ddn,ddup Real myPhi Integer N Parameter (N=12) Tanf(etax) = tan(2*atan(exp(-etax))) c-------------------------------------------------------------------------------- c Data c c FillMode =1 only 2-5 sectors (in the first half) filled with scintillators c FillMode =2 all sectors filled (still only one half of one side) c FillMode =3 both halves (ie all 12 sectors are filled) c c OnOff =0 Do not build geometry c OnOff =1 Build West Endcap c OnOff =2 Build East Endcap (disabled) c OnOff =3 Build Both Endcaps (east disabled) c c Note: Fill EMCG ! EM EndCAp Calorimeter basic data Version = 5.0 ! Geometry version OnOff = 3 ! Configurations 0-no, 1-west 2-east 3-both FillMode = 3 ! sectors fill mode c-- Fill EMCS ! EM Endcap Calorimeter geometry Version = 1 ! Versioning Type = 1 ! =1 endcap, =2 fpd edcap prototype ZOrg = 268.763 ! calorimeter origin in z ZEnd = 310.007 ! Calorimeter end in z EtaMin = 1.086 ! upper feducial eta cut EtaMax = 2.0, ! lower feducial eta cut PhiMin = -90 ! Min phi PhiMax = 90 ! Max phi Offset = 0.0 ! offset in x Nsupsec = 6 ! Number of azimuthal supersectors Nsector = 30 ! Number of azimutal sectors (Phi granularity) Nslices = 5 ! number of phi slices in supersector Nsection = 4 ! Number of readout sections Front = 0.953 ! thickness of the front AL plates AlinCell = 0.02 ! Aluminim plate in cell Frplast = 0.015 ! Front plastic in megatile Bkplast = 0.155 ! Fiber routing guides and back plastic Pbplate = 0.457 ! Lead radiator thickness LamPlate = 0.05 ! Laminated SS plate thickness BckPlate = 3.175 ! Back SS plate thickness Hub = 3.81 ! thickness of EndCap hub Rmshift = 2.121 ! radial shift of module smshift = 0.12 ! radial shift of steel support walls GapPlt = 0.3/2 ! HALF of the inter-plate gap in phi GapCel = 0.03/2 ! HALF of the radial inter-cell gap GapSMD = 3.400 ! space for SMD detector << version 2 -- 3.600 >> SMDcentr = 279.542 ! SMD position TieRod = {160.,195} ! Radial position of tie rods Bckfrnt = 306.832 ! Backplate front Z GapHalf = 0.4 ! 1/2 Gap between halves of endcap wheel Cover = 0.075 ! Cover of wheel half Rtie = 1.0425 ! Radius of tie rod Slop = 0.1400 ! Added to cell containing radiator 6 (formerly hardcoded in geom) c-- Fill EMCS ! EM Endcap Calorimeter geometry Version = 2 ! Versioning Type = 1 ! =1 endcap, =2 fpd edcap prototype ZOrg = 268.763 ! calorimeter origin in z ZEnd = 310.007 ! Calorimeter end in z EtaMin = 1.086 ! upper feducial eta cut EtaMax = 2.0, ! lower feducial eta cut PhiMin = -90 ! Min phi PhiMax = 90 ! Max phi Offset = 0.0 ! offset in x Nsupsec = 6 ! Number of azimuthal supersectors Nsector = 30 ! Number of azimutal sectors (Phi granularity) Nslices = 5 ! number of phi slices in supersector Nsection = 4 ! Number of readout sections Front = 0.953 ! thickness of the front AL plates AlinCell = 0.02 ! Aluminim plate in cell Frplast = 0.015 ! Front plastic in megatile Bkplast = 0.155 ! Fiber routing guides and back plastic Pbplate = 0.457 ! Lead radiator thickness LamPlate = 0.05 ! Laminated SS plate thickness BckPlate = 3.175 ! Back SS plate thickness Hub = 3.81 ! thickness of EndCap hub Rmshift = 2.121 ! radial shift of module smshift = 0.12 ! radial shift of steel support walls GapPlt = 0.3/2 ! HALF of the inter-plate gap in phi GapCel = 0.03/2 ! HALF of the radial inter-cell gap GapSMD = 3.600 ! space for SMD detector (* from master_geom_bmp.xls *) SMDcentr = 279.542 ! SMD position TieRod = {160.,195} ! Radial position of tie rods Bckfrnt = 306.832 ! Backplate front Z GapHalf = 0.4 ! 1/2 Gap between halves of endcap wheel Cover = 0.075 ! Cover of wheel half Rtie = 0.75 ! Radius of tie rod Slop = 0.0000 ! Added to cell containing radiator 6 (formerly hardcoded in geom) c-- c--------------------------------------------------------------------------- c-- c-- Supporting documentation: c-- http://drupal.star.bnl.gov/STAR/system/files/SMD_module_stack.pdf c-- Fill ESMD ! shower maximum detector information Version = 1 ! versioning information front_layer = 0.161 ! thickness of front layer back_layer = 0.210 ! thickness of back layer base = 1.0 ! base of the SMD strip apex = 0.7 ! apex of the SMD strip spacer_layer = 1.2 ! spacer layer c-- Fill EETR ! Eta and Phi grid values Type = 1 ! =1 endcap, =2 fpd EtaGr = 1.0536 ! eta_top/eta_bot tower granularity PhiGr = 0.0981747 ! Phi granularity (radians) NEta = 12 ! Eta granularity EtaBin = {2.0,1.9008,1.8065,1.7168,1.6317,1.5507,1.4738, 1.4007,1.3312,1.2651,1.2023,1.1427,1.086}! Eta rapidities c-- c--------------------------------------------------------------------------- c-- Fill ESEC ! Preshower 1 / Radiator 1 ISect = 1 ! Section number Nlayer = 1 ! Number of Sci layers along z Cell = 1.505 ! Cell full width in z Scint = 0.475 ! Sci layer thickness (4.75mm Bicron) deltaz = -0.014 ! Amount to shift section in z to align with as-built numbers Jiggle = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ! Degrees to shift EPER in each layer c-- c-- Note: Jiggle allows one to shift each megatile by Jiggle(i) degrees, where c-- i indicates the layer within the section of the calorimeter. This feature c-- has only been crudely tested... i.e. it compiles and creates a reasonable c-- set of pictures, but I have not verified that every scintillator shows up... c-- There could be volume conflicts and this would need to be checked. --JW c-- Fill ESEC ! Preshower 2 / Radiator 2 ISect = 2 ! Section number Nlayer = 1 ! Number of Sci layers along z Cell = 1.505 ! Cell full width in z Scint = 0.475 ! Sci layer thickness (4.75mm Bicron) deltaz = -0.0182 ! Amount to shift section in z to align with as-built numbers Jiggle = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ! Degrees to shift EPER in each layer c-- Fill ESEC ! Megatiles 3-6 / Radiators 3-5 ISect = 3 ! Section number Nlayer = 4 ! Number of Sci layers along z Cell = 1.405 ! Cell full width in z Scint = 0.4 ! Sci layer thickness deltaz = -0.0145 ! Amount to shift section in z to align with as-built numbers Jiggle = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ! Degrees to shift EPER in each layer c-- Fill ESEC ! Megatiles 7-23 / Radiators 6-23 ISect = 4 ! Section Nlayer = 18 ! Number of layers along z Cell = 1.405 ! Cell full width in z Scint = 0.4 ! Sci layer thickness deltaz = +0.0336 ! Amount to shift section in z to align with as-built numbers Jiggle = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ! Degrees to shift EPER in each layer c-- Fill ESEC ! Postshower ISect = 5 ! Section Nlayer = 1 ! Number of layers along z Cell = 1.505 ! Cell full width in z Scint = 0.5 ! Sci layer thickness (5.0mm Kurarary) deltaz = +0.036 ! Amount to shift section in z to align with as-built numbers Jiggle = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ! Degrees to shift EPER in each layer c-- c---------------------------------------------------------------------------- c-- Fill EMXG ! EM Endcap SMD basic data Version = 1 ! Geometry version Sapex = 0.7 ! Scintillator strip apex Sbase = 1.0 ! Scintillator strip base Rin = 77.41 ! inner radius of SMD plane Rout = 213.922 ! outer radius of SMD plane F4 = .15 ! F4 thickness c-- c---------------------------------------------------------------------------- c-- Fill EXSE ! First SMD section JSect = 1 ! Section number Zshift = -1.215 ! Section width sectype = {4,1,0,2,1,0} ! 1-V,2-U,3-cutV,4-cutU c-- Fill EXSE ! Second SMD section JSect = 2 ! Section number Zshift = 0. ! Section width sectype = {0,2,1,0,2,3} ! 1-V,2-U,3-cutV,4-cutU c-- Fill EXSE ! Third SMD section JSect = 3 ! Section number Zshift = 1.215 ! Section width sectype = {1,0,2,1,0,2} ! 1-V,2-U,3-cutV,4-cutU c-- c---------------------------------------------------------------------------- c-- Materials c-- c-- PVC used in the SMD spacer layers c-- Component H A=1 Z=1 W=3.0*1.0/62.453 Component C A=12 Z=6 W=2.0*12.0/62.453 Component Cl A=35.453 Z=17 W=1.0*35.453/62.453 Mixture PVC_Spacer Dens=1.390*(1.20/1.00) c-- c-- Lead alloy used in the radiators c-- Component Sn A=118.710 Z=50 W=0.014 Component Ca A=40.0780 Z=20 W=0.00075 Component Al A=26.9815 Z=13 W=0.0003 Component Pb A=207.190 Z=82 W=0.98495 Mixture PbAlloy DENS=11.35 c-- c-- Stainless Steel used in various places c-- Component Cr A=51.9960 Z=24 W=0.19 Component Ni A=58.6934 Z=28 W=0.09 Component Fe A=55.8450 Z=26 W=0.72 Mixture Steel DENS=8.03 c-- c-- Aluminized mylar. According to information which I dug up on a google c-- search, this is typically mylar coated with a thin (1000 angstrom) layer c-- of aluminium on each side. c-- c-- http://www.eljentechnology.com/datasheets/EJ590-B10HH%20data%20sheet.pdf c-- Component Mylar A=12.875 Z=6.4580 w=0.999 Component Al A=26.980 Z=13.000 w=0.001 Mixture AlMylar dens=1.390 c-- c-- G10 Epoxy used in various places c-- Component Si A=28.08 Z=14 W=0.6*1*28./60. Component O A=16 Z=8 W=0.6*2*16./60. Component C A=12 Z=6 W=0.4*8*12./174. Component H A=1 Z=1 W=0.4*14*1./174. Component O A=16 Z=8 W=0.4*4*16./174. Mixture G10 Dens=1.7 c-- c-- Fibreglass cloth used in SMD stackup. I googled this one too... a self- c-- described expert quotes typical densities and percent by volume c-- http://en.allexperts.com/q/Composite-Materials-2430/fiberglass-1.htm c-- c-- glass fiber: 2.6 g/cm3 (17.6%) resin: 1.3 g/cm3 (82.4%) c-- c-- Fiberglass density = 1.529 g/cm3 c-- c-- I will assume that G10 epoxy is close enough to the typical resins c-- used, at least in terms of chemical composition. Then c-- Component G10 A=18.017 Z=9.013 W=1.3*0.824/(1.3*0.824+2.6*0.176) Component Si A=28.08 Z=14 W=2.6*0.176/(1.3*0.824+2.6*0.176)*28.08/60.08 Component O A=16 Z=8 W=2.6*0.176/(1.3*0.824+2.6*0.176)*32.00/60.08 Mixture Fiberglass dens=1.53 c-- c-- c---------------------------------------------------------------------------- c-- Select versions of various geometry data c-- Use EMCG Use EMCS Version=2 Use EETR c-- c---------------------------------------------------------------------------- c-- Calculate frequently used quantities c-- sq3 = sqrt(3.) ! 1/tan(30deg) = sq3 sq2 = sqrt(2.) c-- c-- center = (emcs_zorg+emcs_zend)/2 ! center of the calorimeter tan_upp = tanf(emcs_etamin) ! think this is angle pointing to top of calo tan_low = tanf(emcs_etamax) ! think this is angle pointing to bot of calo rth = sqrt(1. + tan_low*tan_low) ! ?? rshift = emcs_hub * rth ! ?? dup = emcs_rmshift*tan_upp ! dd = emcs_rmshift*rth ! d2 = rshift + dd ! radiator = emcs_pbplate + 2*emcs_lamplate ! thickness of radiator assembly dphi = (emcs_phimax-emcs_phimin)/emcs_nsector ! single endcap sector c-- c---------------------------------------------------------------------------- c---------------------------------------------------------------------------- c-- BEGIN Prin1 emcg_version ('ecalgeo version: ',F4.2) c-- IF (emcg_OnOff>0) THEN c-- c-- Build the EEMC geometry for one half wheel c-- Create ECAL c-- c-- Position the two halves. Bottom half installed in 2003, top c-- half in 2004... so we allow logic to allow for the time c-- evolution of the calorimeter c-- c-- c-- West Endcap c-- IF (emcg_OnOff==1 | emcg_OnOff==3) THEN Position ECAL in CAVE z=+center ENDIF IF (section > emcs_zend) THEN Prin1 section, emcs_zend (' ECALGEO error: sum of sections exceeds maximum ',2F12.4) ENDIF IF (emcg_OnOff==2 ) THEN Prin1 ('East Endcap has been removed from the geometry' ) ENDIF c-- EndIF! emcg_OnOff c-- Prin1 ('ECALGEO finished') c-- c-- END c---------------------------------------------------------------------------- c----------------------------------------------------------------- Block ECAL -- c-- Block ECAL is one EMC EndCap wheel c-- c-- The EEMC is built from two 180 degree half-wheels tilted at an angle c-- with respect to zero in the STAR reference frame. This block is serves c-- as a logical volume which creates the two half wheels. c-- c-- Creates: c-- + EAGA c-- Material Air Attribute ECAL seen=0 colo=7 ! lightblue c-- Shape CONE dz=(emcs_zend-emcs_zorg)/2, rmn1=emcs_zorg*tan_low-d2, rmn2=emcs_zend*tan_low-d2, rmx1=emcs_zorg*tan_upp+dup, rmx2=emcs_zend*tan_upp+dup c-- c-- DO ihalf=1,2 c-- filled = 1 halfi = -105 + (ihalf-1)*180 if (ihalf=2 & emcg_FillMode<3) filled = 0 c-- Create and Position EAGA AlphaZ=halfi c-- ENDDO c-- EndBlock c----------------------------------------------------------------- Block EAGA -- c-- Block EAGA IS HALF OF WHEEL AIR VOLUME FOR THE ENDCAP MODULE c-- c-- The eemc is divided into two halves. one half installed for 2003 run, c-- second half added for 2004 and beyond. the eaga block represents one c-- of these half-wheels. it is an air volume which will be filled in c-- with additional detector components. c-- c-- Creates: c-- + EMSS -- steel support block c-- + ECGH -- air gap between the two halves c-- C-- Material AIR Attribute EAGA seen=0 colo=1 serial=FILLED ! BLACK C-- Shape CONS dz=(emcs_zend-emcs_zorg)/2, rmn1=emcs_zorg*tan_low-d2 rmn2=emcs_zend*tan_low-d2, rmx1=emcs_zorg*tan_upp+dup rmx2=emcs_zend*tan_upp+dup, phi1=emcs_phimin phi2=emcs_phimax c-- c-- IF ( FILLED .EQ. 1 ) THEN c-- Create AND Position EMSS konly='MANY' c-- curr = emcs_zorg curcl = emcs_zend c-- Create AND Position ECGH alphaz=90 kOnly='ONLY' c-- ENDIF c-- EndBlock c----------------------------------------------------------------- Block EMSS -- c-- Block EMSS is the steel support of the endcap module c-- c-- Creates: c-- + EFLP -- ALUMINIUM FRONT PLATE c-- + ECVO -- VOLUMES TO CONTAIN RADIATORS AND MEGATILES c-- + ESHM -- SHOWER MAX DETECTOR VOLUME c-- + ESSP -- STAINLESS STEEL BACKPLATE c-- + ERCM -- STAINLESS STEEL TIE-RODS PENETRATING ECVO c-- c-- Material Steel c-- Attribute EMSS seen=1 colo=1 ! BLACK Shape CONS dz=(emcs_zend-emcs_zorg)/2, rmn1=emcs_zorg*tan_low-d2 rmn2=emcs_zend*tan_low-d2, rmx1=emcs_zorg*tan_upp+dup rmx2=emcs_zend*tan_upp+dup, phi1=emcs_phimin phi2=emcs_phimax c-- c-- Aluminium front plate C-- zslice = emcs_zorg zwidth = emcs_front c-- Prin1 zslice+zwidth/2 (' Front Al plate centered at: ', F12.4 ) c-- Create AND Position EFLP z=zslice-center+zwidth/2 zslice = zslice + zwidth C-- Prin1 zslice (' FIRST CALORIMETER STARTS AT: ',F12.4) c-- c-- Preshower 1, preshower 2, and calorimeter tiles up to c-- megatile number six. c-- fsect = 1 ! first section lsect = 3 ! last section c-- zwidth = emcs_smdcentr - emcs_gapsmd/2 - zslice ! width of current slice c-- Prin1 zslice+zwidth/2 ('Sections 1-3 positioned at: ', F12.4 ) c-- Create AND Position ECVO z=zslice-center+zwidth/2 c-- zwidth = emcs_gapsmd zslice = emcs_smdcentr - emcs_gapsmd/2 c-- Prin1 section, zslice (' 1st calorimeter ends, smd starts at: ',2f10.5) Prin1 zwidth (' smd width = ',f10.5 ) c-- Prin1 zslice+zwidth/2 ('SMD section centered at: ', F12.4 ) c-- Do not kill neighbors Create AND Position ESHM z=zslice-center+zwidth/2 kOnly='MANY' zslice = zslice + zwidth c-- Prin1 zslice (' SMD ends at: ',f10.5) c-- c-- fsect = 4 ! first section lsect = 5 ! last section c-- c-- Calculate the width of the last two calorimeter sections c-- zwidth = 0 DO i_section = fsect,lsect c-- USE ESEC isect=i_section zwidth = zwidth + esec_cell*esec_nlayer c-- ENDDO c-- c-- ============================================================= c-- c-- Total width will be between the back plate and the current c-- position... this effectively turns the geometry into an c-- accordian... whatever was defined earlier will compress c-- / expand this section. so correcting the smd gap will c-- result in some small, sub-mm shifts of radiators and c-- megatiles... one would like to actually place these c-- into their absolute positions. c-- c-- ============================================================== c-- zwidth = emcs_bckfrnt - zslice c-- Prin1 zslice+zwidth/2 ('Sections 4-5 positioned at: ', F12.4 ) c-- Create AND Position ECVO z=zslice-center+zwidth/2 c-- zslice = emcs_bckfrnt c-- Prin1 section,zslice (' 2nd calorimeter ends, back plate starts at: ',2f10.5) c-- zwidth = emcs_bckplate c-- Create AND Position ESSP z=zslice-center+zwidth/2 c-- zslice = zslice + zwidth c-- Prin1 zslice ('EEMC Al backplate ends at: ',F12.4 ) c-- c-- Done with the calorimeter stackup. now go back and cut through the c-- calorimeter stack with the tie rods c-- c-- slice width will be full calorimeter depth zwidth = emcs_zend-emcs_zorg c-- Create ERCM c-- DO i = 1,2 ! two tie rods along DO j = 1,5 ! each gap between sectors (5 gaps) xx = emcs_phimin + j*30 yy = xx*degrad xc = cos(yy)*emcs_tierod(i) yc = sin(yy)*emcs_tierod(i) Position ERCM z=0 x=xc y=yc ENDDO ENDDO c-- c-- Now add in projective steel bars which form part of the support c-- structure of the eemc c-- rth = emcs_zorg*tan_upp+dup + 2.5/2 xc = (emcs_zend - emcs_zorg)*tan_upp length = .5*(emcs_zend + emcs_zorg)*tan_upp + dup + 2.5/2 yc = emcs_zend-emcs_zorg p = atan(xc/yc)/degrad c-- Create EPSB DO i = 1,6 c-- xx = -75 + (i-1)*30 yy = xx*degrad xc = cos(yy)*length yc = sin(yy)*length c-- Position EPSB X=XC Y=YC ALPHAZ=XX c-- ENDDO c-- EndBlock c----------------------------------------------------------------- Block ECVO -- c-- Block ECVO is one of endcap volume with megatiles and radiators c-- c-- CreateS: c-- + EMOD -- Responsible for creating esec which, in a glorious example c-- of spaghetti code, turns around and creates esec, which is c-- responsible for creating the radiators before and after the c-- smd layers. C-- Material AIR Attribute ECVO seen=1 colo=3 ! GREEN Shape CONS dz=zwidth/2, rmn1=zslice*tan_low-dd, rmn2=(zslice+zwidth)*tan_low-dd, rmx1=zslice*tan_upp+dup, rmx2=(zslice+zwidth)*tan_upp+dup c-- c-- Loop over the SIX SECTORS in the current half-wheel. determine c-- whether the sector is filled or not, and create the "module". c-- By "module", we really mean endcap sector. (Lots of code in the c-- EEMC borrows from the barrel, and so barrel modlues get mapped c-- to EEMC sectors). c-- DO i_sector = 1,6 c-- IF (1 < I_SECTOR < 6 | EMCG_FILLMODE > 1) THEN filled = 1 ELSE filled = 0 ENDIF c-- d3 = 75 - (i_sector-1)*30 Create AND Position EMOD alphaz=d3 ncopy=i_sector c-- ENDDO c-- EndBlock c----------------------------------------------------------------- Block ESHM -- c-- Block ESHM is the shower max section c-- c-- CreateS: c-- + ESPL -- SHOWER MAXIMUM DETECTOR PLANES c-- + ERSM -- TIE RODS W/IN THE SHOWER MAXIMUM DETECTOR c-- Material AIR Attribute ESHM seen=1 colo=4 ! BLUE c-- Shape CONS dz=zwidth/2, rmn1=(zslice*tan_low)-dd, rmn2=(zslice+zwidth)*tan_low-dd, rmx1=(zslice)*tan_upp+dup, rmx2=(zslice+zwidth)*tan_upp+dup, phi1=emcs_phimin phi2=emcs_phimax c-- USE EMXG c-- maxcnt = emcs_smdcentr Prin1 zslice, section, center (' === z start for smd,section: ',3f12.4) c-- c-- Loop over the three possible locations for the smd planes and c-- create them. note that code w/in espl will decide which of c-- 5 types of smd planes are created... u, v, cutu,cutv or spacer. c-- DO j_section = 1,3 c-- USE EXSE jsect=j_section c-- current = exse_zshift secwid = emxg_sapex + 2.*emxg_f4 section = maxcnt + exse_zshift c-- Prin1 j_section,current,section,secwid (' layer, z, width : ',i3,3f12.4) c-- rbot=section*tan_low rtop=section*tan_upp c-- Prin1 j_section,rbot,rtop (' layer, rbot,rtop : ',i3,2f12.4) c-- Prin1 j_section, center+current (' smd layer=',I1,' z=',F12.4 ) c-- Do not kill neighbors Create and Position ESPL z=current kOnly='MANY' c-- ENDDO c-- c-- Add in the tie rods which penetrate the SMD layers c-- Create ERSM c-- DO i = 1,2 DO j = 1,5 xx = emcs_phimin + j*30 yy = xx*degrad xc = cos(yy)*emcs_tierod(i) yc = sin(yy)*emcs_tierod(i) Position ERSM Z=0 X=XC Y=YC END DO END DO C-- EndBlock c----------------------------------------------------------------- Block ECGH -- c-- Block ECGH is air gap between endcap half wheels c-- c-- Creates: c-- + ECHC -- THE STAINLESS STEEL COVER FOR 1/2 OF THE EEMC. c-- Material AIR Medium standard Attribute ECGH seen=0 colo=7 ! LIGHTBLUE Shape TRD1 dz=(emcs_zend-emcs_zorg)/2, dy =(emcs_gaphalf+emcs_cover)/2, dx1=emcs_zorg*tan_upp+dup, dx2=emcs_zend*tan_upp+dup c-- c-- rth = emcs_gaphalf + emcs_cover xx=curr*tan_low-d2 xleft = sqrt(xx*xx - rth*rth) yy=curr*tan_upp+dup xright = sqrt(yy*yy - rth*rth) secwid = yy - xx xx=curcl*tan_low-d2 yleft = sqrt(xx*xx - rth*rth) yy=curcl*tan_upp+dup yright = sqrt(yy*yy - rth*rth) zwidth = yy - xx xx=(xleft+xright)/2 yy=(yleft + yright)/2 xc = yy - xx length = (xx+yy)/2 yc = curcl - curr p = atan(xc/yc)/degrad rth = -(emcs_gaphalf + emcs_cover)/2 c-- Create ECHC c-- Position ECHC X=+LENGTH Y=RTH Position ECHC X=-LENGTH Y=RTH ALPHAZ=180 c-- EndBlock c----------------------------------------------------------------- Block ECHC -- c-- Block ECHC is steel endcap half cover c-- Material steel Attribute ECHC seen=1 colo=1 ! BLACK c-- Shape TRAP dz=(curcl-curr)/2, thet=p, bl1=secwid/2, tl1=secwid/2, bl2=zwidth/2, tl2=zwidth/2, h1=emcs_cover/2, h2=emcs_cover/2, phi=0, alp1=0, alp2=0 c-- EndBlock c----------------------------------------------------------------- Block ESSP -- c-- Block ESSP is stainless steel back plate c-- Material steel Attribute ESSP seen=1 colo=6 fill=1 Shape CONS dz=emcs_bckplate/2, rmn1=zslice*tan_low-dd, rmn2=(zslice+zwidth)*tan_low-dd, rmx1=zslice*tan_upp+dup, rmx2=(zslice+zwidth)*tan_upp+dup, phi1=emcs_phimin, phi2=emcs_phimax c-- EndBlock c----------------------------------------------------------------- Block EPSB -- c-- Block EPSB IS A PROJECTILE STAINLESS STEEL BAR C-- Material Steel Attribute EPSB seen=1 colo=6 FILL=1 Shape TRAP dz=(emcs_zend-emcs_zorg)/2, thet=p, bl1=2.5/2, tl1=2.5/2, bl2=2.5/2, tl2=2.5/2, h1=2.0/2, h2=2.0/2, phi=0, alp1=0, alp2=0 c-- c-- EndBlock c----------------------------------------------------------------- Block ERCM -- c-- Block ERCM is stainless steel tie rod in calorimeter sections c-- Material Steel Attribute ERSM seen=1 colo=6 FILL=1 c-- Shape TUBE dz=zwidth/2, rmin=0, rmax=emcs_rtie c-- c-- Looks like the tie rods are meant to engage the 1.525 cm diameter holes c-- piercing the ears of the smd spacer... 1.5 cm may be a better approximation c-- here. c-- c-- http://drupal.star.bnl.gov/star/system/files/smd_spacer_drawings.pdf c-- EndBlock c----------------------------------------------------------------- Block ERSM -- c-- Block ERSM is stainless steel tie rod in shower max c-- Material Steel Attribute ERSM seen=1 colo=6 FILL=1 c-- Shape TUBE dz=zwidth/2, rmin=0, rmax=emcs_rtie c-- c-- see comments above c-- EndBlock c----------------------------------------------------------------- Block EMOD -- c-- Block EMOD (fsect,lsect) IS ONE MODULE OF THE EM ENDCAP c-- c-- Arguements: (do be defined prior to the creation of this block) c-- c-- fsect -- first section to create c-- lsect -- last section to create c-- Attribute EMOD seen=1 colo=3 serial=FILLED ! GREEN Material Air Shape CONS dz=zwidth/2, phi1=emcs_phimin/emcs_nsupsec, phi2=emcs_phimax/emcs_nsupsec, rmn1=zslice*tan_low-dd, rmn2=(zslice+zwidth)*tan_low-dd, rmx1=zslice*tan_upp+dup, rmx2=(zslice+zwidth)*tan_upp+dup c-- c-- Running parameter 'section' contains the position of the current section c-- it should not be modified in daughters, use 'current' variable instead. c-- secwid is used in all 'cons' daughters to define dimensions. c-- section = zslice curr = zslice + zwidth/2 c-- c-- DO i_section = fsect, lsect USE ESEC isect=i_section c-- secwid = esec_cell*esec_nlayer c-- c-- Section 3 precedes the smd. section 5 is the post shower. in c-- both cases these sections end with a scintillator layer and no c-- radiator. c-- IF (I_SECTION = 3 | I_SECTION = 5) THEN secwid = secwid - radiator ELSE IF (I_SECTION = 4) THEN ! add one more radiator secwid = secwid - esec_cell + radiator ENDIF c-- Prin1 i_section, section-curr+secwid/2 ('+ ECVO isection=',I1,' zcenter=', F12.4) c-- Create AND Position ESEC z=section-curr+secwid/2 c-- section = section + secwid c-- ENDDO! Loop over sections c-- EndBlock c----------------------------------------------------------------- Block ESEC -- c-- Block ESEC is a single em section Material AIR Medium standard Attribute ESEC seen=1 colo=1 serial=filled lsty=2 c-- Shape CONS dz=secwid/2, rmn1=(section)*tan_low-dd, rmn2=(section+secwid)*tan_low-dd, rmx1=(section)*tan_upp+dup, rmx2=(section+secwid)*tan_upp+dup c-- length = -secwid/2 current = section c-- megatile = esec_scint+emcs_alincell+emcs_frplast+emcs_bkplast c-- gap = esec_cell - radiator - megatile Prin2 i_section,section (' ESEC:i_section,section',i3,f12.4) c-- c-- Loop over all layers in this section c-- DO is = 1,esec_nlayer c-- c-- Define actual cell thickness: cell = esec_cell plate = radiator c-- IF (is=nint(esec_nlayer) & (i_section = 3 | i_section = 5)) THEN c-- cell = megatile + gap plate=0 c-- ELSE IF (i_section = 4 & is = 1) THEN ! RADIATOR ONLY c-- cell = radiator c-- ENDIF c-- Prin2 i_section,is,length,cell,current (' esec:i_section,is,length,cell,current ',2i3,3f12.4) C-- C-- This handles the special case in the section after the smd. c-- this section begins with a lead radiator. the previous section c-- ended with a plastic scintillator c-- IF (i_section = 4 & is = 1) THEN ! radiator only c-- c$$$ cell = radiator + .14 cell = radiator + emcs_slop ! ^^^^ probably the fiber router layer... but is this needed here? c-- Prin1 is, current + cell/2+esec_deltaz ( ' + ESEC radiator ilayer=',I2,' z=',F12.4 ) Create AND Position ERAD z=length+(cell)/2+esec_deltaz c-- length = length + cell current = current + cell c-- c-- All other cases are standard radiator followed by scintillator c-- ELSE c-- cell = megatile IF (FILLED = 1) THEN c-- Create AND Position EMGT z=length+(gap+cell)/2+esec_deltaz c-- xx = current + (gap+cell)/2+esec_deltaz prin2 i_section,is,xx (' mega i_section,is ',2i3,f10.4) Prin1 is, xx (' + ESEC megatile ilayer=',I2,' z=',F12.4) c-- ENDIF c-- length = length + cell + gap current = current + cell + gap c-- IF (PLATE>0) THEN c-- cell = radiator Prin1 is, current + cell/2+esec_deltaz ( ' + ESEC radiator ilayer=',I2,' z=',F12.4 ) Create AND Position ERAD z=length+cell/2+esec_deltaz c-- length = length + cell current = current + cell c-- ENDIF c-- ENDIF c-- ENDDO c-- c-- EndBlock c----------------------------------------------------------------- Block EMGT -- c-- Block EMGT is a 30 degree megatile c-- Material Air Medium Standard Attribute EMGT seen=1 colo=1 lsty=2 c-- Shape CONS dz=megatile/2, rmn1=(current)*tan_low-dd, rmn2=(current+megatile)*tan_low-dd, rmx1=(current)*tan_upp+dup, rmx2=(current+megatile)*tan_upp+dup c-- c-- DO isec=1,nint(emcs_nslices) c-- myPhi = (emcs_nslices/2-isec+0.5)*dphi + esec_jiggle(is) c-- Create AND Position EPER alphaz=myPhi c-- END DO c-- EndBlock c----------------------------------------------------------------- Block EPER -- c-- Block EPER is a 5 degree slice of a 30 degree megatile (subsector) c-- c-- Creates: c-- + ETAR -- The pseudo-rapidity divivisions in the megatiles c-- Material Polystyren Attribute EPER seen=1 colo=1 lsty=1 c-- c-- c-- Shape CONS dz=megatile/2, phi1=emcs_phimin/emcs_nsector, phi2=emcs_phimax/emcs_nsector, rmn1=(current)*tan_low-dd, rmn2=(current+megatile)*tan_low-dd, rmx1=(current)*tan_upp+dup, rmx2=(current+megatile)*tan_upp+dup c-- curcl = current+megatile/2 DO ie = 1, nint(eetr_neta) c-- etabot = eetr_etabin(ie) etatop = eetr_etabin(ie+1) rbot=(curcl)*tanf(etabot) rtop=min((curcl)*tanf(etatop), ((current)*tan_upp+dup)) c-- check rbot<rtop c-- xx=tan(pi*emcs_phimax/180.0/emcs_nsector) yy=cos(pi*emcs_phimax/180.0/emcs_nsector) Create and Position ETAR x=(rbot+rtop)/2 ort=yzx prin2 ie,etatop,etabot,rbot,rtop (' EPER : ie,etatop,etabot,rbot,rtop ',i3,4f12.4) c-- ENDDO c-- EndBlock c----------------------------------------------------------------- Block ETAR -- c-- c-- ETAR is a single cell of scintillator, including fiber router, plastic, c-- etc... c-- c-- local z is radially outward in star c-- local y is the thickness of the layer c-- Block ETAR is a single calorimeter cell, containing scintillator, fiber router, etc... c-- Material POLYSTYREN Attribute ETAR seen=1 colo=4 lsty=1 ! BLUE c-- Shape TRD1 dy=megatile/2 dz=(rtop-rbot)/2, dx1=rbot*xx-emcs_gapcel/yy, dx2=rtop*xx-emcs_gapcel/yy c-- Create AND Position EALP y=(-megatile+emcs_alincell)/2 g10 = esec_scint Create AND Position ESCI y=(-megatile+g10)/2+emcs_alincell _ +emcs_frplast c-- EndBlock c----------------------------------------------------------------- Block ESCI -- c-- Block ESCI is the active scintillator (polystyrene) layer c-- c-- Obtain the definition of polystyrene on this line, next line clones Material Polystyren Material Ecal_scint isvol=1 Medium Ecal_active isvol=1 c-- Attribute ESCI seen=1 colo=7 fill=0 lsty=1 ! LIGHTBLUE c-- local z goes along the radius, y is the thickness Shape TRD1 dy=esec_scint/2, dz=(rtop-rbot)/2-emcs_gapcel c-- c-- Call ecal_set_cuts( ag_imed, 'detector' ) c-- c-- HITS ESCI BIRK:0:(0,10) c-- c-- EndBlock c----------------------------------------------------------------- Block ERAD -- c-- Block ERAD is the lead radiator with stainless steel cladding c-- c-- Creates: c-- + ELED -- the business end of the calorimeter... c-- Material STEEL c-- Attribute ERAD seen=1 colo=6 fill=1 lsty=1 ! VIOLET Shape CONS dz=radiator/2, rmn1=(current)*tan_low-dd, rmn2=(current+cell)*tan_low-dd, rmx1=(current)*tan_upp+dup, rmx2=(current+radiator)*tan_upp+dup c-- Create AND Position ELED c-- EndBlock c------------------------------------------------------------------------- c----------------------------------------------------------------- Block ELED -- c-- Block ELED is a lead absorber plate c-- c-- Material PbAlloy Medium Ecal_lead Attribute ELED seen=1 colo=4 fill=1 lsty=1 c-- Shape TUBS dz=emcs_pbplate/2, rmin=(current)*tan_low, rmax=(current+emcs_pbplate)*tan_upp, c-- Call ecal_set_cuts( ag_imed, 'radiator' ) c-- EndBlock c-- c----------------------------------------------------------------------------- c----------------------------------------------------------------- Block EFLP -- c-- Block EFLP is the aluminum (aluminium) front plate of the endcap c-- Material ALUMINIUM Attribute EFLP seen=1 colo=3 fill=1 lsty=1 ! GREEN Shape CONS dz=emcs_front/2, rmn1=68.813 rmn2=68.813, rmx1=(zslice)*tan_upp+dup, rmx2=(zslice+zwidth)*tan_upp+dup, phi1=emcs_phimin phi2=emcs_phimax c-- EndBlock c----------------------------------------------------------------------------- c----------------------------------------------------------------- Block EALP -- c-- Block EALP is the thin aluminium plate in calorimeter cell c-- c-- Material Aluminium Attribute EALP seen=1 colo=1 lsty=1 c-- c-- Shape TRD1 dy=emcs_alincell/2 dz=(rtop-rbot)/2 c-- c-- Thin aluminium plate in each calorimeter cell. The energy-loss c-- fluctuations are restricted in this thin material. c-- CALL GsTPar (AG_IMED,'CUTGAM',0.00001) CALL GsTPar (AG_IMED,'CUTELE',0.00001) CALL GsTPar (AG_IMED,'LOSS',1.) CALL GsTPar (AG_IMED,'STRA',1.) c-- EndBlock c----------------------------------------------------------------- Block ESPL -- c-- Block ESPL is the logical volume containing an SMD plane c-- Material Air Attribute ESPL seen=1 colo=4 lsty=4 Shape TUBS dz=emcs_gapsmd/3/2, rmin=section*tan_low-1.526, rmax=(section-secwid/2)*tan_upp+dup, phi1=emcs_phimin phi2=emcs_phimax c-- USE EMXG version=1 msecwd = (emxg_sapex+emxg_f4)/2 c-- ^^^^^^ what is this used for? --jw c-- looks like the g10 layer which we are retiring c-- c-- loop over the six sectors in an endcap half wheel c-- DO isec=1,6 cut=1 d3 = 75 - (isec-1)*30 c-- IF (exse_sectype(isec)=0|(emcg_fillmode=1&(isec=6|isec=1))) THEN cut = 0 c -- come back and build spacers -- ElseIF (exse_sectype(isec) = 1) then ! v c-- Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' c-- ElseIF (exse_sectype(isec) = 2) then ! u c-- Create and Position EXSG alphaz=d3 ort=x-y-z ncopy=isec kOnly='MANY' c-- ElseIF (exse_sectype(isec) = 3) then ! cut v c-- cut=2 Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' c-- ElseIF (exse_sectype(isec) = 4) then ! cut u c-- cut=2 Create and Position EXSG alphaz=d3 ort=x-y-z ncopy=isec kOnly='MANY' c-- EndIF c-- EndDO! loop over six sectors in eemc half wheel c-- c-- repeat the loop and add in the spacer layers c-- DO isec=1,6 d3=75 - (isec-1)*30 IF (exse_sectype(isec)=0|(emcg_fillmode=1&(isec=6|isec=1))) then cut = 0 c-- Do not kill neighbors Create and Position EXSG alphaz=d3 ncopy=isec kOnly='MANY' c ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ c potential side effect... may screw up the mapping c of the smd strips into the tables? c EndIF EndDO c-- EndBlock c----------------------------------------------------------------- Block EXSG -- c-- Block EXSG Is another logical volume... this one acutally creates the planes c-- c-- Creates: c-- + EHMS -- shower max strips c-- + EFLS -- front cover for SMD planes c-- + EBLS -- back cover for SMD planes c-- Attribute EXSG seen=1 colo=7 serial=cut lsty=3 ! MEH Material Air c$$$ Medium TMED_EXSG stemax=0.01 Shape TUBS dz=emcs_gapsmd/3/2, rmin=section*tan_low-1.526, rmax=(section-secwid/2)*tan_upp+dup, phi1=emcs_phimin/emcs_nsupsec-5, phi2=emcs_phimax/emcs_nsupsec+5 c-- rbot = emxg_rin rtop = emxg_rout c-- c-- Code to handle smd spacers c-- IF ( cut .eq. 0 ) THEN Create and Position EXPS kONLY='MANY' ENDIF c-- c-- Code to handle smd planes c-- IF (cut > 0) THEN c-- c-- setup which plane we are utilizing c-- IF (cut = 1) THEN nstr = 288 ELSE nstr = 285 ENDIF c-- c-- loop over all smd strips and place them w/in this smd plane c-- DO istrip = 1,nstr c-- Call ecal_get_strip( section, cut, istrip, xc, yc, length ) c-- IF (mod(istrip,2) != 0 ) THEN Create and Position EHMS x=xc y=yc alphaz=-45 kOnly='ONLY' Create and Position EBLS x=xc y=yc z=(+esmd_apex/2+esmd_back_layer/2) alphaz=-45 kOnly='ONLY' ELSE Create and Position EHMS x=xc y=yc alphaz=-45 ort=x-y-z kOnly='ONLY' Create and Position EFLS x=xc y=yc z=(-esmd_apex/2-esmd_front_layer/2) alphaz=-45 ort=x-y-z kOnly='ONLY' ENDIF c-- Prin1 istrip, xc, yc, length ( 'SMD Plane: strip=',I3,' xc=',F5.1,' yc=,'F5.1,' length=',F5.1 ) c-- ENDDO c-- ENDIF c-- c-- * dcut exsg z 0 0 10 0.1 0.1 * dcut exsg y 0 10 -50 0.7 0.7 c-- EndBlock c-- c-- c----------------------------------------------------------------------------- c----------------------------------------------------------------- Block EHMS -- c-- Block EHMS defines the triangular SMD strips c-- Material Ecal_scint Medium Ecal_active isvol=1 Attribute EHMS seen=1 colo=2 serial=cut lsty=1 ! red c-- Shape TRD1 dx1=0 dx2=emxg_Sbase/2 dy=length/2 dz=emxg_Sapex/2 c-- HITS EHMS Birk:0:(0,10) c-- Endblock! EHMS c----------------------------------------------------------------------------- c--- c-- Several thin layers of material are applied to the front and back of the c-- SMD planes to provide structural support. We combine these layers into c-- a single effective volume, which is affixed to the base of the SMD c-- strips. As with the SMD strips, z along the depth, y is length c-- c-- http://drupal.star.bnl.gov/STAR/system/files/SMD_module_stack.pdf c-- c-- 1.19 mm G10 c-- 0.25 mm Fiberglass and epoxy c-- 0.17 mm Aluminized mylar c-- c-- Weight in mixture by mass = (depth)*(Area) c-- c-- Weighted density is given by sum (density)_i * (depth)_i / sum (depth)_i c-- c----------------------------------------------------------------- Block EFLS -- c-- Block EFLS is the layer of material on the front of the SMD planes c-- c-- Component G10 A=18.017 Z=9.013 w=1.19*1.700/(1.19*1.700+0.25*1.530+0.17*1.390) Component Fiberglass A=19.103 Z=9.549 w=0.25*1.530/(1.19*1.700+0.25*1.530+0.17*1.390) Component AlMylar A=12.889 Z=6.465 w=0.17*1.390/(1.19*1.700+0.25*1.530+0.17*1.390) Mixture EFLS dens=(1.19*1.7+0.25*1.53+0.17*1.39)/(1.19+0.25+0.17) Attribute EFLS seen=1 colo=22 lsty=1 Shape TRD1 dz=esmd_front_layer/2 dy=length/2 dx1=esmd_base/2 dx2=esmd_base/2 c-- EndBlock! EFLS c-- c-- see link above for documentation c-- c-- 0.10 mm aluminized mylar c-- 0.25 mm fiberglass and epoxy c-- 1.50 mm WLS fiber router layer (polystyrene) c-- 0.25 mm aluminum c-- c----------------------------------------------------------------- Block EBLS -- c-- Block EBLS is the layer of material on the back of the SMD planes c-- Component AlMylar A=12.889 Z=6.465 w=0.10*1.390/(0.10*1.390+0.25*1.530+1.50*1.032+0.25*2.699) Component Fiberglass A=19.103 Z=9.549 w=0.25*1.530/(0.10*1.390+0.25*1.530+1.50*1.032+0.25*2.699) Component Polystyren A=11.154 Z=5.615 w=1.50*1.032/(0.10*1.390+0.25*1.530+1.50*1.032+0.25*2.699) Component Al A=28.08 Z=14.00 w=0.25*2.699/(0.10*1.390+0.25*1.530+1.50*1.032+0.25*2.699) Mixture EBLS dens=(0.10*1.390+0.25*1.530+1.50*1.032+0.25*2.699)/(0.10+0.25+1.50+0.25) c-- Attribute EFLS seen=1 colo=22 lsty=1 Shape TRD1 dz=esmd_back_layer/2 dy=length/2 dx1=esmd_base/2 dx2=esmd_base/2 c-- EndBlock! EFLS c----------------------------------------------------------------- Block EXPS -- c-- Block EXPS is the plastic spacer in the shower maximum section c-- c-- Simple implementation of the spacer in the shwoer maximum detector. c-- This implmentation neglects the ears and the source tube. c-- c-- n.b. There may be a side effect in the way this gets created... c-- it could overwrite SMD strips which extend into this plane. c-- Probably need to go with a different approach here. c-- c-- Scanned Drawings: c-- + http://drupal.star.bnl.gov/STAR/system/files/SMD_spacer_drawings.pdf c-- c-- thickness is 1.2 cm, as given by detail B and C... but I do not want c-- to do alot of complicated recoding of the geometry. So I am limiting c-- it to be the same width as a normal SMD volume. c-- Material PVC_Spacer Attribute EXPS seen=1 colo=6 lsty=1 lwid=2 c-- c-- Spacer layers are extended by +/- 5 degrees into the adjacent sectors. c-- The kONLY='Many' option at creation time should mean that conflicts c-- in volume will be resolved in favor of the SMD strips. c-- Shape TUBS dz=esmd_apex/2, rmin=(section)*Tan_Low-1.526, rmax=(section+msecwd)*Tan_Upp, phi1=emcs_PhiMin/emcs_Nsupsec, phi2=emcs_PhiMax/emcs_Nsupsec c-- EndBlock c-- END c----------------------------------------------------------------- End Module -- c------------------------------------------------------------------------------ c-- Helper subroutines and functions c------------------------------------------------------------------------------ c-- c-- Subroutine ecal_set_cuts(id, medium) c-- c-- id -- integer ID idetifying the current tracking medium c-- medium -- character switch selecting the type of cuts to be c-- used in this tracking volumne c-- c------------------------------------------------------------------------------ Subroutine ecal_set_cuts(id,medium) c-- Implicit NONE Integer id Character medium*(*) c-- Integer radiator, megatile, detector Save radiator, megatile, detector c-- IF ( medium == 'print' ) THEN c-- Write (*,400) radiator Write (*,401) megatile Write (*,402) detector c-- Call GpTMed( +radiator ) Call GpTMed( -megatile ) Call GpTMed( -detector ) c-- Return c-- ENDIF c-- 400 Format('radiator cuts set for ag_imed=',I3) 401 Format('megatile cuts set for ag_imed=',I3) 402 Format('detector cuts set for ag_imed=',I3) c-- c-- c-- Setup common cuts for neutrons, hadrons and muons c-- Call GsTPar (id,'CUTNEU',0.001) Call GsTPar (id,'CUTHAD',0.001) Call GsTPar (id,'CUTMUO',0.001) c-- IF ( medium == 'radiator' ) THEN Call GsTPar (id,'CUTGAM',0.00008) Call GsTPar (id,'CUTELE',0.001) Call GsTPar (id,'BCUTE' ,0.0001) radiator = id C-- c-- ELSEIF ( medium == 'megatile' ) THEN Call GsTPar (id,'CUTGAM',0.00008) Call GsTPar (id,'CUTELE',0.001) Call GsTPar (id,'BCUTE' ,0.0001) megatile = id c-- c-- ELSEIF ( medium == 'detector' ) THEN Call GsTPar (id,'CUTGAM',0.00008) Call GsTPar (id,'CUTELE',0.001) Call GsTPar (id,'BCUTE' ,0.0001) c-- Call GsTPar (id,'BIRK1',1.) Call GsTPar (id,'BIRK2',0.0130) Call GsTPar (id,'BIRK3',9.6E-6) detector = id c-- c-- ELSE Call GsTPar (id,'CUTGAM',0.00008) Call GsTPar (id,'CUTELE',0.001) Call GsTPar (id,'BCUTE' ,0.0001) Write(*,300) 300 Format('Warning: unknown medium[',A20,'] in ecal_set_cuts') c-- c-- ENDIF c-- Return End c----------------------------------------------------------------------- c----------------------------------------------------------------------- c-- c-- Subroutine ecal_get_strip( section, cut, istrip, xcenter, ycenter, length ) c-- in in in out out out Implicit NONE c-- Real section Integer cut ! 0=no plane 1=normal plane 2=cut plane Integer istrip ! strip index Real xcenter ! output Real ycenter ! output Real length ! output c-- Integer nstrips Real rdel ! shift in radius (?) Real rth Real ddn, ddup Real megatile, p c-- Real xleft, yleft, xright, yright Real dxy, xx, yy Real sqrt2, sqrt3 c-- c-- SMD data copied from data structures above c-- Real base, apex Data base, apex / 1.0, 0.7/ !cm c-- Real Rbot, Rtop Data Rbot, Rtop / 77.41, 213.922 / c-- Real EtaMin, EtaMax Data EtaMin, EtaMax / 1.086, 2.000 / c-- Real tan_theta_min, tan_theta_max c-- Real tanf, eta tanf(eta) = tan(2*atan(exp(-eta))) c-- tan_theta_min = tanf( EtaMax ) tan_theta_max = tanf( EtaMin ) c-- IF (cut = 1) THEN rdel = 3.938 nstrips = 288 ELSE rdel = -.475 nstrips = 285 ENDIF c-- xcenter=0. ycenter=0. length=0. c-- IF ( cut = 0 ) THEN RETURN ENDIF c-- sqrt2 = sqrt(2.0) sqrt3 = sqrt(3.0) c-- rth = .53*rdel ! .53 --- tentatavily jcw-- wtf? ddn = sqrt(3.0)*1.713 + rdel ddup = .5*1.846 + 1.713 megatile = base + .01 c-- p = .5*(istrip-1)*megatile + 41.3655 IF (p <= (.5*rbot*sqrt3 + rth)) THEN dxy = 1.9375*sqrt2 xleft = .5*sqrt2*p*(sqrt3 + 1.) - dxy yleft = .5*sqrt2*p*(sqrt3 - 1.) - dxy yright = .5*sqrt2*(sqrt( rbot*rbot - p*p) - p) xright = sqrt2*p + yright ELSEIF ((.5*rbot*sqrt3 + rth) < p <= (.5*rtop + 1.5)) THEN dxy = 1.9375*sqrt2 xleft = .5*sqrt2*p*(sqrt3 + 1.) - dxy yleft = .5*sqrt2*p*(sqrt3 - 1.) - dxy dxy = rdel*sqrt2/sqrt3 yright = .5*sqrt2*p*(1.- 1./sqrt3) xright = sqrt2*p - yright - dxy yright = -yright - dxy ELSEIF (p > (.5*rtop +1.5)) THEN yleft = (sqrt(rtop*rtop - p*p) - p)/sqrt2 xleft = sqrt2*p + yleft dxy = rdel*sqrt2/sqrt3 yright = .5*sqrt2*p*(1.- 1./sqrt3) xright = sqrt2*p - yright - dxy yright = -yright - dxy dxy = 0. c-- IF ((.5*sqrt3*160.- ddn) < p <= (.5*sqrt3*160.+ ddup) ) THEN xcenter = .5*(sqrt3*160.+1.846) ycenter = xcenter - .5*sqrt3*1.713 IF (p > ycenter) THEN dxy = .5*sqrt2*(2/sqrt3*rdel + .5*sqrt3*1.846 +_ sqrt(1.713*1.713 - (p-xcenter)*(p-xcenter))) ELSE dxy = sqrt2/sqrt3*(p - .5*sqrt3* 160. + ddn) ENDIF ELSEIF ((.5*sqrt3*195.- ddn) < p <= (.5*sqrt3*195. + ddup) ) THEN xcenter = .5*(sqrt3*195.+1.846) ycenter = xcenter - .5*sqrt3*1.713 IF (p > ycenter) THEN dxy = .5*sqrt2*(2/sqrt3*rdel + .5*sqrt3*1.846 +_ sqrt(1.713*1.713 - (p-xcenter)*(p-xcenter))) ELSE dxy = sqrt2/sqrt3*(p - .5*sqrt3*195. + ddn) ENDIF ENDIF xright = xright + dxy yright = yright + dxy ENDIF dxy = section*tan_theta_max - rtop xcenter = .5*(xright+xleft) + dxy ycenter = .5*(yright+yleft) xx = .5*sqrt2*(xleft+yleft) yy = .5*sqrt2*(xright+yright) length = xx-yy c-- c-- Return c-- End! Subroutine smd_strip c-- * ---------------------------------------------------------------------------- * ECAL nice views: dcut ecvo x 1 10 -5 .5 .1 * draw emdi 105 0 160 2 13 .2 .1 * draw emdi 120 180 150 1 14 .12 .12 * --------------------------------------------------------------------------- c-- examples of HITS * HITS EHMS Birk:0:(0,10) * xx:16:SH(-250,250) yy:16:(-250,250) zz:16:(-350,350), * px:16:(-100,100) py:16:(-100,100) pz:16:(-100,100), * Slen:16:(0,1.e4) Tof:16:(0,1.e-6) Step:16:(0,100), * none:16: Eloss:0:(0,10) *