Skip to content

Commit 155cb41

Browse files
AHDC: register missing output banks, fix track-finding mode leak, drop unused MaterialMap
- Add AHDC::interclusters and AHDC::docaclusters to registerOutputBank so framework bank management (clearing, schema lookup) sees them. - Use a per-event effectiveMode local instead of overwriting the modeTrackFinding instance field when an event exceeds MAX_HITS_FOR_AI; previously a single noisy event forced CV_Distance for the rest of the run. - Remove the unused materialMap field and its MaterialMap/Material imports; the Kalman filter no longer consumes it from AHDCEngine.
1 parent 96e0892 commit 155cb41

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

reconstruction/alert/src/main/java/org/jlab/service/ahdc/AHDCEngine.java

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.jlab.service.ahdc;
22

33
import org.jlab.clas.reco.ReconstructionEngine;
4-
import org.jlab.clas.tracking.kalmanfilter.Material;
54
import org.jlab.io.base.DataBank;
65
import org.jlab.io.base.DataEvent;
76
import org.jlab.io.hipo.HipoDataSource;
@@ -17,7 +16,6 @@
1716
import org.jlab.rec.ahdc.Hit.Hit;
1817
import org.jlab.rec.ahdc.Hit.HitReader;
1918
import org.jlab.rec.ahdc.HoughTransform.HoughTransform;
20-
import org.jlab.rec.ahdc.KalmanFilter.MaterialMap;
2119
import org.jlab.rec.ahdc.PreCluster.PreCluster;
2220
import org.jlab.rec.ahdc.PreCluster.PreClusterFinder;
2321
import org.jlab.rec.ahdc.Track.Track;
@@ -43,10 +41,7 @@
4341
public class AHDCEngine extends ReconstructionEngine {
4442
static final Logger LOGGER = Logger.getLogger(AHDCEngine.class.getName());
4543

46-
private boolean simulation;
47-
48-
/// Material Map used by Kalman filter
49-
private HashMap<String, Material> materialMap;
44+
private boolean simulation = false;
5045

5146
private ModelTrackFinding modelTrackFinding;
5247
private ModeTrackFinding modeTrackFinding = ModeTrackFinding.AI_Track_Finding;
@@ -76,9 +71,6 @@ public boolean init(ModeTrackFinding m) {
7671
public boolean init() {
7772

7873
factory = (new AlertDCFactory()).createDetectorCLAS(new DatabaseConstantProvider());
79-
simulation = false;
80-
81-
if (materialMap == null) materialMap = MaterialMap.generateMaterials();
8274

8375
String modeConfig = this.getEngineConfigString("Mode");
8476
if (modeConfig != null) modeTrackFinding = ModeTrackFinding.valueOf(modeConfig);
@@ -92,10 +84,8 @@ public boolean init() {
9284
tableMap.put("/calibration/alert/ahdc/time_over_threshold", 3);
9385

9486
requireConstants(tableMap);
95-
96-
this.getConstantsManager().setVariation("default");
97-
98-
this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction");
87+
this.getConstantsManager().setVariation("default");
88+
this.registerOutputBank("AHDC::hits","AHDC::preclusters","AHDC::clusters","AHDC::track","AHDC::mc","AHDC::ai:prediction","AHDC::interclusters","AHDC::docaclusters");
9989

10090
return true;
10191
}
@@ -147,14 +137,15 @@ public boolean processDataEvent(DataEvent event) {
147137
// Otherwise, the conventional methods (Hough Transform or distance) use clusters.
148138

149139
// Safety check: if too many hits, rely on conventional track finding
140+
ModeTrackFinding effectiveMode = modeTrackFinding;
150141
if (AHDC_Hits.size() > MAX_HITS_FOR_AI) {
151142
LOGGER.info("Too many AHDC_Hits in AHDC::adc, rely on conventional track finding for this event");
152-
modeTrackFinding = ModeTrackFinding.CV_Distance;
143+
effectiveMode = ModeTrackFinding.CV_Distance;
153144
}
154145

155146
ArrayList<Track> AHDC_Tracks = new ArrayList<>();
156147

157-
if (modeTrackFinding == ModeTrackFinding.AI_Track_Finding) {
148+
if (effectiveMode == ModeTrackFinding.AI_Track_Finding) {
158149
// 1) Create inter-clusters from pre-clusters
159150
PreClustering preClustering = new PreClustering();
160151
ArrayList<InterCluster> inter_clusters = preClustering.mergePreclusters(AHDC_PreClusters);
@@ -193,12 +184,12 @@ public boolean processDataEvent(DataEvent event) {
193184
ArrayList<Cluster> AHDC_Clusters = clusterfinder.get_AHDCClusters();
194185

195186
// 2) Find tracks using the selected conventional method
196-
if (modeTrackFinding == ModeTrackFinding.CV_Distance) {
187+
if (effectiveMode == ModeTrackFinding.CV_Distance) {
197188
Distance distance = new Distance();
198189
distance.find_track(AHDC_Clusters);
199190
AHDC_Tracks = distance.get_AHDCTracks();
200191
}
201-
else if (modeTrackFinding == ModeTrackFinding.CV_Hough) {
192+
else if (effectiveMode == ModeTrackFinding.CV_Hough) {
202193
HoughTransform houghtransform = new HoughTransform();
203194
houghtransform.find_tracks(AHDC_Clusters);
204195
AHDC_Tracks = houghtransform.get_AHDCTracks();

0 commit comments

Comments
 (0)