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