From 7f8296bdb0af923e5c5c5fc807510aac7f6a0cab Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Sat, 5 Jun 2021 23:00:41 -0500 Subject: [PATCH] modified: compact/central_tracker.xml modified: src/TrapEndcapTracker_geo.cpp --- compact/central_tracker.xml | 2 +- src/TrapEndcapTracker_geo.cpp | 35 +++++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/compact/central_tracker.xml b/compact/central_tracker.xml index 97a5fdb4..e1eb51e9 100644 --- a/compact/central_tracker.xml +++ b/compact/central_tracker.xml @@ -410,7 +410,7 @@ zstart="TrackerEndcapOuter_zmin" /> <ring vis="AnlRed" r="TrackerEndcapOuter_rmin1+TrackerEndcapOuterMod1_y/2.0" - zstart="TrackerEndcapOuter_zmin + 1.0*cm" + zstart="0.0*cm" nmodules="12" dz="10 * mm" module="Module1" /> </layer> </detector> diff --git a/src/TrapEndcapTracker_geo.cpp b/src/TrapEndcapTracker_geo.cpp index ed801895..5a0d5064 100644 --- a/src/TrapEndcapTracker_geo.cpp +++ b/src/TrapEndcapTracker_geo.cpp @@ -105,6 +105,7 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s double layer_rmax = l_env.attr<double>(_Unicode(rmax)); double layer_length = l_env.attr<double>(_Unicode(length)); double layer_zstart = l_env.attr<double>(_Unicode(zstart)); + double layer_center_z = layer_zstart + layer_length/2.0; //printout(INFO,"ROOTGDMLParse","+++ Read geometry from GDML file file:%s",input.c_str()); //std::cout << "SiTracker Endcap layer " << l_id << " zstart = " << layer_zstart/dd4hep::mm << "mm ( " << layer_length/dd4hep::mm << " mm thick )\n"; @@ -116,11 +117,16 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s PlacedVolume layer_pv; if (reflect) { - layer_pv = assembly.placeVolume(layer_vol, Position(0,0,-1.0e-9));//-layer_zstart-layer_length/2)); + + layer_pv = assembly.placeVolume( + layer_vol, + Transform3D(RotationZYX(0.0, -M_PI, 0.0), Position(0, 0, -layer_center_z))); + //-layer_zstart-layer_length/2)); layer_pv.addPhysVolID("barrel", 3).addPhysVolID("layer", l_id); layer_name += "_N"; } else { - layer_pv = assembly.placeVolume(layer_vol);//, Position(0, 0, +layer_zstart + layer_length / 2)); + layer_pv = assembly.placeVolume(layer_vol, Position(0, 0, layer_center_z)); + //, Position(0, 0, +layer_zstart + layer_length / 2)); layer_pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id); layer_name += "_P"; } @@ -148,20 +154,21 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s string m_base = _toString(l_id, "layer%d") + _toString(mod_num, "_module%d"); double x = -r * std::cos(phi); double y = -r * std::sin(phi); - DetElement module(sdet, m_base + "_pos", det_id); - pv = assembly.placeVolume(m_vol, - Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz))); - pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num); - module.setPlacement(pv); - for (size_t ic = 0; ic < sensVols.size(); ++ic) { - PlacedVolume sens_pv = sensVols[ic]; - DetElement comp_elt(module, sens_pv.volume().name(), mod_num); - comp_elt.setPlacement(sens_pv); - } - if (reflect) { + if (!reflect) { + DetElement module(sdet, m_base + "_pos", det_id); + pv = assembly.placeVolume( + m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, zstart + dz))); + pv.addPhysVolID("barrel", 1).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num); + module.setPlacement(pv); + for (size_t ic = 0; ic < sensVols.size(); ++ic) { + PlacedVolume sens_pv = sensVols[ic]; + DetElement comp_elt(module, sens_pv.volume().name(), mod_num); + comp_elt.setPlacement(sens_pv); + } + } else { pv = assembly.placeVolume( - m_vol, Transform3D(RotationZYX(M_PI, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz))); + m_vol, Transform3D(RotationZYX(0, -M_PI / 2 - phi, -M_PI / 2), Position(x, y, -zstart - dz))); pv.addPhysVolID("barrel", 2).addPhysVolID("layer", l_id).addPhysVolID("module", mod_num); DetElement r_module(sdet, m_base + "_neg", det_id); r_module.setPlacement(pv); -- GitLab