Skip to content

Commit 4b56cce

Browse files
raffaelladevitazieglervbleaktwigbaltzell
authored
FMT reconstruction: first full version (JeffersonLab#741)
* New FMT reconstruction development * new FMT rec * New FMT reconstruction development * New FMT reconstruction development new output bank * New FMT reconstruction development of new fitting * New FMT reconstruction development of new fitting * FVT added to recon-util reconstruction chain * add half drift gap to z ref position of measurement. * Load tables allowing variation selection. * Use all layers * Propagate to site + half drift gap * remove obsolete comments * Change service name string * FVT: added service to rec chain in data.yaml and updated FMT position for trajectories * made things a tad more readable * added a small test script * marked code locations for shifts in CCDB loader * no changes are needed in hit or banks packages. * no changes are needed in cluster or cross packages * implemented z, alpha, x, and y shifts * implemented FMT z shifts in DC trajectory surfaces * SwimToBoundayPlane: removing check on track vertex * Updated FMT trajectory surfaces * Tracks' nmeas and crosses' trkID are now written to the FMTRec bank * Clusters centroid residuals are now set in the FMTRec bank * Applied fixes to centroid residuals calculation * Created class to deal with global to local coords transformation * Fixed small null pointer error in FVTEngine * FMT layers are now loaded from CCDB in DC trajectory surfaces * Improved legibility of alignment variables & added getLayerZ method * Fixed issue where alignment shifts were applied twice * Fixed alignment table loading issue * Added Tmin calculation for FVT clusters (as floats) * Updated track finding to fit only clusters with minimum Tmin * changes to use of x/y alignment shifts in KF and global/local transformation, db disconnect and constants init, initialize engines only once for recon-util * Removed unused geometry methods * Switched FVT nmeas for status and added chi2 to track * Added loading of beam shift in FVT reconstruction * Fixed beam shift loading - CCDB uses mm, reconstruction uses cm * The beam shift was actually in cm. Oops. * Updated chi2 calculation * Temporarily disabled beam shift usage in FVT * FMT: simplified seeding, cleanups and restructuring of output banks * FMT: improved seeding and cluster-track assignments, added trajectory bank, various cleanups * FMT geometry restructuring and package cleanup * added FMT geometry service, switched reconstruction to use it * FMT: fixed issue with cluster filtering for tracks with missing layers * Implemented beam shift * Deleted test script * update i/o services in yaml files * FMT: update variable type in trajectory bank reading * FMT: added FMT::Trajectory bank to dropBanks list * reformatting and cleanup * Delete install-claracre-clas.sh * added FMT banks to calib and mon schema Co-authored-by: ziegler <[email protected]> Co-authored-by: bleaktwig <[email protected]> Co-authored-by: bleaktwig <[email protected]> Co-authored-by: Nathan Baltzell <[email protected]>
1 parent 7b98d96 commit 4b56cce

File tree

47 files changed

+4286
-1946
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+4286
-1946
lines changed

build-coatjava.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,5 +125,4 @@ cd -
125125
cp common-tools/coat-lib/target/coat-libs-*-SNAPSHOT.jar coatjava/lib/clas/
126126
cp reconstruction/*/target/clas12detector-*-SNAPSHOT.jar coatjava/lib/services/
127127

128-
129128
echo "COATJAVA SUCCESSFULLY BUILT !"

common-tools/clas-detector/src/main/java/org/jlab/detector/base/GeometryFactory.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.jlab.geom.detector.cnd.CNDFactory;
1212
import org.jlab.geom.detector.dc.DCFactory;
1313
import org.jlab.geom.detector.ec.ECFactory;
14+
import org.jlab.geom.detector.fmt.FMTFactory;
1415
import org.jlab.geom.detector.ftof.FTOFFactory;
1516

1617
/**
@@ -108,6 +109,12 @@ public static ConstantProvider getConstants(DetectorType type, int run, String v
108109
if(type==DetectorType.TARGET){
109110
provider.loadTable("/geometry/target");
110111
}
112+
113+
if(type==DetectorType.FMT){
114+
provider.loadTable("/geometry/fmt/fmt_global");
115+
provider.loadTable("/geometry/fmt/fmt_layer_noshim");
116+
provider.loadTable("/geometry/fmt/alignment");
117+
}
111118

112119
provider.disconnect();
113120
return provider;
@@ -162,6 +169,12 @@ public static Detector getDetector(DetectorType type, int run, String variation)
162169
return ftof;
163170
}
164171

172+
if(type==DetectorType.FMT){
173+
FMTFactory factory = new FMTFactory();
174+
Detector fmt = factory.createDetectorCLAS(provider);
175+
return fmt;
176+
}
177+
165178
System.out.println("[GeometryFactory] ---> detector construction for "
166179
+ type.getName() + " is not implemented");
167180
return null;

common-tools/clas-geometry/src/main/java/org/jlab/geom/DetectorId.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public enum DetectorId implements Showable {
1717
BST ( 1, "BST"),
1818
CND ( 3, "CND"),
1919
RICH ( 6, "RICH"),
20+
FMT ( 8, "FMT"),
2021
FTCAL ( 9, "FTCAL"),
2122
CTOF (11, "CTOF"),
2223
FTOF (10, "FTOF"),
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package org.jlab.geom.component;
2+
3+
import org.jlab.geom.prim.Point3D;
4+
5+
/**
6+
* A tracker strip.
7+
* <p>
8+
* This class is an alias of
9+
* {@link org.jlab.geom.component.RectangularComponent}.
10+
*
11+
* @author devita
12+
*/
13+
public class TrackerStrip extends RectangularComponent {
14+
15+
private double width;
16+
private double thickness;
17+
18+
/**
19+
* Constructs a new {@code TrackerStrip} from the given points.
20+
* <p>
21+
* The line will be from the middle of the bottom face to the middle of the
22+
* top face. The midpoint will be at the midpoint of the line. The direction
23+
* vector will parallel the line.
24+
* @param componentId the id of the component
25+
* @param origin
26+
* @param end
27+
* @param width
28+
* @param thickness
29+
*/
30+
public TrackerStrip(int componentId,
31+
Point3D origin, Point3D end, double width, double thickness) {
32+
this(componentId,
33+
new Point3D(origin.x(), origin.y()-width/2, origin.z()+thickness/2),
34+
new Point3D(origin.x(), origin.y()+width/2, origin.z()+thickness/2),
35+
new Point3D(origin.x(), origin.y()+width/2, origin.z()-thickness/2),
36+
new Point3D(origin.x(), origin.y()-width/2, origin.z()-thickness/2),
37+
new Point3D(end.x(), end.y()-width/2, end.z()+thickness/2),
38+
new Point3D(end.x(), end.y()+width/2, end.z()+thickness/2),
39+
new Point3D(end.x(), end.y()+width/2, end.z()-thickness/2),
40+
new Point3D(end.x(), end.y()-width/2, end.z()-thickness/2));
41+
this.width = width;
42+
this.thickness = thickness;
43+
}
44+
45+
/**
46+
* Constructs a new {@code TrackerStrip} from the given points.
47+
* <p>
48+
* The line will be from the middle of the bottom face to the middle of the
49+
* top face. The midpoint will be at the midpoint of the line. The direction
50+
* vector will parallel the line.
51+
* @param p0 1st point of the bottom face
52+
* @param p1 2nd point of the bottom face
53+
* @param p2 3rd point of the bottom face
54+
* @param p3 4th point of the bottom face
55+
* @param p4 1st point of the top face
56+
* @param p5 2nd point of the top face
57+
* @param p6 3rd point of the top face
58+
* @param p7 4th point of the top face
59+
*/
60+
private TrackerStrip(int componentId, Point3D p0, Point3D p1, Point3D p2, Point3D p3, Point3D p4, Point3D p5, Point3D p6, Point3D p7) {
61+
super(componentId, p0, p1, p2, p3, p4, p5, p6, p7);
62+
}
63+
64+
65+
/**
66+
* Returns "Tracker Strip".
67+
* @return "Tracker Strip"
68+
*/
69+
@Override
70+
public String getType() {
71+
return "Tracker Strip";
72+
}
73+
74+
/**
75+
* Returns width of the strip
76+
* @return width
77+
*/
78+
public double getWidth() {
79+
return this.width;
80+
}
81+
82+
/**
83+
* Returns thickness of the strip
84+
* @return thickness
85+
*/
86+
public double getThickness() {
87+
return this.thickness;
88+
}
89+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.jlab.geom.detector.fmt;
2+
3+
import org.jlab.geom.DetectorId;
4+
import org.jlab.geom.abs.AbstractDetector;
5+
6+
7+
/**
8+
* A Forward Micromegas Tracker (FMT) {@link org.jlab.geom.base.Detector Detector}.
9+
* <p>
10+
* Factory: {@link org.jlab.geom.detector.fmt.FMTFactory FMTFactory}<br>
11+
* Hierarchy:
12+
* <code>
13+
* <b>{@link org.jlab.geom.detector.fmt.FMTDetector FMTDetector}</b> →
14+
* {@link org.jlab.geom.detector.fmt.FMTSector FMTSector} →
15+
* {@link org.jlab.geom.detector.fmt.FMTSuperlayer FMTSuperlayer} →
16+
* {@link org.jlab.geom.detector.fmt.FMTLayer FMTLayer} →
17+
* {@link org.jlab.geom.component.TrackerStrip TrackerStrip}
18+
* </code>
19+
*
20+
* @author devita
21+
*/
22+
public class FMTDetector extends AbstractDetector<FMTSector> {
23+
24+
protected FMTDetector() {
25+
super(DetectorId.FMT);
26+
}
27+
28+
/**
29+
* Returns "FMT Detector".
30+
* @return "FMT Detector"
31+
*/
32+
@Override
33+
public String getType() {
34+
return "FMT Detector";
35+
}
36+
}

0 commit comments

Comments
 (0)