All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions | Variables
gen_crt_frags Namespace Reference

Functions

def get_mod_id
 
def get_mod_id_num
 
def beam
 
def beamVol
 
def strip
 
def module
 
def minosSideTagger
 
def minosNorthTagger
 
def minosSouthTagger
 
def DCTagger
 
def cernTopTagger
 
def cernLatRimTagger
 
def cernLongRimTagger
 
def detectorEnclosure
 

Variables

 testmode = False
 
 printModIds = False
 
float WVWIDTH = 1031.8
 Parameters ##################### warm vessel (cm), increased as of 7/19/2019 to reflect full extent of WV profile in detector hall. More...
 
float WVHEIGHT = 627.4
 
float WVLENGTH = 2268.8
 
float WVFOOTELEVATION = 10.16
 
float ISLANDWIDTH = 118.0
 
float IVLENGTH = 1996.0
 
float TOPLEDGERISERTOFLOOR = 991.9
 
float LEDGERISERHEIGTH = 46.99
 
float TOPCRTBEAMTOFLOOR = 970.8
 
float CRTBEAMSPACING = 92.71
 
float BOTTOMCRTROLLERHEIGHT = 3.02
 
float SIDECRTWVOFFSET = 4.13
 
float SIDECRTPOSTWIDTH = 4.13
 
float SIDECRTPOSTSPACING = 4.13
 
int SIDECRTSTACKDEPTH = 3
 
float SIDECRTSHELFTHICK = 0.56
 
float overlap = 0.0065
 
float gap = 0.005
 
float crosstwomodule = 10.7
 
float separatetwomodule = 0.6
 
float offsetontopmodule = 48.26
 
float verticalmodule = 485.14
 
float CRTBEAMLENGTH = 1132.84
 
float CRTBEAMHEIGHT = 25.3
 
float CRTBEAMWIDTH = 25.4
 
float CRTBEAMFLANGETHICK = 1.434
 
float CRTBEAMWEBTHICK = 0.89407
 
int CRTBEAMMASSDENS = 73
 
float YM = 4.1
 
float ZM = 800.0
 
float XM = 1.0
 
float MINOSSTRAIGHTSNOUT = 37.5
 
float MINOSBENDSNOUT = 26.5
 
float MINOSSNOUTLENGTH = 0.5
 
float XC = 23.0
 
float ZC = 184.0
 
float YCTOP = 1.0
 
float YCBOT = 1.5
 
float XD = 5.0
 
float ZD = 322.5
 
float YD = 1.0
 
int NXM = 20
 
int NXC = 8
 
int NXD = 32
 
float PADM = 0.05
 
float PADC = 0.1
 
float PADD = 0.05
 
float PADModule = 0.1
 
float PADStrip = 0.01
 
float PADTagger = 0.001
 
int mModL = ZM+2
 
int mModW = YM*NXM+2
 
int mModH = XM+2
 
int cModW = XC*NXC+2
 
int cModH = YCTOP+YCBOT+2
 
int dModH = YD*2
 
float LAYERSPACE = 8.27
 
int NMODSTACK = 9
 
int NMODSTACKSOUTHY = 10
 
float SLIDERSPACE = 18.5
 
float STACKOVERLAP = 50.0
 
float SIDECRTROLLOFFSET = 44.29
 
float SIDECRTNORTHWALLTOFLOOR = 152.2
 
float SIDECRTSOUTHWALLLATOFFSET = 1.1
 
float DCSPACER = 32.6
 
tuple LONGOFF5 = (3*ISLANDWIDTH+481.8)
 
tuple LONGOFF2 = (ISLANDWIDTH+181.8)
 
float CERNMODSPACE = 0.2
 
int NTOPX = 6
 
int NTOPZ = 14
 
int NSLOPELAT = 14
 
int NSLOPEFRONT = 6
 
float SLOPEINCLINATION = 90.0
 
tuple CERNROOFL = NTOPZ*cModW+(NTOPZ-1)
 
float SHELLY = 1.1
 
float MINOSSOUTHY = -0.5
 
 MINOSLATFIXY = MINOSSOUTHY
 
float MINOSLATROLLY = MINOSLATFIXY-0.5
 
int MINOSLATSOUTHACTIVEOVERHANG = 2
 
float MINOSLATSOUTHZ = -0.5
 
float MINOSLATNORTHZ = 0.5
 
float MINOSLATCENTZ = 0.5
 
tuple posDCInDetEncl = (0,-480.135, 0)
 
float CERNRIMSWVOFFSET = 34.0
 
float CERNTOPY = SHELLY*0.5
 
float CERNRIMSY = CERNTOPY-0.5
 
float CERNRIMSZ = -0.5
 
float CERNRIMNY = CERNRIMSY+29.0
 
float CERNRIMNZ = CERNROOFL+CERNRIMSZ+0.6
 
float CERNTOPZ = CERNRIMSZ+0.5
 
float CERNRIMLATX = 0.5
 
 CERNRIMLATY = CERNRIMSY
 
 CERNRIMLATZ = CERNTOPZ
 
float SHELLZ = 1.01
 
float SHELLWVOFFSET = SHELLZ*0.5
 
tuple minosCutModLengthNorth = (256.54, 309.9, 309.9, 508.19, 508.19, 508.19)
 
tuple minosCutModLengthSoutheast = (497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84)
 
tuple minosCutModLengthSouthwest = (497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 325.12, 325.12, 325.12)
 
float MINOSNORTHY = -0.5
 
tuple gdml = ET.Element('gdml')
 
tuple solids = ET.SubElement(gdml, 'solids')
 
tuple structure = ET.SubElement(gdml, 'structure')
 
dictionary solids_store = {}
 
tuple modToFeb = dict()
 
int feb_id = 0
 
int mod_id = -1
 
int beam_id = 0
 
int nModM = 0
 
int nModC = 0
 
int nModD = 0
 
tuple m = ET.SubElement(materials, 'element', name='aluminum', formula='Al', Z='13')
 now if test mode generate materials, CRT shell, world, gdml header else just generate CRT shell for use with master geometry generator script More...
 
tuple ws = ET.SubElement(solids, 'box', name='World', lunit="cm", x='1500', y='1500', z='3000')
 
tuple w = ET.SubElement(structure, 'volume', name='volWorld')
 
tuple pv = ET.SubElement(w, 'physvol')
 
string posname = 'pos'
 
tuple setup = ET.SubElement(gdml, 'setup', name='Default', version='1.0')
 

Detailed Description

Generate the GDML for the SBND CRT geometry.

We define a global XML DOM which the function for each volume will append to.
Volume-building functions are called hierarchically, so if you call module(),
it will construct the module and all the parts that make it up, so you end
up with complete GDML for one module.

Each physical volume has a corresponding unique logical volume, as required
by LArG4 to keep track of energy depositions. The solids, however, can safely
be referenced many times, and so are stored only once (using a hash keyed on
the the linear dimensions).

The output of this code is a file "crt.gdml" which contains the GDML snippets
to paste into the full SBND geometry.

Created by A. Mastbaum <mastbaum@uchicago.edu>, 2016/10/27
Downloaded by C. Hilgenberg <Chris.Hilgenberg@colostate.edu> 2017/10/25
Modified by C. Hilgenberg 2017/10/26

Function Documentation

def gen_crt_frags.beam ( )
build one wide flange beam for top CRT support

Definition at line 212 of file gen_crt_frags.py.

213 def beam():
214  '''build one wide flange beam for top CRT support'''
215 
216  global beam_id
217  beam_id += 1
218 
219  xx = str(CRTBEAMWIDTH)
220  yy = str(CRTBEAMHEIGHT)
221  zz = str(CRTBEAMLENGTH)
222  xxsub = str(0.5*(CRTBEAMWIDTH-CRTBEAMWEBTHICK))
223  yysub = str(CRTBEAMHEIGHT-2*CRTBEAMFLANGETHICK)
224  zzsub = zz
225  xsubpos = 0.5*(CRTBEAMWIDTH-0.5*(CRTBEAMWIDTH-CRTBEAMWEBTHICK))
226  area = CRTBEAMWIDTH*CRTBEAMHEIGHT-(CRTBEAMWIDTH-CRTBEAMWEBTHICK)*(CRTBEAMHEIGHT-2*CRTBEAMFLANGETHICK)
227  if beam_id==1: print('modeled - true beam areas (cm^2): '+str(area-92.90304))
228 
229  sname = 'TopCRTSupportBeam'
230  vname = 'vol'+sname+'_'+str(beam_id)
231 
232  if not sname in solids_store:
233  snameext = sname+'_external'
234  snameint = sname+'_internal'
235  snamesub = sname+'_firstsubtraction'
236  sexternal= ET.SubElement(solids, 'box', name=snameext, lunit="cm", x=xx, y=yy, z=zz)
237  sinternal = ET.SubElement(solids, 'box', name=snameint, lunit="cm", x=xxsub, y=yysub, z=zzsub)
238  ssub = ET.SubElement(solids, 'subtraction', name=snamesub)
239  #s = ET.SubElement(solids, 'subtraction', name=sname)
240  ET.SubElement(ssub, 'first', ref=snameext)
241  ET.SubElement(ssub, 'second', ref=snameint)
242  ET.SubElement(ssub, 'position', name='beamsubpos1', unit='cm', x=str(xsubpos), y='0', z='0')
243  s = ET.SubElement(solids, 'subtraction', name=sname)
244  ET.SubElement(s, 'first', ref=snamesub)
245  ET.SubElement(s, 'second', ref=snameint)
246  ET.SubElement(s, 'position', name='beamsubpos2', unit='cm', x=str(-1*xsubpos), y='0', z='0')
247  solids_store[sname] = s
248 
249  else:
250  s = solids_store[sname]
251 
252  v = ET.SubElement(structure, 'volume', name=vname) #Logical volume
253  ET.SubElement(v, 'materialref', ref='STEEL_A992')
254  ET.SubElement(v, 'solidref', ref=sname)
255 
256  return (s,v)
do one_file $F done echo for F in find $TOP name CMakeLists txt print
def gen_crt_frags.beamVol ( )

Definition at line 257 of file gen_crt_frags.py.

258 def beamVol():
259 
260  padding = 0.01
261  nbeam = 29
262  xx = str(CRTBEAMLENGTH+padding)
263  yy = str(CRTBEAMHEIGHT+padding)
264  zz = (nbeam-1)*CRTBEAMSPACING+CRTBEAMWIDTH+padding
265 
266  sname = 'TopCRTSupportBeamEnclosure'
267  vname = 'vol'+sname
268 
269  beams = []
270  for i in range(nbeam):
271  beams.append(beam())
272 
273  s = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=str(zz))
274  v = ET.SubElement(structure, 'volume', name=vname)
275  ET.SubElement(v, 'materialref', ref='Air')
276  ET.SubElement(v, 'solidref', ref=sname)
277 
278  for i, (sbeam,vbeam) in enumerate(beams):
279 
280  pv = ET.SubElement(v, 'physvol')
281  ET.SubElement(pv, 'volumeref', ref=vbeam.attrib['name'])
282 
283  dz = str(0.5*(padding-zz+CRTBEAMWIDTH) + i*CRTBEAMSPACING)
284 
285  posname = 'pos' + vbeam.attrib['name']
286  ET.SubElement(pv, 'position', name=posname,unit="cm", x='0', y='0', z=dz)
287  posname = 'rot' + vbeam.attrib['name']
288  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
289 
290  return (s,v)
291 
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.cernLatRimTagger (   side = 'L')
Build east(side='R') or west(side='L') CERN rim tagger

Definition at line 1009 of file gen_crt_frags.py.

1010 def cernLatRimTagger(side='L'):
1011  ''' Build east(side='R') or west(side='L') CERN rim tagger
1012  '''
1013  modwidth = ZC + 2*PADC + (NXC+1)*PADStrip
1014  xx = str(modwidth+2*PADTagger)
1015  yy = str(YCTOP+YCBOT+3*PADStrip+2*PADC+2*PADTagger)
1016  zz = str(NSLOPELAT*modwidth + 2*PADTagger + (NSLOPELAT-1)*PADModule)
1017 
1018  coords = []
1019  modules = []
1020 
1021  dz = 0.5*(modwidth+PADModule)*(1 - NSLOPELAT)
1022 
1023  for i in range(NSLOPELAT):
1024 
1025  coords.append((0,0,dz))
1026 
1027  dz+= modwidth+PADModule
1028 
1029  global feb_id
1030  global printModIds
1031  if printModIds: print('CERN tagger Lat, side '+side+' first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
1032 
1033  for i in range(len(coords)):
1034  if side == 'L':
1035  modules.append(module('c','rw'))
1036  if side == 'R':
1037  modules.append(module('c','re'))
1038  feb_id+=1
1039  modToFeb[mod_id] = (feb_id,1)
1040 
1041  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
1042 
1043  sname = 'tagger_'
1044  if side == 'L':
1045  sname += 'RimWest'
1046  if side == 'R':
1047  sname += 'RimEast'
1048  vname = 'vol_'+ sname
1049 
1050  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
1051  vtagger = ET.SubElement(structure, 'volume', name=vname)
1052  ET.SubElement(vtagger, 'materialref', ref='Air')
1053  ET.SubElement(vtagger, 'solidref', ref=sname)
1054 
1055  #place left side module phy. vol.s
1056  for i, (xc,yc,zc) in enumerate(coords):
1057 
1058  (s,v)=modules[i]
1059  pv = ET.SubElement(vtagger, 'physvol')
1060  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
1061 
1062  posname = 'pos' + v.attrib['name']
1063  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1064 
1065  return stagger, vtagger
1066 
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.cernLongRimTagger (   side = 'U')
Build  north(side='D') or south(side='U') CERN rim tagger

Definition at line 1067 of file gen_crt_frags.py.

1068 def cernLongRimTagger(side='U'):
1069  ''' Build north(side='D') or south(side='U') CERN rim tagger
1070  '''
1071  modwidth = ZC + 2*PADC + (NXC+1)*PADStrip
1072  xx = str(NSLOPEFRONT*modwidth+2*PADTagger+(NSLOPEFRONT-1)*PADModule)
1073  yy = str(YCTOP+YCBOT+3*PADStrip+2*PADC+2*PADTagger)
1074  zz = str(modwidth + 2*PADTagger)
1075 
1076  coords = []
1077  modules = []
1078 
1079  dx = 0.5*(modwidth+PADModule)*(1 - NSLOPEFRONT)
1080 
1081  for i in range(NSLOPEFRONT):
1082 
1083  coords.append((dx,0,0))
1084  dx+= modwidth+PADModule
1085 
1086  global feb_id
1087  global printModIds
1088  if printModIds: print('CERN tagger Long, side '+side+' first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
1089 
1090  for i in range(len(coords)):
1091  if side == 'U':
1092  modules.append(module('c','rs'))
1093  if side == 'D':
1094  modules.append(module('c','rn'))
1095  feb_id+=1
1096  modToFeb[mod_id] = (feb_id,1)
1097 
1098  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
1099 
1100  sname = 'tagger_'
1101  if side == 'U':
1102  sname += 'RimSouth'
1103  if side == 'D':
1104  sname += 'RimNorth'
1105  vname = 'vol_'+ sname
1106 
1107  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
1108  vtagger = ET.SubElement(structure, 'volume', name=vname)
1109  ET.SubElement(vtagger, 'materialref', ref='Air')
1110  ET.SubElement(vtagger, 'solidref', ref=sname)
1111 
1112  #place left side module phy. vol.s
1113  for i, (xc,yc,zc) in enumerate(coords):
1114 
1115  (s,v)=modules[i]
1116  pv = ET.SubElement(vtagger, 'physvol')
1117  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
1118 
1119  posname = 'pos' + v.attrib['name']
1120  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1121 
1122  return stagger, vtagger
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.cernTopTagger ( )
Build top CERN tagger (1 layer of modules) 

Definition at line 955 of file gen_crt_frags.py.

956 def cernTopTagger():
957  ''' Build top CERN tagger (1 layer of modules)
958  '''
959  modwidth = ZC + 2*PADC + (NXC+1)*PADStrip
960  xx = str(NTOPX*modwidth+2*PADTagger+(NTOPX-1)*PADModule)
961  yy = str(YCTOP+YCBOT+3*PADStrip+2*PADC+2*PADTagger)
962  zz = str(NTOPZ*modwidth + 2*PADTagger + (NTOPZ-1)*PADModule)
963 
964  coords = []
965  modules = []
966 
967  dz = 0.5*(modwidth+PADModule)*(1 - NTOPZ)
968  dx = 0.5*(modwidth+PADModule)*(1 - NTOPX)
969 
970  for i in range(NTOPX*NTOPZ):
971 
972  coords.append((dx,0,dz))
973 
974  if (i+1)%NTOPZ == 0:
975  dx+= modwidth + PADModule
976  dz = 0.5*(modwidth+PADModule)*(1 - NTOPZ)
977  else: dz+= modwidth + PADModule
978 
979  global feb_id
980  global printModIds
981  if printModIds: print('CERN tagger Top, first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
982 
983  for i in range(len(coords)):
984  modules.append(module('c','tt'))
985  feb_id+=1
986  modToFeb[mod_id] = (feb_id,1)
987 
988  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
989 
990  sname = 'tagger_Top'
991  vname = 'vol_'+ sname
992 
993  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
994  vtagger = ET.SubElement(structure, 'volume', name=vname)
995  ET.SubElement(vtagger, 'materialref', ref='Air')
996  ET.SubElement(vtagger, 'solidref', ref=sname)
997 
998  #place left side module phy. vol.s
999  for i, (xc,yc,zc) in enumerate(coords):
1000 
1001  (s,v)=modules[i]
1002  pv = ET.SubElement(vtagger, 'physvol')
1003  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
1004 
1005  posname = 'pos' + v.attrib['name']
1006  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1007 
1008  return stagger, vtagger
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.DCTagger ( )
Build bottom tagger

Definition at line 886 of file gen_crt_frags.py.

887 def DCTagger():
888  ''' Build bottom tagger
889  '''
890  modwidth = XD*(NXD+0.5)+2*PADD+(NXD+2)*PADStrip
891  xx = str(modwidth*5 + DCSPACER*4 + 2*PADTagger)
892  yy = str(2*(YD+PADD+PADTagger)+3*PADStrip)
893  zz = str(WVLENGTH)
894 
895  coords = []
896  modules = []
897  rot = 0
898  for i in range(14):
899 
900  if (i<5):
901  dx = (2*i-5+1)*0.5*(modwidth+ DCSPACER)
902  dz = -1*LONGOFF5
903  if (i==5 or i==6):
904  dx = (ZD + 2*(PADD+PADStrip))*0.5*(-1)**i
905  dz = -1*LONGOFF2
906  if (i==7 or i==8):
907  dx = (ZD + 2*(PADD+PADStrip))*0.5*(-1)**i
908  dz = LONGOFF2
909  if (i>8):
910  dx = (2*(i-9)-5+1)*0.5*(modwidth+ DCSPACER)
911  dz = LONGOFF5
912 
913  if (i>4 and i<9):
914  rot = 1
915  else :
916  rot = 0
917 
918  coords.append((dx,0,dz,rot))
919 
920  global feb_id
921  global printModIds
922  if printModIds: print('DC tagger, first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
923 
924  for i in range(len(coords)):
925  modules.append(module('d','bt'))
926  feb_id+=1
927  modToFeb[mod_id] = (feb_id,1)
928 
929  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
930 
931  sname = 'tagger_Bottom'
932  vname = 'vol_'+ sname
933 
934  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
935  vtagger = ET.SubElement(structure, 'volume', name=vname)
936  ET.SubElement(vtagger, 'materialref', ref='Air')
937  ET.SubElement(vtagger, 'solidref', ref=sname)
938 
939  #place left side module phy. vol.s
940  for i, (xc,yc,zc,r) in enumerate(coords):
941 
942  (s,v)=modules[i]
943  pv = ET.SubElement(vtagger, 'physvol')
944  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
945 
946  posname = 'pos' + v.attrib['name']
947  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
948 
949  if r==1 :
950  posname = 'rot' + v.attrib['name']
951  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
952 
953  return stagger, vtagger
954 
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.detectorEnclosure ( )

Definition at line 1123 of file gen_crt_frags.py.

1124 def detectorEnclosure():
1125 
1126  #shell outer and void dimensions
1127  WVPADY = 25
1128  xxint = str(WVWIDTH + 2*SIDECRTWVOFFSET)
1129  yyint = str(WVHEIGHT+1.0+WVPADY)
1130  zzint = str(WVLENGTH+2*SIDECRTWVOFFSET)
1131 
1132  xxext = str(WVWIDTH + 2*SIDECRTROLLOFFSET + 1.1*SIDECRTSTACKDEPTH)
1133  yyext = str(SHELLY)
1134  zzext = str(SHELLZ)
1135 
1136  #generate all of the tagger volumes, CRT modules, and strips
1137  (s,vws) = minosSideTagger('w','s') #MINOS west wall, south stack
1138  (s,vwc) = minosSideTagger('w','c') #MINOS west wall, center stack
1139  (s,vwn) = minosSideTagger('w','n') #MINOS west wall, north stack
1140  (s,ves) = minosSideTagger('e','s') #MINOS east wall, south stack
1141  (s,vec) = minosSideTagger('e','c') #MINOS east wall, center stack
1142  (s,ven) = minosSideTagger('e','n') #MINOS east wall, north stack
1143  (s,vss) = minosSouthTagger()#'U',0,0,0) #MINOS south
1144  (s,vnn) = minosNorthTagger() #MINOS north
1145  (s,vbt) = DCTagger() #DC Bottom
1146  (s,vtt) = cernTopTagger() #CERN top
1147  (s,vrw) = cernLatRimTagger('L') #CERN RimWest
1148  (s,vre) = cernLatRimTagger('R') #CERN RimEast
1149  (s,vrs) = cernLongRimTagger('U') #CERN RimSouth
1150  (s,vrn) = cernLongRimTagger('D') #CERN RimNorth
1151  (s,vbeam) = beamVol()
1152 
1153  #CRT Shell containing all of the tagger volumes and a void to cointain the warm vessel
1154  sname = 'CRT_Shell'
1155  snameext = sname+'_external'
1156  snameint = sname+'_internal'
1157  sexternal = ET.SubElement(solids, 'box', name=snameext, lunit="cm", x=xxext, y=yyext, z=zzext)
1158  sinternal = ET.SubElement(solids, 'box', name=snameint, lunit="cm", x=xxint, y=yyint, z=zzint)
1159  sshell = ET.SubElement(solids, 'subtraction', name=sname)
1160  ET.SubElement(sshell, 'first', ref=snameext)
1161  ET.SubElement(sshell, 'second', ref=snameint)
1162  ET.SubElement(sshell, 'position', name='crtshellsubpos', unit='cm', x='0',y=str(-0.5*SHELLY+WVFOOTELEVATION+0.5*WVHEIGHT+0.5*WVPADY),z=str(-SHELLWVOFFSET))
1163 
1164  vname = 'vol'+sname
1165  vshell = ET.SubElement(structure, 'volume', name=vname)
1166  ET.SubElement(vshell, 'materialref', ref='Air')
1167  ET.SubElement(vshell, 'solidref', ref=sname)
1168 
1169  #crt support beam
1170  pv = ET.SubElement(vshell, 'physvol')
1171  ET.SubElement(pv, 'volumeref', ref=vbeam.attrib['name'])
1172  posname = 'pos' + vbeam.attrib['name']
1173  ET.SubElement(pv, 'position', name=posname, unit="cm", x='0', y=str(CERNTOPY-CRTBEAMHEIGHT*0.5-cModH*0.6), z=str(0))
1174 
1175  #position MINOS west, south
1176  pv = ET.SubElement(vshell, 'physvol')
1177  ET.SubElement(pv, 'volumeref', ref=vws.attrib['name'])
1178 
1179  xc = 0.5* WVWIDTH + SIDECRTWVOFFSET + 0.5*SIDECRTSTACKDEPTH
1180  yc = MINOSLATFIXY
1181  zc = MINOSLATSOUTHZ - SHELLWVOFFSET
1182 
1183  posname = 'pos' + vws.attrib['name']
1184  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1185 
1186  #position MINOS west, center
1187  pv = ET.SubElement(vshell, 'physvol')
1188  ET.SubElement(pv, 'volumeref', ref=vwc.attrib['name'])
1189 
1190  xc = 0.5* WVWIDTH + SIDECRTROLLOFFSET
1191  yc = MINOSLATROLLY
1192  zc = MINOSLATCENTZ - SHELLWVOFFSET
1193 
1194  posname = 'pos' + vwc.attrib['name']
1195  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1196 
1197  #position MINOS west, north
1198  pv = ET.SubElement(vshell, 'physvol')
1199  ET.SubElement(pv, 'volumeref', ref=vwn.attrib['name'])
1200 
1201  xc = 0.5* WVWIDTH + SIDECRTWVOFFSET + 0.5*SIDECRTSTACKDEPTH
1202  yc = MINOSLATFIXY
1203  zc = MINOSLATNORTHZ - SHELLWVOFFSET
1204 
1205  posname = 'pos' + vwn.attrib['name']
1206  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1207 
1208  #Position MINOS east, south
1209  pv = ET.SubElement(vshell, 'physvol')
1210  ET.SubElement(pv, 'volumeref', ref=ves.attrib['name'])
1211 
1212  xc = -0.5* WVWIDTH - SIDECRTWVOFFSET - 0.5*SIDECRTSTACKDEPTH
1213  yc = MINOSLATFIXY
1214  zc = MINOSLATSOUTHZ - SHELLWVOFFSET
1215 
1216  posname = 'pos' + ves.attrib['name']
1217  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1218 
1219  #Position MINOS east, center
1220  pv = ET.SubElement(vshell, 'physvol')
1221  ET.SubElement(pv, 'volumeref', ref=vec.attrib['name'])
1222 
1223  xc = -0.5* WVWIDTH - SIDECRTROLLOFFSET
1224  yc = MINOSLATROLLY
1225  zc = MINOSLATCENTZ - SHELLWVOFFSET
1226 
1227  posname = 'pos' + vec.attrib['name']
1228  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1229 
1230  #Position MINOS east, north
1231  pv = ET.SubElement(vshell, 'physvol')
1232  ET.SubElement(pv, 'volumeref', ref=ven.attrib['name'])
1233 
1234  xc = -0.5* WVWIDTH - SIDECRTWVOFFSET - 0.5*SIDECRTSTACKDEPTH
1235  yc = MINOSLATFIXY
1236  zc = MINOSLATNORTHZ - SHELLWVOFFSET
1237 
1238  posname = 'pos' + ven.attrib['name']
1239  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1240 
1241  #position MINOS north (downstream)
1242  pv = ET.SubElement(vshell, 'physvol')
1243  ET.SubElement(pv, 'volumeref', ref=vnn.attrib['name'])
1244 
1245  xc = 0.0
1246  yc = MINOSNORTHY
1247  zc = 0.5* WVLENGTH + SIDECRTWVOFFSET + 0.5*SIDECRTSTACKDEPTH - SHELLWVOFFSET
1248 
1249  posname = 'pos' + vnn.attrib['name']
1250  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1251 
1252  #position MINOS south (upstream)
1253  pv = ET.SubElement(vshell, 'physvol')
1254  ET.SubElement(pv, 'volumeref', ref=vss.attrib['name'])
1255 
1256  xc = 0.0
1257  yc = MINOSSOUTHY
1258  zc = -1*(0.5* WVLENGTH + SIDECRTWVOFFSET + 0.5*(SIDECRTSTACKDEPTH+PADTagger+mModH)) - SHELLWVOFFSET
1259 
1260  posname = 'pos' + vss.attrib['name']
1261  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1262 
1263  #position DC Bottom
1264  pv = ET.SubElement(vshell, 'physvol')
1265  ET.SubElement(pv, 'volumeref', ref=vbt.attrib['name'])
1266 
1267  xc = posDCInDetEncl[0]
1268  yc = posDCInDetEncl[1]
1269  zc = posDCInDetEncl[2] - SHELLWVOFFSET
1270 
1271  posname = 'pos' + vbt.attrib['name']
1272  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1273 
1274  #position CERN Top
1275  pv = ET.SubElement(vshell, 'physvol')
1276  ET.SubElement(pv, 'volumeref', ref=vtt.attrib['name'])
1277 
1278  xc = 0.0
1279  yc = CERNTOPY
1280  zc = CERNTOPZ - SHELLWVOFFSET
1281 
1282  posname = 'pos' + vtt.attrib['name']
1283  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1284 
1285  #position CERN west rim
1286  pv = ET.SubElement(vshell, 'physvol')
1287  ET.SubElement(pv, 'volumeref', ref=vrw.attrib['name'])
1288 
1289  xc = CERNRIMLATX
1290  yc = CERNRIMLATY
1291  zc = CERNRIMLATZ - SHELLWVOFFSET
1292 
1293  posname = 'pos' + vrw.attrib['name']
1294  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1295 
1296  posname = 'rot' + vrw.attrib['name']
1297  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='0', z=str(SLOPEINCLINATION))
1298 
1299  #position CERN east rim
1300  pv = ET.SubElement(vshell, 'physvol')
1301  ET.SubElement(pv, 'volumeref', ref=vre.attrib['name'])
1302 
1303  xc = -1*CERNRIMLATX
1304  yc = CERNRIMLATY
1305  zc = CERNRIMLATZ - SHELLWVOFFSET
1306 
1307  posname = 'pos' + vre.attrib['name']
1308  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1309 
1310  posname = 'rot' + vre.attrib['name']
1311  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='0', z=str(-1*SLOPEINCLINATION))
1312 
1313  #position CERN south rim
1314  pv = ET.SubElement(vshell, 'physvol')
1315  ET.SubElement(pv, 'volumeref', ref=vrs.attrib['name'])
1316 
1317  xc = 0.0
1318  yc = CERNRIMSY
1319  zc = CERNRIMSZ - SHELLWVOFFSET
1320 
1321  posname = 'pos' + vrs.attrib['name']
1322  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1323 
1324  posname = 'rot' + vrs.attrib['name']
1325  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x=str(SLOPEINCLINATION), y='0', z='0')
1326 
1327  #position CERN north rim
1328  pv = ET.SubElement(vshell, 'physvol')
1329  ET.SubElement(pv, 'volumeref', ref=vrn.attrib['name'])
1330 
1331  xc = 0.0
1332  yc = CERNRIMNY
1333  zc = CERNRIMNZ - SHELLWVOFFSET
1334 
1335  posname = 'pos' + vrn.attrib['name']
1336  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
1337 
1338  posname = 'rot' + vrn.attrib['name']
1339  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x=str(-1*SLOPEINCLINATION), y='0', z='0')
1340 
1341  return sshell,vshell
def gen_crt_frags.get_mod_id (   style = 'm')

Definition at line 193 of file gen_crt_frags.py.

194 def get_mod_id(style='m'):
195  global mod_id
196  global nModM
197  global nModC
198  global nModD
199 
200  mod_id += 1
201  if style == 'm':
202  nModM += 1
203  if style == 'c':
204  nModC += 1
205  if style == 'd':
206  nModD += 1
207  return mod_id
def gen_crt_frags.get_mod_id_num ( )

Definition at line 208 of file gen_crt_frags.py.

209 def get_mod_id_num():
210  global mod_id
211  return str(mod_id)
def gen_crt_frags.minosNorthTagger ( )
Build north MINOS tagger (2 layers cut modules in X-X) on upstream face

Definition at line 668 of file gen_crt_frags.py.

669 def minosNorthTagger():
670  ''' Build north MINOS tagger (2 layers cut modules in X-X) on upstream face
671  '''
672 
673  coords = []
674  modules = []
675  ny = len(minosCutModLengthNorth)
676 
677  x = 2*(mModL-ZM+max(minosCutModLengthNorth))+PADM+2*PADTagger
678  y = ny*mModW+(ny-1)*SIDECRTSHELFTHICK+2*PADTagger
679  xx = str(x)
680  yy = str(y)
681  zz = str(SIDECRTSTACKDEPTH)
682 
683 
684  global feb_id
685  global printModIds
686  if printModIds: print('MINOS tagger North, first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
687  fmod = 0
688  feb_id+=4
689 
690  #loop over rows starting from bottom going up
691  for row in range(ny):
692  zin = 0.5*LAYERSPACE
693  xleft = 0.5*x - PADTagger - 0.5*(mModL-ZM+minosCutModLengthNorth[row])
694  yrow = -0.5*y + PADTagger + (row+0.5)*mModW + row*SIDECRTSHELFTHICK
695 
696  # (row+0.5)*mModW --> center of each module
697  # the row coordinates are the module center coordinates
698  # four each of the four modules in a given row (two columns of cut modules x 2 layers)
699  # switching layers in north wall: zin -> -zin
700  # switching columns in north wall: xleft -> - xleft
701  rowcoords = ( (xleft,yrow,zin),(-xleft,yrow,zin),(xleft,yrow,-zin),(-xleft,yrow,-zin) )
702  coords.append(rowcoords)
703  rowmodules = []
704  fmod+=4
705 
706  for i in range(4):
707  rowmodules.append(module('m','nn',minosCutModLengthNorth[row]))
708  modToFeb[mod_id] = (feb_id-3+i,fmod/4)
709 
710  modules.append(rowmodules)
711  if fmod==12:
712  fmod=0
713  if row != ny-1: feb_id+=4
714 
715  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
716 
717  sname = 'tagger_SideNorth'
718  vname = 'vol_'+ sname
719 
720  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
721  vtagger = ET.SubElement(structure, 'volume', name=vname)
722  ET.SubElement(vtagger, 'materialref', ref='Air')
723  ET.SubElement(vtagger, 'solidref', ref=sname)
724 
725  #print('no. of modules in the north side CRT:', len(coords))
726 
727  #place left side module phy. vol.s
728  for row in range(len(coords)):
729  for mod, (xc,yc,zc) in enumerate(coords[row]):
730 
731  (s,v)=modules[row][mod]
732  pv = ET.SubElement(vtagger, 'physvol')
733  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
734 
735  posname = 'pos' + v.attrib['name']
736  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
737 
738  if xc>0:
739  posname = 'rotplus' + v.attrib['name']
740  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
741  else:
742  posname = 'rotneg' + v.attrib['name']
743  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='-90', z='0')
744 
745  return stagger, vtagger
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.minosSideTagger (   side = 'e',
  pos = 'n' 
)
Build a side tagger (1 stacks)

Definition at line 539 of file gen_crt_frags.py.

540 def minosSideTagger(side='e', pos='n'):
541  ''' Build a side tagger (1 stacks)
542  '''
543  if side!='e' and side !='w':
544  print('bad value passed to function, minosSideTagger: side='+side)
545  if pos!='n' and pos!='c' and pos != 's':
546  print('bad value passed to function, minosSideTagger: pos='+pos)
547 
548  coords = []
549  modules = []
550  nstack=NMODSTACK
551 
552  if(pos=='c'):
553  nstack-=1
554 
555  z = mModL+2*PADTagger
556  if(pos=='s'):
557  z+=MINOSLATSOUTHACTIVEOVERHANG
558 
559  xx = str(SIDECRTSTACKDEPTH)
560  yy = str(nstack*mModW+(nstack-1)*SIDECRTSHELFTHICK+2*PADTagger)
561  zz = str(z)
562 
563  if pos=='s':
564  xxsub = str(SIDECRTSTACKDEPTH)
565  yysub = str(mModW+PADTagger)
566  zzsub = str(MINOSLATSOUTHACTIVEOVERHANG+PADTagger)
567  xpsub = '0'
568  ypsub = str(0.5*((nstack-1)*(mModW+SIDECRTSHELFTHICK)+PADTagger))
569  zpsub = str(-0.5*(z-MINOSLATSOUTHACTIVEOVERHANG))
570 
571  #loop over stacks
572  for layer in range (2): #6):
573 
574  dx = ((-1)**layer)*0.5*LAYERSPACE
575  if side=='w': dx*= -1
576  dz=0
577  #loop over modules in stack
578  for i in range(nstack):
579  dy = 0.5*(2*i+1-nstack)*(mModW+SIDECRTSHELFTHICK)
580  #if pos=='c':
581  # dy-=0.5*mModW
582  if pos=='s' and i==nstack-1 : dz = 0.5*MINOSLATSOUTHACTIVEOVERHANG
583  elif pos=='s': dz = -0.5*MINOSLATSOUTHACTIVEOVERHANG
584  coords.append((dx,dy,dz))
585 
586  sname = 'tagger_SideLat_'
587  if pos=='c': sname+='Center'
588  if pos=='s':
589  sname+='South'
590  snameint = sname + '_internal'
591  snameext = sname + '_external'
592  if pos=='n': sname+='North'
593 
594  if not sname in solids_store:
595  if pos != 's': stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
596  if pos=='s':
597  sext = ET.SubElement(solids, 'box', name=snameext, lunit="cm", x=xx, y=yy, z=zz)
598  sint = ET.SubElement(solids, 'box', name=snameint, lunit="cm", x=xxsub, y=yysub, z=zzsub)
599  stagger = ET.SubElement(solids, 'subtraction', name=sname)
600  ET.SubElement(stagger, 'first', ref=snameext)
601  ET.SubElement(stagger, 'second', ref=snameint)
602  ET.SubElement(stagger, 'position', name='crtsouthtaggersubpos', unit='cm', x=xpsub,y=ypsub,z=zpsub)
603  solids_store[snameext] = sext
604  solids_store[snameint] = sint
605  solids_store[sname] = stagger
606  else:
607  if pos=='s':
608  sext = solids_store[snameext]
609  sint = solids_store[snameint]
610  stagger = solids_store[sname]
611 
612  vname = 'vol_'+ sname+'_'
613 
614  global feb_id
615  global printModIds
616  fmod = 0
617 
618  if printModIds: print('MINOS tagger, '+side+', pos '+pos+' first module: '+str(mod_id+1)+', first FEB: '+str(feb_id+1))
619  feb_id+=2
620 
621  for i in range(len(coords)):
622  if side=='w':
623  if pos=='s':
624  modules.append(module('m','ws'))
625  if i==0: vname+='WestSouth'
626  if pos=='c':
627  modules.append(module('m','wc'))
628  if i==0: vname+='WestCenter'
629  if pos=='n':
630  modules.append(module('m','wn'))
631  if i==0: vname+='WestNorth'
632  if side=='e':
633  if pos=='s':
634  modules.append(module('m','es'))
635  if i==0: vname+='EastSouth'
636  if pos=='c':
637  modules.append(module('m','ec'))
638  if i==0: vname+='EastCenter'
639  if pos=='n':
640  modules.append(module('m','en'))
641  if i==0: vname+='EastNorth'
642  fmod+=1
643  modToFeb[mod_id] = ((feb_id-1,fmod),(feb_id,fmod))
644  if fmod==3:
645  fmod=0
646  if i != len(coords)-1: feb_id+=2
647 
648  if printModIds: print(' last module: '+str(mod_id)+', last FEB: '+str(feb_id))
649  #print('dictionary generated:')
650  #for k in modToFeb.keys():
651  # print('module '+str(k)+': '+str(modToFeb[k]))
652 
653  vtagger = ET.SubElement(structure, 'volume', name=vname)
654  ET.SubElement(vtagger, 'materialref', ref='Air')
655  ET.SubElement(vtagger, 'solidref', ref=sname)
656 
657  #place left side module phy. vol.s
658  for i, (xc,yc,zc) in enumerate(coords):
659 
660  (s,v)=modules[i]
661  pv = ET.SubElement(vtagger, 'physvol')
662  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
663 
664  posname = 'pos' + v.attrib['name']
665  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
666 
667  return stagger, vtagger
then if[["$THISISATEST"==1]]
Definition: neoSmazza.sh:95
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.minosSouthTagger ( )
Build front MINOS tagger (2 layers in X-Y) on upstream face

Definition at line 746 of file gen_crt_frags.py.

747 def minosSouthTagger():
748  ''' Build front MINOS tagger (2 layers in X-Y) on upstream face
749  '''
750  nmody = 10
751  coords = []
752  modules = []
753 
754  # x = 2*(mModL-ZM+max(minosCutModLengthSoutheast))+overlap+2*PADTagger #0.0065 added to remove overlap problem
755  x = 2*(mModL-ZM+max(minosCutModLengthSoutheast)-crosstwomodule)+overlap+2*PADTagger #0.0065 added to remove overlap problem
756  y = mModL + 2*PADTagger
757  z = SIDECRTSTACKDEPTH+mModH+PADTagger
758 
759  xx = str(x)
760  yy = str(y)
761  zz = str(z)
762  offset = 30.48 # vertical modules are shifted from east side comparing to horizontal module (12 inch)
763  #18 inch (45.72 cm) from west side
764  for i in range(2*nmody+1):
765 
766  if i < nmody: #bottom row
767 
768  dx = -0.5*x + offset + PADTagger + (i+0.5)*mModW + i*PADModule
769  dy = -0.5*y + PADTagger + 0.5*(mModL-0.5*ZM)
770  dz = -0.5*z + PADTagger + 0.5*mModH
771 
772  #print('MINOS tagger South, first module: ', i, ', dx: ', dx,', dy: ',dy,', dz: ', dz)
773 
774  if i == nmody:
775  dx = -0.5*x + offset + PADTagger + (i+0.5)*mModW + i*PADModule
776  dy = -0.5*y + PADTagger + 0.5*(mModL-ZM+verticalmodule)
777  #dy = - 0.5*(mModL-ZM+verticalmodule)
778  dz = -0.5*z + PADTagger + 0.5*mModH
779  #dy = -0.5*y + PADTagger + 0.5*verticalmodule
780  #print('MINOS tagger South, first module: ', i, ', dx: ', dx,', dy: ',dy,', dz: ', dz)
781  #else: #top row
782  if i > nmody:
783  dx = -0.5*x+offset + PADTagger + (i+0.5-nmody-1)*mModW + (i-nmody-1)*PADModule # -ve sign of x means opposite side, switch from west to east side.
784  dy = 0.5*y - PADTagger - 0.5*(mModL - 0.5*ZM)
785  dz = -0.5*z +PADTagger + mModH + 1.5*SIDECRTPOSTWIDTH
786  #print('MINOS tagger South, first module: ', i, ', dx: ', dx,', dy: ',dy,', dz: ', dz)
787  coords.append((dx,dy,dz,1)) #x,y,z,vert=true
788 
789 
790  for i in range(NMODSTACK):
791 
792  dxeast = 0.5*(mModL-ZM+minosCutModLengthSoutheast[i]) + gap - crosstwomodule # 0.005 added for space between two module neck to neck
793  dy = -0.5*y+PADTagger+(i+0.5)*mModW + i*SIDECRTSHELFTHICK
794  dz = 0.5*z - 1.5*SIDECRTPOSTWIDTH - separatetwomodule
795 
796  if i == (NMODSTACK -1):
797  dxeast = 0.5*(mModL-ZM+minosCutModLengthSoutheast[i]) + gap - crosstwomodule - offsetontopmodule - separatetwomodule
798  dy = -0.5*y+PADTagger+(i+0.5)*mModW + i*SIDECRTSHELFTHICK
799  dz = 0.5*z - 1.5*SIDECRTPOSTWIDTH - separatetwomodule
800  coords.append((-dxeast,dy,dz,0)) #x,y,z,vert=false, east side
801 
802  for i in range(NMODSTACK):
803 
804  dxwest = 0.5*(mModL-ZM+minosCutModLengthSouthwest[i]) + gap - crosstwomodule
805  dy = -0.5*y+PADTagger+(i+0.5)*mModW + i*SIDECRTSHELFTHICK
806  dz = 0.5*z - 1.5*SIDECRTPOSTWIDTH - separatetwomodule
807  coords.append((dxwest,dy,dz,0)) #x,y,z,vert=false, west side
808 
809  global feb_id
810  global printModIds
811  if printModIds: print('MINOS tagger South, first module: '+str(mod_id+1)+', FEB: '+str(feb_id+1))
812  fmod = 0
813  feb_id+=1
814 
815 # print('no. of modules in the south side CRT:', len(coords))
816 
817  for i in range(len(coords)):
818  if i<2*nmody+1:
819  #modules.append(module('m','ss',0.5*ZM))
820  if (i == nmody):
821  modules.append(module('m','ss',verticalmodule))
822  else:
823  modules.append(module('m','ss',0.5*ZM))
824  fmod+=1
825  modToFeb[mod_id] = (feb_id,fmod)
826  #print(i, ' mod no: '+str(fmod), 'moduleid: '+str(mod_id)+', FEB: '+str(feb_id))
827  if fmod==3:
828  fmod=0
829  #feb_id+=1
830  if i!=2*nmody: feb_id+=1
831  else: feb_id+=1
832  #print(i,' vertical module: '+str(mod_id)+', FEB: '+str(feb_id))
833  if i >= 2*nmody+1 and i < 2*nmody+1+9 :
834  modules.append(module('m','ss',minosCutModLengthSoutheast[i-(2*nmody+1)]))
835  fmod+=1
836  #modToFeb[mod_id] = ((feb_id-1,fmod),(feb_id,fmod))
837  modToFeb[mod_id] = (feb_id,fmod)
838  if fmod==3:
839  fmod=0
840  if i!= (2*nmody+9): feb_id+=1
841  else: feb_id+=1
842  #print(' horizontal module: '+str(mod_id)+', FEB: '+str(feb_id))
843  if i >= 2*nmody+1+9 :
844  modules.append(module('m','ss',minosCutModLengthSouthwest[i-(2*nmody+1+9)]))
845  fmod+=1
846  #modToFeb[mod_id] = ((feb_id-1,fmod),(feb_id,fmod))
847  modToFeb[mod_id] = (feb_id,fmod)
848  if fmod==3:
849  fmod=0
850  if i!= (2*nmody+18): feb_id+=1
851  #else: feb_id+=1
852  #print(' horizontal module: '+str(mod_id)+', FEB: '+str(feb_id))
853  if printModIds: print(' last module: '+str(mod_id)+', FEB: '+str(feb_id))
854 
855  sname = 'tagger_SideSouth'
856  vname = 'vol_'+ sname
857 
858  stagger = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
859  vtagger = ET.SubElement(structure, 'volume', name=vname)
860  ET.SubElement(vtagger, 'materialref', ref='Air')
861  ET.SubElement(vtagger, 'solidref', ref=sname)
862 
863  #place left side module phy. vol.s
864  for i, (xc,yc,zc,r) in enumerate(coords):
865 
866  (s,v)=modules[i]
867  pv = ET.SubElement(vtagger, 'physvol')
868  ET.SubElement(pv, 'volumeref', ref=v.attrib['name'])
869 
870  posname = 'pos' + v.attrib['name']
871  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(xc), y=str(yc), z=str(zc))
872 
873  posname = 'rot' + v.attrib['name']
874  if r==1 : ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='90', y='0', z='90')
875  if r==0 :
876  if xc>0:
877  posname = 'rotplus' + v.attrib['name']
878  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
879  else:
880  posname = 'rotneg' + v.attrib['name']
881  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='-90', z='0')
882 
883  #ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
884 
885  return stagger, vtagger
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.module (   style = "c",
  reg = 'tt',
  length = 0 
)
Build an edge-to-edge array of scintillator strips.

Definition at line 363 of file gen_crt_frags.py.

364 def module(style="c", reg='tt', length=0):
365  '''Build an edge-to-edge array of scintillator strips.'''
366 
367  if style=="m":
368  ny=NXM
369  x=XM
370  y=YM
371  if length==0:
372  z=ZM
373  zz = str(mModL)
374  zzsub = str(mModL-2*PADM)
375  else:
376  if length>ZM:
377  print('WARNING: LENGTH SPECIFIED FOR CUT MINOS MODULE EXCEEDES FULL LENGTH!')
378  z = length
379  zz = str(mModL-ZM+length)
380  zzsub = str(mModL-2*PADM-ZM+length)
381  xx = str(mModH)
382  yy = str(mModW)
383  xxsub = str(mModH-2*PADM)
384  yysub = str(mModW-2*PADM)
385  name = "MINOS"
386 
387  if style=="c":
388  x=XC
389  z=ZC
390  ny=NXC
391  xx = str(cModW)
392  yy = str(cModH)
393  zz = xx
394  xxsub = str(cModW - 2*PADC)
395  yysub = str(cModH-2*PADC)
396  zzsub = xxsub
397  name = "CERN"
398 
399  if style=="d":
400  x=XD
401  y=YD
402  z=ZD
403  ny=NXD
404  xx = str(x*(ny+0.5)+2*PADD+(ny+2)*PADStrip)
405  yy = str(dModH)
406  zz = str(z+2*PADD+2*PADStrip)
407  xxsub = str(x*(ny+0.5)+(ny+2)*PADStrip)
408  yysub = str(dModH-2*PADM)
409  zzsub = str(z+2*PADStrip)
410  name = "DC"
411 
412  modnum = get_mod_id(style)
413  stripnum = 0
414 
415  sname = 'AuxDet_' + name + '_module_'
416  vname = 'vol' + sname
417 
418  if modnum < 10:
419  vname += '00'
420  elif modnum < 100:
421  vname += '0'
422  vname += str(modnum)+'_'
423 
424  if style=='m' and length!=0:
425  sname += 'cut'+str(int(length))
426  vname += 'cut'+str(int(length))+'_'
427 
428  if reg=='tt': vname += 'Top'
429  if reg=='rn': vname += 'RimNorth'
430  if reg=='rs': vname += 'RimSouth'
431  if reg=='rw': vname += 'RimWest'
432  if reg=='re': vname += 'RimEast'
433  if reg=='ss': vname += 'South'
434  if reg=='nn': vname += 'North'
435  if reg=='ws': vname += 'WestSouth'
436  if reg=='wc': vname += 'WestCenter'
437  if reg=='wn': vname += 'WestNorth'
438  if reg=='es': vname += 'EastSouth'
439  if reg=='ec': vname += 'EastCenter'
440  if reg=='en': vname += 'EastNorth'
441  if reg=='bt': vname += 'Bottom'
442 
443  snamein = sname+'_inner'
444 
445  if not sname in solids_store:
446 
447  s = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz)
448  sin = ET.SubElement(solids, 'box', name=snamein, lunit="cm", x=xxsub, y=yysub, z=zzsub)
449 
450  solids_store[sname] = s
451  solids_store[snamein] = sin
452 
453  else:
454  s = solids_store[sname]
455  sin = solids_store[snamein]
456 
457  strips = []
458  strips2 = []
459 
460  #generate strips, top layer for c or d type
461  for i in range(ny):
462  if style=='m' and length>0:
463  strips.append(strip(style, modnum, stripnum,length))
464  else:
465  strips.append(strip(style, modnum, stripnum,0))
466  stripnum += 1
467 
468  #generate bottom layer strips
469  if style=='d' or style=='c':
470  for i in range(ny):
471  strips2.append(strip(style, modnum, stripnum))
472  stripnum += 1
473 
474  vnamein = vname + '_inner'
475  vin = ET.SubElement(structure, 'volume', name=vnamein)
476  ET.SubElement(vin, 'materialref', ref='Air')
477  ET.SubElement(vin, 'solidref', ref=snamein)
478 
479  #place first layer of strips (only layer for m modules)
480  #top layer for c or d modules
481  for i, (es, ev) in enumerate(strips):
482  pv = ET.SubElement(vin, 'physvol')
483  ET.SubElement(pv, 'volumeref', ref=ev.attrib['name'])
484 
485  if style=='m':
486  dy = (2*i - ny + 1)* 0.5 * (y+PADStrip)
487  dx=0
488  if style=='c':
489  dx = (2*i - ny + 1)* 0.5 * (x+PADStrip)
490  dy=0.5*(YCBOT+PADStrip)
491 
492  if style=='d':
493  dy= 0.5*(y+PADStrip)
494  dx=(i - 0.5*ny + 0.25) * (x+PADStrip)
495 
496  posname = 'pos' + ev.attrib['name']
497  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(dx), y=str(dy), z='0')
498 
499  #place bottom layers
500  if style=='c':
501  for i, (es, ev) in enumerate(strips2):
502  pv = ET.SubElement(vin, 'physvol')
503  ET.SubElement(pv, 'volumeref', ref=ev.attrib['name'])
504 
505  dy= -0.5*(YCTOP+PADStrip)
506  dz=(2*i - ny + 1)* 0.5 * (x+PADStrip)
507 
508  posname = 'pos' + ev.attrib['name']
509  ET.SubElement(pv, 'position', name=posname,
510  unit="cm", x='0', y=str(dy), z=str(dz))
511  posname = 'rot' + ev.attrib['name']
512  ET.SubElement(pv, 'rotation', name=posname, unit="deg", x='0', y='90', z='0')
513 
514 
515  if style=='d':
516  for i, (es, ev) in enumerate(strips2):
517  pv = ET.SubElement(vin, 'physvol')
518  ET.SubElement(pv, 'volumeref', ref=ev.attrib['name'])
519 
520  dy= -0.5*(y+PADStrip)
521  dx=(i - 0.5*ny + 0.75) * (x+PADStrip)
522 
523  posname = 'pos' + ev.attrib['name']
524  ET.SubElement(pv, 'position', name=posname, unit="cm", x=str(dx), y=str(dy), z='0')
525  #DC strips centered (FIX ME!!)
526 
527  v = ET.SubElement(structure, 'volume', name=vname)
528  ET.SubElement(v, 'materialref', ref='ALUMINUM_Al')
529  ET.SubElement(v, 'solidref', ref=sname)
530 
531  pv = ET.SubElement(v, 'physvol')
532  ET.SubElement(pv, 'volumeref', ref=vin.attrib['name'])
533 
534  #print ('module produced!')
535 
536  return s, v
537 
538 #build one stack of MINOS modules for east or west side CRT walls
#pos specifies one of 3 stacks on either side: 's, 'c', 'n'
do one_file $F done echo for F in find $TOP name CMakeLists txt print
auto enumerate(Iterables &&...iterables)
Range-for loop helper tracking the number of iteration.
Definition: enumerate.h:69
def gen_crt_frags.strip (   style = "m",
  modnum = 0,
  stripnum = 0,
  length = 0 
)
Build one scintillator strip.

Definition at line 292 of file gen_crt_frags.py.

293 def strip(style="m", modnum=0, stripnum=0, length=0):
294  '''Build one scintillator strip.'''
295 
296  if style=="m":
297  x=XM
298  y=YM
299  if length==0:
300  z=ZM
301  else:
302  z=length
303  name = 'MINOS'
304  if style=="c":
305  name = 'CERN'
306  x=XC
307  if stripnum < NXC:
308  y=YCTOP
309  else:
310  y=YCBOT
311  z=ZC
312  if style=="d":
313  x=XD
314  y=YD
315  z=ZD
316  name = 'DC'
317 
318  xx = str(x)
319  yy = str(y)
320  zz = str(z)
321 
322  sname = 'AuxDetSensitive_' + name
323  vname = 'volAuxDetSensitive_' + name + '_module_'
324 
325  if modnum < 10:
326  vname += '00'
327  elif modnum < 100:
328  vname += '0'
329 
330  vname += str(modnum)+'_'
331  if style=='m' and length!=0:
332  sname+='_cut'+str(int(length))+'_'
333  vname+='cut'+str(int(length))+'_'
334 
335  if style=='c':
336  if stripnum < NXC:
337  sname += '_top_'
338  vname += 'top_'
339  else:
340  sname += '_bot_'
341  vname += 'bot_'
342 
343  vname+='strip_'
344  if stripnum < 10:
345  vname += '0'
346  vname += str(stripnum)
347 
348  if not sname in solids_store:
349  s = ET.SubElement(solids, 'box', name=sname, lunit="cm", x=xx, y=yy, z=zz) #g4 solid
350  solids_store[sname] = s
351 
352  else:
353  s = solids_store[sname]
354 
355  #vname = 'volAuxDetSensitive_' + name
356  v = ET.SubElement(structure, 'volume', name=vname) #Logical volume
357  ET.SubElement(v, 'materialref', ref='Polystyrene')
358  ET.SubElement(v, 'solidref', ref=sname)
359 
360  #print("strip produced!")
361 
362  return s, v #return solid, logical volumes

Variable Documentation

int gen_crt_frags.beam_id = 0

Definition at line 188 of file gen_crt_frags.py.

float gen_crt_frags.BOTTOMCRTROLLERHEIGHT = 3.02

Definition at line 47 of file gen_crt_frags.py.

float gen_crt_frags.CERNMODSPACE = 0.2

Definition at line 129 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMLATX = 0.5

Definition at line 159 of file gen_crt_frags.py.

gen_crt_frags.CERNRIMLATY = CERNRIMSY

Definition at line 160 of file gen_crt_frags.py.

gen_crt_frags.CERNRIMLATZ = CERNTOPZ

Definition at line 161 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMNY = CERNRIMSY+29.0

Definition at line 156 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMNZ = CERNROOFL+CERNRIMSZ+0.6

Definition at line 157 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMSWVOFFSET = 34.0

Definition at line 152 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMSY = CERNTOPY-0.5

Definition at line 154 of file gen_crt_frags.py.

float gen_crt_frags.CERNRIMSZ = -0.5

Definition at line 155 of file gen_crt_frags.py.

tuple gen_crt_frags.CERNROOFL = NTOPZ*cModW+(NTOPZ-1)

Definition at line 135 of file gen_crt_frags.py.

float gen_crt_frags.CERNTOPY = SHELLY*0.5

Definition at line 153 of file gen_crt_frags.py.

float gen_crt_frags.CERNTOPZ = CERNRIMSZ+0.5

Definition at line 158 of file gen_crt_frags.py.

int gen_crt_frags.cModH = YCTOP+YCBOT+2

Definition at line 110 of file gen_crt_frags.py.

int gen_crt_frags.cModW = XC*NXC+2

Definition at line 109 of file gen_crt_frags.py.

float gen_crt_frags.crosstwomodule = 10.7

Definition at line 58 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMFLANGETHICK = 1.434

Definition at line 71 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMHEIGHT = 25.3

Definition at line 69 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMLENGTH = 1132.84

Definition at line 68 of file gen_crt_frags.py.

int gen_crt_frags.CRTBEAMMASSDENS = 73

Definition at line 73 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMSPACING = 92.71

Definition at line 45 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMWEBTHICK = 0.89407

Definition at line 72 of file gen_crt_frags.py.

float gen_crt_frags.CRTBEAMWIDTH = 25.4

Definition at line 70 of file gen_crt_frags.py.

float gen_crt_frags.DCSPACER = 32.6

Definition at line 124 of file gen_crt_frags.py.

int gen_crt_frags.dModH = YD*2

Definition at line 111 of file gen_crt_frags.py.

int gen_crt_frags.feb_id = 0

Definition at line 186 of file gen_crt_frags.py.

float gen_crt_frags.gap = 0.005

Definition at line 55 of file gen_crt_frags.py.

tuple gen_crt_frags.gdml = ET.Element('gdml')

Definition at line 180 of file gen_crt_frags.py.

float gen_crt_frags.ISLANDWIDTH = 118.0

Definition at line 37 of file gen_crt_frags.py.

float gen_crt_frags.IVLENGTH = 1996.0

Definition at line 39 of file gen_crt_frags.py.

float gen_crt_frags.LAYERSPACE = 8.27

Definition at line 114 of file gen_crt_frags.py.

float gen_crt_frags.LEDGERISERHEIGTH = 46.99

Definition at line 43 of file gen_crt_frags.py.

tuple gen_crt_frags.LONGOFF2 = (ISLANDWIDTH+181.8)

Definition at line 126 of file gen_crt_frags.py.

tuple gen_crt_frags.LONGOFF5 = (3*ISLANDWIDTH+481.8)

Definition at line 125 of file gen_crt_frags.py.

tuple gen_crt_frags.m = ET.SubElement(materials, 'element', name='aluminum', formula='Al', Z='13')

now if test mode generate materials, CRT shell, world, gdml header else just generate CRT shell for use with master geometry generator script

Definition at line 1347 of file gen_crt_frags.py.

float gen_crt_frags.MINOSBENDSNOUT = 26.5

Definition at line 80 of file gen_crt_frags.py.

tuple gen_crt_frags.minosCutModLengthNorth = (256.54, 309.9, 309.9, 508.19, 508.19, 508.19)

Definition at line 173 of file gen_crt_frags.py.

tuple gen_crt_frags.minosCutModLengthSoutheast = (497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 497.84)

Definition at line 174 of file gen_crt_frags.py.

tuple gen_crt_frags.minosCutModLengthSouthwest = (497.84, 497.84, 497.84, 497.84, 497.84, 497.84, 325.12, 325.12, 325.12)

Definition at line 175 of file gen_crt_frags.py.

float gen_crt_frags.MINOSLATCENTZ = 0.5

Definition at line 146 of file gen_crt_frags.py.

gen_crt_frags.MINOSLATFIXY = MINOSSOUTHY

Definition at line 141 of file gen_crt_frags.py.

float gen_crt_frags.MINOSLATNORTHZ = 0.5

Definition at line 145 of file gen_crt_frags.py.

float gen_crt_frags.MINOSLATROLLY = MINOSLATFIXY-0.5

Definition at line 142 of file gen_crt_frags.py.

int gen_crt_frags.MINOSLATSOUTHACTIVEOVERHANG = 2

Definition at line 143 of file gen_crt_frags.py.

float gen_crt_frags.MINOSLATSOUTHZ = -0.5

Definition at line 144 of file gen_crt_frags.py.

float gen_crt_frags.MINOSNORTHY = -0.5

Definition at line 176 of file gen_crt_frags.py.

float gen_crt_frags.MINOSSNOUTLENGTH = 0.5

Definition at line 81 of file gen_crt_frags.py.

float gen_crt_frags.MINOSSOUTHY = -0.5

Definition at line 140 of file gen_crt_frags.py.

float gen_crt_frags.MINOSSTRAIGHTSNOUT = 37.5

Definition at line 79 of file gen_crt_frags.py.

int gen_crt_frags.mModH = XM+2

Definition at line 108 of file gen_crt_frags.py.

int gen_crt_frags.mModL = ZM+2

Definition at line 106 of file gen_crt_frags.py.

int gen_crt_frags.mModW = YM*NXM+2

Definition at line 107 of file gen_crt_frags.py.

int gen_crt_frags.mod_id = -1

Definition at line 187 of file gen_crt_frags.py.

tuple gen_crt_frags.modToFeb = dict()

Definition at line 185 of file gen_crt_frags.py.

int gen_crt_frags.nModC = 0

Definition at line 190 of file gen_crt_frags.py.

int gen_crt_frags.nModD = 0

Definition at line 191 of file gen_crt_frags.py.

int gen_crt_frags.nModM = 0

Definition at line 189 of file gen_crt_frags.py.

int gen_crt_frags.NMODSTACK = 9

Definition at line 115 of file gen_crt_frags.py.

int gen_crt_frags.NMODSTACKSOUTHY = 10

Definition at line 116 of file gen_crt_frags.py.

int gen_crt_frags.NSLOPEFRONT = 6

Definition at line 133 of file gen_crt_frags.py.

int gen_crt_frags.NSLOPELAT = 14

Definition at line 132 of file gen_crt_frags.py.

int gen_crt_frags.NTOPX = 6

Definition at line 130 of file gen_crt_frags.py.

int gen_crt_frags.NTOPZ = 14

Definition at line 131 of file gen_crt_frags.py.

int gen_crt_frags.NXC = 8

Definition at line 95 of file gen_crt_frags.py.

int gen_crt_frags.NXD = 32

Definition at line 96 of file gen_crt_frags.py.

int gen_crt_frags.NXM = 20

Definition at line 94 of file gen_crt_frags.py.

float gen_crt_frags.offsetontopmodule = 48.26

Definition at line 61 of file gen_crt_frags.py.

float gen_crt_frags.overlap = 0.0065

Definition at line 54 of file gen_crt_frags.py.

float gen_crt_frags.PADC = 0.1

Definition at line 100 of file gen_crt_frags.py.

float gen_crt_frags.PADD = 0.05

Definition at line 101 of file gen_crt_frags.py.

float gen_crt_frags.PADM = 0.05

Definition at line 99 of file gen_crt_frags.py.

float gen_crt_frags.PADModule = 0.1

Definition at line 102 of file gen_crt_frags.py.

float gen_crt_frags.PADStrip = 0.01

Definition at line 103 of file gen_crt_frags.py.

float gen_crt_frags.PADTagger = 0.001

Definition at line 104 of file gen_crt_frags.py.

tuple gen_crt_frags.posDCInDetEncl = (0,-480.135, 0)

Definition at line 149 of file gen_crt_frags.py.

string gen_crt_frags.posname = 'pos'

Definition at line 1421 of file gen_crt_frags.py.

gen_crt_frags.printModIds = False

Definition at line 28 of file gen_crt_frags.py.

tuple gen_crt_frags.pv = ET.SubElement(w, 'physvol')

Definition at line 1419 of file gen_crt_frags.py.

float gen_crt_frags.separatetwomodule = 0.6

Definition at line 59 of file gen_crt_frags.py.

tuple gen_crt_frags.setup = ET.SubElement(gdml, 'setup', name='Default', version='1.0')

Definition at line 1423 of file gen_crt_frags.py.

float gen_crt_frags.SHELLWVOFFSET = SHELLZ*0.5

Definition at line 165 of file gen_crt_frags.py.

float gen_crt_frags.SHELLY = 1.1

Definition at line 138 of file gen_crt_frags.py.

float gen_crt_frags.SHELLZ = 1.01

Definition at line 164 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTNORTHWALLTOFLOOR = 152.2

Definition at line 120 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTPOSTSPACING = 4.13

Definition at line 50 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTPOSTWIDTH = 4.13

Definition at line 49 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTROLLOFFSET = 44.29

Definition at line 119 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTSHELFTHICK = 0.56

Definition at line 52 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTSOUTHWALLLATOFFSET = 1.1

Definition at line 121 of file gen_crt_frags.py.

int gen_crt_frags.SIDECRTSTACKDEPTH = 3

Definition at line 51 of file gen_crt_frags.py.

float gen_crt_frags.SIDECRTWVOFFSET = 4.13

Definition at line 48 of file gen_crt_frags.py.

float gen_crt_frags.SLIDERSPACE = 18.5

Definition at line 117 of file gen_crt_frags.py.

float gen_crt_frags.SLOPEINCLINATION = 90.0

Definition at line 134 of file gen_crt_frags.py.

tuple gen_crt_frags.solids = ET.SubElement(gdml, 'solids')

Definition at line 182 of file gen_crt_frags.py.

dictionary gen_crt_frags.solids_store = {}

Definition at line 184 of file gen_crt_frags.py.

float gen_crt_frags.STACKOVERLAP = 50.0

Definition at line 118 of file gen_crt_frags.py.

tuple gen_crt_frags.structure = ET.SubElement(gdml, 'structure')

Definition at line 183 of file gen_crt_frags.py.

gen_crt_frags.testmode = False

Definition at line 27 of file gen_crt_frags.py.

float gen_crt_frags.TOPCRTBEAMTOFLOOR = 970.8

Definition at line 44 of file gen_crt_frags.py.

float gen_crt_frags.TOPLEDGERISERTOFLOOR = 991.9

Definition at line 42 of file gen_crt_frags.py.

float gen_crt_frags.verticalmodule = 485.14

Definition at line 62 of file gen_crt_frags.py.

tuple gen_crt_frags.w = ET.SubElement(structure, 'volume', name='volWorld')

Definition at line 1416 of file gen_crt_frags.py.

tuple gen_crt_frags.ws = ET.SubElement(solids, 'box', name='World', lunit="cm", x='1500', y='1500', z='3000')

Definition at line 1415 of file gen_crt_frags.py.

float gen_crt_frags.WVFOOTELEVATION = 10.16

Definition at line 36 of file gen_crt_frags.py.

float gen_crt_frags.WVHEIGHT = 627.4

Definition at line 34 of file gen_crt_frags.py.

float gen_crt_frags.WVLENGTH = 2268.8

Definition at line 35 of file gen_crt_frags.py.

float gen_crt_frags.WVWIDTH = 1031.8

Parameters ##################### warm vessel (cm), increased as of 7/19/2019 to reflect full extent of WV profile in detector hall.

Definition at line 33 of file gen_crt_frags.py.

float gen_crt_frags.XC = 23.0

Definition at line 84 of file gen_crt_frags.py.

float gen_crt_frags.XD = 5.0

Definition at line 89 of file gen_crt_frags.py.

float gen_crt_frags.XM = 1.0

Definition at line 78 of file gen_crt_frags.py.

float gen_crt_frags.YCBOT = 1.5

Definition at line 87 of file gen_crt_frags.py.

float gen_crt_frags.YCTOP = 1.0

Definition at line 86 of file gen_crt_frags.py.

float gen_crt_frags.YD = 1.0

Definition at line 91 of file gen_crt_frags.py.

float gen_crt_frags.YM = 4.1

Definition at line 76 of file gen_crt_frags.py.

float gen_crt_frags.ZC = 184.0

Definition at line 85 of file gen_crt_frags.py.

float gen_crt_frags.ZD = 322.5

Definition at line 90 of file gen_crt_frags.py.

float gen_crt_frags.ZM = 800.0

Definition at line 77 of file gen_crt_frags.py.