Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
athena
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Subhadip Pal
athena
Commits
0a4cc06f
Commit
0a4cc06f
authored
3 years ago
by
Christopher Dilks
Committed by
Sylvester Joosten
3 years ago
Browse files
Options
Downloads
Patches
Plain Diff
[dRICh] update envelope for 25cm solenoid shift
parent
a592c348
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
compact/definitions.xml
+2
-2
2 additions, 2 deletions
compact/definitions.xml
compact/drich.xml
+12
-15
12 additions, 15 deletions
compact/drich.xml
src/DRich_geo.cpp
+24
-14
24 additions, 14 deletions
src/DRich_geo.cpp
with
38 additions
and
31 deletions
compact/definitions.xml
+
2
−
2
View file @
0a4cc06f
...
@@ -359,14 +359,14 @@ Examples:
...
@@ -359,14 +359,14 @@ Examples:
<constant
name=
"TrackerBarrel_zmax"
value=
"TrackerBarrel_length/2.0"
/>
<constant
name=
"TrackerBarrel_zmax"
value=
"TrackerBarrel_length/2.0"
/>
<constant
name=
"TrackerBarrelInside_length"
value=
"VertexTrackingRegion_length"
/>
<constant
name=
"TrackerBarrelInside_length"
value=
"VertexTrackingRegion_length"
/>
<constant
name=
"TrackerBarrelInside_zmax"
value=
"TrackerBarrelInside_length/2.0"
/>
<constant
name=
"TrackerBarrelInside_zmax"
value=
"TrackerBarrelInside_length/2.0"
/>
<constant
name=
"TrackerEndcapP_length"
value=
"
9
25.0*mm"
/>
<constant
name=
"TrackerEndcapP_length"
value=
"
10
25.0*mm"
/>
<constant
name=
"TrackerEndcapN_length"
value=
"495.0*mm"
/>
<constant
name=
"TrackerEndcapN_length"
value=
"495.0*mm"
/>
<documentation
level=
"0"
>
<documentation
level=
"0"
>
### PID Detector Region Parameters
### PID Detector Region Parameters
</documentation>
</documentation>
<constant
name=
"ForwardPID_length"
value=
"14
5
.0*cm"
/>
<constant
name=
"ForwardPID_length"
value=
"14
0
.0*cm"
/>
<constant
name=
"ForwardPID_rmin1"
value=
"Beampipe_rmax + 90*mm"
/>
<constant
name=
"ForwardPID_rmin1"
value=
"Beampipe_rmax + 90*mm"
/>
<constant
name=
"ForwardPID_rmin2"
value=
"18.0*cm"
/>
<constant
name=
"ForwardPID_rmin2"
value=
"18.0*cm"
/>
...
...
This diff is collapsed.
Click to expand it.
compact/drich.xml
+
12
−
15
View file @
0a4cc06f
...
@@ -10,9 +10,9 @@
...
@@ -10,9 +10,9 @@
<constant
name=
"DRICH_wall_thickness"
value=
"0.5*cm"
/>
<!-- thickness of radial walls -->
<constant
name=
"DRICH_wall_thickness"
value=
"0.5*cm"
/>
<!-- thickness of radial walls -->
<constant
name=
"DRICH_window_thickness"
value=
"0.1*cm"
/>
<!-- thickness of entrance and exit walls -->
<constant
name=
"DRICH_window_thickness"
value=
"0.1*cm"
/>
<!-- thickness of entrance and exit walls -->
<!-- tank geometry: cylinder, holding the majority of detector components -->
<!-- tank geometry: cylinder, holding the majority of detector components -->
<constant
name=
"DRICH_rmax2"
value=
"2
0
0*cm"
/>
<!-- cylinder radius
; 20 cm gap between dRICh and
HCal
B
arrel -->
<constant
name=
"DRICH_rmax2"
value=
"2
2
0*cm"
/>
<!-- cylinder radius
, near maximal to fit
HCal
b
arrel
inner polygon
-->
<!-- snout geometry: cone with front radius rmax0 and back radius of rmax1 -->
<!-- snout geometry: cone with front radius rmax0 and back radius of rmax1 -->
<constant
name=
"DRICH_SnoutLength"
value=
"
25
.0*cm"
/>
<constant
name=
"DRICH_SnoutLength"
value=
"
4
.0*cm"
/>
<constant
name=
"DRICH_SnoutSlope"
value=
"DRICH_rmax2 / (DRICH_zmin + DRICH_Length)"
/>
<constant
name=
"DRICH_SnoutSlope"
value=
"DRICH_rmax2 / (DRICH_zmin + DRICH_Length)"
/>
<constant
name=
"DRICH_rmax0"
value=
"DRICH_SnoutSlope * DRICH_zmin"
/>
<constant
name=
"DRICH_rmax0"
value=
"DRICH_SnoutSlope * DRICH_zmin"
/>
<constant
name=
"DRICH_rmax1"
value=
"DRICH_SnoutSlope * ( DRICH_zmin + DRICH_SnoutLength)"
/>
<constant
name=
"DRICH_rmax1"
value=
"DRICH_SnoutSlope * ( DRICH_zmin + DRICH_SnoutLength)"
/>
...
@@ -101,7 +101,7 @@
...
@@ -101,7 +101,7 @@
</documentation>
</documentation>
<radiator
<radiator
rmin=
"DRICH_rmin0 + DRICH_wall_thickness + 2.0*cm"
rmin=
"DRICH_rmin0 + DRICH_wall_thickness + 2.0*cm"
rmax=
"DRICH_rmax0 - DRICH_wall_thickness -
2.0
*cm"
rmax=
"DRICH_rmax0 - DRICH_wall_thickness -
0.2
*cm"
phiw=
"60*degree"
phiw=
"60*degree"
frontplane=
"DRICH_window_thickness + 0.5*DRICH_aerogel_thickness"
frontplane=
"DRICH_window_thickness + 0.5*DRICH_aerogel_thickness"
pitch=
"0*degree"
pitch=
"0*degree"
...
@@ -131,13 +131,10 @@
...
@@ -131,13 +131,10 @@
- `phiw`: azimuthal width of one sector
- `phiw`: azimuthal width of one sector
- `thickness` is the radial thickness of the mirror; note that `backplane` is given for the
- `thickness` is the radial thickness of the mirror; note that `backplane` is given for the
reflective mirror surface, the inner radius of the sphere
reflective mirror surface, the inner radius of the sphere
- `focus_tune*` are tuning parameters for the focal plane:
- `focus_tune*` are tuning parameters for the focal region:
- linearly retune focal point, using a real number; reference numbers are:
- `focus_tune_z` and `focus_tune_x` will move the focal region, with respect
- 0.0: disabled, ideal focus at sensor sphere center
to the sensor sphere center (i.e., set both to zero for focus at the sensor sphere center
- 1.0: ideal focus re-tuned to be on sensor sphere
(ignoring spherical aberrations effects))
- `focus_tune_long` moves toward centroid sensor, while `focus_tune_perp` moves transverse
to this direction; movements are in the xz-plane only
- due to aberrations, ideal focus may not coincide with apparent focal region
- other settings:
- other settings:
- `debug`: set to 1 so draw reference sphere instead, view with y-clipping
- `debug`: set to 1 so draw reference sphere instead, view with y-clipping
</documentation>
</documentation>
...
@@ -150,8 +147,8 @@
...
@@ -150,8 +147,8 @@
rmax=
"DRICH_rmax2 - DRICH_wall_thickness - 5.0*cm"
rmax=
"DRICH_rmax2 - DRICH_wall_thickness - 5.0*cm"
phiw=
"59.5*degree"
phiw=
"59.5*degree"
thickness=
"0.2*cm"
thickness=
"0.2*cm"
focus_tune_
long
=
"0.
5
"
focus_tune_
x
=
"
4
0.
0*cm
"
focus_tune_
perp=
"0.2
"
focus_tune_
z=
"-30.0*cm
"
debug=
"DRICH_debug_mirror"
debug=
"DRICH_debug_mirror"
/>
/>
...
@@ -208,14 +205,14 @@
...
@@ -208,14 +205,14 @@
- `zmin`: z-plane cut
- `zmin`: z-plane cut
</documentation>
</documentation>
<sphere
<sphere
centerz=
"-
112
.0 * cm"
centerz=
"-
80
.0 * cm"
centerx=
"DRICH_rmax2 - 35.0*cm"
centerx=
"DRICH_rmax2 - 35.0*cm"
radius=
"1
6
0.0 * cm"
radius=
"1
0
0.0 * cm"
debug=
"DRICH_debug_sensors"
debug=
"DRICH_debug_sensors"
/>
/>
<sphericalpatch
<sphericalpatch
phiw=
"18*degree"
phiw=
"18*degree"
rmin=
"DRICH_rmax1 +
1
0.0*cm"
rmin=
"DRICH_rmax1 + 0.0*cm"
rmax=
"DRICH_rmax2 - 5.0*cm"
rmax=
"DRICH_rmax2 - 5.0*cm"
zmin=
"DRICH_SnoutLength + 5.0*cm"
zmin=
"DRICH_SnoutLength + 5.0*cm"
/>
/>
...
...
This diff is collapsed.
Click to expand it.
src/DRich_geo.cpp
+
24
−
14
View file @
0a4cc06f
...
@@ -77,8 +77,8 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
...
@@ -77,8 +77,8 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
double
mirrorRmin
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
rmin
));
double
mirrorRmin
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
rmin
));
double
mirrorRmax
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
rmax
));
double
mirrorRmax
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
rmax
));
double
mirrorPhiw
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
phiw
));
double
mirrorPhiw
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
phiw
));
double
focusTune
Long
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
focus_tune_
long
));
double
focusTune
Z
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
focus_tune_
z
));
double
focusTune
Perp
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
focus_tune_
perp
));
double
focusTune
X
=
mirrorElem
.
attr
<
double
>
(
_Unicode
(
focus_tune_
x
));
// - sensor module
// - sensor module
auto
sensorElem
=
detElem
.
child
(
_Unicode
(
sensors
)).
child
(
_Unicode
(
module
));
auto
sensorElem
=
detElem
.
child
(
_Unicode
(
sensors
)).
child
(
_Unicode
(
module
));
auto
sensorMat
=
desc
.
material
(
sensorElem
.
attr
<
std
::
string
>
(
_Unicode
(
material
)));
auto
sensorMat
=
desc
.
material
(
sensorElem
.
attr
<
std
::
string
>
(
_Unicode
(
material
)));
...
@@ -395,16 +395,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
...
@@ -395,16 +395,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
// BUILD MIRRORS ====================================================================
// BUILD MIRRORS ====================================================================
// attributes, re-defined w.r.t. IP, needed for mirror positioning
double
zS
=
sensorSphCenterZ
+
vesselZmin
;
// sensor sphere attributes
double
xS
=
sensorSphCenterX
;
double
rS
=
sensorSphRadius
;
double
B
=
vesselZmax
-
mirrorBackplane
;
// distance between IP and mirror back plane
// derive spherical mirror parameters `(zM,xM,rM)`, for given image point
// derive spherical mirror parameters `(zM,xM,rM)`, for given image point
// coordinates `(zI,xI)` and `dO`, defined as the z-distance between the
// coordinates `(zI,xI)` and `dO`, defined as the z-distance between the
// object and the mirror surface; all coordinates are specified w.r.t. the
// object and the mirror surface
// object point coordinates
// - all coordinates are specified w.r.t. the object point coordinates
// - this is point-to-point focusing, but it can be used to effectively steer
// parallel-to-point focusing
double
zM
,
xM
,
rM
;
double
zM
,
xM
,
rM
;
auto
FocusMirror
=
[
&
zM
,
&
xM
,
&
rM
](
double
zI
,
double
xI
,
double
dO
)
{
auto
FocusMirror
=
[
&
zM
,
&
xM
,
&
rM
](
double
zI
,
double
xI
,
double
dO
)
{
zM
=
dO
*
zI
/
(
2
*
dO
-
zI
);
zM
=
dO
*
zI
/
(
2
*
dO
-
zI
);
...
@@ -412,6 +408,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
...
@@ -412,6 +408,12 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
rM
=
dO
-
zM
;
rM
=
dO
-
zM
;
};
};
// attributes, re-defined w.r.t. IP, needed for mirror positioning
double
zS
=
sensorSphCenterZ
+
vesselZmin
;
// sensor sphere attributes
double
xS
=
sensorSphCenterX
;
double
rS
=
sensorSphRadius
;
double
B
=
vesselZmax
-
mirrorBackplane
;
// distance between IP and mirror back plane
// focus 1: set mirror to focus IP on center of sensor sphere `(zS,xS)`
// focus 1: set mirror to focus IP on center of sensor sphere `(zS,xS)`
/*double zF = zS;
/*double zF = zS;
double xF = xS;
double xF = xS;
...
@@ -423,6 +425,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
...
@@ -423,6 +425,7 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
// - `focusTuneLong` is the distance to move, given as a fraction of `sensorSphRadius`
// - `focusTuneLong` is the distance to move, given as a fraction of `sensorSphRadius`
// - `focusTuneLong==0` means `(zF,xF)==(zS,xS)`
// - `focusTuneLong==0` means `(zF,xF)==(zS,xS)`
// - `focusTuneLong==1` means `(zF,xF)` will be on the sensor sphere, near the centroid
// - `focusTuneLong==1` means `(zF,xF)` will be on the sensor sphere, near the centroid
/*
double zC = sensorCentroidZ + vesselZmin;
double zC = sensorCentroidZ + vesselZmin;
double xC = sensorCentroidX;
double xC = sensorCentroidX;
double slopeF = (xC-xS) / (zC-zS);
double slopeF = (xC-xS) / (zC-zS);
...
@@ -436,12 +439,19 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
...
@@ -436,12 +439,19 @@ static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetec
zF += focusTunePerp * sensorSphRadius * std::cos(M_PI/2-thetaF);
zF += focusTunePerp * sensorSphRadius * std::cos(M_PI/2-thetaF);
xF += focusTunePerp * sensorSphRadius * std::sin(M_PI/2-thetaF);
xF += focusTunePerp * sensorSphRadius * std::sin(M_PI/2-thetaF);
FocusMirror(zF,xF,B);
FocusMirror(zF,xF,B);
*/
// focus 4: use (z,x) coordinates for tune parameters
double
zF
=
zS
+
focusTuneZ
;
double
xF
=
xS
+
focusTuneX
;
FocusMirror
(
zF
,
xF
,
B
);
/*
/*
printf("(zC,xC) = ( %.2f, %.2f )\n",zC,xC);
// print some calculated parameters, viz. mirror attributes
printf("zS = %f\n",zS);
//printf("(zC,xC) = ( %.2f, %.2f )\n",zC,xC);
printf("xS = %f\n",xS);
//printf("zS = %f\n",zS);
printf("B = %f\n",B);
//printf("xS = %f\n",xS);
//printf("B = %f\n",B);
printf("zM = %f\n",zM);
printf("zM = %f\n",zM);
printf("xM = %f\n",xM);
printf("xM = %f\n",xM);
printf("rM = %f\n",rM);
printf("rM = %f\n",rM);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment