diff --git a/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp b/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp index d83a7bdc21fc2aa757400f0389dd00c5455b00a6..1fb48768df5a9f4f9a5318495da9e028cbdd1c82 100644 --- a/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp +++ b/Algorithms/MaterialMapping/include/ACTFW/MaterialMapping/MaterialMappingOptions.hpp @@ -33,27 +33,11 @@ namespace Options { opt.add_options()( "mat-mapping-collection", po::value<std::string>()->default_value("material-tracks"), - "Collection name of the material tracks for reading."); + "Collection name of the material tracks for reading.")( + "mat-mapping-emptybins", + po::value<bool>()->default_value(true), + "Empty bin correction (recommended). Corrects for vaccuum/emtpy assigments."); } - ///@brief Read the digitization options and return a Config object - /// - ///@tparam omap_t Type of the options map - ///@param vm the options map to be read out - // template <typename omap_t> - // DigitizationAlgorithm::Config - // readDigitizationConfig(const omap_t& vm) - //{ - // // create a config - // DigitizationAlgorithm::Config digiConfig; - // digiConfig.spacePointCollection - // = vm["digi-spacepoints"].template as<std::string>(); - // digiConfig.clusterCollection - // = vm["digi-clusters"].template as<std::string>(); - // digiConfig.resolutionFile - // = vm["digi-resolution-file"].template as<std::string>(); - // // and return the config - // return digiConfig; - //} } // namespace Options } // namespace FW diff --git a/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp b/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp index 18d0cd34f8acf351f56b288e46095cfe5376ff79..791c129a90ed01a60273408cd2ae64a1603e46f1 100644 --- a/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp +++ b/Algorithms/Propagation/include/ACTFW/Propagation/PropagationOptions.hpp @@ -69,7 +69,7 @@ namespace Options { po::value<read_range>()->multitoken()->default_value({-M_PI, M_PI}), "Azimutal angle phi range for proprapolated tracks.")( "prop-eta-range", - po::value<read_range>()->multitoken()->default_value({-4., 4.}), + po::value<read_range>()->multitoken()->default_value({-6., 6.}), "Pseudorapidity range for proprapolated tracks.")( "prop-pt-range", po::value<read_range>()->multitoken()->default_value( diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml index f5a3df08e56ec6fbb8c1d5b262d16035b1ed0e55..c5a7e5f82c697f7e910a28f95f091363e7ca3647 100644 --- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml +++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataDetector.xml @@ -4,8 +4,8 @@ xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> <includes> - <gdmlFile ref="../elements.xml"/> - <gdmlFile ref="OpenDataMaterials.xml"/> + <gdmlFile ref="../elements.xml"/> + <gdmlFile ref="OpenDataMaterials.xml"/> </includes> <info name="Demonstrator" @@ -13,7 +13,6 @@ author="Andreas.Salzburger@cern.ch" url="" status="test" version="0"> <comment>Demonstrator Detector for the acts webpage and documentation</comment> </info> - <define> <!--World--> <constant name="world_size" value="10.*m"/> @@ -24,7 +23,6 @@ <constant name="bp_rmin" value="23.6*mm"/> <constant name="bp_rmax" value="24.4*mm"/> <constant name="bp_length" value="4.0*m"/> - <constant name="bp_material_binsZ" value="10"/> <!--Dimensions of the Pixel volume & sub volumes --> <constant name="pix_env_rmin" value="30.*mm"/> <constant name="pix_env_rmax" value="200.*mm"/> @@ -59,9 +57,39 @@ <!--Dimensions of the Solenoid --> <constant name="sol_rmin" value="1140.*mm"/> <constant name="sol_rmax" value="1200.*mm"/> - <constant name="sol_hlength" value="2.85*m"/> + <constant name="sol_hlength" value="2.85*m"/> + <!-- Material binning section --> + <!-- beam pipe section --> + <constant name="mat_bp_bZ" value="10"/> + <!-- pixel section --> + <constant name="mat_pix_barrel_bPhi" value="1"/> + <constant name="mat_pix_barrel_bZ" value="200"/> + <constant name="mat_pix_endcap_bPhi" value="1"/> + <constant name="mat_pix_endcap_bR" value="25"/> + <constant name="mat_pix_outer_bPhi" value="1"/> + <constant name="mat_pix_outer_bZ" value="250"/> + <constant name="mat_pix_inter_bR" value="25"/> + <constant name="mat_pix_inter_bPhi" value="1"/> + <!-- short strip section --> + <constant name="mat_sst_barrel_bPhi" value="1"/> + <constant name="mat_sst_barrel_bZ" value="150"/> + <constant name="mat_sst_endcap_bPhi" value="1"/> + <constant name="mat_sst_endcap_bR" value="25"/> + <constant name="mat_sst_outer_bZ" value="150"/> + <constant name="mat_sst_outer_bPhi" value="1"/> + <constant name="mat_sst_inter_bR" value="25"/> + <constant name="mat_sst_inter_bPhi" value="1"/> + <!-- long strip section --> + <constant name="mat_lst_barrel_bPhi" value="1"/> + <constant name="mat_lst_barrel_bZ" value="100"/> + <constant name="mat_lst_endcap_bPhi" value="1"/> + <constant name="mat_lst_endcap_bR" value="25"/> + <constant name="mat_lst_outer_bZ" value="75"/> + <constant name="mat_lst_outer_bPhi" value="1"/> + <constant name="mat_lst_inter_bR" value="25"/> + <constant name="mat_lst_inter_bPhi" value="1"/> </define> - + <display> <vis name="Beryllium" r="0.8" g="0.8" b="0.8" alpha="0.9" showDaugthers="true" visible="true" drawingStyle="solid"/> <vis name="Silicon" r="0." g="0." b="0.5" alpha="1.0" showDaugthers="true" visible="true" drawingStyle="solid"/> @@ -103,7 +131,7 @@ <segmentation type="CartesianGridXY" grid_size_x="0.05*mm" grid_size_y="0.05*mm"/> <id>system:4,layer:4,ring:4,module:8,sensor:4,x:4,y:4</id> </readout> - </readouts> + </readouts> <include ref="OpenDataPixels.xml"/> <include ref="OpenDataShortStrips.xml"/> <include ref="OpenDataLongStrips.xml"/> @@ -111,7 +139,7 @@ <detector id="0" name="BeamPipe" type="ODDCylinder" vis="Beryllium"> <beampipe/> <tubs name="BeamPipeCylinder" rmin="bp_rmin" rmax="bp_rmax" dz="bp_length" material="Beryllium"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binZ="bp_material_binsZ"/> + <layer_material inner="false" representing="true" outer="false" binPhi="1" binZ="mat_bp_bZ"/> </tubs> </detector> <detector id="1" name="Pixels" type="DD4hep_SubdetectorAssembly" vis="invisible"> diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml index 573313b75196fb39db68ba4aff5264908ec3ed86..b5265a1c3ddfa2397f5b4191cf9450ef75f936b6 100644 --- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml +++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataLongStrips.xml @@ -34,22 +34,22 @@ <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="1092.*mm" gap="24.*mm" nphi="72" z_offset="0.*mm" material="Ti" vis="orange"/> </ring> <layer id="0" name="LongStripEndcapN0" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1280.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="1" name="LongStripEndcapN2" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="2" name="LongStripEndcapN3" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-1850.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="2" name="LongStripEndcapN4" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2200.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="3" name="LongStripEndcapN5" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="4" name="LongStripEndcapN6" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="-2950.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <services> <cable_routing name="OuterCables" nphi="30" phi0="0." number="10" r="1095*mm" rmin="0.*mm" rmax="0.75*mm" dz="0.1*mm" z_offset="1150.*mm" gap="25.*mm" material="Cu" vis="orange"> @@ -61,7 +61,9 @@ <!--Barrel--> <detector id="300" name="LongStripBarrel" type="ODDStripBarrel" readout="LongStripBarrelReadout" vis="invisible"> <dimensions name="LongStripBarrelShape" rmin="ls_env_rmin" rmax="ls_env_rmax" dz="ls_b_dz" z="0.*mm"/> - <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="100" binR="25"/> + <boundary_material negative="true" binPhi="mat_lst_endcap_bPhi" binR="mat_sst_endcap_bR"/> + <!-- boundary_material outer="true" binPhi="mat_lst_barrel_bPhi" binZ="mat_sst_barrel_bZ"/ --> + <boundary_material positive="true" binPhi="mat_lst_endcap_bPhi" binR="mat_sst_endcap_bR"/> <module name="LongStripBarrelModule" vis="invisible"> <module_component name="SensorS" alpha="0.04" dx="96.*mm" dy="108.*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-3.2*mm" material="Silicon" vis="Silicon" sensitive="true"/> <module_component name="BoardS" alpha="0.04" dx="96.*mm" dy="108*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-3.*mm" material="Kapton" vis="Kapton" sensitive="false"/> @@ -86,12 +88,12 @@ <layer id="0" name="LongStripLayer0" rmin="790.*mm" r="820.*mm" rmax="840.*mm" outer_z="20.*mm" nphi="60" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="InnerSupportRings" rmin="795.*mm" rmax="810.*mm" dz="50.*mm" z_offset="300.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/> <support name="OuterSupportRings" rmin="795.*mm" rmax="810.*mm" dz="50.*mm" z_offset="1000.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_lst_barrel_bPhi" binZ ="mat_lst_barrel_bZ"/> </layer> <layer id="1" name="LongStripLayer1" rmin="990.*mm" r="1020.*mm" rmax="1040.*mm" outer_z="20.*mm" nphi="80" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="InnerSupportRings" rmin="995.*mm" rmax="1010.*mm" dz="50.*mm" z_offset="300.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/> <support name="OuterSupportRings" rmin="995.*mm" rmax="1010.*mm" dz="50.*mm" z_offset="1000.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"/> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_lst_barrel_bPhi" binZ ="mat_lst_barrel_bZ"/> </layer> <support name="SupportRails" rmin="1075.*mm" rmax="1090.*mm" dz="25.*mm" z_offset="1150.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"> <connector/> @@ -137,22 +139,22 @@ <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="1092.*mm" gap="24.*mm" nphi="72" z_offset="0.*mm" material="Ti" vis="orange"/> </ring> <layer id="0" name="LongStripEndcapP0" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1280.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="1" name="LongStripEndcapP2" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="2" name="LongStripEndcapP3" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="1850.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="2" name="LongStripEndcapP4" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2200.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="3" name="LongStripEndcapP5" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <layer id="4" name="LongStripEndcapP6" rmin="720.*mm" rmax="1095.*mm" dz="100.*mm" z_offset="2950.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_lst_endcap_bPhi" binR="mat_lst_endcap_bR"/> </layer> <services> <cable_routing name="OuterCables" nphi="30" phi0="0." number="10" r="1095*mm" rmin="0.*mm" rmax="0.75*mm" dz="0.1*mm" z_offset="1150.*mm" gap="25.*mm" material="Cu" vis="orange"> diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml index bb0e72e96d83703f734bd0bc14ea5f66de15a265..bfc7b5d6d2a643e3909154c26d51cec2e29e51df 100644 --- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml +++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataPixels.xml @@ -17,28 +17,28 @@ <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="145.*mm" gap="7.4*mm" nphi="32" z_offset="+4.*mm" material="Ti" vis="orange"/> <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="170.*mm" gap="8.5*mm" nphi="32" z_offset="+4.*mm" material="Ti" vis="orange"/> <layer id="0" name="PixelEndcapN0" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-620.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="1" name="PixelEndcapN1" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-720.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="2" name="PixelEndcapN2" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-840.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="3" name="PixelEndcapN3" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-980.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="4" name="PixelEndcapN4" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1120.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="5" name="PixelEndcapN5" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1320.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="6" name="PixelEndcapN6" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="-1520.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <disk name="PixelEndplate" z_offset="-1950.*mm" rmin="40.*mm" rmax="189.*mm" dz="5*mm" material="CarbonFiber" vis="CarbonFiber"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </disk> <support name="InnerSupportRail" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="000.*mm" nsides="1" vis="CarbonFiber"/> <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="490.*mm" nsides="2" vis="CarbonFiber"/> @@ -52,7 +52,9 @@ <!--Barrel--> <detector id="100" name="PixelBarrel" type="ODDPixelBarrel" readout="PixelBarrelReadout" vis="invisible"> <dimensions name="PixelBarrelShape" rmin="pix_env_rmin" rmax="pix_env_rmax" dz="pix_b_dz" z="0.*mm"/> - <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="250" binR="25"/> + <boundary_material negative="true" binPhi="mat_pix_endcap_bPhi" binR="mat_pix_endcap_bR"/> + <boundary_material outer="true" binPhi="mat_pix_barrel_bPhi" binZ="mat_pix_barrel_bZ"/> + <boundary_material positive="true" binPhi="mat_pix_endcap_bPhi" binR="mat_pix_endcap_bR"/> <module name="PixelBarrelModule" vis="invisible"> <module_component name="Sensor" alpha="0." dx="16.8*mm" dy="72.*mm" dz="0.125*mm" x_offset="0." y_offset="0." z_offset="-1.8*mm" material="Silicon" vis="Silicon" sensitive="true"/> <module_component name="Board" alpha="0." dx="16*mm" dy="70*mm" dz="0.25*mm" x_offset="0." y_offset="0." z_offset="-1.6*mm" material="Kapton" vis="Kapton" sensitive="false"/> @@ -67,19 +69,19 @@ <eltube name="CableBundle" rmin="0.0*mm" rmax="0.25*mm" dz="50.*mm" x_offset="-10.*mm" y_offset="0.*mm" z_offset="1.*mm" material="Cu" vis="orange" /> </stave> <layer id="0" name="PixelLayer0" rmin="28.*mm" r="34.*mm" rmax="44.*mm" outer_z="20.*mm" nphi="16" phi_tilt="0.12" phi0="0." vis="invisible"> - <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/> + <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/> <support name="SupportCylinder" rmin="38.*mm" rmax="40.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber"/> </layer> <layer id="1" name="PixelLayer1" rmin="56.*mm" r="72.*mm" rmax="82.*mm" outer_z="20.*mm" nphi="32" phi_tilt="0.12" phi0="0." vis="invisible"> - <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/> + <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/> <support name="SupportCylinder" rmin="76.*mm" rmax="78.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber" /> </layer> <layer id="2" name="PixelLayer2" rmin="100.*mm" r="116.*mm" rmax="126.*mm" outer_z="20.*mm" nphi="52" phi_tilt="0.12" phi0="0." vis="invisible"> - <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/> + <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/> <support name="SupportCylinder" rmin="120.*mm" rmax="122.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber" /> </layer> <layer id="3" name="PixelLayer3" rmin="160.*mm" r="172.*mm" rmax="182.*mm" outer_z="20.*mm" nphi="78" phi_tilt="0.12" phi0="0." vis="invisible"> - <layer_material inner="false" representing="false" outer="true" binPhi="1" binZ="100"/> + <layer_material inner="false" representing="false" outer="true" binPhi="mat_pix_barrel_bPhi" binZ ="mat_pix_barrel_bZ"/> <support name="SupportCylinder" rmin="176.*mm" rmax="178.*mm" dz="500.*mm" material="CarbonFiber" z_offset="0.*mm" nsides="1" vis="CarbonFiber"/> </layer> <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="550.*mm" nsides="2" vis="CarbonFiber"> @@ -111,28 +113,28 @@ <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="145.*mm" gap="7.4*mm" nphi="32" z_offset="-4.*mm" material="Ti" vis="orange"/> <cooling_ring rmin="1.4*mm" rmax="1.6*mm" r="170.*mm" gap="8.5*mm" nphi="32" z_offset="-4.*mm" material="Ti" vis="orange"/> <layer id="0" name="PixelEndcapP0" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="620.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="1" name="PixelEndcapP1" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="720.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="2" name="PixelEndcapP2" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="840.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="3" name="PixelEndcapP3" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="980.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="4" name="PixelEndcapP4" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1120.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="5" name="PixelEndcapP5" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1320.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <layer id="6" name="PixelEndcapP6" rmin="28.*mm" rmax="186.*mm" dz="20.*mm" z_offset="1520.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </layer> <disk name="PixelEndplate" z_offset="1950.*mm" rmin="40.*mm" rmax="189.*mm" dz="5*mm" material="CarbonFiber" vis="CarbonFiber"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_pix_endcap_bPhi" binR ="mat_pix_endcap_bR"/> </disk> <support name="InnerSupportRail" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="000.*mm" nsides="1" vis="CarbonFiber"/> <support name="OuterSupportRails" rmin="190.*mm" rmax="200.*mm" dz="10.*mm" material="CarbonFiber" z_offset="490.*mm" nsides="2" vis="CarbonFiber"/> diff --git a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml index 62e3935408c48dbab751ae43f0da44f8f7b56c19..193e5211c5d499489f4fb06735c095ec65732cc1 100644 --- a/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml +++ b/Detectors/DD4hepDetector/compact/OpenDataDetector/OpenDataShortStrips.xml @@ -34,22 +34,22 @@ <support name="SupportRing1" rmin="670.*mm" rmax="710.*mm" dz="2.*mm" z_offset="0.*mm" material="CarbonFiber" vis="CarbonFiber"/> </ring> <layer id="0" name="ShortStripEndcapN0" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1280.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="1" name="ShortStripEndcapN2" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="2" name="ShortStripEndcapN3" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-1850.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="2" name="ShortStripEndcapN4" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2200.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="3" name="ShortStripEndcapN5" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="4" name="ShortStripEndcapN6" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="-2950.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <services> <cable_routing name="InnerCables" nphi="12" phi0="0." number="6" r="215.*mm" rmin="0.*mm" rmax="0.75*mm" z_offset="1150.*mm" gap="10.*mm" material="Cu" vis="orange"> @@ -65,7 +65,9 @@ <!--Barrel--> <detector id="200" name="ShortStripBarrel" type="ODDStripBarrel" readout="ShortStripBarrelReadout" vis="invisible"> <dimensions name="ShortStripBarrelShape" rmin="ss_env_rmin" rmax="ss_env_rmax" dz="ss_b_dz" z="0.*mm"/> - <boundary_material inner="false" outer="true" negative="true" positive="true" binPhi="1" binZ="150" binR="25"/> + <boundary_material negative="true" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> + <boundary_material outer="true" binPhi="mat_sst_barrel_bPhi" binZ="mat_sst_barrel_bZ"/> + <boundary_material positive="true" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> <module name="ShortStripBarrelModule" vis="invisible"> <module_component name="Foam" alpha="0." dx="45.*mm" dy="108*mm" dz="4*mm" x_offset="0." y_offset="0." z_offset="-2.8*mm" material="CarbonFoam" vis="CarbonFoam" sensitive="false"> <subtraction name="CoolingLine" rmin="0.*mm" rmax="1.8*mm" x_offset="0.*mm" y_offset="0.*mm" z_offset="0.*mm"/> @@ -80,19 +82,19 @@ </stave> <layer id="0" name="ShortStripLayer0" rmin="240.*mm" r="260.*mm" rmax="280.*mm" outer_z="20.*mm" nphi="40" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="SupportCylinder" rmin="248.*mm" rmax="250.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber"/> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/> </layer> <layer id="1" name="ShortStripLayer1" rmin="340.*mm" r="360.*mm" rmax="380.*mm" outer_z="20.*mm" nphi="56" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="SupportCylinder" rmin="344.*mm" rmax="346.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" /> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/> </layer> <layer id="2" name="ShortStripLayer2" rmin="480.*mm" r="500.*mm" rmax="520.*mm" outer_z="20.*mm" nphi="78" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="SupportCylinder" rmin="484.*mm" rmax="486.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" /> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/> </layer> <layer id="3" name="ShortStripLayer3" rmin="640.*mm" r="660.*mm" rmax="680.*mm" outer_z="20.*mm" nphi="102" phi_tilt="-0.15" phi0="0." vis="invisible"> <support name="SupportCylinder" rmin="644.*mm" rmax="646.*mm" dz="1000.*mm" z_offset="0.*mm" nsides="1" material="CarbonFiber" vis="CarbonFiber" /> - <layer_material inner="true" representing="false" outer="false" binPhi="1" binZ="100"/> + <layer_material inner="true" representing="false" outer="false" binPhi="mat_sst_barrel_bPhi" binZ ="mat_sst_barrel_bZ"/> </layer> <support name="SupportRails" rmin="695.*mm" rmax="715.*mm" dz="20.*mm" z_offset="1150.*mm" nsides="2" material="CarbonFiber" vis="CarbonFiber"> <connector/> @@ -139,22 +141,22 @@ <support name="SupportRing1" rmin="670.*mm" rmax="710.*mm" dz="2.*mm" z_offset="0.*mm" material="CarbonFiber" vis="CarbonFiber"/> </ring> <layer id="0" name="ShortStripEndcapP0" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1280.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="1" name="ShortStripEndcapP2" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="2" name="ShortStripEndcapP3" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="1850.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="2" name="ShortStripEndcapP4" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2200.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="3" name="ShortStripEndcapP5" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2550.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <layer id="4" name="ShortStripEndcapP6" rmin="210.*mm" rmax="715.*mm" dz="50.*mm" z_offset="2950.*mm" vis="invisible"> - <layer_material inner="false" representing="true" outer="false" binPhi="1" binR="25"/> + <layer_material inner="false" representing="true" outer="false" binPhi="mat_sst_endcap_bPhi" binR="mat_sst_endcap_bR"/> </layer> <services> <cable_routing name="InnerCables" nphi="12" phi0="0." number="6" r="215.*mm" rmin="0.*mm" rmax="0.75*mm" z_offset="1150.*mm" gap="10.*mm" material="Cu" vis="orange"> diff --git a/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp b/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp index 8562b0b25dd0a795ec90d2cf3cfe00099cc3edf5..0519feb813723ae74f42c4e1469619975c6ec052 100644 --- a/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp +++ b/Detectors/DD4hepDetector/src/Demonstrator/DemonstratorBarrel_geo.cpp @@ -202,7 +202,7 @@ create_element(Detector& lcdd, xml_h xml, SensitiveDetector sens) // Configure the ACTS extension Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); layerExtension->addType("barrel", "layer"); - Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension); + Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension); layerElement.addExtension<Acts::ActsExtension>(layerExtension); // Place layer volume diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp index bd66c9aa24e3bb316adfba5b9b8bb5c6f3ec63f7..03ea24be0da8c1b780de091a79741f5ae35db532 100644 --- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp +++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDCylinder_geo.cpp @@ -31,7 +31,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) bool isBeamPipe = x_det.hasChild(_U(beampipe)); pcExtension->addType("passive cylinder", "layer"); if (isBeamPipe) { pcExtension->addType("beampipe", "layer"); } - Acts::xml2CylinderProtoMaterial(x_det_tubs, *pcExtension); + Acts::xmlToCylinderProtoMaterial(x_det_tubs, *pcExtension); cylinderElement.addExtension<Acts::ActsExtension>(pcExtension); string shapeName = x_det_tubs.nameStr(); diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp index 6a8cc1108ff6d51ec482e779096845220346602e..ccdbb0660e6e0719fc1f323a4546d6ab8958b6cb 100644 --- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp +++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelBarrel_geo.cpp @@ -105,21 +105,14 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) // Add Extension to DetElement for the RecoGeometry Acts::ActsExtension* barrelExtension = new Acts::ActsExtension(); barrelExtension->addType("barrel", "detector"); - // Add the volume material if configured - if (x_det.hasChild(_Unicode(boundary_material))) { - xml_comp_t x_boundary_material = x_det.child(_Unicode(boundary_material)); - // Inner / outer are cylinders - xml2ProtoMaterial(x_boundary_material, + // Add the volume boundary material if configured + for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){ + xml_comp_t x_boundary_material = bmat; + xmlToProtoMaterial(x_boundary_material, *barrelExtension, "boundary_material", - {"inner", "outer"}, - {"binPhi", "binZ"}); - // Negative / positive are discs - xml2ProtoMaterial(x_boundary_material, - *barrelExtension, - "boundary_material", - {"negative", "positive"}, - {"binPhi", "binR"}); + { "negative", "positive", "inner", "outer" }, + { "binPhi", "*" }); } barrelDetector.addExtension<Acts::ActsExtension>(barrelExtension); @@ -230,7 +223,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) // Configure the ACTS extension Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); layerExtension->addType("active cylinder", "layer"); - Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension); + Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension); layerElement.addExtension<Acts::ActsExtension>(layerExtension); PlacedVolume placedLayer = barrelVolume.placeVolume(layerVolume); diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp index bf28efc391eb51f887296f278ac29affb1feea72..d9d533ce31410022c896d32c15e755b60faacafe 100644 --- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp +++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDPixelEndcap_geo.cpp @@ -28,8 +28,21 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) // Add Extension to DetElement for the RecoGeometry Acts::ActsExtension* endcapExtension = new Acts::ActsExtension(); endcapExtension->addType("endcap", "detector"); - endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension); - + // Add the volume boundary material if configured + for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){ + xml_comp_t x_boundary_material = bmat; + // Inner / outer are cylinders, others are disks + std::string boundary_type = x_boundary_material.attr<std::string>("stype"); + std::string second_bin + = ( boundary_type == "inner" || boundary_type == "outer" ) ? + "binZ" : "binR"; + xmlToProtoMaterial(x_boundary_material, + *endcapExtension, + "boundary_material", + { boundary_type }, + {"binPhi", second_bin}); + } + endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension); // Make Volume dd4hep::xml::Dimension x_det_dim(x_det.dimensions()); string endcapShapeName = x_det_dim.nameStr(); @@ -158,7 +171,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); layerExtension->addType("sensitive disk", "layer"); layerElement.addExtension<Acts::ActsExtension>(layerExtension); - Acts::xml2DiscProtoMaterial(x_layer, *layerExtension); + Acts::xmlToDiscProtoMaterial(x_layer, *layerExtension); // Finish up the DetElement tree layerElement.setPlacement(placedLayer); endcapDetector.add(layerElement); @@ -188,7 +201,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) Acts::ActsExtension* endplateExtension = new Acts::ActsExtension(); endplateExtension->addType("passive disk", "layer"); endplateElement.addExtension<Acts::ActsExtension>(endplateExtension); - Acts::xml2DiscProtoMaterial(x_endplate, *endplateExtension); + Acts::xmlToDiscProtoMaterial(x_endplate, *endplateExtension); // Finish up the DetElement tree endplateElement.setPlacement(placedEndplate); diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp index 55fcd530da4e42d49bff2125f2b740be88cd2d1f..814319bba7b7b5fc282b6fe5250a23be1ce56e27 100644 --- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp +++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripBarrel_geo.cpp @@ -28,21 +28,14 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) // Add Extension to DetElement for the RecoGeometry Acts::ActsExtension* barrelExtension = new Acts::ActsExtension(); barrelExtension->addType("barrel", "detector"); - // Add the volume material if configured - if (x_det.hasChild(_Unicode(boundary_material))) { - xml_comp_t x_boundary_material = x_det.child(_Unicode(boundary_material)); - // Inner / outer are cylinders - xml2ProtoMaterial(x_boundary_material, + // Add the volume boundary material if configured + for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){ + xml_comp_t x_boundary_material = bmat; + xmlToProtoMaterial(x_boundary_material, *barrelExtension, "boundary_material", - {"inner", "outer"}, - {"binPhi", "binZ"}); - // Negative / positive are discs - xml2ProtoMaterial(x_boundary_material, - *barrelExtension, - "boundary_material", - {"negative", "positive"}, - {"binPhi", "binR"}); + { "negative", "positive", "inner", "outer" }, + { "binPhi", "*" }); } barrelDetector.addExtension<Acts::ActsExtension>(barrelExtension); @@ -176,7 +169,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); layerExtension->addType("sensitive cylinder", "layer"); layerElement.addExtension<Acts::ActsExtension>(layerExtension); - Acts::xml2CylinderProtoMaterial(x_layer, *layerExtension); + Acts::xmlToCylinderProtoMaterial(x_layer, *layerExtension); PlacedVolume placedLayer = barrelVolume.placeVolume(layerVolume); placedLayer.addPhysVolID("layer", layerNum); diff --git a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp index 8a2b2bbd30cb19ab4c82af9cb40b4567c1e021b8..5168f4e7a79fb0c9b784e47ace2fe598396798d8 100644 --- a/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp +++ b/Detectors/DD4hepDetector/src/OpenDataDetector/ODDStripEndcap_geo.cpp @@ -28,6 +28,20 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) // Add Extension to DetElement for the RecoGeometry Acts::ActsExtension* endcapExtension = new Acts::ActsExtension(); endcapExtension->addType("endcap", "detector"); + // Add the volume boundary material if configured + for (xml_coll_t bmat(x_det, _Unicode(boundary_material)); bmat; ++bmat){ + xml_comp_t x_boundary_material = bmat; + // Inner / outer are cylinders, others are disks + std::string boundary_type = x_boundary_material.attr<std::string>("stype"); + std::string second_bin + = ( boundary_type == "inner" || boundary_type == "outer" ) ? + "binZ" : "binR"; + xmlToProtoMaterial(x_boundary_material, + *endcapExtension, + "boundary_material", + { boundary_type }, + {"binPhi", second_bin}); + } endcapDetector.addExtension<Acts::ActsExtension>(endcapExtension); // Make Volume @@ -166,7 +180,7 @@ create_element(Detector& oddd, xml_h xml, SensitiveDetector sens) Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); layerExtension->addType("sensitive disk", "layer"); layerElement.addExtension<Acts::ActsExtension>(layerExtension); - Acts::xml2DiscProtoMaterial(x_layer, *layerExtension); + Acts::xmlToDiscProtoMaterial(x_layer, *layerExtension); // Finish up the DetElement tree layerElement.setPlacement(placedLayer); endcapDetector.add(layerElement); diff --git a/Examples/Common/src/MaterialMappingBase.cpp b/Examples/Common/src/MaterialMappingBase.cpp index 8a46faf736cac069d9f69556661be706c69b729a..984cd27f32e6ff3f40cda94ae981656b32bf9b50 100644 --- a/Examples/Common/src/MaterialMappingBase.cpp +++ b/Examples/Common/src/MaterialMappingBase.cpp @@ -95,11 +95,15 @@ materialMappingExample(int argc, char* argv[], FW::IBaseDetector& detector) /// The material mapper Acts::SurfaceMaterialMapper::Config smmConfig; + /// Correct for empty bins + smmConfig.emptyBinCorrection = vm["mat-mapping-emptybins"].template as<bool>(); + auto smm = std::make_shared<Acts::SurfaceMaterialMapper>( smmConfig, std::move(propagator), Acts::getDefaultLogger("SurfaceMaterialMapper", logLevel)); + /// The material mapping algorithm FW::MaterialMapping::Config mmAlgConfig(geoContext, mfContext); mmAlgConfig.materialMapper = smm;