44import org .jlab .rec .ahdc .PreCluster .PreCluster ;
55
66import 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 */
1114public 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 ());
0 commit comments