diff --git a/athena.xml b/athena.xml index a0d887d3cf2dc89b4046b8018a4380dab6511171..7a38fe7a460cb64b19ea5796567b63c581770c58 100644 --- a/athena.xml +++ b/athena.xml @@ -172,7 +172,7 @@ <documentation level="10"> ### PID detectors </documentation> - <include ref="compact/pid_config_acadia.xml" /> + <!--include ref="compact/pid_config_acadia.xml" /--> <documentation level="10"> ## Central calorimetry diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml index 3fe000904673180ca48d8384173231f68760e036..461c706407bf43644895e3bb6182adf8c7184ba9 100644 --- a/compact/central_tracker.xml +++ b/compact/central_tracker.xml @@ -203,6 +203,7 @@ total X0 0.24% per disk layer (4 sectors per disk): inner_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset" outer_r="TrackerBarrelInner_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness-1.0*mm" z_length="TrackerBarrelInner_length1"/> + <layer_material surface="outer" binning="binPhi,binZ" bins0="100*TrackerBarrelInner_NModules1" bins1="100" /> <rphi_layout phi_tilt="TrackerBarrel_StaveTiltAngle" nphi="TrackerBarrelInner_NModules1" phi0="0.0" rc="TrackerBarrelInner_rmin1" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -211,6 +212,7 @@ total X0 0.24% per disk layer (4 sectors per disk): inner_r="TrackerBarrelInner_rmin2-TrackerBarrelLayer_rOffset" outer_r="TrackerBarrelInner_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelInner_thickness" z_length="TrackerBarrelInner_length2"/> + <layer_material surface="outer" binning="binPhi,binZ" bins0="100*TrackerBarrelInner_NModules2" bins1="100" /> <rphi_layout phi_tilt="TrackerBarrel_StaveTiltAngle" nphi="TrackerBarrelInner_NModules2" phi0="0.0" rc="TrackerBarrelInner_rmin2" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -249,6 +251,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapInner_rmax1" length="TrackerEndcapInnerLayer_thickness" zstart="TrackerEndcapInner_zmin" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" zstart="0.0" @@ -289,6 +292,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapInner_rmax1" length="TrackerEndcapInnerLayer_thickness" zstart="TrackerEndcapInner_zmin" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapInner_rmin1+TrackerEndcapInnerMod1_y/2.0" zstart="0" @@ -350,6 +354,7 @@ total X0 0.24% per disk layer (4 sectors per disk): inner_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset" outer_r="TrackerBarrelOuter_rmin1-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness-1.0*mm" z_length="TrackerBarrelOuter_length1"/> + <layer_material surface="outer" binning="binPhi,binZ" bins0="100*TrackerBarrelOuter_NModules1" bins1="100" /> <rphi_layout phi_tilt="TrackerBarrel_StaveTiltAngle" nphi="TrackerBarrelOuter_NModules1" phi0="0.0" rc="TrackerBarrelOuter_rmin1" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -358,6 +363,7 @@ total X0 0.24% per disk layer (4 sectors per disk): inner_r="TrackerBarrelOuter_rmin2-TrackerBarrelLayer_rOffset" outer_r="TrackerBarrelOuter_rmin2-TrackerBarrelLayer_rOffset + TrackerBarrelOuter_thickness" z_length="TrackerBarrelOuter_length2"/> + <layer_material surface="outer" binning="binPhi,binZ" bins0="100*TrackerBarrelOuter_NModules2" bins1="100" /> <rphi_layout phi_tilt="TrackerBarrel_StaveTiltAngle" nphi="TrackerBarrelOuter_NModules2" phi0="0.0" rc="TrackerBarrelOuter_rmin2" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -415,6 +421,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax1" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin1" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0" zstart="0.0*mm" @@ -426,6 +433,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax2" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin2" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0" zstart="0.0*mm" @@ -437,6 +445,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax3" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin3" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0" zstart="0.0*mm" @@ -498,6 +507,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax1" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin1" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0" zstart="0.0*mm" @@ -509,6 +519,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax2" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin2" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin2+TrackerEndcapOuterMod2_y/2.0" zstart="0.0*mm" @@ -520,6 +531,7 @@ total X0 0.24% per disk layer (4 sectors per disk): rmax="TrackerEndcapOuter_rmax3" length="TrackerEndcapOuterLayer_thickness" zstart="TrackerEndcapOuter_zmin3" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*TrackerEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="TrackerEndcapOuter_rmin3+TrackerEndcapOuterMod3_y/2.0" zstart="0.0*mm" diff --git a/compact/gem_tracker_endcap.xml b/compact/gem_tracker_endcap.xml index 6ae6f6c54442c1357b61b6ca57188ac36a95b584..ede46043fbeec86ac81793b8f47562ae7345c5e3 100644 --- a/compact/gem_tracker_endcap.xml +++ b/compact/gem_tracker_endcap.xml @@ -138,6 +138,7 @@ rmax = "GEMTrackerEndcapP_rmax" length="GEMTrackerEndcapP_thickness" zstart="GEMTrackerEndcapP_zmin" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="40*12" bins1="1024"/> <ring vis="TrackerVis" module="GEMModule1" r="GEMTrackerEndcapP_rmin+GEMTrackerEndcapP_y/2.0" zstart="0" @@ -201,6 +202,7 @@ rmax = "GEMTrackerEndcapN_rmax" length="GEMTrackerEndcapN_thickness" zstart="GEMTrackerEndcapN_zmin" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="40*12" bins1="1024"/> <ring vis="TrackerVis" module="GEMModule1" r="GEMTrackerEndcapN_rmin+GEMTrackerEndcapN_y/2.0" zstart="0.1" diff --git a/compact/vertex_tracker.xml b/compact/vertex_tracker.xml index 5ae26567bcfcb76b0b50db4b4b708a9229d5b2d8..f6f3a2e60a3dbe73875f6d65aca8fed46af1de90 100644 --- a/compact/vertex_tracker.xml +++ b/compact/vertex_tracker.xml @@ -142,6 +142,7 @@ Simple carbon fiber support shell. inner_r="VertexBarrelLayer_rmin1" outer_r="VertexBarrelLayer_rmax1" z_length="VertexBarrelLayer_length" /> + <layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count" bins1="100" /> <comment> phi0 : Starting phi of first module. phi_tilt : Phi tilt of a module. @@ -160,6 +161,7 @@ Simple carbon fiber support shell. inner_r="VertexBarrelLayer_rmin2" outer_r="VertexBarrelLayer_rmax2" z_length="VertexBarrelLayer_length" /> + <layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count" bins1="100" /> <rphi_layout phi_tilt="0.0*degree" nphi="VertexBarrelStave_count" phi0="0.0" rc="VertexBarrelMod2_rmin" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -168,6 +170,7 @@ Simple carbon fiber support shell. inner_r="VertexBarrelSupport_rmin" outer_r="VertexBarrelSupport_rmax" z_length="VertexBarrelSupport_length" /> + <layer_material surface="outer" binning="binPhi,binZ" bins0="VertexBarrelStave_count" bins1="100" /> <rphi_layout phi_tilt="0.0*degree" nphi="VertexBarrelStave_count" phi0="0.0" rc="VertexBarrelShell_rmin" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> @@ -207,6 +210,7 @@ Simple carbon fiber support shell. rmax="VertexTrackerEndcapP_rmax" length="VertexEndcapLayer_thickness" zstart="VertexTrackerEndcapP_zmin + VertexEndcapLayer_dz/2.0" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*VertexEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="VertexTrackerEndcapP_rmin+VertexEndcapMod1_y/2.0" zstart="0.0" @@ -248,6 +252,7 @@ Simple carbon fiber support shell. rmax="VertexTrackerEndcapN_rmax" length="VertexEndcapLayer_thickness" zstart="VertexTrackerEndcapN_zmin + VertexEndcapLayer_dz/2.0" /> + <layer_material surface="representing" binning="binPhi,binR" bins0="20*VertexEndcap_NModules" bins1="256"/> <ring vis="TrackerVis" r="VertexTrackerEndcapN_rmin+VertexEndcapMod1_y/2.0" zstart="0.0" diff --git a/src/BarrelTrackerWithFrame_geo.cpp b/src/BarrelTrackerWithFrame_geo.cpp index bc82b124ffb75442981a5687d4975829fce54941..04c09374d2484c0b5186e04ace9380d5ace5246a 100644 --- a/src/BarrelTrackerWithFrame_geo.cpp +++ b/src/BarrelTrackerWithFrame_geo.cpp @@ -13,11 +13,9 @@ #include "DDRec/DetectorData.h" #include "XML/Layering.h" #include "XML/Utilities.h" + #include "Acts/Plugins/DD4hep/ActsExtension.hpp" -#include "Acts/Surfaces/PlanarBounds.hpp" -#include "Acts/Surfaces/RectangleBounds.hpp" -#include "Acts/Surfaces/TrapezoidBounds.hpp" -#include "Acts/Definitions/Units.hpp" +#include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp" using namespace std; @@ -62,9 +60,18 @@ static Ref_t create_BarrelTrackerWithFrame(Detector& description, xml_h e, Sensi PlacedVolume pv; dd4hep::xml::Dimension dimensions(x_det.dimensions()); - Acts::ActsExtension* detWorldExt = new Acts::ActsExtension(); - detWorldExt->addType("barrel", "detector"); - sdet.addExtension<Acts::ActsExtension>(detWorldExt); + // ACTS extension + { + Acts::ActsExtension* detWorldExt = new Acts::ActsExtension(); + detWorldExt->addType("barrel", "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; + Acts::xmlToProtoSurfaceMaterial(x_boundary_material, *detWorldExt, "boundary_material"); + } + sdet.addExtension<Acts::ActsExtension>(detWorldExt); + } + Tube topVolumeShape(dimensions.rmin(), dimensions.rmax(), dimensions.length() * 0.5); Volume assembly(det_name,topVolumeShape,air); @@ -238,19 +245,22 @@ static Ref_t create_BarrelTrackerWithFrame(Detector& description, xml_h e, Sensi double z_dr = z_layout.dr(); // Radial displacement parameter, of every other module. Volume module_env = volumes[m_nam]; - DetElement lay_elt(sdet, _toString(x_layer.id(), "layer%d"), lay_id); + DetElement lay_elt(sdet, lay_nam, lay_id); Placements& sensVols = sensitives[m_nam]; // the local coordinate systems of modules in dd4hep and acts differ // see http://acts.web.cern.ch/ACTS/latest/doc/group__DD4hepPlugins.html - Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); - layerExtension->addType("sensitive cylinder", "layer"); - //layerExtension->addValue(0, "r_min", "envelope"); - //layerExtension->addValue(0, "r_max", "envelope"); - //layerExtension->addValue(0, "z_min", "envelope"); - //layerExtension->addValue(0, "z_max", "envelope"); - //layerExtension->addType("axes", "definitions", "XzY"); - lay_elt.addExtension<Acts::ActsExtension>(layerExtension); + { + Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); + // layer is simple tube so no need to set envelope + layerExtension->addType("sensitive cylinder", "layer"); + // Add the proto layer material + for(xml_coll_t lmat(x_layer, _Unicode(layer_material)); lmat; ++lmat) { + xml_comp_t x_layer_material = lmat; + xmlToProtoSurfaceMaterial(x_layer_material, *layerExtension, "layer_material"); + } + lay_elt.addExtension<Acts::ActsExtension>(layerExtension); + } // Z increment for module placement along Z axis. // Adjust for z0 at center of module rather than @@ -282,9 +292,12 @@ static Ref_t create_BarrelTrackerWithFrame(Detector& description, xml_h e, Sensi PlacedVolume sens_pv = sensVols[ic]; DetElement comp_de(mod_elt, std::string("de_") + sens_pv.volume().name(), module); comp_de.setPlacement(sens_pv); - Acts::ActsExtension* sensorExtension = new Acts::ActsExtension(); - //sensorExtension->addType("sensor", "detector"); - comp_de.addExtension<Acts::ActsExtension>(sensorExtension); + // ACTS extension + { + Acts::ActsExtension* sensorExtension = new Acts::ActsExtension(); + //sensorExtension->addType("sensor", "detector"); + comp_de.addExtension<Acts::ActsExtension>(sensorExtension); + } //comp_de.setAttributes(description, sens_pv.volume(), x_layer.regionStr(), x_layer.limitsStr(), // xml_det_t(xmleles[m_nam]).visStr()); // diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp index f12bf94b2223b30d9ced14ea6caf6698aa4504fa..0175c7bdbab638e8934d997e9bfc0f961ebf568e 100644 --- a/src/TrapEndcapTracker_geo.cpp +++ b/src/TrapEndcapTracker_geo.cpp @@ -16,7 +16,7 @@ #include "XML/Layering.h" #include "Acts/Plugins/DD4hep/ActsExtension.hpp" -#include "Acts/Definitions/Units.hpp" +#include "Acts/Plugins/DD4hep/ConvertDD4hepMaterial.hpp" using namespace std; using namespace dd4hep; @@ -50,9 +50,21 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s PlacedVolume pv; - Acts::ActsExtension* detWorldExt = new Acts::ActsExtension(); - detWorldExt->addType("endcap", "detector"); - sdet.addExtension<Acts::ActsExtension>(detWorldExt); + // ACTS extension + { + Acts::ActsExtension* detWorldExt = new Acts::ActsExtension(); + detWorldExt->addType("endcap", "detector"); + // SJJ probably need to set the envelope here, as ACTS can't figure + // that out for Assembly volumes. May also need binning to properly pick up + // on the support material @TODO + // + // 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; + Acts::xmlToProtoSurfaceMaterial(x_boundary_material, *detWorldExt, "boundary_material"); + } + sdet.addExtension<Acts::ActsExtension>(detWorldExt); + } assembly.setVisAttributes(description.invisible()); sens.setType("tracker"); @@ -233,12 +245,18 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s } DetElement layer_element(sdet, layer_name, l_id); layer_element.setPlacement(layer_pv); - Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); - layerExtension->addType("layer", "layer"); - //layerExtension->addType("axes", "definitions", "XZY"); - //layerExtension->addType("sensitive disk", "layer"); - //layerExtension->addType("axes", "definitions", "XZY"); - layer_element.addExtension<Acts::ActsExtension>(layerExtension); + // ACTS extension + { + Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); + // layer is simple tube so no need to set envelope + layerExtension->addType("layer", "layer"); + // Add the proto layer material + for (xml_coll_t lmat(x_layer, _Unicode(layer_material)); lmat; ++lmat) { + xml_comp_t x_layer_material = lmat; + xmlToProtoSurfaceMaterial(x_layer_material, *layerExtension, "layer_material"); + } + layer_element.addExtension<Acts::ActsExtension>(layerExtension); + } for (xml_coll_t ri(x_layer, _U(ring)); ri; ++ri) { xml_comp_t x_ring = ri;