Skip to content

Commit 3149520

Browse files
authored
Merge pull request #1115 from JeffersonLab/lcsim-4.5.0-fixtrackstates
lcsim 4.5.0 plus fixtrackstates
2 parents 1e5b7e0 + 544e002 commit 3149520

File tree

21 files changed

+397
-184
lines changed

21 files changed

+397
-184
lines changed

.github/workflows/build.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: build
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
branches: [master]
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout source code
13+
uses: actions/checkout@v3
14+
15+
- name: Set up JDK 21
16+
uses: actions/setup-java@v1
17+
with:
18+
java-version: 21
19+
server-id: github
20+
21+
- name: Build
22+
run: |
23+
mvn -B install -DskipTests=true
24+
env:
25+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN }}

.github/workflows/test.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@ jobs:
1212
- name: Checkout source code
1313
uses: actions/checkout@v3
1414

15-
- name: Set up JDK 1.8
15+
- name: Set up JDK 21
1616
uses: actions/setup-java@v1
1717
with:
18-
java-version: 1.8
18+
java-version: 21
19+
server-id: github
1920

2021
- name: Build and run tests
2122
run: |
2223
mvn -B install -T4
24+
env:
25+
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN }}

analysis/src/main/java/org/hps/analysis/MC/TrackToMCParticleRelationsDriver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ protected void process(EventHeader event) {
137137
truth_trk.getTrackStates().clear();
138138
double[] ref = new double[] { 0., 0., 0. };
139139
SymmetricMatrix cov = new SymmetricMatrix(5);
140-
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtIP,bfield);
140+
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtPerigee,bfield);
141141
truth_trk.getTrackStates().add(stateIP);
142142
truth_trk.setChisq(-1);
143143
truth_trk.setNDF(-1);

analysis/src/main/java/org/hps/analysis/examples/StarterAnalysisDriver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private List<LCIOTrackAnalysis> processTracks(EventHeader event) {
147147

148148
for (Track track : tracklist) { //remember, these tracks are in the lcsim tracking frame!
149149
BaseTrackState ts = (BaseTrackState) track.getTrackStates().get(0);
150-
ts.computeMomentum(bfield);
150+
ts.computeMomentum();
151151
tkanalList.add(new LCIOTrackAnalysis(track, hittomc, hittostrip, hittorotated));
152152
}
153153
return tkanalList;

analysis/src/main/java/org/hps/analysis/vertex/VertexDebugger.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -803,8 +803,8 @@ else if (daug.getPDGID() == -11)
803803
double[] posShiftPars = TrackUtils.getParametersAtNewRefPoint(newRef, posOldTS);
804804
SymmetricMatrix eleShiftCov = TrackUtils.getCovarianceAtNewRefPoint(newRef, eleOldTS.getReferencePoint(), eleOldTS.getParameters(), new SymmetricMatrix(5, eleOldTS.getCovMatrix(), true));
805805
SymmetricMatrix posShiftCov = TrackUtils.getCovarianceAtNewRefPoint(newRef, posOldTS.getReferencePoint(), posOldTS.getParameters(), new SymmetricMatrix(5, posOldTS.getCovMatrix(), true));
806-
BaseTrackState eleShiftTS = new BaseTrackState(eleShiftPars, newRef, eleShiftCov.asPackedArray(true), TrackState.AtIP, B_FIELD);
807-
BaseTrackState posShiftTS = new BaseTrackState(posShiftPars, newRef, posShiftCov.asPackedArray(true), TrackState.AtIP, B_FIELD);
806+
BaseTrackState eleShiftTS = new BaseTrackState(eleShiftPars, newRef, eleShiftCov.asPackedArray(true), TrackState.AtPerigee, B_FIELD);
807+
BaseTrackState posShiftTS = new BaseTrackState(posShiftPars, newRef, posShiftCov.asPackedArray(true), TrackState.AtPerigee, B_FIELD);
808808
// BaseTrackState eleShiftTS = new BaseTrackState(eleShiftPars, newRef, eleOldTS.getCovMatrix(), TrackState.AtIP, B_FIELD);
809809
// BaseTrackState posShiftTS = new BaseTrackState(posShiftPars, newRef, posOldTS.getCovMatrix(), TrackState.AtIP, B_FIELD);
810810
BilliorTrack electronBTrackShift = toBilliorTrack(eleShiftTS);

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<skipSite>false</skipSite>
2020
<skipPlugin>true</skipPlugin>
2121
<skipCheckstyle>true</skipCheckstyle>
22-
<lcsimVersion>4.4.0</lcsimVersion>
22+
<lcsimVersion>4.5.0</lcsimVersion>
2323
<etVersion>14.1</etVersion>
2424
<evioVersion>4.4.6</evioVersion>
2525
<junitVersion>4.13.1</junitVersion>

recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.hps.recon.vertexing.BilliorVertex;
1717
import org.hps.recon.vertexing.BilliorVertexer;
1818
import org.hps.record.StandardCuts;
19+
import org.hps.recon.tracking.TrackStateUtils;
1920
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
2021
import org.lcsim.event.EventHeader;
2122
import org.lcsim.event.RawTrackerHit;
@@ -509,12 +510,22 @@ private BilliorVertex fitVertex(Constraint constraint, ReconstructedParticle ele
509510
BilliorTrack electronBTrack = toBilliorTrack(electron.getTracks().get(0));
510511
BilliorTrack positronBTrack = toBilliorTrack(positron.getTracks().get(0));
511512

512-
// Create a vertex fitter from the magnetic field.
513+
// Create a vertex fitter from the magnetic field.
513514
// Note that the vertexing code uses the tracking frame coordinates
514515
// HPS X => TRACK Y
515516
// HPS Y => TRACK Z
516517
// HPS Z => TRACK X
517-
BilliorVertexer vtxFitter = new BilliorVertexer(bField);
518+
//first get the field @ perigee reference from the first tracks state (doesn't matter which one)
519+
// double bLocal=(electron.getTracks().get(0)).getTrackStates().get(TrackState.AtPerigee).getBLocal();
520+
double bLocal=TrackStateUtils.getTrackStatesAtLocation(electron.getTracks().get(0),TrackState.AtPerigee).get(0).getBLocal();
521+
// System.out.println("For Vertexer: "+TrackStateUtils.getTrackStatesAtLocation(electron.getTracks().get(0),TrackState.AtPerigee).get(0).toString());
522+
// if we are using GBL tracks (trackType=0), set bLocal to bField (i.e. at SVT center)
523+
if(trackType==0)
524+
bLocal=bField;
525+
526+
//set up vertexer with field
527+
// System.out.println("track type = "+trackType+"; setting vertex field = "+bLocal);
528+
BilliorVertexer vtxFitter = new BilliorVertexer(bLocal);
518529
// TODO: The beam size should come from the conditions database.
519530
vtxFitter.setBeamSize(beamSize);
520531
vtxFitter.setBeamPosition(beamPositionToUse);
@@ -880,11 +891,13 @@ private List<BilliorTrack> shiftTracksToVertex(List<ReconstructedParticle> parti
880891
double[] newRef = {vtxPos.z(), vtxPos.x(), 0.0};//the TrackUtils.getParametersAtNewRefPoint method only shifts in xy tracking frame
881892
List<BilliorTrack> newTrks = new ArrayList<BilliorTrack>();
882893
for (ReconstructedParticle part : particles) {
883-
BaseTrackState oldTS = (BaseTrackState) part.getTracks().get(0).getTrackStates().get(0);
894+
BaseTrackState oldTS=(BaseTrackState)TrackStateUtils.getTrackStatesAtLocation(part.getTracks().get(0),TrackState.AtPerigee).get(0);
895+
// BaseTrackState oldTS = (BaseTrackState) part.getTracks().get(0).getTrackStates().get(TrackState.AtPerigee);
884896
double[] newParams = TrackUtils.getParametersAtNewRefPoint(newRef, oldTS);
885897
SymmetricMatrix newCov = TrackUtils.getCovarianceAtNewRefPoint(newRef, oldTS.getReferencePoint(), oldTS.getParameters(), new SymmetricMatrix(5, oldTS.getCovMatrix(), true));
886898
//mg...I don't like this re-casting, but toBilliorTrack only takes Track as input
887-
BaseTrackState newTS = new BaseTrackState(newParams, newRef, newCov.asPackedArray(true), TrackState.AtIP, bField);
899+
//make the state with bfield = field at original z-position because TrackUtils.getParametersAtNewRefPoint does not change curvature!
900+
BaseTrackState newTS = new BaseTrackState(newParams, newRef, newCov.asPackedArray(true), TrackState.AtPerigee, oldTS.getBLocal());
888901
BilliorTrack electronBTrackShift = this.toBilliorTrack(newTS);
889902
newTrks.add(electronBTrackShift);
890903
}

recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ public void setApplyClusterCorrections(boolean val) {
153153
* LCIO collection name for tracks.
154154
*/
155155
protected String matcherTrackCollectionName = "GBLTracks";
156+
/**
157+
* track type: Kalman = 1; GBL = 0 obtained from matcherTrackCollectionName
158+
*/
159+
protected int trackType = 0;
156160
/**
157161
* Track Cluster Algorithm set to Kalman or GBL Tracks
158162
*/
@@ -446,6 +450,10 @@ protected void detectorChanged(Detector detector) {
446450
matcher.setTrackCollectionName(matcherTrackCollectionName);
447451
matcher.enablePlots(enableTrackClusterMatchPlots);
448452

453+
//set the track type; default is 0 (GBL)
454+
if(matcherTrackCollectionName.contains("Kalman") || matcherTrackCollectionName.contains("KF"))
455+
trackType=1;
456+
449457
// Set the magnetic field parameters to the appropriate values.
450458
Hep3Vector ip = new BasicHep3Vector(0., 0., 500.0);
451459
bField = detector.getFieldMap().getField(ip).y();

recon/src/main/java/org/hps/recon/utils/TrackTruthRelationsDriver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,7 @@ protected void process(EventHeader event) {
14791479
truth_trk.getTrackStates().clear();
14801480
double[] ref = new double[] { 0., 0., 0. };
14811481
SymmetricMatrix cov = new SymmetricMatrix(5);
1482-
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtIP,bfield);
1482+
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtPerigee,bfield);
14831483
truth_trk.getTrackStates().add(stateIP);
14841484
truth_trk.setChisq(-1);
14851485
truth_trk.setNDF(-1);
@@ -1538,7 +1538,7 @@ public double[] getMCPTrackParameters(MCParticle mcp, double bfield){
15381538
truth_trk.getTrackStates().clear();
15391539
double[] ref = new double[] { 0., 0., 0. };
15401540
SymmetricMatrix cov = new SymmetricMatrix(5);
1541-
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtIP,bfield);
1541+
TrackState stateIP = new BaseTrackState(mcp_htf.parameters(),ref,cov.asPackedArray(true),TrackState.AtPerigee,bfield);
15421542
truth_trk.getTrackStates().add(stateIP);
15431543
truth_trk.setChisq(-1);
15441544
truth_trk.setNDF(-1);

tracking/src/main/java/org/hps/recon/tracking/TrackTweakDriver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,9 @@ public void process(EventHeader event) {
214214

215215
// Extrapolate the tweaked track to the face of the Ecal and get the
216216
// track state
217-
TrackState stateIP = TrackUtils.getTrackStateAtLocation(track, TrackState.AtIP);
217+
TrackState stateIP = TrackUtils.getTrackStateAtLocation(track, TrackState.AtPerigee);
218218
if (stateIP == null) {
219-
throw new RuntimeException("IP track state for GBL track was not found");
219+
throw new RuntimeException("Perigee track state for GBL track was not found");
220220
}
221221
TrackState stateEcalIP = TrackUtils.extrapolateTrackUsingFieldMap(stateIP, extStartPos, ecalPosition, stepSize, bFieldMap);
222222

0 commit comments

Comments
 (0)