Skip to content

Commit 6d149d3

Browse files
author
Zeyu Zhang
committed
correct the calculation of z positions of clusters and docaclusters
1 parent a7afa46 commit 6d149d3

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

reconstruction/alert/src/main/java/org/jlab/rec/ahdc/Cluster/Cluster.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44
import org.jlab.rec.ahdc.PreCluster.PreCluster;
55

66
import java.util.ArrayList;
7+
import org.jlab.geom.detector.alert.AHDC.AlertDCFactory;
8+
import org.jlab.geom.prim.Line3D;
9+
import org.jlab.geom.prim.Point3D;
710

811
/**
912
* Cluster are compose by 2 PreCluster on layer with a different stereo angle
1013
*/
1114
public class Cluster {
1215

1316
private int _trackId = -1;
14-
private double _StereoAngle = 20.0;
15-
private double _DeltaZ = 300.0;
16-
private double _Zoffset = 150.0;
17+
private double _StereoAngle = 20.0;//not used
18+
private double _DeltaZ = 300;//not used
19+
private double _Zoffset = 150;//not used
1720

1821
private double _Radius;
1922
private double _Phi;
@@ -26,14 +29,38 @@ public class Cluster {
2629
private double _V;
2730
private ArrayList<PreCluster> _PreClusters_list;
2831

32+
private static Line3D representativeLine(PreCluster pc) {
33+
if (pc == null || pc.get_hits_list() == null || pc.get_hits_list().isEmpty()) {
34+
return null;
35+
}
36+
Hit h = pc.get_hits_list().get(0);
37+
return h.getLine();
38+
}
39+
public static double getStereoAngleDeg(int superlayerId) {
40+
switch (superlayerId) {
41+
case 0: return -19.1489;
42+
case 1: return -19.2857;
43+
case 2: return -20.0;
44+
case 3: return -20.6897;
45+
case 4: return -20.0;
46+
default: return -20.0;
47+
}
48+
}
2949

3050
public Cluster(PreCluster precluster, PreCluster other_precluster) {
3151
this._PreClusters_list = new ArrayList<>();
3252
_PreClusters_list.add(precluster);
3353
_PreClusters_list.add(other_precluster);
3454
this._Radius = (precluster.get_Radius() + other_precluster.get_Radius()) / 2;
3555

36-
this._Z = ((other_precluster.get_Phi() - precluster.get_Phi()) / (Math.toRadians(_StereoAngle) * Math.pow(-1, precluster.get_Super_layer()-1) - Math.toRadians(_StereoAngle) * Math.pow(-1, other_precluster.get_Super_layer()-1))) * _DeltaZ - _Zoffset;
56+
Line3D line1 = representativeLine(precluster);
57+
Point3D end1 = line1.end();
58+
Point3D start1 = line1.origin();
59+
double DeltaZ = end1.z()-start1.z();
60+
double Zref = end1.z();
61+
double StereoAnglep = getStereoAngleDeg(precluster.get_Super_layer());
62+
double StereoAngleo = getStereoAngleDeg(other_precluster.get_Super_layer());
63+
this._Z = ((precluster.get_Phi() - other_precluster.get_Phi()) / (Math.toRadians(StereoAnglep) * Math.pow(-1, precluster.get_Super_layer()-1) - Math.toRadians(StereoAngleo) * Math.pow(-1, other_precluster.get_Super_layer()-1))) * DeltaZ + Zref;
3764

3865
double x1 = -precluster.get_Radius() * Math.sin(precluster.get_Phi());
3966
double y1 = -precluster.get_Radius() * Math.cos(precluster.get_Phi());

reconstruction/alert/src/main/java/org/jlab/rec/ahdc/DocaCluster/DocaClusterRefiner.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,10 @@ private static Line3D buildShiftedWireLine(Hit h, Vec2 tangentXY) {
209209
double dz = e.z() - o.z();
210210

211211
// New origin: (tangent.x, tangent.y, original_z)
212-
Point3D oShift = new Point3D(tangentXY.x, tangentXY.y, o.z());
213-
Point3D eShift = new Point3D(oShift.x() + dx, oShift.y() + dy, oShift.z() + dz);
214-
212+
//Point3D oShift = new Point3D(tangentXY.x, tangentXY.y, o.z());
213+
//Point3D eShift = new Point3D(oShift.x() + dx, oShift.y() + dy, oShift.z() + dz);
214+
Point3D eShift = new Point3D(tangentXY.x, tangentXY.y, e.z());
215+
Point3D oShift = new Point3D(tangentXY.x - dx, tangentXY.y - dy, e.z() - dz);
215216
return new Line3D(oShift, eShift);
216217
}
217218

0 commit comments

Comments
 (0)