Skip to content
Snippets Groups Projects
Commit c8a26982 authored by Christopher Dilks's avatar Christopher Dilks Committed by Sylvester Joosten
Browse files

fix drich segmentation

parent 4ce1a08b
No related branches found
No related tags found
1 merge request!142fix drich segmentation
......@@ -23,6 +23,9 @@
<constant name="DRICH_rmax2" value="200*cm"/> <!-- cylinder radius; 20 cm gap between dRICh and HCalBarrel -->
<!-- additional parameters -->
<constant name="DRICH_aerogel_thickness" value="4.0*cm"/> <!-- aerogel thickness -->
<constant name="DRICH_sensor_size" value="48.0*mm"/> <!-- sensor side length -->
<constant name="DRICH_sensor_thickness" value="35.0*mm"/> <!-- sensor thickness -->
<constant name="DRICH_num_px" value="16"/> <!-- number of pixels along one side of the sensor -->
</define>
<detectors>
......@@ -127,8 +130,8 @@
material="Silicon"
surface="SensorSurface_DRICH"
vis="DRICH_sensor_vis"
side="48*mm"
thickness="35*mm"
side="DRICH_sensor_size"
thickness="DRICH_sensor_thickness"
gap="0.5*(52-48)*mm + 2*mm"
/>
<!-- sensors will be tiled on this sphere
......@@ -165,15 +168,25 @@
<readouts>
<readout name="DRICHHits">
<segmentation type="CartesianGridXY" grid_size_x="3*mm" grid_size_y="3*mm"/>
<!-- segmentation: square matrix of pixels
- note: for `grid_size`, divide sensor size by 1 less than the
number of pixels, to account for fenceposting
-->
<segmentation
type="CartesianGridXY"
grid_size_x="DRICH_sensor_size/(DRICH_num_px-1)"
grid_size_y="DRICH_sensor_size/(DRICH_num_px-1)"
offset_x="-DRICH_sensor_size/2.0"
offset_y="-DRICH_sensor_size/2.0"
/>
<!-- cellID: 64bits
- bits 1-8: dRICh ID
- bits 9-16: sector number
- bits 17-32: photosensor number
- bits 33-48: x pixel (signed)
- bits 49-64: y pixel (signed)
- offset 0, length 8: dRICh ID
- offset 8, length 3: sector number
- offset 11, length 12: photosensor number
- offset 23, length 16: x pixel
- offset 39, length 16: y pixel
-->
<id>system:8,sector:8,module:16,x:32:-16,y:-16</id>
<id>system:8,sector:3,module:12,x:23:16,y:16</id>
</readout>
</readouts>
......
......@@ -296,7 +296,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
*/
// initialize module number for this sector
int imod=1;
int imod=0;
// thetaGen loop: iterate less than "0.5 circumference / sensor size" times
double nTheta = M_PI*sensorSphRadius / (sensorSide+sensorGap);
......@@ -354,8 +354,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
* RotationZ(thetaGen) // rotate about `yGen`
* Translation3D(sensorSphRadius, 0., 0.) // push radially to spherical surface
* RotationY(M_PI/2) // rotate sensor to be compatible with generator coords
* RotationZ(-M_PI/2) // correction for readout segmentation mapping
);
// generate LUT for module number -> sensor position, for readout mapping tests
//if(isec==0) printf("%d %f %f\n",imod,sensorPV.position().x(),sensorPV.position().y());
// properties
sensorPV.addPhysVolID("sector", isec).addPhysVolID("module", imod);
DetElement sensorDE(det, Form("sensor_de%d_%d", isec, imod), 10000*isec+imod);
......
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