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 @@ ...@@ -23,6 +23,9 @@
<constant name="DRICH_rmax2" value="200*cm"/> <!-- cylinder radius; 20 cm gap between dRICh and HCalBarrel --> <constant name="DRICH_rmax2" value="200*cm"/> <!-- cylinder radius; 20 cm gap between dRICh and HCalBarrel -->
<!-- additional parameters --> <!-- additional parameters -->
<constant name="DRICH_aerogel_thickness" value="4.0*cm"/> <!-- aerogel thickness --> <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> </define>
<detectors> <detectors>
...@@ -127,8 +130,8 @@ ...@@ -127,8 +130,8 @@
material="Silicon" material="Silicon"
surface="SensorSurface_DRICH" surface="SensorSurface_DRICH"
vis="DRICH_sensor_vis" vis="DRICH_sensor_vis"
side="48*mm" side="DRICH_sensor_size"
thickness="35*mm" thickness="DRICH_sensor_thickness"
gap="0.5*(52-48)*mm + 2*mm" gap="0.5*(52-48)*mm + 2*mm"
/> />
<!-- sensors will be tiled on this sphere <!-- sensors will be tiled on this sphere
...@@ -165,15 +168,25 @@ ...@@ -165,15 +168,25 @@
<readouts> <readouts>
<readout name="DRICHHits"> <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 <!-- cellID: 64bits
- bits 1-8: dRICh ID - offset 0, length 8: dRICh ID
- bits 9-16: sector number - offset 8, length 3: sector number
- bits 17-32: photosensor number - offset 11, length 12: photosensor number
- bits 33-48: x pixel (signed) - offset 23, length 16: x pixel
- bits 49-64: y pixel (signed) - 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> </readout>
</readouts> </readouts>
......
...@@ -296,7 +296,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec ...@@ -296,7 +296,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
*/ */
// initialize module number for this sector // initialize module number for this sector
int imod=1; int imod=0;
// thetaGen loop: iterate less than "0.5 circumference / sensor size" times // thetaGen loop: iterate less than "0.5 circumference / sensor size" times
double nTheta = M_PI*sensorSphRadius / (sensorSide+sensorGap); double nTheta = M_PI*sensorSphRadius / (sensorSide+sensorGap);
...@@ -354,8 +354,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec ...@@ -354,8 +354,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
* RotationZ(thetaGen) // rotate about `yGen` * RotationZ(thetaGen) // rotate about `yGen`
* Translation3D(sensorSphRadius, 0., 0.) // push radially to spherical surface * Translation3D(sensorSphRadius, 0., 0.) // push radially to spherical surface
* RotationY(M_PI/2) // rotate sensor to be compatible with generator coords * 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 // properties
sensorPV.addPhysVolID("sector", isec).addPhysVolID("module", imod); sensorPV.addPhysVolID("sector", isec).addPhysVolID("module", imod);
DetElement sensorDE(det, Form("sensor_de%d_%d", isec, imod), 10000*isec+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