From 3718bd9fd730c34967c7f26f46f37613c3ea9fda Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Fri, 6 Aug 2021 22:02:02 -0500 Subject: [PATCH] Cleaning up stale detector files and source --- CMakeLists.txt | 23 ++- compact/cb_CTD_Si.xml | 45 ------ compact/cb_Solenoid.xml | 34 ---- compact/cb_VTX_Barrel.xml | 145 ------------------ compact/ce_GEM.xml | 55 ------- compact/mm_tracker_barrel.xml | 6 +- compact/subsystem_views/README.md | 11 ++ ...{ce_GEM.cpp => BackwardGEMTracker_geo.cpp} | 0 src/CylinderTrackerBarrel_geo.cpp | 10 +- src/{DRich.cpp => DRich_geo.cpp} | 0 src/{MRich.cpp => MRich_geo.cpp} | 0 ...imeter.cpp => ShashlikCalorimeter_geo.cpp} | 0 ...enoidCoil_geo.cpp => SolenoidCoil_geo.cpp} | 0 src/allsilicon_support.cpp | 81 ---------- src/cb_CTD_Si.cpp | 74 --------- src/cb_VTX_Barrel.cpp | 117 -------------- 16 files changed, 39 insertions(+), 562 deletions(-) delete mode 100644 compact/cb_CTD_Si.xml delete mode 100644 compact/cb_Solenoid.xml delete mode 100644 compact/cb_VTX_Barrel.xml delete mode 100644 compact/ce_GEM.xml create mode 100644 compact/subsystem_views/README.md rename src/{ce_GEM.cpp => BackwardGEMTracker_geo.cpp} (100%) rename src/{DRich.cpp => DRich_geo.cpp} (100%) rename src/{MRich.cpp => MRich_geo.cpp} (100%) rename src/{ShashlikCalorimeter.cpp => ShashlikCalorimeter_geo.cpp} (100%) rename src/{ref_SolenoidCoil_geo.cpp => SolenoidCoil_geo.cpp} (100%) delete mode 100644 src/allsilicon_support.cpp delete mode 100644 src/cb_CTD_Si.cpp delete mode 100644 src/cb_VTX_Barrel.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e909a0b..bfef7ec7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,27 @@ set(a_lib_name athena) dd4hep_configure_output() -dd4hep_add_plugin(${a_lib_name} SOURCES src/*.cpp - USES ActsCore ActsPluginDD4hep +dd4hep_add_plugin(${a_lib_name} SOURCES + src/BackwardGEMTracker_geo.cpp + src/BarrelCalorimeter_geo.cpp + src/BarrelCalorimeterHybrid_geo.cpp + src/BarrelCalorimeterInterlayers_geo.cpp + src/BarrelTrackerWithFrame_geo.cpp + src/CylinderTrackerBarrel_geo.cpp + src/DIRC_geo.cpp + src/DRich_geo.cpp + src/FieldMapBrBz.cpp + src/GaseousRICH_geo.cpp + src/GeometryHelpers.cpp + src/HomogeneousCalorimeter_geo.cpp + src/MRich_geo.cpp + src/PolyhedraEndcapCalorimeter2_geo.cpp + src/ShashlikCalorimeter_geo.cpp + src/SimpleDiskTracker_geo.cpp + src/SimpleRectangularTracker_geo.cpp + src/SolenoidCoil_geo.cpp + src/TrapEndcapTracker_geo.cpp + USES ActsCore ActsPluginDD4hep ) target_link_libraries(${a_lib_name} PUBLIC DD4hep::DDCore DD4hep::DDRec diff --git a/compact/cb_CTD_Si.xml b/compact/cb_CTD_Si.xml deleted file mode 100644 index 38e04cb4..00000000 --- a/compact/cb_CTD_Si.xml +++ /dev/null @@ -1,45 +0,0 @@ -<lccdd> - - <comment> Central Barrel Tracker Silicon </comment> - - <define> - <constant name="cb_CTD_rmin" value="SiliconTrackerInnerRadius + 70.0 * mm"/> - <constant name="cb_CTD_rmax" value="SiliconTrackerOuterRadius"/> - <constant name="cb_CTD_zmax" value="SiliconTrackerOuterBarrel_zmax"/> - <constant name="cb_CTD_length" value="SiliconTrackerOuterBarrelLength"/> - <comment> Si layer opiton </comment> - <constant name="cb_CTD_Si_gap" value="5.0 * cm"/> - <constant name="cb_CTD_Si_layer" value="15"/> - </define> - - <limits> - </limits> - - <regions> - </regions> - - <display> - </display> - - <detectors> - <detector id="cb_CTD_Si_ID" name="cb_CTD_Si" type="cb_CTD_Si" readout="cb_CTD_Si_Hits" vis="cb_CTDVis" insideTrackingVloume="true"> - <dimensions rmin="cb_CTD_rmin" rmax="cb_CTD_rmax" length="cb_CTD_length" zmax="cb_CTD_zmax" gap="cb_CTD_Si_gap"/> - <layer repeat="cb_CTD_Si_layer" vis="cb_CTD_Si_layerVis"> - <slice name="Silicon_slice" material="Si" sensitive="true"/> - </layer> - </detector> - </detectors> - - <readouts> - <readout name="cb_CTD_Si_Hits"> - <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" /> - <id>system:8,barrel:3,layer:4,x:32:-16,y:-16</id> - </readout> - </readouts> - - <plugins> - </plugins> - - <fields> - </fields> -</lccdd> diff --git a/compact/cb_Solenoid.xml b/compact/cb_Solenoid.xml deleted file mode 100644 index efca08be..00000000 --- a/compact/cb_Solenoid.xml +++ /dev/null @@ -1,34 +0,0 @@ -<lccdd> - - <comment>Central Barrel Solenoid</comment> - - <define> - </define> - - <limits> - </limits> - - <regions> - </regions> - - <display> - </display> - - <!-- Define detector --> - <detectors> - <comment> - Central Barrel Solenoid Magnet - </comment> - <detector id="Solenoid_ID" name="cb_Solenoid" type="cb_Solenoid" insideTrackingVolume="false" vis="cb_SolenoidVis"> - <material name="Vacuum"/> <!-- G4_Galactic --> - <dimensions rmin="Solenoid_rmin" rmax="Solenoid_rmax" z="b_Solenoid_z" delta="cb_Solenoid_shift"/> - </detector> - </detectors> - - <plugins> - </plugins> - - <!-- TODO: Define field using field map--> - <fields> - </fields> -</lccdd> diff --git a/compact/cb_VTX_Barrel.xml b/compact/cb_VTX_Barrel.xml deleted file mode 100644 index 4b39ba89..00000000 --- a/compact/cb_VTX_Barrel.xml +++ /dev/null @@ -1,145 +0,0 @@ -<lccdd> - - <comment> Central Barrel Vertex Detector </comment> - - <define> - <constant name="cb_VTX_Barrel_rmin" value="VertexTrackerInnerRadius"/> - <constant name="cb_VTX_Barrel_rmax" value="VertexTrackerOuterRadius"/> - <constant name="cb_VTX_Barrel_length" value="VertexTrackerOuterBarrelLength"/> - - <constant name="cb_VTX_Barrel_x_pos" value="0.0*mm"/> - <constant name="cb_VTX_Barrel_y_pos" value="0.0*mm"/> - <constant name="cb_VTX_Barrel_z_pos" value="0.0*mm"/> - - <constant name="cb_VTX_Barrel_layer" value="6"/> - - <comment> Need to cleanup and be more consistent with naming here </comment> - - <constant name="VertexTrackerBarrelLength" value="400.0*mm"/> - - <constant name="SiVertexEndcapP_rmin" value="VertexTrackerInnerRadius"/> - <constant name="SiVertexEndcapP_rmax" value="VertexTrackerOuterRadius"/> - <constant name="SiVertexEndcapP_zmin" value="VertexTrackerBarrelLength + 5*mm"/> - - <constant name="SiVertexEndcapN_rmin" value="VertexTrackerInnerRadius"/> - <constant name="SiVertexEndcapN_rmax" value="VertexTrackerOuterRadius"/> - <constant name="SiVertexEndcapN_zmin" value="VertexTrackerBarrelLength + 5*mm"/> - - <constant name="SiVertexEndcap_NLayers" value="5"/> - <constant name="SiVertexEndcapP_zmax" value="VertexTrackingRegion_length/2 - SiVertexEndcapN_zmin"/> - <constant name="SiVertexEndcapP_zmax" value="VertexTrackingRegion_length/2 - SiVertexEndcapN_zmin"/> - <constant name="SiVertexEndcap_delta" value="(SiVertexEndcapP_zmax - SiVertexEndcapP_zmin)/SiVertexEndcap_NLayers"/> - </define> - - <limits> - </limits> - - <regions> - </regions> - - <display> - </display> - - <detectors> - - <detector id="SiVertexSubAssembly_ID" - name="SiVertexSubAssembly" - type="DD4hep_SubdetectorAssembly" - vis="SiTrackerSubAssemblyVis"> - <composite name="SiVertexEndcapN"/> - <composite name="SiVertexEndcapP"/> - <composite name="cb_VTX_Barrel"/> - </detector> - - <detector id="cb_VTX_Barrel_ID" name="cb_VTX_Barrel" type="cb_VTX_Barrel" readout="cb_VTX_Barrel_Hits" vis="cb_VTX_BarrelVis" insideTrackingVloume="true"> - <dimensions rmin="cb_VTX_Barrel_rmin" rmax="cb_VTX_Barrel_rmax" length="cb_VTX_Barrel_length"/> - <position x="cb_VTX_Barrel_x_pos" y="cb_VTX_Barrel_y_pos" z="cb_VTX_Barrel_z_pos"/> - <layer repeat="cb_VTX_Barrel_layer" vis="cb_VTX_Barrel_layerVis"> - <slice name="Silicon_slice" material="Si" sensitive="true"/> - </layer> - </detector> - - <detector id="SiVertexEndcapP_ID" name="SiVertexEndcapP" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="false" vis="AnlRed"> - <position x="0" y="0" z="0"/> - <layer id="1" vis="AnlOrange" - inner_z="SiVertexEndcapP_zmin + 0*SiVertexEndcap_delta" - inner_r="SiVertexEndcapP_rmin" - outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="2" vis="AnlOrange" - inner_z="SiVertexEndcapP_zmin + 1*SiVertexEndcap_delta" - inner_r="SiVertexEndcapP_rmin" - outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="3" vis="AnlOrange" - inner_z="SiVertexEndcapP_zmin + 2*SiVertexEndcap_delta" - inner_r="SiVertexEndcapP_rmin" - outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="4" vis="AnlOrange" - inner_z="SiVertexEndcapP_zmin + 3*SiVertexEndcap_delta" - inner_r="SiVertexEndcapP_rmin" - outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="5" vis="AnlOrange" - inner_z="SiVertexEndcapP_zmin + 4*SiVertexEndcap_delta" - inner_r="SiVertexEndcapP_rmin" - outer_r="SiVertexEndcapP_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - </detector> - - <detector id="SiVertexEndcapN_ID" name="SiVertexEndcapN" type="ref_DiskTracker" - insideTrackingVolume="true" reflect="true" vis="AnlRed"> - <position x="0" y="0" z="0"/> - <layer id="1" vis="AnlOrange" - inner_z="SiVertexEndcapN_zmin + 0*SiVertexEndcap_delta" - inner_r="SiVertexEndcapN_rmin" - outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="2" vis="AnlOrange" - inner_z="SiVertexEndcapN_zmin + 1*SiVertexEndcap_delta" - inner_r="SiVertexEndcapN_rmin" - outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="3" vis="AnlOrange" - inner_z="SiVertexEndcapN_zmin + 2*SiVertexEndcap_delta" - inner_r="SiVertexEndcapN_rmin" - outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="4" vis="AnlOrange" - inner_z="SiVertexEndcapN_zmin + 3*SiVertexEndcap_delta" - inner_r="SiVertexEndcapN_rmin" - outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - <layer id="5" vis="AnlOrange" - inner_z="SiVertexEndcapN_zmin + 4*SiVertexEndcap_delta" - inner_r="SiVertexEndcapN_rmin" - outer_r="SiVertexEndcapN_rmax"> - <slice material="Air" thickness="1.0*mm" vis="AnlOrange" /> - </layer> - </detector> - </detectors> - - <readouts> - <readout name="cb_VTX_Barrel_Hits"> - <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" /> - <id>system:8,barrel:3,layer:4,module:8,x:32:-16,y:-16</id> - </readout> - </readouts> - - <plugins> - </plugins> - - <fields> - </fields> -</lccdd> diff --git a/compact/ce_GEM.xml b/compact/ce_GEM.xml deleted file mode 100644 index afac461d..00000000 --- a/compact/ce_GEM.xml +++ /dev/null @@ -1,55 +0,0 @@ -<lccdd> - - <comment> Electron endcap GEM tracking </comment> - - <define> - <comment> - ------------------ - ce_GEM Parameters - ------------------ - </comment> - <constant name="ce_GEM_rmin" value="10.0 * cm"/> <comment> temporary number. Need beampipe radius </comment> - <!--<constant name="ce_GEM_rmin" value="0.0 * cm"/>--> - <constant name="ce_GEM_rmax" value="HcalEndcapN_rmin + 0.0 * cm"/> <comment> temporary number to avoid overlaps </comment> - <!--<constant name="ce_GEM_rmax" value="45.0 * cm + 50.0 * cm"/>--> - <constant name="ce_GEM_length" value="30.0 * cm"/> - <constant name="ce_GEM_x_pos" value="0.0 * cm"/> - <constant name="ce_GEM_y_pos" value="0.0 * cm"/> - <!--<constant name="ce_GEM_z_pos" value="-Solenoid_length/2.0 + ce_GEM_length/2.0"/>--> - <constant name="ce_GEM_z_pos" value="-EcalEndcapN_zmin - CrystalBox_z_length - ce_GEM_length/2.0"/> - <constant name="ce_GEM_layer" value="8"/> - <constant name="ce_GEM_layer_thickness" value="1.0 * cm"/> - </define> - - <limits> - </limits> - - <regions> - </regions> - - <display> - </display> - - <detectors> - <detector id="ce_GEM_ID" name="ce_GEM" type="ce_GEM" readout="ce_GEM_Hits" vis="ce_GEMVis" insideTrackingVloume="true"> - <dimensions rmin="ce_GEM_rmin" rmax="ce_GEM_rmax" length="ce_GEM_length"/> - <position x="ce_GEM_x_pos" y="ce_GEM_y_pos" z="ce_GEM_z_pos"/> - <layer repeat="ce_GEM_layer" vis="ce_GEM_layerVis"> - <slice name="Ar10CO2_slice" material="Ar10CO2" thickness="ce_GEM_layer_thickness" sensitive="true"/> - </layer> - </detector> - </detectors> - - <readouts> - <readout name="ce_GEM_Hits"> - <segmentation type="CartesianGridXY" grid_size_x="1.0*mm" grid_size_y="1.0*mm" /> - <id>system:8,layer:8,x:32:-16,y:-16</id> - </readout> - </readouts> - - <plugins> - </plugins> - - <fields> - </fields> -</lccdd> diff --git a/compact/mm_tracker_barrel.xml b/compact/mm_tracker_barrel.xml index 5430055e..f78296b2 100644 --- a/compact/mm_tracker_barrel.xml +++ b/compact/mm_tracker_barrel.xml @@ -28,10 +28,8 @@ <detectors> <detector id="MMTrackerBarrel_ID" name="MMTrackerBarrel" type="athena_MMTrackerBarrel" readout="MMTrackerBarrelHits"> <module name="Module1" vis="AnlGold"> - <module_envelope - rmin="TrackerBarrel_rmax" - length="MMTrackerBarrelLayer1_length" - thickness="MMTrackerBarrel_delta" phi="90*degree" /> + <module_envelope rmin="TrackerBarrel_rmax" length="MMTrackerBarrelLayer1_length" thickness="MMTrackerBarrel_delta" + phi="90*degree" /> <module_component thickness="1.0*mm" material="PEEK" sensitive="false"> <position x="0" /> </module_component> diff --git a/compact/subsystem_views/README.md b/compact/subsystem_views/README.md new file mode 100644 index 00000000..fd530e16 --- /dev/null +++ b/compact/subsystem_views/README.md @@ -0,0 +1,11 @@ +# subsytem_views + +These compact detector files are copies of the main `athena.xml` compact description file, modified to only show certain subsystems. + +To add or update a subsystem: + +1. Copy `athena.xml` to this directory (`compact/subsystem_views`) with the appropriate name. +2. Remove all the undesired detectors from this xml file. **Do not modify any of the included xml files** -- only modify the top level xml file here. +3. Check that that you have the desired color scheme (eg. `colors.xml`) and display attributes (eg. `display_detailed.xml`) included. + +These compact detector files should not be used for any real simulations or studies. diff --git a/src/ce_GEM.cpp b/src/BackwardGEMTracker_geo.cpp similarity index 100% rename from src/ce_GEM.cpp rename to src/BackwardGEMTracker_geo.cpp diff --git a/src/CylinderTrackerBarrel_geo.cpp b/src/CylinderTrackerBarrel_geo.cpp index 8c643ada..27f701f6 100644 --- a/src/CylinderTrackerBarrel_geo.cpp +++ b/src/CylinderTrackerBarrel_geo.cpp @@ -13,9 +13,9 @@ using namespace dd4hep::detail; /** A barrel tracker with a module that is curved (not flat). * - * + * \ingroup tracking */ -static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector sens) +static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h e, SensitiveDetector sens) { typedef vector<PlacedVolume> Placements; xml_det_t x_det = e; @@ -194,6 +194,6 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s } // clang-format off -DECLARE_DETELEMENT(athena_CylinderTrackerBarrel, create_detector) -DECLARE_DETELEMENT(athena_MMTrackerBarrel, create_detector) -DECLARE_DETELEMENT(athena_RWellTrackerBarrel, create_detector) +DECLARE_DETELEMENT(athena_CylinderTrackerBarrel, CylinderTrackerBarrel_create_detector) +DECLARE_DETELEMENT(athena_MMTrackerBarrel, CylinderTrackerBarrel_create_detector) +DECLARE_DETELEMENT(athena_RWellTrackerBarrel, CylinderTrackerBarrel_create_detector) diff --git a/src/DRich.cpp b/src/DRich_geo.cpp similarity index 100% rename from src/DRich.cpp rename to src/DRich_geo.cpp diff --git a/src/MRich.cpp b/src/MRich_geo.cpp similarity index 100% rename from src/MRich.cpp rename to src/MRich_geo.cpp diff --git a/src/ShashlikCalorimeter.cpp b/src/ShashlikCalorimeter_geo.cpp similarity index 100% rename from src/ShashlikCalorimeter.cpp rename to src/ShashlikCalorimeter_geo.cpp diff --git a/src/ref_SolenoidCoil_geo.cpp b/src/SolenoidCoil_geo.cpp similarity index 100% rename from src/ref_SolenoidCoil_geo.cpp rename to src/SolenoidCoil_geo.cpp diff --git a/src/allsilicon_support.cpp b/src/allsilicon_support.cpp deleted file mode 100644 index 7d38f629..00000000 --- a/src/allsilicon_support.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "DD4hep/DetFactoryHelper.h" -#include "DD4hep/OpticalSurfaces.h" -#include "DD4hep/Printout.h" -#include "DDRec/DetectorData.h" -#include "DDRec/Surface.h" -#include <XML/Helper.h> -////////////////////////////////// -// Support structure for ALl-silicon -////////////////////////////////// - -using namespace std; -using namespace dd4hep; - -// Info from -// https://github.com/reynier0611/g4lblvtx/blob/master/source/AllSi_vtx_serv_2lyr_Detector.cc -// TODO: this is quite incomplete, should probably wait for official word -// from he tracking WG - -static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens) -{ - xml_det_t x_det = e; - string detName = x_det.nameStr(); - int detID = x_det.id(); - bool reflect = x_det.reflect(); - const int sign = reflect ? -1 : 1; - - // second vertexing layer - std::vector<double> z_det = {15 * cm, 20 * cm}; - std::vector<double> rin_l2 = {5.48 * cm, 14.8 * cm}; - std::vector<double> rout_l2 = {0, 0}; - - // first vertexing layer - std::vector<double> rin_l1 = {3.30 * cm, 14.36 * cm}; - std::vector<double> rout_l1 = {0, 0}; - - const int nzplanes_l2 = z_det.size(); - const int nzplanes_l1 = z_det.size(); - - for (int i = 0; i < nzplanes_l2; i++) { - rout_l2[i] = rin_l2[i] + 0.44; - z_det[i] *= sign / abs(sign); - } - for (int i = 0; i < nzplanes_l1; i++) { - rout_l1[i] = rin_l1[i] + 0.44; - z_det[i] *= sign / abs(sign); - } - // mother volume - std::vector<double> rin_mo = rin_l1; - std::vector<double> rout_mo = rout_l2; - - DetElement det(detName, detID); - Material Vacuum = desc.material("Vacuum"); - Polycone empty_cone("empty_cone", 0.0, 360 * degree, z_det, rin_mo, rout_mo); - Volume detVol("empty_cone", empty_cone, Vacuum); - detVol.setVisAttributes(desc.invisible()); - - Volume motherVol = desc.pickMotherVolume(det); - Transform3D tr(RotationZYX(0.0, 0.0, 0.0), Position(0.0, 0.0, 0.)); - PlacedVolume detPV = motherVol.placeVolume(detVol, tr); - detPV.addPhysVolID("system", detID); - detPV.addPhysVolID("barrel", 1); - det.setPlacement(detPV); - - Material Al = desc.material("Al"); - Material Graphite = desc.material("Graphite"); - - // cb_DIRC_bars_Logic.setVisAttributes(desc.visAttributes(x_det.visStr())); - - Polycone polycone_l2("polycone_l2", 0, 360 * degree, z_det, rin_l2, rout_l2); - Volume logical_l2("polycone_l2_logic", polycone_l2, Al); - logical_l2.setVisAttributes(desc.visAttributes(x_det.visStr())); - detVol.placeVolume(logical_l2, tr); - Polycone polycone_l1("polycone_l1", 0, 360 * degree, z_det, rin_l1, rout_l1); - Volume logical_l1("polycone_l1_logic", polycone_l1, Al); - logical_l1.setVisAttributes(desc.visAttributes(x_det.visStr())); - detVol.placeVolume(logical_l1, tr); - - return det; -} - -DECLARE_DETELEMENT(allsilicon_support, createDetector) diff --git a/src/cb_CTD_Si.cpp b/src/cb_CTD_Si.cpp deleted file mode 100644 index 96c53cce..00000000 --- a/src/cb_CTD_Si.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include <XML/Helper.h> -#include "DDRec/Surface.h" -#include "DDRec/DetectorData.h" -#include "DD4hep/OpticalSurfaces.h" -#include "DD4hep/DetFactoryHelper.h" -#include "DD4hep/Printout.h" -////////////////////////////////// -// Central Barrel Tracker Silicon -////////////////////////////////// - -using namespace std; -using namespace dd4hep; - -static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens) -{ - xml_det_t x_det = e; - string detName = x_det.nameStr(); - int detID = x_det.id(); - - xml_dim_t dim = x_det.dimensions(); - double RIn = dim.rmin(); - double ROut = dim.rmax(); - double SizeZ = dim.length(); - double SizeZCut = dim.zmax(); - double SiLayerGap = dim.gap(); - - Material Vacuum = desc.material("Vacuum"); - - // Create Global Volume - Tube cb_CTD_GVol_Solid(RIn, ROut, SizeZ / 2.0, 0., 360.0 * deg); - Volume detVol("cb_CTD_GVol_Logic", cb_CTD_GVol_Solid, Vacuum); - detVol.setVisAttributes(desc.visAttributes(x_det.visStr())); - - // Construct Silicon Layers - xml_comp_t x_layer = x_det.child(_U(layer)); - const int repeat = x_layer.repeat(); - - xml_comp_t x_slice = x_layer.child(_U(slice)); - Material slice_mat = desc.material(x_slice.materialStr()); - - double layerRIn[100]; - double layerROut[100]; - - // Loop over layers - for(int i = 0; i < repeat; i++) { - layerRIn[i] = RIn + (SiLayerGap * i); - layerROut[i] = RIn + (0.01 + SiLayerGap * i); - - if (layerROut[i] > ROut) - continue; - - string logic_layer_name = detName + _toString(i, "_Logic_lay_%d"); - if (i==7){logic_layer_name = detName + _toString(20, "_Logic_lay_%d");} - Volume layerVol(logic_layer_name,Tube(layerRIn[i], layerROut[i], SizeZ / 2.0, 0.0, 360.0 * deg), slice_mat); - layerVol.setVisAttributes(desc,x_layer.visStr()); - sens.setType("tracker"); - layerVol.setSensitiveDetector(sens); - - Position layer_pos = Position(0.0, 0.0, 0.0); - PlacedVolume layerPV = detVol.placeVolume(layerVol, layer_pos); - layerPV.addPhysVolID("layer", i+1); - } - - DetElement det(detName, detID); - Volume motherVol = desc.pickMotherVolume(det); - Transform3D tr(RotationZYX(0.0, 0.0, 0.0), Position(0.0, 0.0, 0.0)); - PlacedVolume detPV = motherVol.placeVolume(detVol, tr); - detPV.addPhysVolID("system", detID); - detPV.addPhysVolID("barrel", 1); - det.setPlacement(detPV); - return det; -} - -DECLARE_DETELEMENT(cb_CTD_Si, createDetector) diff --git a/src/cb_VTX_Barrel.cpp b/src/cb_VTX_Barrel.cpp deleted file mode 100644 index 23b27c22..00000000 --- a/src/cb_VTX_Barrel.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include <XML/Helper.h> -#include "DDRec/Surface.h" -#include "DDRec/DetectorData.h" -#include "DD4hep/OpticalSurfaces.h" -#include "DD4hep/DetFactoryHelper.h" -#include "DD4hep/Printout.h" -////////////////////////////////// -// Central Barrel Vertex Detector -////////////////////////////////// - -using namespace std; -using namespace dd4hep; - -static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens) -{ - xml_det_t x_det = e; - string detName = x_det.nameStr(); - int detID = x_det.id(); - - xml_dim_t dim = x_det.dimensions(); - double RIn = dim.rmin(); - double ROut = dim.rmax(); - double SizeZ = dim.length(); - - xml_dim_t pos = x_det.position(); - - Material Vacuum = desc.material("Vacuum"); - - // Create Global Volume - Tube cb_VTX_Barrel_GVol_Solid(RIn, ROut, SizeZ / 2.0, 0., 360.0 * deg); - Volume detVol("cb_VTX_Barrel_GVol_Logic", cb_VTX_Barrel_GVol_Solid, Vacuum); - detVol.setVisAttributes(desc.visAttributes(x_det.visStr())); - - ////////////////// - // Barrel Ladder - ////////////////// - xml_comp_t x_layer = x_det.child(_U(layer)); - const int repeat = x_layer.repeat(); - - xml_comp_t x_slice = x_layer.child(_U(slice)); - Material slice_mat = desc.material(x_slice.materialStr()); - - double x = 0.0 * cm; - double y = 0.0 * cm; - double z = 0.0 * cm; - int FDIV = 0; - double dR = 0.0; - double length = 0.0; - double phi = 0.0; - // Ladder Layer Parameters - double lay_Dx[6]; - double lay_Dy[6]; - double lay_Dz[6]; - double lay_Rin[6]; - lay_Dx[0] = 0.050 * mm; lay_Dy[0] = 1.0 * cm; lay_Dz[0] = 10.0 * cm; lay_Rin[0] = 3.5 * cm; - lay_Dx[1] = 0.050 * mm; lay_Dy[1] = 1.0 * cm; lay_Dz[1] = 11.0 * cm; lay_Rin[1] = 4.5 * cm; - lay_Dx[2] = 0.150 * mm; lay_Dy[2] = 2.0 * cm; lay_Dz[2] = 18.0 * cm; lay_Rin[2] = 6.5 * cm; - lay_Dx[3] = 0.150 * mm; lay_Dy[3] = 2.0 * cm; lay_Dz[3] = 24.0 * cm; lay_Rin[3] = 10.5 * cm; - lay_Dx[4] = 0.150 * mm; lay_Dy[4] = 3.0 * cm; lay_Dz[4] = 36.0 * cm; lay_Rin[4] = 13.5 * cm; - lay_Dx[5] = 0.150 * mm; lay_Dy[5] = 3.0 * cm; lay_Dz[5] = 48.0 * cm; lay_Rin[5] = 15.5 * cm; - - int i_layer = 0; - int i_module = 0; - // Loop over layers - for(int i = 0; i < repeat; i++) { - double cb_VTX_Barrel_ladder_DZ = lay_Dz[i]; - double cb_VTX_Barrel_ladder_DY = lay_Dy[i]; - double cb_VTX_Barrel_ladder_Thickness = lay_Dx[i]; - dR = lay_Rin[i]; - length = 2.0 * 3.1415 * dR; - int laddersCount = length / cb_VTX_Barrel_ladder_DY; - - for (int i = 0; i < 2; i++) { - double LN = cb_VTX_Barrel_ladder_DY * laddersCount; - double LN1 = cb_VTX_Barrel_ladder_DY * (laddersCount + 1.0 + i); - - if (LN/LN1 > 0.8) - laddersCount = laddersCount + 1; - } - - double cb_VTX_Barrel_ladder_deltaphi = 2.0 * 3.1415926 / laddersCount; - - string ladderBoxName = detName + _toString(i, "_ladder_Solid_%d"); - string ladderName = detName + _toString(i, "_ladder_Logic_%d"); - Volume ladderVol(ladderName, Box(cb_VTX_Barrel_ladder_Thickness * 0.5, cb_VTX_Barrel_ladder_DY * 0.5, cb_VTX_Barrel_ladder_DZ * 0.5), slice_mat); - ladderVol.setVisAttributes(desc,x_layer.visStr()); - sens.setType("tracker"); - ladderVol.setSensitiveDetector(sens); - i_layer++; - - for (int ia = 0; ia < laddersCount; ia++) { - phi = (ia * (cb_VTX_Barrel_ladder_deltaphi)); - x = - dR * cos(phi); - y = - dR * sin(phi); - - RotationZYX ladder_rot = RotationZYX(cb_VTX_Barrel_ladder_deltaphi * ia, 0.0, 0.0); - Position ladder_pos = Position(x, y, z); - string ladderName = detName + _toString(i, "_ladder_Phys_%d") + _toString(ia, "_%d"); - PlacedVolume ladderPV = detVol.placeVolume(ladderVol, Transform3D(ladder_rot, ladder_pos)); - i_module++; - ladderPV.addPhysVolID("layer", i_layer).addPhysVolID("module", i_module); - } - } - - // TODO: Pixels - - DetElement det(detName, detID); - Volume motherVol = desc.pickMotherVolume(det); - Transform3D tr(RotationZYX(0.0, 0.0, 0.0), Position(0.0, 0.0, pos.z())); - PlacedVolume detPV = motherVol.placeVolume(detVol, tr); - detPV.addPhysVolID("system", detID); - detPV.addPhysVolID("barrel", 1); - det.setPlacement(detPV); - return det; -} - -DECLARE_DETELEMENT(cb_VTX_Barrel, createDetector) -- GitLab