diff --git a/compact/definitions.xml b/compact/definitions.xml index dc7901d34a07c1104d6f9bb313b77c1cbf37c20a..5becd21b28aba574308b05e84fe18f5a53e68eed 100644 --- a/compact/definitions.xml +++ b/compact/definitions.xml @@ -369,7 +369,7 @@ Examples: <documentation> ## Vertex Tracker Parameters </documentation> - <constant name="VertexTrackerBarrel_rmin" value="Beampipe_rmax + 5.0*mm"/> + <constant name="VertexTrackerBarrel_rmin" value="Beampipe_rmax + 1.0*mm"/> <constant name="VertexTrackerBarrel_rmax" value="200.0*mm"/> <constant name="VertexTrackerBarrel_length" value="300.0*mm"/> <constant name="VertexTrackerBarrel_zmax" value="VertexTrackerBarrel_length/2.0"/> diff --git a/compact/vertex_tracker.xml b/compact/vertex_tracker.xml index a1e18d041e4db9380568a57d8a6fcbeb09afe9e1..4308420e5d8bfedf556972671ecdf5f3c73ca077 100644 --- a/compact/vertex_tracker.xml +++ b/compact/vertex_tracker.xml @@ -1,27 +1,59 @@ <?xml version="1.0" encoding="UTF-8"?> <lccdd> <define> + <comment> + THis value probably can live in the file that includes this one. + </comment> <constant name="ITS3Thickness" value="40*um"/> - <constant name="VertexBarrelLayer_thickness" value="ITS3Thickness"/> - <constant name="VertexBarrelShell_thickness" value="300*um"/> - <constant name="VertexBarrelLayer_rmin1" value="3.3*cm"/> - <constant name="VertexBarrelLayer_rmin2" value="5.7*cm"/> - <constant name="VertexBarrelLayer_offset" value="VertexBarrelLayer_rmin2-VertexBarrelLayer_rmin1"/> - <constant name="VertexBarrelShell_rmin" value="VertexBarrelLayer_rmin2+VertexBarrelLayer_offset"/> - <constant name="VertexBarrelLayer_rmax1" value="VertexBarrelLayer_rmin2"/> - <constant name="VertexBarrelLayer_rmax2" value="VertexBarrelShell_rmin"/> - <constant name="VertexBarrelShell_rmax" value="VertexBarrelShell_rmin + VertexBarrelShell_thickness"/> - <constant name="VertexBarrel_length" value="VertexTrackerBarrel_length"/> - - <constant name="VertexTrackerEndcapN_zmin" value="VertexTrackerBarrel_zmax"/> - <constant name="VertexTrackerEndcapP_zmin" value="VertexTrackerBarrel_zmax"/> - - <constant name="VertexEndcap_NLayers" value="1"/> - <constant name="VertexTrackerEndcap_delta" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> - <constant name="VertexEndcapLayer_dz" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> - - <constant name="VertexEndcapModOpeningAngle" value="30.0*degree"/> + <documentation> + #### Vertex Tracker Barrel Parameters + +- The sensor modules are 2 half-cylinders. +- There are 2 sensitive layers +- Each sensor has a thickness is 40um +- There is an outer shell for structural support 300um thick. +- The ID of this shell is set (arbitrarily) to 10 cm. + + ##### Sensor layers + +Currently there are 2 sensor layers. Each is composed of 2 half-cylinders modules with only 40um of silicon thickness. + + ##### Support shell + +Simple carbon fiber support shell. + + </documentation> + + <constant name="VertexBarrel_length" value="VertexTrackerBarrel_length"/> + <constant name="VertexBarrelLayer_length" value="VertexBarrel_length - 1*mm"/> + <constant name="VertexBarrelMod_length" value="VertexBarrel_length - 2*mm"/> + + <constant name="VertexBarrelSensor_thickness" value="ITS3Thickness"/> + <constant name="VertexBarrelLayer_thickness" value="0.2*cm"/> + <constant name="VertexBarrelMod_thickness" value="0.1*cm"/> + <constant name="VertexBarrelMod1_rmin" value="3.4*cm"/> + <constant name="VertexBarrelMod2_rmin" value="5.7*cm"/> + <constant name="VertexBarrelLayer_rmin1" value="VertexBarrelMod1_rmin - VertexBarrelLayer_thickness/2.0"/> + <constant name="VertexBarrelLayer_rmin2" value="VertexBarrelMod2_rmin - VertexBarrelLayer_thickness/2.0"/> + + <constant name="VertexBarrelLayer_offset" value="VertexBarrelLayer_rmin2-VertexBarrelLayer_rmin1"/> + <constant name="VertexBarrelLayer_rmax1" value="VertexBarrelLayer_rmin1 + VertexBarrelLayer_thickness"/> + <constant name="VertexBarrelLayer_rmax2" value="VertexBarrelLayer_rmin2 + VertexBarrelLayer_thickness"/> + + <constant name="VertexBarrelShell_rmin" value="VertexBarrelLayer_rmin2+2*VertexBarrelLayer_offset"/> + <constant name="VertexBarrelShell_thickness" value="300*um"/> + <constant name="VertexBarrelShell_rmax" value="VertexBarrelShell_rmin + VertexBarrelShell_thickness"/> + <constant name="VertexBarrelShell_length" value="VertexBarrel_length"/> + + <constant name="VertexTrackerEndcapN_zmin" value="VertexTrackerBarrel_zmax"/> + <constant name="VertexTrackerEndcapP_zmin" value="VertexTrackerBarrel_zmax"/> + + <constant name="VertexEndcap_NLayers" value="1"/> + <constant name="VertexTrackerEndcap_delta" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> + <constant name="VertexEndcapLayer_dz" value="(VertexTrackerEndcapP_zmax - VertexTrackerEndcapP_zmin)/VertexEndcap_NLayers"/> + + <constant name="VertexEndcapModOpeningAngle" value="30.0*degree"/> <constant name="VertexEndcapMod1_x1" value="2.0*VertexTrackerEndcapP_rmin*sin(VertexEndcapModOpeningAngle/2.0)"/> <constant name="VertexEndcapMod1_x2" value="2.0*VertexTrackerEndcapP_rmax*sin(VertexEndcapModOpeningAngle/2.0)"/> <constant name="VertexEndcapMod1_y" value="VertexTrackerEndcapP_rmax*cos(VertexEndcapModOpeningAngle/2.0) - VertexTrackerEndcapP_rmin"/> @@ -34,24 +66,24 @@ <detector id="VertexBarrel_ID" name="VertexBarrel" - type="athena_VertexBarrel" + type="athena_CylinderVertexBarrel" readout="VertexBarrelHits" insideTrackingVolume="true"> <comment>Vertex Barrel Modules</comment> <module name="Module1" vis="VertexLayerVis"> - <module_envelope rmin="VertexBarrelLayer_rmin1" length="VertexBarrel_length" thickness="VertexBarrelLayer_thickness" phi="180*degree" /> - <module_component thickness="VertexBarrelLayer_thickness" material="Silicon" sensitive="true"> + <module_envelope rmin="VertexBarrelMod1_rmin" length="VertexBarrelMod_length" thickness="VertexBarrelMod_thickness" phi="180*degree" /> + <module_component thickness="VertexBarrelSensor_thickness" material="Silicon" sensitive="true"> <position x="0" /> </module_component> </module> <module name="Module2" vis="VertexLayerVis"> - <module_envelope rmin="VertexBarrelLayer_rmin2" length="VertexBarrel_length" thickness="VertexBarrelLayer_thickness" phi="180*degree" /> - <module_component thickness="VertexBarrelLayer_thickness" material="Silicon" sensitive="true"> + <module_envelope rmin="VertexBarrelMod2_rmin" length="VertexBarrelMod_length" thickness="VertexBarrelMod_thickness" phi="180*degree" /> + <module_component thickness="VertexBarrelSensor_thickness" material="Silicon" sensitive="true"> <position x="0" /> </module_component> </module> - <module name="Frame" vis="VertexSupportVis"> - <module_envelope rmin="VertexBarrelShell_rmin" length="VertexBarrel_length" thickness="VertexBarrelShell_thickness" phi="180*degree" /> + <module name="SupportShell" vis="VertexSupportVis"> + <module_envelope rmin="VertexBarrelShell_rmin" length="VertexBarrelShell_length" thickness="VertexBarrelShell_thickness" phi="180*degree" /> <module_component thickness="VertexBarrelShell_thickness" material="CarbonFiber"> <position x="0" /> </module_component> @@ -61,7 +93,7 @@ <barrel_envelope inner_r="VertexBarrelLayer_rmin1" outer_r="VertexBarrelLayer_rmax1" - z_length="VertexBarrel_length" /> + z_length="VertexBarrelLayer_length" /> <comment> phi0 : Starting phi of first module. phi_tilt : Phi tilt of a module. @@ -72,22 +104,22 @@ nz : Number of modules to place in z. dr : Radial displacement parameter, of every other module. </comment> - <rphi_layout phi_tilt="0.0*degree" nphi="2" phi0="0.0" rc="VertexBarrelLayer_rmin1" dr="0.0 * mm"/> + <rphi_layout phi_tilt="0.0*degree" nphi="2" phi0="0.0" rc="VertexBarrelMod1_rmin" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> <layer module="Module2" id="2" vis="VertexLayerVis"> <barrel_envelope inner_r="VertexBarrelLayer_rmin2" outer_r="VertexBarrelLayer_rmax2" - z_length="VertexBarrel_length" /> - <rphi_layout phi_tilt="0.0*degree" nphi="2" phi0="0.0" rc="VertexBarrelLayer_rmin2" dr="0.0 * mm"/> + z_length="VertexBarrelLayer_length" /> + <rphi_layout phi_tilt="0.0*degree" nphi="2" phi0="0.0" rc="VertexBarrelMod2_rmin" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> - <layer module="Frame" id="3" vis="VertexSupportVis"> + <layer module="SupportShell" id="3" vis="VertexSupportVis"> <barrel_envelope inner_r="VertexBarrelShell_rmin" outer_r="VertexBarrelShell_rmax" - z_length="VertexBarrel_length" /> + z_length="VertexBarrelShell_length" /> <rphi_layout phi_tilt="0.0*degree" nphi="2" phi0="0.0" rc="VertexBarrelShell_rmin" dr="0.0 * mm"/> <z_layout dr="0.0 * mm" z0="0.0 * mm" nz="1"/> </layer> diff --git a/src/BarrelTrackerWithFrame_geo.cpp b/src/BarrelTrackerWithFrame_geo.cpp index 03075e959546c5a393ea829e878dd47c89125338..3109cc6fffcd19a05e3529ae6b4464af7d5763ad 100644 --- a/src/BarrelTrackerWithFrame_geo.cpp +++ b/src/BarrelTrackerWithFrame_geo.cpp @@ -300,3 +300,4 @@ static Ref_t create_detector(Detector& description, xml_h e, SensitiveDetector s // clang-format off DECLARE_DETELEMENT(BarrelTrackerWithFrame, create_detector) DECLARE_DETELEMENT(athena_TrackerBarrel, create_detector) +DECLARE_DETELEMENT(athena_VertexBarrel, create_detector) diff --git a/src/CylinderTrackerBarrel_geo.cpp b/src/CylinderTrackerBarrel_geo.cpp index 14a2317c11878e935c514710e89f6f8f2d4ccb42..6cada05cf45eb11c3b2029d5a381c693d4f2c305 100644 --- a/src/CylinderTrackerBarrel_geo.cpp +++ b/src/CylinderTrackerBarrel_geo.cpp @@ -25,9 +25,9 @@ static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h string det_name = x_det.nameStr(); DetElement sdet(det_name, det_id); - //Acts::ActsExtension* barrelExtension = new Acts::ActsExtension(); - //barrelExtension->addType("barrel", "detector"); - //sdet.addExtension<Acts::ActsExtension>(barrelExtension); + Acts::ActsExtension* barrelExtension = new Acts::ActsExtension(); + barrelExtension->addType("barrel", "detector"); + sdet.addExtension<Acts::ActsExtension>(barrelExtension); Assembly assembly(det_name); map<string, Volume> mod_volumes; @@ -48,7 +48,9 @@ static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h auto module_length = m_env.length(); auto module_phi = getAttrOrDefault(m_env, _Unicode(phi), 90.0); - Volume m_vol(m_nam, Tube(module_rmin, module_rmin + module_thickness, module_length / 2), air); + Volume m_vol( + m_nam, + Tube(module_rmin, module_rmin + module_thickness, module_length / 2, -module_phi / 2.0, module_phi / 2.0), air); int ncomponents = 0, sensor_number = 1; module_assembly.placeVolume(m_vol, Position(-module_rmin, 0, 0)); mod_volumes[m_nam] = module_assembly; @@ -118,10 +120,10 @@ static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h Volume m_env = mod_volumes[m_nam]; DetElement lay_elt(sdet, _toString(x_layer.id(), "layer%d"), lay_id); - //Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); - //layerExtension->addType("sensitive cylinder", "layer"); + Acts::ActsExtension* layerExtension = new Acts::ActsExtension(); + layerExtension->addType("sensitive cylinder", "layer"); //// layerExtension->addValue(10. * Acts::UnitConstants::mm, "r", "envelope"); - //lay_elt.addExtension<Acts::ActsExtension>(layerExtension); + lay_elt.addExtension<Acts::ActsExtension>(layerExtension); Placements& sensVols = sensitives[m_nam]; @@ -158,8 +160,8 @@ static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h PlacedVolume sens_pv = sensVols[ic]; DetElement comp_elt(mod_elt, sens_pv.volume().name(), module); comp_elt.setPlacement(sens_pv); - //Acts::ActsExtension* moduleExtension = new Acts::ActsExtension("YZX"); - //comp_elt.addExtension<Acts::ActsExtension>(moduleExtension); + Acts::ActsExtension* moduleExtension = new Acts::ActsExtension(); + comp_elt.addExtension<Acts::ActsExtension>(moduleExtension); } /// Increase counters etc. @@ -197,4 +199,5 @@ static Ref_t CylinderTrackerBarrel_create_detector(Detector& description, xml_h DECLARE_DETELEMENT(athena_CylinderTrackerBarrel, CylinderTrackerBarrel_create_detector) DECLARE_DETELEMENT(athena_MMTrackerBarrel, CylinderTrackerBarrel_create_detector) DECLARE_DETELEMENT(athena_RWellTrackerBarrel, CylinderTrackerBarrel_create_detector) -DECLARE_DETELEMENT(athena_VertexBarrel, CylinderTrackerBarrel_create_detector) +DECLARE_DETELEMENT(athena_CylinderVertexBarrel, CylinderTrackerBarrel_create_detector) +