diff --git a/compact/ci_ecal_scfi.xml b/compact/ci_ecal_scfi.xml index 9662825c6bbc0b73028c4b909bcdc493375c4d2e..2ae955c219fd71145493c191357df85b3ea8f774 100644 --- a/compact/ci_ecal_scfi.xml +++ b/compact/ci_ecal_scfi.xml @@ -34,7 +34,7 @@ readout="EcalEndcapPHits"> <position x="0" y="0" z="EcalEndcapP_zmin + EcalEndcapP_length/2."/> <dimensions rmin="EcalEndcapP_rmin" rmax="EcalEndcapP_rmax" length="EcalEndcapP_length"/> - <module sizex="25*mm" sizey="25*mm" sizez="170*mm" material="TungstenDens24" vis="EcalEndcapLayerVis"> + <module sizex="25*mm" sizey="25*mm" sizez="170*mm" material="TungstenDens24" vis="EcalEndcapBlockVis"> <fiber material="Polystyrene" radius="EcalEndcapP_FiberRadius" offset="EcalEndcapP_FiberOffset" diff --git a/compact/display.xml b/compact/display.xml index 8c5edf5dbbfc6fa5b15b0617de7dedb3e86251e6..a335591c4b9eb337c3a5b8eacf210b7f14852298 100644 --- a/compact/display.xml +++ b/compact/display.xml @@ -33,8 +33,9 @@ <vis name="EcalBarrelSliceVis" ref="AnlGray" showDaughters="false" visible="true"/> <vis name="EcalBarrelFiberLayerVis" ref="AnlGold" showDaughters="false" visible="true" /> - <vis name="EcalEndcapVis" ref="AnlGold" showDaughters="false" visible="true"/> + <vis name="EcalEndcapVis" ref="AnlGold" showDaughters="true" visible="false"/> <vis name="EcalEndcapLayerVis" ref="AnlGold" showDaughters="false" visible="true"/> + <vis name="EcalEndcapBlockVis" ref="AnlGold" showDaughters="false" visible="true"/> <vis name="EcalEndcapNModuleVis" ref="AnlGold" showDaughters="false" visible="true"/> diff --git a/compact/display_geoviewer.xml b/compact/display_geoviewer.xml index 60a5ea60f53ba661b9dee9a486ce2b8add8ce3e9..e5db890e4be47694e936e25c48782ec7b4d87367 100644 --- a/compact/display_geoviewer.xml +++ b/compact/display_geoviewer.xml @@ -35,6 +35,7 @@ <vis name="EcalVis" ref="AnlGold" showDaughters="true" visible="false"/> <vis name="EcalEndcapVis" ref="AnlGold" showDaughters="false" visible="true"/> <vis name="EcalEndcapLayerVis" ref="AnlGold" showDaughters="false" visible="true"/> + <vis name="EcalEndcapBlockVis" ref="AnlGold" showDaughters="false" visible="true"/> <vis name="EcalEndcapNModuleVis" ref="AnlGold" showDaughters="false" visible="true"/> diff --git a/src/ScFiCalorimeter_geo.cpp b/src/ScFiCalorimeter_geo.cpp index 5b170a00776dfa4de978770620f944134c5be5ae..d16e87cbd842332e27914d45ad9c21c0de320fc1 100644 --- a/src/ScFiCalorimeter_geo.cpp +++ b/src/ScFiCalorimeter_geo.cpp @@ -53,15 +53,17 @@ static Ref_t create_detector(Detector& desc, xml::Handle_t handle, SensitiveDete Volume env(detName + "_envelope", envShape, desc.material("Air")); env.setVisAttributes(desc.visAttributes(detElem.visStr())); - // build shashlik module + // build module auto [modVol, modSize] = build_module(desc, detElem.child(_Unicode(module)), sens); double modSizeR = std::sqrt(modSize.x() * modSize.x() + modSize.y() * modSize.y()); double assembly_rwidth = modSizeR*2.; int nas = int((rmax - rmin) / assembly_rwidth) + 1; std::vector<Assembly> assemblies; + // calorimeter block z-offsets (as blocks are shorter than the volume length) + const double block_offset = -0.5*(length - modSize.z()); for (int i = 0; i < nas; ++i) { Assembly assembly(detName + Form("_ring%d", i + 1)); - auto assemblyPV = env.placeVolume(assembly, Position{0., 0., 0.}); + auto assemblyPV = env.placeVolume(assembly, Position{0., 0., block_offset}); assemblyPV.addPhysVolID("ring", i + 1); assemblies.emplace_back(std::move(assembly)); }