diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c1242935..39aa69e9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -96,6 +96,13 @@ jobs: do root "gdml2root.C(\"$F\", \"jsroot/${F%.gdml}.root\")" done + - name: Add files to dropdown menu + run: | + for F in *.gdml + do + sed -i -e "s||${F%.gdml}.root;|" jsroot/jsroot.htm + done + sed -i -e "s|;||" jsroot/jsroot.htm - name: Replace heading in html run: | sed -i -e "s|master|$GITHUB_REF_NAME|" jsroot/index.htm diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cd97337..8ad57dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ These geometry releases were tagged as `Descriptive_tag_v_X.Y.Z`. ### Changed - Removed the stale SAND tracker geometry options from the default `sandopt` list. Only the supported full STT, full Drift-Chamber and Initial STT geometries are now built. +- Updated TMS cassette ordering to the final design (50 X, 32 Y; 8×(X+Y) + 22×(X+X+Y)) ## [v2025.08.11] diff --git a/duneggd/Config/TMS.cfg b/duneggd/Config/TMS.cfg index 2b03bcd7..2bd60eac 100644 --- a/duneggd/Config/TMS.cfg +++ b/duneggd/Config/TMS.cfg @@ -15,15 +15,26 @@ BFieldDownHigh = '(0.0 T, 1.0 T, 0 T)' Module_layers_thin=34 Module_layers_thick=22 -Module_layers_double=25 +Module_layers_double=25 -# c,d geometries -thin_horizontal = [1, 4, 7, 14, 21, 28] -thick_horizontal = [0, 7, 14,21] -double_horizontal = [6, 13,20,24] +#Default, orhogonal design, 8*(X+Y) + 22*(X+X+Y) cassettes. +thin_horizontal = [1,3,5,7,9,11,13,15,18,21,24,27,30,33] +thick_horizontal = [1,4,7,10,13,16,19] +double_horizontal = [0,3,6,9,12,15,18,21,24] +thin_vertical = [2, 4, 6, 8, 10, 12, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34] #vertical bars +thick_vertical = [0, 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21] +double_vertical = [1, 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23] + +# PDR test c,d geometries +#thin_horizontal = [1, 4, 7, 14, 21, 28] +#thick_horizontal = [0, 7, 14,21] +#double_horizontal = [6, 13,20,24] thin_U = [2, 5, 8, 10, 12, 15, 17, 19, 22, 24, 26, 29, 31, 33] thick_U = [1, 3, 5, 8, 10, 12, 15, 17, 19] double_U = [0, 2, 4, 7, 9, 11, 14, 16, 18,21,23] thin_V = [3, 6, 9, 11, 13, 16, 18, 20, 23, 25, 27, 30, 32, 34] thick_V = [2, 4, 6, 9, 11, 13, 16, 18, 20] double_V = [1, 3, 5, 8, 10, 12, 15, 17,19, 22] + + + diff --git a/duneggd/SubDetector/TMS.py b/duneggd/SubDetector/TMS.py index 0d8b67ad..73e863f9 100644 --- a/duneggd/SubDetector/TMS.py +++ b/duneggd/SubDetector/TMS.py @@ -4,7 +4,7 @@ from gegede import Quantity as Q global Pos class tmsBuilder(gegede.builder.Builder): - def configure(self, mat=None, thinbox1Dimension=None, gapPosition=None, BFieldUpLow = None, BFieldUpHigh = None, BFieldDownLow = None , BFieldDownHigh = None, thin_horizontal=None, thick_horizontal=None, double_horizontal=None, thin_U=None, thick_U=None, double_U=None, thin_V=None, thick_V=None, double_V=None, **kwds): + def configure(self, mat=None, thinbox1Dimension=None, gapPosition=None, BFieldUpLow = None, BFieldUpHigh = None, BFieldDownLow = None , BFieldDownHigh = None, thin_horizontal=None, thick_horizontal=None, double_horizontal=None, thin_U=None, thick_U=None, double_U=None, thin_V=None, thick_V=None, double_V=None, thin_vertical=None, thick_vertical=None, double_vertical=None, **kwds): self.BFieldUpLow = BFieldUpLow self.BFieldUpHigh = BFieldUpHigh self.BFieldDownLow = BFieldDownLow @@ -21,15 +21,18 @@ def configure(self, mat=None, thinbox1Dimension=None, gapPosition=None, BFieldUp self.thin_V = thin_V self.thick_V = thick_V self.double_V = double_V + self.thin_vertical = thin_vertical + self.thick_vertical = thick_vertical + self.double_vertical = double_vertical def construct(self, geom): - six_width = False #6m - hybrid = False #6m, 4.2c, UVX set by rules in TMS.cfg - XY = False #6m, 4.2d, XY UVX set by rules in TMS.cfg - PDR_3_2b = True #7m, 3.2b, UVXUVXUVX... + six_width = False #6m wide configuration + hybrid = False # 4.2c (stereo): double scintillator layers (U,V) placed, before the first steel plate and subsequently according to TMS.cfg rules + XY = True # 4.2d (orthogonal): double scintillator layers (X,Y) placed, before the first steel plate and subsequently according to TMS.cfg rules + PDR_3_2b = False # 7 m configuration, PDR 3.2b: repeating UVX pattern (UVXUVXUVX...) #Make Boxes for steel and logical volumes @@ -560,6 +563,7 @@ def construct(self, geom): tms_lv.placements.append(thin_Modlayer_pla_first[module].name) elif XY: + # Very first layer consist of Y X before the first steel plate to improve matching performace. thinModlayer_pos_first = [geom.structure.Position('q')]*(Module_layers_thin+1) thin_Modlayer_pla_first = [geom.structure.Placement('r',volume=Module_layer_lv4,pos=thinModlayer_pos[1])]*(Module_layers_thin+1) zpos = -Q("3.650m") -Q("0.0325m") -Q("0.065m") # first layer of thin steel - half plane thickness + plane thickness @@ -580,9 +584,7 @@ def construct(self, geom): #4_2d if module in self.thin_horizontal: thin_Modlayer_pla_first[module] = geom.structure.Placement( 'thinModlayerpla'+self.name+str(module), volume=Module_layer_lv3, pos=thinModlayer_pos_first[module] )#x - if module in self.thin_U: - thin_Modlayer_pla_first[module] = geom.structure.Placement( 'thinModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=thinModlayer_pos_first[module] )#y - if module in self.thin_V: + if module in self.thin_vertical: thin_Modlayer_pla_first[module] = geom.structure.Placement( 'thinModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=thinModlayer_pos_first[module] )#y tms_lv.placements.append(thin_Modlayer_pla_first[module].name) @@ -630,9 +632,7 @@ def construct(self, geom): #4_2d if module in self.thick_horizontal: thick_Modlayer_pla[module] = geom.structure.Placement( 'thickModlayerpla'+self.name+str(module), volume=Module_layer_lv3, pos=thickModlayer_pos[module] )#x - if module in self.thick_U: - thick_Modlayer_pla[module] = geom.structure.Placement( 'thickModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=thickModlayer_pos[module] ) - if module in self.thick_V: + if module in self.thick_vertical: thick_Modlayer_pla[module] = geom.structure.Placement( 'thickModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=thickModlayer_pos[module] ) elif PDR_3_2b: #3_2b @@ -670,9 +670,7 @@ def construct(self, geom): #XY version (XY) if module in self.double_horizontal: double_Modlayer_pla[module] = geom.structure.Placement( 'doubleModlayerpla'+self.name+str(module), volume=Module_layer_lv3, pos=doubleModlayer_pos[module] ) - if module in self.double_U: - double_Modlayer_pla[module] = geom.structure.Placement( 'doubleModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=doubleModlayer_pos[module] ) - if module in self.double_V: + if module in self.double_vertical: double_Modlayer_pla[module] = geom.structure.Placement( 'doubleModlayerpla'+self.name+str(module), volume=Module_layer_lv4, pos=doubleModlayer_pos[module] ) elif PDR_3_2b: #UVX diff --git a/jsroot/jsroot.htm b/jsroot/jsroot.htm index 1848f04c..3ccf719b 100644 --- a/jsroot/jsroot.htm +++ b/jsroot/jsroot.htm @@ -15,7 +15,7 @@ -
+
loading scripts ...