Skip to content
Snippets Groups Projects
Commit 5a303cd5 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Vertex barrel tracking geometry and fixes.

- Added documentation and renamed some constants.
- Turned on the acts tracking geometry.
parent c8a26982
No related branches found
No related tags found
No related merge requests found
......@@ -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"/>
......
<?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>
......
......@@ -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)
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment