diff --git a/DetectorDescription/GeoModel/AtlasGeoModel/python/ITkGMConfig.py b/DetectorDescription/GeoModel/AtlasGeoModel/python/ITkGMConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..e2d6029d78f1014f52ce1d32f24169fd43d3af15 --- /dev/null +++ b/DetectorDescription/GeoModel/AtlasGeoModel/python/ITkGMConfig.py @@ -0,0 +1,58 @@ +# +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +def ITkGeometryCfg (flags): + acc = ComponentAccumulator() + GeometryDBSvc=CompFactory.GeometryDBSvc + acc.addService(GeometryDBSvc("InDetGeometryDBSvc")) #Beampipe builder expects "InDet" rather than "ITk" - can this be steered? + if flags.Detector.GeometryITkPixel: + #Need new module in PixelGeoModelXml to import here once it exists... + #from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg + #acc.merge(PixelGeometryCfg( flags )) + print("ITk Pixel not yet supported in this release...") + if flags.Detector.GeometryITkStrip: + from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripGeometryCfg + acc.merge(ITkStripGeometryCfg( flags )) + return acc + + +if __name__ == "__main__": + from AthenaCommon.Logging import log + from AthenaCommon.Constants import DEBUG + from AthenaCommon.Configurable import Configurable + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + # Set up logging and new style config + log.setLevel(DEBUG) + Configurable.configurableRun3Behavior = True + from AthenaConfiguration.TestDefaults import defaultTestFiles + # Provide MC input + ConfigFlags.Input.Files = defaultTestFiles.HITS + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-MC16-SDR-16" + ConfigFlags.Detector.SimulateITkPixel = True + ConfigFlags.Detector.SimulateITkStrip = True + ConfigFlags.GeoModel.Align.Dynamic = False + # Provide data input + ##from AthenaConfiguration.TestDefaults import defaultTestFiles + ##ConfigFlags.Input.Files = defaultTestFiles.AOD + ##ConfigFlags.GeoModel.Align.Dynamic = True + # + ConfigFlags.lock() + # Construct ComponentAccumulator + acc = MainServicesCfg(ConfigFlags) + acc.merge(PoolReadCfg(ConfigFlags)) + acc.merge(ITkGeometryCfg(ConfigFlags)) # FIXME This sets up the whole ID geometry would be nicer just to set up min required + #acc.getService("StoreGateSvc").Dump=True + acc.getService("ConditionStore").Dump=True + acc.printConfig(withDetails=True) + f=open('ITkGMCfg2.pkl','wb') + acc.store(f) + f.close() + ConfigFlags.dump() + # Execute and finish + acc.run(maxEvents=3) diff --git a/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGM.py b/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGM.py index c14ad63f8d90dce0ddff05a071383356aef7b126..7f1952dc4e11e0edcc3de97254c66875f66db672 100755 --- a/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGM.py +++ b/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGM.py @@ -25,12 +25,6 @@ elif ( DetFlags.detdescr.ID_on() ): if not hasattr(svcMgr,'InDetGeometryDBSvc'): from GeometryDBSvc.GeometryDBSvcConf import GeometryDBSvc svcMgr+=GeometryDBSvc("InDetGeometryDBSvc") - if InDetGeometryFlags.isSLHC(): - #SLHC specific code - # General service builder tool for SLHC - from InDetServMatGeoModel.InDetServMatGeoModelConf import InDetServMatBuilderToolSLHC - InDetServMatBuilderToolSLHC = InDetServMatBuilderToolSLHC() - ToolSvc+=InDetServMatBuilderToolSLHC if ( DetFlags.detdescr.pixel_on() ): from AthenaCommon import CfgGetter diff --git a/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGMConfig.py b/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGMConfig.py index 29f7eb6d6f3e8d00393482afe661bc8448a043f6..69f8b841d8fb76ed68b178be47824ea6c3866b99 100644 --- a/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGMConfig.py +++ b/DetectorDescription/GeoModel/AtlasGeoModel/python/InDetGMConfig.py @@ -13,11 +13,6 @@ def InDetServiceMaterialCfg (flags): acc.addService(GeometryDBSvc("InDetGeometryDBSvc")) InDetServMatTool=CompFactory.InDetServMatTool servMatTool = InDetServMatTool() - if flags.GeoModel.Run=="RUN4": - InDetServMatBuilderToolSLHC=CompFactory.InDetServMatBuilderToolSLHC - InDetServMatBuilderToolSLHC = InDetServMatBuilderToolSLHC() - acc.addPublicTool( InDetServMatBuilderToolSLHC ) - servMatTool.ServiceBuilderTool = InDetServMatBuilderToolSLHC geoModelSvc.DetectorTools += [ servMatTool ] acc.addService(geoModelSvc) return acc diff --git a/DetectorDescription/IdDictParser/data/IdDictLArCalorimeter_HGTD_TDR_01.xml b/DetectorDescription/IdDictParser/data/IdDictLArCalorimeter_HGTD_TDR_01.xml new file mode 100644 index 0000000000000000000000000000000000000000..2108db54616bdc5d9f2f22f5af55163c20b46613 --- /dev/null +++ b/DetectorDescription/IdDictParser/data/IdDictLArCalorimeter_HGTD_TDR_01.xml @@ -0,0 +1,1127 @@ +<IdDictionary name="LArCalorimeter" version="fullAtlas" > + + <field name="part" > + <label name="LArEM" value="1" /> + <label name="LArHEC" value="2" /> + <label name="LArFCAL" value="3" /> + <label name="LArOnline" value="4" /> + <label name="LArOnlineCalib" value="5" /> + <label name="LArEMdisc" value="-1" /> + <label name="HGTD" value="-2" /> + <label name="LArFCALdisc" value="-3" /> + </field> + + <field name="barrel-endcap"> + <label name="negative-endcap-inner-wheel" value="-3" /> + <label name="negative-endcap-outer-wheel" value="-2" /> + <label name="negative-barrel" value="-1" /> + <label name="barrel" value="0" /> + <label name="positive-barrel" value="+1" /> + <label name="positive-endcap-outer-wheel" value="+2" /> + <label name="positive-endcap-inner-wheel" value="+3" /> + <label name="negative-endcap-hgtd" value="-1" /> + <label name="positive-endcap-hgtd" value="1" /> + </field> + + <field name="barrel-ec"> + <label name="barrel" value="0" /> + <label name="endcap" value="1" /> + </field> + + <field name="pos_neg"> + <label name="negative-side" value="0" /> + <label name="positive-side" value="1" /> + </field> + + <field name="is-slar"> + <label name="cell" value="0" /> + <label name="slar" value="1" /> + </field> + + <field name="is-slar-hec"> + <label name="cell" value="0" /> + <label name="slar" value="1" /> + </field> + + <field name="is-slar-fcal"> + <label name="cell" value="0" /> + <label name="slar" value="1" /> + </field> + + <field name="granularity"> + <label name="coarse" value="0" /> + <label name="fine" value="1" /> + </field> + + <subregion name="LArFCAL-module" > + <range field="phi-fcal" minvalue="0" maxvalue="15" wraparound="TRUE" /> + </subregion> + + <subregion name="LArEM-extralarge-module" > + <range field="phi" minvalue="0" maxvalue="31" wraparound="TRUE" /> + </subregion> + + <subregion name="LArEM-large-module" > + <range field="phi" minvalue="0" maxvalue="63" wraparound="TRUE" /> + </subregion> + + <subregion name="LArEM-thin-module" > + <range field="phi" minvalue="0" maxvalue="255" wraparound="TRUE" /> + </subregion> + + + + <!-- s HGTD --> + <!-- we misuse eta0, deta as x0, dx --> + <!-- we misuse phi0, dphi as y0, dy --> + <!-- since we have 4 quadrants we need 1200 numbers and start at 1 --> + <!-- for the future use only the real cells --> + <region group="hgtd" name="HGTD-wheel" + eta0="0.0" + phi0="0.0" + deta="0.5" + dphi="0.5" + > + <range field="part" value="HGTD" /> + <range field="barrel-endcap" values="negative-endcap-hgtd positive-endcap-hgtd"/> + <range field="sampling" minvalue="0" maxvalue="3" /> + <range field="granularity" value="coarse" /> + <range field="x_index" minvalue="-700" maxvalue="700" /> + <range field="y_index" minvalue="-700" maxvalue="700" /> + </region> + +<!-- we will need this for later + <region group="hgtdCaloCell" name="HGTD-wheel" + eta0="0.0" + phi0="0.0" + deta="0.5" + dphi="0.5" + > + <range field="part" value="HGTD" /> + <range field="barrel-endcap" values="negative-endcap-hgtd positive-endcap-hgtd"/> + <range field="sampling" minvalue="0" maxvalue="3" /> + <range field="granularity" value="fine" /> + <range field="xCaloCell_index" minvalue="-300" maxvalue="300" /> + <range field="yCaloCell_index" minvalue="-300" maxvalue="300" /> + </region> +--> + + <!-- EM Barrel --> + + <subregion name="LArEM-barrel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-barrel positive-barrel" /> + </subregion> + + <region group="lar_em" name="LArEM-barrel-00" + next_samp="LArEM-barrel-10 LArEM-barrel-11" + next_subdet="LArEM-outer-wheel-10 LArEM-outer-wheel-00" + eta0="0.0" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="60" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-barrel-10" next_abs_eta="LArEM-barrel-11" + prev_samp="LArEM-barrel-00" + next_samp="LArEM-barrel-20" + eta0="0.003125" deta="0.003125" phi0="0.0" dphi="64" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" minvalue="1" maxvalue="447" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-barrel-11" + prev_samp="LArEM-barrel-00" + next_samp="LArEM-barrel-21" + eta0="1.4" deta="0.025" phi0="0.0" dphi="256" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-barrel-20" next_abs_eta="LArEM-barrel-21" + prev_samp="LArEM-barrel-10" + next_samp="LArEM-barrel-30" + eta0="0.0" deta="0.025" phi0="0.0" dphi="256" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="55" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-barrel-21" + prev_samp="LArEM-barrel-11" + next_subdet="LArEM-outer-wheel-10" + eta0="1.4" deta="0.075" phi0="0.0" dphi="256" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-barrel-30" + prev_samp="LArEM-barrel-20" eta0="0.0" deta="0.05" phi0="0.0" dphi="256" > + <reference subregion="LArEM-barrel" /> + <range field="sampling" value="3" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="26" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- EM Barrel sCells --> + + <subregion name="sLArEM-barrel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-barrel positive-barrel" /> + </subregion> + + <region group="slar_em" name="sLArEM-barrel-00" + next_samp="sLArEM-barrel-10 sLArEM-barrel-11" + next_subdet="sLArEM-outer-wheel-10 sLArEM-outer-wheel-00" + eta0="0.0" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="14" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-barrel-10" next_abs_eta="sLArEM-barrel-11" + prev_samp="sLArEM-barrel-00" + next_samp="sLArEM-barrel-20" + eta0="0.0" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="55" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-barrel-11" + prev_samp="sLArEM-barrel-00" + next_samp="sLArEM-barrel-21" + eta0="1.4" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-barrel-20" next_abs_eta="sLArEM-barrel-21" + prev_samp="sLArEM-barrel-10" + next_samp="sLArEM-barrel-30" + eta0="0.0" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="55" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-barrel-21" + prev_samp="sLArEM-barrel-11" + next_subdet="sLArEM-outer-wheel-10" + eta0="1.4" deta="0.075" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-barrel-30" + prev_samp="sLArEM-barrel-20" eta0="0.0" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-barrel" /> + <range field="sampling" value="3" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="13" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + + <!-- EM outer wheel --> + + <subregion name="LArEM-outer-wheel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="lar_em" name="LArEM-outer-wheel-00" + next_samp="LArEM-outer-wheel-12" + prev_subdet="LArEM-barrel-00" + eta0="1.5" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="11" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-10" next_abs_eta="LArEM-outer-wheel-11" + next_samp="LArEM-outer-wheel-20" + prev_subdet="LArEM-barrel-00 LArEM-barrel-21" + eta0="1.375" deta="0.05" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-11" next_abs_eta="LArEM-outer-wheel-12" + next_samp="LArEM-outer-wheel-21" eta0="1.425" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-12" next_abs_eta="LArEM-outer-wheel-13" + prev_samp="LArEM-outer-wheel-00" + next_samp="LArEM-outer-wheel-21" eta0="1.5" deta="0.003125" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="2" /> + <range field="eta" minvalue="0" maxvalue="95" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-13" next_abs_eta="LArEM-outer-wheel-14" + next_samp="LArEM-outer-wheel-21" eta0="1.8" deta="0.0041666666667" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="3" /> + <range field="eta" minvalue="0" maxvalue="47" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-14" next_abs_eta="LArEM-outer-wheel-15" + next_samp="LArEM-outer-wheel-21" eta0="2.0" deta="0.00625" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="4" /> + <range field="eta" minvalue="0" maxvalue="63" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-15" + next_samp="LArEM-outer-wheel-21" eta0="2.4" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="5" /> + <range field="eta" minvalue="0" maxvalue="3" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-20" next_abs_eta="LArEM-outer-wheel-21" + prev_samp="LArEM-outer-wheel-10" eta0="1.375" deta="0.05" phi0="0.0" dphi="256" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-21" next_abs_eta="LArEM-inner-wheel-10" + prev_samp="LArEM-outer-wheel-11 LArEM-outer-wheel-12 LArEM-outer-wheel-13 LArEM-outer-wheel-14 LArEM-outer-wheel-15" + next_samp="LArEM-outer-wheel-30" eta0="1.425" deta="0.025" phi0="0.0" dphi="256" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="42" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-30" next_abs_eta="LArEM-inner-wheel-20" + prev_samp="LArEM-outer-wheel-21" eta0="1.5" deta="0.05" phi0="0.0" dphi="256" > + <reference subregion="LArEM-outer-wheel" /> + <range field="sampling" value="3" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="19" /> + <reference subregion="LArEM-thin-module" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- s EM outer wheel --> + + <subregion name="sLArEM-outer-wheel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="slar_em" name="sLArEM-outer-wheel-00" + next_samp="sLArEM-outer-wheel-12" + prev_subdet="sLArEM-barrel-00" + eta0="1.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-10" next_abs_eta="sLArEM-outer-wheel-20" + next_samp="sLArEM-outer-wheel-20" + eta0="1.375" deta="0.125" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-12" next_abs_eta="sLArEM-outer-wheel-13" + prev_samp="sLArEM-outer-wheel-00" + next_samp="sLArEM-outer-wheel-21" eta0="1.5" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="2" /> + <range field="eta" minvalue="0" maxvalue="11" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-13" next_abs_eta="sLArEM-outer-wheel-14" + next_samp="sLArEM-outer-wheel-21" eta0="1.8" deta="0.016666667" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="3" /> + <range field="eta" minvalue="0" maxvalue="11" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-14" next_abs_eta="sLArEM-outer-wheel-15" + next_samp="sLArEM-outer-wheel-21" eta0="2.0" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="4" /> + <range field="eta" minvalue="0" maxvalue="15" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-15" + next_samp="sLArEM-outer-wheel-21" eta0="2.4" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="5" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-20" next_abs_eta="sLArEM-outer-wheel-21" + prev_samp="sLArEM-outer-wheel-10" eta0="1.375" deta="0.05" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-21" next_abs_eta="sLArEM-inner-wheel-10" + prev_samp="sLArEM-outer-wheel-10 sLArEM-outer-wheel-12 sLArEM-outer-wheel-13 sLArEM-outer-wheel-14 sLArEM-outer-wheel-15" + next_samp="sLArEM-outer-wheel-30" eta0="1.425" deta="0.025" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="42" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-outer-wheel-30" next_abs_eta="sLArEM-inner-wheel-20" + prev_samp="sLArEM-outer-wheel-21" eta0="1.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArEM-outer-wheel" /> + <range field="sampling" value="3" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="slar" /> + </region> + + + + + <!-- EM inner wheel --> + + <subregion name="LArEM-inner-wheel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-endcap-inner-wheel positive-endcap-inner-wheel" /> + </subregion> + + <region group="lar_em" name="LArEM-inner-wheel-10" + next_samp="LArEM-inner-wheel-20" eta0="2.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArEM-inner-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="6" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="lar_em" name="LArEM-inner-wheel-20" + prev_samp="LArEM-inner-wheel-10" eta0="2.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArEM-inner-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="6" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- sEM inner wheel --> + + <subregion name="sLArEM-inner-wheel" > + <range field="part" value="LArEM" /> + <range field="barrel-endcap" values="negative-endcap-inner-wheel positive-endcap-inner-wheel" /> + </subregion> + + <region group="slar_em" name="sLArEM-inner-wheel-10" + next_abs_eta="sLArEM-inner-wheel-11" + next_samp="sLArEM-inner-wheel-20" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="sLArEM-inner-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-inner-wheel-11" + next_samp="sLArEM-inner-wheel-21" eta0="3.1" deta="0.1" phi0="0.0" dphi="32" > + <reference subregion="sLArEM-inner-wheel" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar" value="slar" /> + </region> + + + <region group="slar_em" name="sLArEM-inner-wheel-20" + next_abs_eta="sLArEM-inner-wheel-21" + prev_samp="sLArEM-inner-wheel-10" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="sLArEM-inner-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="slar_em" name="sLArEM-inner-wheel-21" + prev_samp="sLArEM-inner-wheel-11" eta0="3.1" deta="0.1" phi0="0.0" dphi="32" > + <reference subregion="sLArEM-inner-wheel" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar" value="slar" /> + </region> + + + + <!-- + + LArHEC + + --> + + <subregion name="LArHEC" > + <range field="part" value="LArHEC" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="lar_hec" name="LArHEC-00" next_abs_eta="LArHEC-01" + next_samp="LArHEC-10" eta0="1.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArHEC" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-10" next_abs_eta="LArHEC-11" + next_samp="LArHEC-20" prev_samp="LArHEC-00" eta0="1.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArHEC" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-20" next_abs_eta="LArHEC-21" + next_samp="LArHEC-30" prev_samp="LArHEC-10" eta0="1.6" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArHEC" /> + <range field="sampling" values="2" /> + <range field="region" value="0" /> + <range field="eta" minvalue="1" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-30" next_abs_eta="LArHEC-31" + prev_samp="LArHEC-20" eta0="1.7" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="LArHEC" /> + <range field="sampling" values="3" /> + <range field="region" value="0" /> + <range field="eta" minvalue="2" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-01" + next_samp="LArHEC-11" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="LArHEC" /> + <range field="sampling" value="0" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="3" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-11" next_abs_eta="LArFCAL-1" + next_samp="LArHEC-21" prev_samp="LArHEC-01" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="LArHEC" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-21" + next_samp="LArHEC-31" prev_samp="LArHEC-11" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="LArHEC" /> + <range field="sampling" value="2" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="2" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + <region group="lar_hec" name="LArHEC-31" + prev_samp="LArHEC-21" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="LArHEC" /> + <range field="sampling" value="3" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="3" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar-hec" value="cell" /> + </region> + + + + + <!-- + + LArHEC supercells + + --> + + <subregion name="sLArHEC" > + <range field="part" value="LArHEC" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="slar_hec" name="sLArHEC-0" next_abs_eta="sLArHEC-1" + eta0="1.5" deta="0.1" phi0="0.0" dphi="64" > + <reference subregion="sLArHEC" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="0" maxvalue="9" /> + <reference subregion="LArEM-large-module" /> + <range field="is-slar-hec" value="slar" /> + </region> + + <region group="slar_hec" name="LArHEC-1" + next_samp="LArHEC-1" eta0="2.5" deta="0.2" phi0="0.0" dphi="32" > + <reference subregion="sLArHEC" /> + <range field="sampling" value="0" /> + <range field="region" value="1" /> + <range field="eta" minvalue="0" maxvalue="3" /> + <reference subregion="LArEM-extralarge-module" /> + <range field="is-slar-hec" value="slar" /> + </region> + + + + <!-- + + LArFCAL + + --> + + <subregion name="LArFCAL" > + <range field="part" value="LArFCAL" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="lar_fcal" name="LArFCAL-1" + eta0="3.2" deta="0.025" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="1" /> + <range field="eta-fcal" minvalue="0" maxvalue="62" /> + <reference subregion="LArFCAL-module" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-2a" + eta0="3.2" deta="0.05" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="2" /> + <range field="eta-fcal" minvalue="0" maxvalue="29" /> + <range field="phi-fcal" values="0 7 8 15" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-2b" + eta0="3.2" deta="0.05" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="2" /> + <range field="eta-fcal" minvalue="0" maxvalue="30" /> + <range field="phi-fcal" values="3 4 11 12" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-2c" + eta0="3.2" deta="0.05" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="2" /> + <range field="eta-fcal" minvalue="0" maxvalue="31" /> + <range field="phi-fcal" values="1 2 5 6 9 10 13 14" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-3a" + eta0="3.2" deta="0.1" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="3" /> + <range field="eta-fcal" minvalue="0" maxvalue="14" /> + <range field="phi-fcal" values="2 10" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-3b" + eta0="3.2" deta="0.1" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="3" /> + <range field="eta-fcal" minvalue="0" maxvalue="14" /> + <range field="phi-fcal" values="0 1 3 4 5 6 7 8 9 11 12 13 14 15" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + <region group="lar_fcal" name="LArFCAL-3c" + eta0="3.2" deta="0.1" phi0="0.0" dphi="16" > + <reference subregion="LArFCAL" /> + <range field="module" value="3" /> + <range field="eta-fcal" value="15" /> + <range field="phi-fcal" values="0 1 2 3 4 6 7 8 9 10 11 12 14 15" /> + <range field="is-slar-fcal" value="cell"/> + </region> + + + + <!-- + + LArFCAL sCells + + --> + + <subregion name="sLArFCAL" > + <range field="part" value="LArFCAL" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="slar_fcal" name="sLArFCAL-1" + eta0="3.2" deta="0.14" phi0="0.0" dphi="16" > + <reference subregion="sLArFCAL" /> + <range field="module" value="1" /> + <range field="eta-fcal" minvalue="0" maxvalue="11" /> + <reference subregion="LArFCAL-module" /> + <range field="is-slar-fcal" value="slar" /> + </region> + + <region group="slar_fcal" name="sLArFCAL-2" + eta0="3.2" deta="0.16" phi0="0.0" dphi="16" > + <reference subregion="sLArFCAL" /> + <range field="module" value="2" /> + <range field="eta-fcal" minvalue="0" maxvalue="7" /> + <range field="phi-fcal" minvalue="0" maxvalue="15" /> + <range field="is-slar-fcal" value="slar" /> + </region> + + <region group="slar_fcal" name="sLArFCAL-3" + eta0="3.2" deta="0.32" phi0="0.0" dphi="16" > + <reference subregion="sLArFCAL" /> + <range field="module" value="3" /> + <range field="eta-fcal" minvalue="0" maxvalue="3" /> + <range field="phi-fcal" minvalue="0" maxvalue="15" /> + <range field="is-slar-fcal" value="slar" /> + </region> + + + <!-- + + Disconnected Channels + + --> + + <subregion name="LArEM-barreldisc" > + <range field="part" value="LArEMdisc" /> + <range field="barrel-endcap" values="negative-barrel positive-barrel" /> + </subregion> + + <region group="lar_em" name="LArEM-barrel-00disconnected" > + <reference subregion="LArEM-barreldisc" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="61" maxvalue="63" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-barrel-10disconnected" > + <reference subregion="LArEM-barreldisc" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" value="0" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-barrel-30disconnected" > + <reference subregion="LArEM-barreldisc" /> + <range field="sampling" value="3" /> + <range field="region" value="0" /> + <range field="eta" value="27" /> + <reference subregion="LArEM-thin-module" /> + </region> + + + <subregion name="LArEM-outer-wheeldisc" > + <range field="part" value="LArEMdisc" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="lar_em" name="LArEM-outer-wheel-00disconnected" > + <reference subregion="LArEM-outer-wheeldisc" /> + <range field="sampling" value="0" /> + <range field="region" value="0" /> + <range field="eta" minvalue="12" maxvalue="19" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-11disconnected" > + <reference subregion="LArEM-outer-wheeldisc" /> + <range field="sampling" value="1" /> + <range field="region" value="1" /> + <range field="eta" minvalue="3" maxvalue="6" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-13disconnected" > + <reference subregion="LArEM-outer-wheeldisc" /> + <range field="sampling" value="1" /> + <range field="region" value="3" /> + <range field="eta" minvalue="48" maxvalue="63" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-outer-wheel-15disconnected" > + <reference subregion="LArEM-outer-wheeldisc" /> + <range field="sampling" value="1" /> + <range field="region" value="5" /> + <range field="eta" minvalue="4" maxvalue="7" /> + <reference subregion="LArEM-large-module" /> + </region> + + + <subregion name="LArEM-inner-wheeldisc" > + <range field="part" value="LArEMdisc" /> + <range field="barrel-endcap" values="negative-endcap-inner-wheel positive-endcap-inner-wheel" /> + </subregion> + + <region group="lar_em" name="LArEM-inner-wheel-10disconnected" > + <reference subregion="LArEM-inner-wheeldisc" /> + <range field="sampling" value="1" /> + <range field="region" value="0" /> + <range field="eta" value="7" /> + <reference subregion="LArEM-large-module" /> + </region> + + <region group="lar_em" name="LArEM-inner-wheel-20disconnected" > + <reference subregion="LArEM-inner-wheeldisc" /> + <range field="sampling" value="2" /> + <range field="region" value="0" /> + <range field="eta" value="7" /> + <reference subregion="LArEM-large-module" /> + </region> + + + <subregion name="LArFCALdisc" > + <range field="part" value="LArFCALdisc" /> + <range field="barrel-endcap" values="negative-endcap-outer-wheel positive-endcap-outer-wheel" /> + </subregion> + + <region group="lar_fcal" name="LArFCAL-1disconnected" > + <reference subregion="LArFCALdisc" /> + <range field="module" value="1" /> + <range field="eta-fcal" value="63" /> + <reference subregion="LArFCAL-module" /> + </region> + + <region group="lar_fcal" name="LArFCAL-2adisconnected" > + <reference subregion="LArFCALdisc" /> + <range field="module" value="2" /> + <range field="eta-fcal" minvalue="30" maxvalue="31" /> + <range field="phi-fcal" values="0 7 8 15" /> + </region> + + <region group="lar_fcal" name="LArFCAL-2bdisconnected" + eta0="3.2" deta="0.05" phi0="0.0" dphi="0.4" > + <reference subregion="LArFCALdisc" /> + <range field="module" value="2" /> + <range field="eta-fcal" value="31" /> + <range field="phi-fcal" values="3 4 11 12" /> + </region> + + <region group="lar_fcal" name="LArFCAL-3adisconnected" > + <reference subregion="LArFCALdisc" /> + <range field="module" value="3" /> + <range field="eta-fcal" value="15" /> + <range field="phi-fcal" values="5 13" /> + </region> + + + <!-- LAr Online --> + + + <!-- LArOnline -Barrel --> + + <subregion name="LArOnline-Barrel"> + <range field="part" value="LArOnline" /> + <range field="barrel-ec" values="barrel" /> + </subregion> + + <region group="LArOnline" name="laronline-barrel"> + <reference subregion="LArOnline-Barrel" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" minvalue="0" maxvalue="31" /> + <range field="slot" minvalue="1" maxvalue="14" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- LArOnline-EndCap Standard --> + + <subregion name="LArOnline-Endcap"> + <range field="part" value="LArOnline" /> + <range field="barrel-ec" values="endcap" /> + </subregion> + + <region group="LArOnline" name="laronline-endcap-standard"> + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="0 1 4 5 7 8 11 12 13 14 17 18 19 20 23 24" /> + <range field="slot" minvalue="1" maxvalue="13" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- LArOnline-Endcap-Special --> + + <region group="LArOnline" name="laronline-endcap-special" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="2 9 15 21" /> + <range field="slot" minvalue="1" maxvalue="15" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- LArOnline-HEC--> + + <region group="LArOnline" name="laronline-hec"> + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="3 10 16 22" /> + <range field="slot" values="1 2 5 6 7 8 9 10" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + <!-- LArOnline-FCAL--> + + <region group="LArOnline" name="laronlinefcal" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" value="6" /> + <range field="slot" minvalue="1" maxvalue="7" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + <region group="LArOnline" name="laronlinefcal" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" value="6" /> + <range field="slot" minvalue="9" maxvalue="15" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + <range field="is-slar" value="cell" /> + </region> + + + <!-- LArOnline -Barrel Calib --> + + <subregion name="LArOnline-Barrel-Calib"> + <range field="part" value="LArOnlineCalib" /> + <range field="barrel-ec" values="barrel" /> + </subregion> + + <region group="LArOnline" name="laronline-barrel-calib"> + <reference subregion="LArOnline-Barrel-Calib" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" minvalue="0" maxvalue="31" /> + <range field="slot" value="15" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + </region> + + <!-- LArOnline-EndCap Standard Calib --> + + <subregion name="LArOnline-Endcap-Calib"> + <range field="part" value="LArOnlineCalib" /> + <range field="barrel-ec" values="endcap" /> + </subregion> + + <region group="LArOnline" name="laronline-endcap-standard"> + <reference subregion="LArOnline-Endcap-Calib" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="0 1 4 5 7 8 11 12 13 14 17 18 19 20 23 24" /> + <range field="slot" value="15" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + </region> + + <!-- LArOnline-HEC CALIB --> + + <region group="LArOnline" name="laronline-hec-calib"> + <reference subregion="LArOnline-Endcap-Calib" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="3 10 16 22" /> + <range field="slot" values="3 4 12" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + </region> + + <!-- LArOnline-FCAL CALIB --> + + <region group="LArOnline" name="laronline-fcal-calib"> + <reference subregion="LArOnline-Endcap-Calib" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="feedthrough" values="6" /> + <range field="slot" value="16" /> + <range field="channel_in_slot" minvalue="0" maxvalue="127" /> + </region> + + <!-- LArOnline for sCell -Barrel --> + + <region group="LArOnline_SuperCell" name="slaronline-barrel"> + <reference subregion="LArOnline-Barrel" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" minvalue="0" maxvalue="31" /> + <range field="slar_slot" value="1" /> + <range field="sch_in_slot" minvalue="0" maxvalue="289" /> + <range field="is-slar" value="slar" /> + </region> + + <!-- LArOnline for sCell -EndCap Standard --> + + <region group="LArOnline_SuperCell" name="slaronline-endcap-standard"> + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" values="0 1 4 5 7 8 11 12 13 14 17 18 19 20 23 24" /> + <range field="slar_slot" value="1" /> + <range field="sch_in_slot" minvalue="0" maxvalue="311" /> + <range field="is-slar" value="slar" /> + </region> + + <!-- LArOnline for sCell -Endcap-Special --> + + <region group="LArOnline_SuperCell" name="slaronline-endcap-special-01" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" values="2 9 15 21" /> + <range field="slar_slot" value="1" /> + <range field="sch_in_slot" minvalue="0" maxvalue="239" /> + <range field="is-slar" value="slar" /> + </region> + + <region group="LArOnline_SuperCell" name="slaronline-endcap-special-02" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" values="2 9 15 21" /> + <range field="slar_slot" value="2" /> + <range field="sch_in_slot" minvalue="0" maxvalue="159" /> + <range field="is-slar" value="slar" /> + </region> + + <!-- LArOnline for sCell -HEC--> + + <region group="LArOnline_SuperCell" name="slaronline-hec"> + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" values="3 10 16 22" /> + <range field="slar_slot" value="1" /> + <range field="sch_in_slot" minvalue="0" maxvalue="191" /> + <range field="is-slar" value="slar" /> + </region> + + <!-- LArOnline for sCell -FCAL--> + + <region group="LArOnline_SuperCell" name="slaronlinefcal" > + <reference subregion="LArOnline-Endcap" /> + <range field="pos_neg" values="negative-side positive-side" /> + <range field="slar_feedthrough" value="6" /> + <range field="slar_slot" minvalue="1" maxvalue="2" /> + <range field="sch_in_slot" minvalue="0" maxvalue="191" /> + <range field="is-slar" value="slar" /> + </region> + +</IdDictionary> + diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py index a7f876f06a43c10f2c057299a06e61af7c633a35..d46780932f5c3815145d6bbd995f597d5ff15241 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py +++ b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelConfig.py @@ -17,11 +17,6 @@ def PixelGeometryCfg( flags ): InDetDD__BLM_Builder=CompFactory.InDetDD.BLM_Builder blmTool = InDetDD__BLM_Builder() pixelDetectorTool.BLM_Tool = blmTool - if flags.GeoModel.Run=="RUN4": - InDetServMatBuilderToolSLHC=CompFactory.InDetServMatBuilderToolSLHC - InDetServMatBuilderToolSLHC = InDetServMatBuilderToolSLHC() - acc.addPublicTool( InDetServMatBuilderToolSLHC ) - pixelDetectorTool.ServiceBuilderTool = InDetServMatBuilderToolSLHC pixelDetectorTool.useDynamicAlignFolders = flags.GeoModel.Align.Dynamic geoModelSvc.DetectorTools += [ pixelDetectorTool ] acc.addService(geoModelSvc) diff --git a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelOldConfig.py b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelOldConfig.py index f97a4a9ca204adb1fcfaf8980a71358dbd4a6b16..b1bd5da0ab1e30b2a844992742c0a060ffea32c7 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelOldConfig.py +++ b/InnerDetector/InDetDetDescr/PixelGeoModel/python/PixelGeoModelOldConfig.py @@ -4,9 +4,6 @@ from AthenaCommon import CfgMgr def getPixelDetectorTool(name="PixelDetectorTool", **kwargs): from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags - if InDetGeometryFlags.isSLHC(): - kwargs.setdefault("ServiceBuilderTool", "InDetServMatBuilderToolSLHC") - else: - kwargs.setdefault("ServiceBuilderTool", "") + kwargs.setdefault("ServiceBuilderTool", "") return CfgMgr.PixelDetectorTool(name, **kwargs) diff --git a/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py b/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py index d311ff8a4d4ecaad22a2047169149c4c283ded57..07af549e32f3f97e02d76b593b645f8b5ab7e64c 100644 --- a/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py +++ b/InnerDetector/InDetDetDescr/SCT_GeoModel/python/SCT_GeoModelConfig.py @@ -9,20 +9,8 @@ def SCT_GeometryCfg( flags ): geoModelSvc=acc.getPrimary() GeometryDBSvc=CompFactory.GeometryDBSvc acc.addService(GeometryDBSvc("InDetGeometryDBSvc")) - if flags.GeoModel.Run=="RUN4": - if "GMX" == flags.GeoModel.StripGeoType(): - SCT_GMX_DetectorTool=CompFactory.SCT_GMX_DetectorTool - sctDetectorTool = SCT_GMX_DetectorTool() - else: - SCT_SLHC_DetectorTool=CompFactory.SCT_SLHC_DetectorTool - sctDetectorTool = SCT_SLHC_DetectorTool() - InDetServMatBuilderToolSLHC=CompFactory.InDetServMatBuilderToolSLHC - InDetServMatBuilderToolSLHC = InDetServMatBuilderToolSLHC() - acc.addPublicTool( InDetServMatBuilderToolSLHC ) - sctDetectorTool.ServiceBuilderTool = InDetServMatBuilderToolSLHC - else: - SCT_DetectorTool=CompFactory.SCT_DetectorTool - sctDetectorTool = SCT_DetectorTool() + SCT_DetectorTool=CompFactory.SCT_DetectorTool + sctDetectorTool = SCT_DetectorTool() sctDetectorTool.useDynamicAlignFolders = flags.GeoModel.Align.Dynamic sctDetectorTool.Alignable = True # make this a flag? sctDetectorTool.DetectorName = "SCT" diff --git a/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/SCT_ReadoutGeometry/SCT_DetectorManager.h b/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/SCT_ReadoutGeometry/SCT_DetectorManager.h index 528cca2fcd7b02504362ae096c5c5fedfbd598a8..df4cec0a96701d13c3c40e87fe8edc46bf347378 100755 --- a/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/SCT_ReadoutGeometry/SCT_DetectorManager.h +++ b/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/SCT_ReadoutGeometry/SCT_DetectorManager.h @@ -52,6 +52,9 @@ namespace InDetDD { /// Constructor SCT_DetectorManager( StoreGateSvc* detStore ); + + /// Constructur with name + SCT_DetectorManager( StoreGateSvc* detStore, std::string name ); /// Destructor virtual ~SCT_DetectorManager(); diff --git a/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/src/SCT_DetectorManager.cxx b/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/src/SCT_DetectorManager.cxx index f624231129b4b416a293da711887d4b68f1b02dd..313a7923140a36479c0aeca3fdc3bf0cbf6c8461 100755 --- a/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/src/SCT_DetectorManager.cxx +++ b/InnerDetector/InDetDetDescr/SCT_ReadoutGeometry/src/SCT_DetectorManager.cxx @@ -22,6 +22,7 @@ namespace InDetDD { const int FIRST_HIGHER_LEVEL = 2; + SCT_DetectorManager::SCT_DetectorManager( StoreGateSvc* detStore ) : SiDetectorManager(detStore, "SCT"), m_idHelper(0), @@ -42,7 +43,26 @@ namespace InDetDD { } } - + SCT_DetectorManager::SCT_DetectorManager( StoreGateSvc* detStore , std::string name) + : SiDetectorManager(detStore,name), + m_idHelper(0), + m_isLogical(false) // Change to true to change the definition of local module corrections + { + ATH_MSG_INFO("Using contructor with name specification, to create SCT_DetectorManager named "<<name<<endmsg); + // + // Initialized the Identifier helper. + // + StatusCode sc = detStore->retrieve(m_idHelper, "SCT_ID"); + if (sc.isFailure()) { + ATH_MSG_ERROR("Could not retrieve SCT id helper"); + } + // Initialize the collections. + if (m_idHelper) { + m_elementCollection.resize(m_idHelper->wafer_hash_max()); + m_alignableTransforms.resize(m_idHelper->wafer_hash_max()); + m_moduleAlignableTransforms.resize(m_idHelper->wafer_hash_max()/2); + } + } SCT_DetectorManager::~SCT_DetectorManager() { diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/CMakeLists.txt b/InnerDetector/InDetDetDescr/StripGeoModelXml/CMakeLists.txt index d33808e561cf5bca1680c99bde66ce14428359bc..1178d2a8b08857a3d830097560ec3436c0a1fc9a 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/CMakeLists.txt +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/CMakeLists.txt @@ -45,3 +45,6 @@ atlas_add_component( StripGeoModelXml src/components/*.cxx INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} LINK_LIBRARIES ${Boost_LIBRARIES} ${CORAL_LIBRARIES} ${CLHEP_LIBRARIES} AthenaKernel GeoModelXml GeoModelUtilities GaudiKernel InDetGeoModelUtils InDetReadoutGeometry SCT_ReadoutGeometry SCT_ReadoutGeometry SGTools StoreGateLib SGtests AthenaPoolUtilities DetDescrConditions Identifier InDetIdentifier StripGeoModelXmlLib ) + +# Install files from the package: +atlas_install_python_modules( python/*.py ) diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripGmxInterface.h b/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripGmxInterface.h index a954dd9063246819bd5319cfa4946ff86c77cfba..1e792b03160fc191d6a617c8b02fa7aa77aaa916 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripGmxInterface.h +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripGmxInterface.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef STRIPGEOMODELXML_STRIPGMXINTERFACE_H @@ -69,7 +69,7 @@ public: std::string getstr(const std::string typeName, const std::string name, const std::map<std::string, std::string> &par); private: - std::map<std::string, const InDetDD::SiDetectorDesign *> m_geometryMap; + std::map<std::string, int> m_geometryMap; InDetDD::SCT_DetectorManager *m_detectorManager; InDetDD::SiCommonItems *m_commonItems; WaferTree *m_waferTree; diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripOptions.h b/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripOptions.h index 01d7c732b89f4050a61ae0c38ce56a794f41fb16..851cff20ce78412b4735cc4da7b4bef4dba5dabd 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripOptions.h +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/StripGeoModelXml/StripOptions.h @@ -16,22 +16,26 @@ public: bool alignable() const; bool alignAtModuleLevel() const; std::string gmxFilename() const; + std::string detectorName() const; void setAlignable(bool flag = true); void setAlignAtModuleLevel(bool flag = true); - void setGmxFilename(std::string filename); + void setGmxFilename(std::string filename); + void setDetectorName(std::string detectorname); private: bool m_alignable; bool m_alignModule; std::string m_gmxFilename; + std::string m_detectorName; }; // Inlined methods -inline StripOptions::StripOptions() : - m_alignable(true), - m_alignModule(true), - m_gmxFilename("") + inline StripOptions::StripOptions() : + m_alignable(true), + m_alignModule(true), + m_gmxFilename(""), + m_detectorName("ITkStrip") {} inline bool StripOptions::alignable() const { @@ -46,6 +50,10 @@ inline std::string StripOptions::gmxFilename() const { return m_gmxFilename; } +inline std::string StripOptions::detectorName() const { + return m_detectorName; +} + inline void StripOptions::setAlignable(bool flag) { m_alignable = flag; } @@ -58,5 +66,9 @@ inline void StripOptions::setGmxFilename(std::string filename) { m_gmxFilename = filename; } +inline void StripOptions::setDetectorName(std::string detectorname) { + m_detectorName = detectorname; +} + } #endif // StripGeoModelXml_StripOptions_H diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/python/ITkStripGeoModelConfig.py b/InnerDetector/InDetDetDescr/StripGeoModelXml/python/ITkStripGeoModelConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..642c5a5b4f3b4a9578237f97d96705ca5d9672e6 --- /dev/null +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/python/ITkStripGeoModelConfig.py @@ -0,0 +1,41 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentFactory import CompFactory +#Comment to avoid python compilation warnings until block below is re-added +#from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline + +def ITkStripGeometryCfg( flags ): + from AtlasGeoModel.GeoModelConfig import GeoModelCfg + acc = GeoModelCfg( flags ) + geoModelSvc=acc.getPrimary() + GeometryDBSvc=CompFactory.GeometryDBSvc + acc.addService(GeometryDBSvc("ITkGeometryDBSvc")) + StripDetectorTool=CompFactory.StripDetectorTool + ITkStripDetectorTool = StripDetectorTool() + #ITkStripDetectorTool.useDynamicAlignFolders = flags.GeoModel.Align.Dynamic + ITkStripDetectorTool.Alignable = False # make this a flag? Set true as soon as decided on folder structure + ITkStripDetectorTool.DetectorName = "ITkStrip" + geoModelSvc.DetectorTools += [ ITkStripDetectorTool ] + + """ + # All this stuff probably needs revisting - comment for now... + if flags.GeoModel.Align.Dynamic: + acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/AlignL1/ID","/Indet/AlignL1/ID",className="CondAttrListCollection")) + acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/AlignL2/SCT","/Indet/AlignL2/SCT",className="CondAttrListCollection")) + acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/AlignL3","/Indet/AlignL3",className="AlignableTransformContainer")) + else: + if (not flags.Detector.SimulateITkStrip) or flags.Detector.OverlayITkStrip: + acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/Align","/Indet/Align",className="AlignableTransformContainer")) + else: + acc.merge(addFoldersSplitOnline(flags,"INDET","/Indet/Onl/Align","/Indet/Align")) + if flags.Common.Project != "AthSimulation": # Protection for AthSimulation builds + if (not flags.Detector.SimulateSCT) or flags.Detector.OverlaySCT: + SCT_AlignCondAlg=CompFactory.SCT_AlignCondAlg + sctAlignCondAlg = SCT_AlignCondAlg(name = "SCT_AlignCondAlg", + UseDynamicAlignFolders = flags.GeoModel.Align.Dynamic) + acc.addCondAlgo(sctAlignCondAlg) + SCT_DetectorElementCondAlg=CompFactory.SCT_DetectorElementCondAlg + sctDetectorElementCondAlg = SCT_DetectorElementCondAlg(name = "SCT_DetectorElementCondAlg") + acc.addCondAlgo(sctDetectorElementCondAlg) + """ + return acc diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorFactory.cxx b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorFactory.cxx index 38b0d09926ee3a84077393857818abb0048ec3a3..c266ebfa4e77e88094ea477a120cfc6da447a001 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorFactory.cxx +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorFactory.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "StripGeoModelXml/StripDetectorFactory.h" @@ -44,12 +44,13 @@ StripDetectorFactory::StripDetectorFactory(InDetDD::AthenaComps *athenaComps, m_commonItems(commonItems), m_options(&options) { // -// Create the detector manager +// Create the detector manager... should allow the name to be set // - m_detectorManager = new InDetDD::SCT_DetectorManager(detStore()); + m_detectorManager = new InDetDD::SCT_DetectorManager(detStore(),m_options->detectorName()); // // Set Detector Manager SCT version information // +//At some point we may want to decouple also this DB stuff, and make this ITkStrip specific? DecodeVersionKey versionKey(geoDbTagSvc(), "SCT"); IRDBRecordset_ptr switchSet = rdbAccessSvc()->getRecordsetPtr("SctSwitches", versionKey.tag(), versionKey.node()); const IRDBRecord *switches = (*switchSet)[0]; diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorTool.cxx b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorTool.cxx index 26e26305d4bf94fe4d3a36555696725d7ff78f3c..d8cee99ef1f54e35cf41c51f9532ce4439495a84 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorTool.cxx +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripDetectorTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "StripGeoModelXml/StripDetectorTool.h" @@ -8,7 +8,6 @@ #include "SCT_ReadoutGeometry/SCT_DetectorManager.h" #include "InDetGeoModelUtils/InDetDDAthenaComps.h" #include "InDetReadoutGeometry/SiCommonItems.h" -// ADA #include "InDetCondServices/ISiLorentzAngleSvc.h" #include "GeoModelUtilities/GeoModelExperiment.h" #include "GeoModelInterfaces/IGeoModelSvc.h" #include "GeoModelUtilities/DecodeVersionKey.h" @@ -18,8 +17,6 @@ #include "RDBAccessSvc/IRDBRecord.h" #include "RDBAccessSvc/IRDBRecordset.h" #include "DetDescrConditions/AlignableTransformContainer.h" - -// ADA #include "CLIDSvc/tools/ClassID_traits.h" #include "SGTools/DataProxy.h" using InDetDD::SCT_DetectorManager; @@ -30,7 +27,7 @@ StripDetectorTool::StripDetectorTool(const std::string &type, const std::string &name, const IInterface *parent) : GeoModelTool(type, name, parent), - m_detectorName("SCT"), + m_detectorName("ITkStrip"), m_alignable(false), m_gmxFilename(""), m_manager(0), @@ -99,18 +96,19 @@ StatusCode StripDetectorTool::create() { // m_athenaComps = new InDetDD::AthenaComps("StripGeoModelXml"); m_athenaComps->setDetStore(&*(detStore())); - // ADA m_athenaComps->setGeoModelSvc(&*m_geoModelSvc); m_athenaComps->setRDBAccessSvc(&*m_rdbAccessSvc); m_athenaComps->setGeometryDBSvc(&*m_geometryDBSvc); + m_athenaComps->setGeoDbTagSvc(&*m_geoDbTagSvc); + m_commonItems = new InDetDD::SiCommonItems(idHelper); - // ADA m_commonItems->setLorentzAngleSvc(m_lorentzAngleSvc); // // Get options from python // InDetDDSLHC::StripOptions options; options.setAlignable(m_alignable); options.setGmxFilename(m_gmxFilename); + options.setDetectorName(m_detectorName); // // Get the version // diff --git a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripGmxInterface.cxx b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripGmxInterface.cxx index f969c728069774fb308c1afa51a7205f5b66eb7e..30a9604b8c911b156ffd7292d05f4bbef9d05e80 100644 --- a/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripGmxInterface.cxx +++ b/InnerDetector/InDetDetDescr/StripGeoModelXml/src/StripGmxInterface.cxx @@ -167,9 +167,8 @@ double length(25.0); m_detectorManager->addDesign(std::move(design)); // // Add to map for addSensor routine -// -// ADA m_geometryMap[typeName] = design; - m_geometryMap[typeName] = design.get(); + + m_geometryMap[typeName] = m_detectorManager->numDesigns() -1; } void StripGmxInterface::makeStereoAnnulus(string typeName, map<std::string, string> &par) { @@ -286,9 +285,8 @@ vector<double> endR; m_detectorManager->addDesign(std::move(design)); // // Add to map for addSensor routine -// -// ADA m_geometryMap[typeName] = design; - m_geometryMap[typeName] = design.get(); + + m_geometryMap[typeName] = m_detectorManager->numDesigns() -1; } string StripGmxInterface::getstr(const string typeName, const string name, const map<string, string> &par) { @@ -330,7 +328,8 @@ void StripGmxInterface::addSensor(string typeName, map<string, int> &index, int // // Create the detector element and add to the DetectorManager // - const InDetDD::SiDetectorDesign *design = m_geometryMap[typeName]; + const InDetDD::SiDetectorDesign *design = m_detectorManager->getDesign(m_geometryMap[typeName]); + if (!design) { *m_log << MSG::FATAL << "StripGmxInterface::addSensor: Error: Readout sensor type " << typeName << " not found.\n" << endmsg; diff --git a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py index d54425a8e8f9c35cec3ef5df76c1c5523172a205..0113d948e70814b84517d9a164a5425a01d68ba5 100644 --- a/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py +++ b/Simulation/G4Atlas/G4AtlasServices/python/G4AtlasServicesConfigNew.py @@ -5,7 +5,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator DetectorGeometrySvc, G4AtlasSvc, G4GeometryNotifierSvc, PhysicsListSvc=CompFactory.getComps("DetectorGeometrySvc","G4AtlasSvc","G4GeometryNotifierSvc","PhysicsListSvc",) #the physics region tools -from G4AtlasTools.G4PhysicsRegionConfigNew import SX1PhysicsRegionToolCfg, BedrockPhysicsRegionToolCfg, CavernShaftsConcretePhysicsRegionToolCfg, PixelPhysicsRegionToolCfg, SCTPhysicsRegionToolCfg, TRTPhysicsRegionToolCfg, TRT_ArPhysicsRegionToolCfg, BeampipeFwdCutPhysicsRegionToolCfg, FWDBeamLinePhysicsRegionToolCfg, EMBPhysicsRegionToolCfg, EMECPhysicsRegionToolCfg, HECPhysicsRegionToolCfg, FCALPhysicsRegionToolCfg, FCAL2ParaPhysicsRegionToolCfg, EMECParaPhysicsRegionToolCfg, FCALParaPhysicsRegionToolCfg, PreSampLArPhysicsRegionToolCfg, DeadMaterialPhysicsRegionToolCfg +from G4AtlasTools.G4PhysicsRegionConfigNew import SX1PhysicsRegionToolCfg, BedrockPhysicsRegionToolCfg, CavernShaftsConcretePhysicsRegionToolCfg, PixelPhysicsRegionToolCfg, SCTPhysicsRegionToolCfg, TRTPhysicsRegionToolCfg, TRT_ArPhysicsRegionToolCfg,ITkPixelPhysicsRegionToolCfg,ITkStripPhysicsRegionToolCfg,BeampipeFwdCutPhysicsRegionToolCfg, FWDBeamLinePhysicsRegionToolCfg, EMBPhysicsRegionToolCfg, EMECPhysicsRegionToolCfg, HECPhysicsRegionToolCfg, FCALPhysicsRegionToolCfg, FCAL2ParaPhysicsRegionToolCfg, EMECParaPhysicsRegionToolCfg, FCALParaPhysicsRegionToolCfg, PreSampLArPhysicsRegionToolCfg, DeadMaterialPhysicsRegionToolCfg from G4AtlasTools.G4PhysicsRegionConfigNew import DriftWallPhysicsRegionToolCfg, DriftWall1PhysicsRegionToolCfg, DriftWall2PhysicsRegionToolCfg #the geometry tools @@ -17,7 +17,6 @@ from AthenaCommon import Logging def getATLAS_RegionCreatorList(ConfigFlags): regionCreatorList = [] - isUpgrade = ConfigFlags.GeoModel.Run =="RUN4" isRUN2 = (ConfigFlags.GeoModel.Run in ["RUN2", "RUN3"]) or (ConfigFlags.GeoModel.Run=="UNDEFINED" and ConfigFlags.GeoModel.IBLLayout not in ["noIBL", "UNDEFINED"]) if ConfigFlags.Beam.Type == 'cosmics' or ConfigFlags.Sim.CavernBG != 'Signal': @@ -28,7 +27,7 @@ def getATLAS_RegionCreatorList(ConfigFlags): regionCreatorList += [PixelPhysicsRegionToolCfg(ConfigFlags)] if ConfigFlags.Detector.SimulateSCT: regionCreatorList += [SCTPhysicsRegionToolCfg(ConfigFlags)] - if ConfigFlags.Detector.SimulateTRT and not isUpgrade: + if ConfigFlags.Detector.SimulateTRT: regionCreatorList += [TRTPhysicsRegionToolCfg(ConfigFlags)] if isRUN2: regionCreatorList += [TRT_ArPhysicsRegionToolCfg(ConfigFlags)] #'TRT_KrPhysicsRegionTool' @@ -39,6 +38,18 @@ def getATLAS_RegionCreatorList(ConfigFlags): #if simFlags.ForwardDetectors.statusOn and simFlags.ForwardDetectors() == 2: if False: regionCreatorList += [FWDBeamLinePhysicsRegionToolCfg(ConfigFlags)] + if ConfigFlags.Detector.SimulateITk: + if ConfigFlags.Detector.SimulateITkPixel: + regionCreatorList += [ITkPixelPhysicsRegionToolCfg(ConfigFlags)] #TODO: add dedicated config + if ConfigFlags.Detector.SimulateITkStrip: + regionCreatorList += [ITkStripPhysicsRegionToolCfg(ConfigFlags)] #TODO: And here... + # FIXME dislike the ordering here, but try to maintain the same ordering as in the old configuration. + if ConfigFlags.Detector.SimulateBpipe: + if ConfigFlags.Sim.BeamPipeSimMode != "Normal": + regionCreatorList += [BeampipeFwdCutPhysicsRegionToolCfg(ConfigFlags)] + #if simFlags.ForwardDetectors.statusOn and simFlags.ForwardDetectors() == 2: + if False: + regionCreatorList += [FWDBeamLinePhysicsRegionToolCfg(ConfigFlags)] if ConfigFlags.Detector.SimulateCalo: if ConfigFlags.Detector.GeometryLAr: # Shower parameterization overrides the calibration hit flag diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py index 040b1fc507749d025fae0227847ba3b796fd9064..e630eb41b51c5e24287779a37983279ebd1c4dd2 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py @@ -7,6 +7,7 @@ from AthenaConfiguration.ComponentFactory import CompFactory GeoDetectorTool=CompFactory.GeoDetectorTool from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg from AtlasGeoModel.InDetGMConfig import InDetGeometryCfg, InDetServiceMaterialCfg +from AtlasGeoModel.ITkGMConfig import ITkGeometryCfg from LArGeoAlgsNV.LArGMConfig import LArGMCfg from TileGeoModel.TileGMConfig import TileGMCfg from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg @@ -61,6 +62,27 @@ def SCTGeoDetectorToolCfg(ConfigFlags, name='SCT', **kwargs): result.setPrivateTools(GeoDetectorTool(name, **kwargs)) return result +def ITkPixelGeoDetectorToolCfg(ConfigFlags, name='ITkPixel', **kwargs): + #set up geometry + result=ITkGeometryCfg(ConfigFlags) + kwargs.setdefault("DetectorName", "ITkPixel") + #add the GeometryNotifierSvc + result.addService(G4GeometryNotifierSvcCfg(ConfigFlags)) + kwargs.setdefault("GeometryNotifierSvc", result.getService("G4GeometryNotifierSvc")) + result.setPrivateTools(GeoDetectorTool(name, **kwargs)) + return result + + +def ITkStripGeoDetectorToolCfg(ConfigFlags, name='ITkStrip', **kwargs): + #set up geometry + result=ITkGeometryCfg(ConfigFlags) + kwargs.setdefault("DetectorName", "ITkStrip") + #add the GeometryNotifierSvc + result.addService(G4GeometryNotifierSvcCfg(ConfigFlags)) + kwargs.setdefault("GeometryNotifierSvc", result.getService("G4GeometryNotifierSvc")) + result.setPrivateTools(GeoDetectorTool(name, **kwargs)) + return result + def TRTGeoDetectorToolCfg(ConfigFlags, name='TRT', **kwargs): #set up geometry @@ -185,20 +207,33 @@ def getCavernInfraGeoDetectorTool(ConfigFlags, name='CavernInfra', **kwargs): return result -def IDETEnvelopeCfg(ConfigFlags, name="IDET", **kwargs): +def ITKEnvelopeCfg(ConfigFlags, name="ITK", **kwargs): result = ComponentAccumulator() - isUpgrade = ConfigFlags.GeoModel.Run =="RUN4" - isRUN2 = ConfigFlags.GeoModel.Run in ["RUN2", "RUN3"] + kwargs.setdefault("DetectorName", "ITK") + kwargs.setdefault("InnerRadius", 32.15*mm) + kwargs.setdefault("OuterRadius", 1.148*m) + kwargs.setdefault("dZ", 347.5*cm) - #isRUN1 = not (isRUN2 or isUpgrade) #not used, remove? + SubDetectorList=[] + if ConfigFlags.Detector.GeometryITkPixel: + toolITkPixel = result.popToolsAndMerge(ITkPixelGeoDetectorToolCfg(ConfigFlags)) + SubDetectorList += [toolITkPixel] + if ConfigFlags.Detector.GeometryITkStrip: + toolITkStrip = result.popToolsAndMerge(ITkStripGeoDetectorToolCfg(ConfigFlags)) + SubDetectorList += [toolITkStrip] + kwargs.setdefault("SubDetectors", SubDetectorList) + result.setPrivateTools(CylindricalEnvelope(name, **kwargs)) + return result + +def IDETEnvelopeCfg(ConfigFlags, name="IDET", **kwargs): + result = ComponentAccumulator() + isRUN2 = ConfigFlags.GeoModel.Run in ["RUN2", "RUN3"] kwargs.setdefault("DetectorName", "IDET") innerRadius = 37.*mm # RUN1 default if isRUN2: innerRadius = 28.9*mm #29.15*mm - if isUpgrade: - innerRadius = 32.15*mm kwargs.setdefault("InnerRadius", innerRadius) kwargs.setdefault("OuterRadius", 1.148*m) kwargs.setdefault("dZ", 347.5*cm) @@ -210,7 +245,7 @@ def IDETEnvelopeCfg(ConfigFlags, name="IDET", **kwargs): if ConfigFlags.Detector.GeometrySCT: toolSCT = result.popToolsAndMerge(SCTGeoDetectorToolCfg(ConfigFlags)) SubDetectorList += [toolSCT] - if ConfigFlags.Detector.GeometryTRT and not isUpgrade: + if ConfigFlags.Detector.GeometryTRT: toolTRT = result.popToolsAndMerge(TRTGeoDetectorToolCfg(ConfigFlags)) SubDetectorList += [toolTRT] @@ -327,6 +362,9 @@ def generateSubDetectorList(ConfigFlags): if ConfigFlags.Detector.SimulateID: toolIDET = result.popToolsAndMerge(IDETEnvelopeCfg(ConfigFlags)) SubDetectorList += [ toolIDET ] + if ConfigFlags.Detector.SimulateITk: + toolITK = result.popToolsAndMerge(ITKEnvelopeCfg(ConfigFlags)) + SubDetectorList += [ toolITK ] if ConfigFlags.Detector.SimulateCalo: toolCALO = result.popToolsAndMerge(CALOEnvelopeCfg(ConfigFlags)) SubDetectorList += [ toolCALO ] diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py index 86a858ecf8dbe7f23ba2a4c23c275c5057f59a2c..f1b8e3adb30a6a78b41ccebd2ea343ff2f8c83ac 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from __future__ import print_function from AthenaConfiguration.ComponentFactory import CompFactory @@ -75,6 +75,27 @@ def SCTPhysicsRegionToolCfg(ConfigFlags, name='SCTPhysicsRegionTool', **kwargs): kwargs.setdefault("GammaCut", 0.05) return RegionCreator(name, **kwargs) +def ITkPixelPhysicsRegionToolCfg(ConfigFlags, name='ITkPixelPhysicsRegionTool', **kwargs): + kwargs.setdefault("RegionName", 'ITkPixel') + volumeList = ['ITkPixel::siLog'] + kwargs.setdefault("VolumeList", volumeList) + kwargs.setdefault("ElectronCut", 0.05) + kwargs.setdefault("PositronCut", 0.05) + kwargs.setdefault("GammaCut", 0.05) + return RegionCreator(name, **kwargs) + +def ITkStripPhysicsRegionToolCfg(ConfigFlags, name='ITkStripPhysicsRegionTool', **kwargs): + kwargs.setdefault("RegionName", 'ITkStrip') + #Need to find what these should be set to for ITk... + volumeList = ['SCT::BRLSensor', 'SCT::BRLSensorSS', 'SCT::BRLSensorMS', + 'SCT::ECSensor0', 'SCT::ECSensor1', 'SCT::ECSensor2', + 'SCT::ECSensor3', 'SCT::ECSensor4', 'SCT::ECSensor5'] + kwargs.setdefault("VolumeList", volumeList) + kwargs.setdefault("ElectronCut", 0.05) + kwargs.setdefault("PositronCut", 0.05) + kwargs.setdefault("GammaCut", 0.05) + return RegionCreator(name, **kwargs) + def TRTPhysicsRegionToolCfg(ConfigFlags, name='TRTPhysicsRegionTool', **kwargs): #rangeCut = simFlags.TRTRangeCut._Value() rangeCut = 30.0