From bf360d3c3df2fa27b1ec513d09a7c14831be431d Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Mon, 12 Jan 2026 14:40:18 -0500 Subject: [PATCH 1/8] transformation for covaraince matrix of DC TB tracks from local to global --- .../clas/tracking/utilities/MatrixOps.java | 2 +- etc/bankdefs/hipo4/dc.json | 45 ++++++++++ etc/bankdefs/hipo4/dcnn.json | 45 ++++++++++ .../java/org/jlab/rec/dc/banks/Banks.java | 4 + .../org/jlab/rec/dc/banks/RecoBankWriter.java | 66 +++++++++++++- .../java/org/jlab/rec/dc/track/Track.java | 87 +++++++++++++++++++ .../java/org/jlab/service/dc/DCTBEngine.java | 12 +-- 7 files changed, 254 insertions(+), 7 deletions(-) diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java index c1ce8072ab..afdf17834d 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java @@ -128,7 +128,7 @@ public double[][] MatrixTranspose(Object obj1) { for(int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { - result[i][j] = arr1[j][i]; + result[j][i] = arr1[i][j]; } } arr1 = null; diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 4558300006..12a482b050 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -559,6 +559,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::TBCovMatLab", + "group": 20600, + "item" : 38, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::Trajectory", "group": 20600, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 74276a745d..234e7091c2 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -420,6 +420,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::AICovMatLab", + "group": 20600, + "item" : 78, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::AITrajectory", "group": 20600, diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java index aac1368be3..088526caa1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java @@ -138,6 +138,10 @@ public String getCovmatBank() { return this.getOutputBank("CovMat"); } + public String getCovmatLabBank() { + return this.getOutputBank("CovMatLab"); + } + public String getRecEventBank() { return this.getRecBank("Event"); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index 529be90740..72094282af 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -490,6 +490,69 @@ private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { //bank.show(); return bank; } + + /** + * + * @param event hipo event + * @param candlist tracks + * @return covariance matrix for momentum and vertex in lab frame + */ + private DataBank fillTrackCovMatLabBank(DataEvent event, List candlist) { + + DataBank bank = event.createBank(bankNames.getCovmatLabBank(), candlist.size()); + + for (int i = 0; i < candlist.size(); i++) { + bank.setShort("id", i, (short) candlist.get(i).get_Id()); + if(candlist.get(i).get_CMInLab()!=null) { + double[][] CM = candlist.get(i).get_CMInLab(); + bank.setFloat("C11", i, (float) CM[0][0]); + bank.setFloat("C12", i, (float) CM[0][1]); + bank.setFloat("C13", i, (float) CM[0][2]); + bank.setFloat("C14", i, (float) CM[0][3]); + bank.setFloat("C15", i, (float) CM[0][4]); + bank.setFloat("C16", i, (float) CM[0][5]); + + bank.setFloat("C21", i, (float) CM[1][0]); + bank.setFloat("C22", i, (float) CM[1][1]); + bank.setFloat("C23", i, (float) CM[1][2]); + bank.setFloat("C24", i, (float) CM[1][3]); + bank.setFloat("C25", i, (float) CM[1][4]); + bank.setFloat("C26", i, (float) CM[1][5]); + + bank.setFloat("C31", i, (float) CM[2][0]); + bank.setFloat("C32", i, (float) CM[2][1]); + bank.setFloat("C33", i, (float) CM[2][2]); + bank.setFloat("C34", i, (float) CM[2][3]); + bank.setFloat("C35", i, (float) CM[2][4]); + bank.setFloat("C36", i, (float) CM[2][5]); + + bank.setFloat("C41", i, (float) CM[3][0]); + bank.setFloat("C42", i, (float) CM[3][1]); + bank.setFloat("C43", i, (float) CM[3][2]); + bank.setFloat("C44", i, (float) CM[3][3]); + bank.setFloat("C45", i, (float) CM[3][4]); + bank.setFloat("C46", i, (float) CM[3][5]); + + bank.setFloat("C51", i, (float) CM[4][0]); + bank.setFloat("C52", i, (float) CM[4][1]); + bank.setFloat("C53", i, (float) CM[4][2]); + bank.setFloat("C54", i, (float) CM[4][3]); + bank.setFloat("C55", i, (float) CM[4][4]); + bank.setFloat("C56", i, (float) CM[4][5]); + + bank.setFloat("C61", i, (float) CM[5][0]); + bank.setFloat("C62", i, (float) CM[5][1]); + bank.setFloat("C63", i, (float) CM[5][2]); + bank.setFloat("C64", i, (float) CM[5][3]); + bank.setFloat("C65", i, (float) CM[5][4]); + bank.setFloat("C66", i, (float) CM[5][5]); + + } + } + //bank.show(); + return bank; + } + /** * * @param event the EvioEvent @@ -939,7 +1002,8 @@ public void fillAllTBBanks(DataEvent event, List fhits, List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); @@ -306,9 +307,10 @@ public boolean processDataEvent(DataEvent event) { continue; } - // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); - TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); + // get CovMat at vertex + Point3D VTCS = TrackArray1.get(TrackArray1.size()-1).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + TrackArray1.set_CovMat(kFZRef.propagateToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z())); + TrackArray1.transCMToGlobal(); double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); From 0b2020d17514b15218b5590b45a8ec9ff0f82d68 Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Mon, 12 Jan 2026 14:40:18 -0500 Subject: [PATCH 2/8] transformation for covaraince matrix of DC TB tracks from local to global --- .../clas/tracking/utilities/MatrixOps.java | 2 +- etc/bankdefs/hipo4/dc.json | 45 ++++++++++ etc/bankdefs/hipo4/dcnn.json | 45 ++++++++++ .../java/org/jlab/rec/dc/banks/Banks.java | 4 + .../org/jlab/rec/dc/banks/RecoBankWriter.java | 66 +++++++++++++- .../java/org/jlab/rec/dc/track/Track.java | 87 +++++++++++++++++++ .../java/org/jlab/service/dc/DCTBEngine.java | 12 +-- 7 files changed, 254 insertions(+), 7 deletions(-) diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java index c1ce8072ab..afdf17834d 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java @@ -128,7 +128,7 @@ public double[][] MatrixTranspose(Object obj1) { for(int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { - result[i][j] = arr1[j][i]; + result[j][i] = arr1[i][j]; } } arr1 = null; diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 4558300006..12a482b050 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -559,6 +559,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::TBCovMatLab", + "group": 20600, + "item" : 38, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::Trajectory", "group": 20600, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 74276a745d..234e7091c2 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -420,6 +420,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::AICovMatLab", + "group": 20600, + "item" : 78, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::AITrajectory", "group": 20600, diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java index aac1368be3..088526caa1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java @@ -138,6 +138,10 @@ public String getCovmatBank() { return this.getOutputBank("CovMat"); } + public String getCovmatLabBank() { + return this.getOutputBank("CovMatLab"); + } + public String getRecEventBank() { return this.getRecBank("Event"); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index 529be90740..72094282af 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -490,6 +490,69 @@ private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { //bank.show(); return bank; } + + /** + * + * @param event hipo event + * @param candlist tracks + * @return covariance matrix for momentum and vertex in lab frame + */ + private DataBank fillTrackCovMatLabBank(DataEvent event, List candlist) { + + DataBank bank = event.createBank(bankNames.getCovmatLabBank(), candlist.size()); + + for (int i = 0; i < candlist.size(); i++) { + bank.setShort("id", i, (short) candlist.get(i).get_Id()); + if(candlist.get(i).get_CMInLab()!=null) { + double[][] CM = candlist.get(i).get_CMInLab(); + bank.setFloat("C11", i, (float) CM[0][0]); + bank.setFloat("C12", i, (float) CM[0][1]); + bank.setFloat("C13", i, (float) CM[0][2]); + bank.setFloat("C14", i, (float) CM[0][3]); + bank.setFloat("C15", i, (float) CM[0][4]); + bank.setFloat("C16", i, (float) CM[0][5]); + + bank.setFloat("C21", i, (float) CM[1][0]); + bank.setFloat("C22", i, (float) CM[1][1]); + bank.setFloat("C23", i, (float) CM[1][2]); + bank.setFloat("C24", i, (float) CM[1][3]); + bank.setFloat("C25", i, (float) CM[1][4]); + bank.setFloat("C26", i, (float) CM[1][5]); + + bank.setFloat("C31", i, (float) CM[2][0]); + bank.setFloat("C32", i, (float) CM[2][1]); + bank.setFloat("C33", i, (float) CM[2][2]); + bank.setFloat("C34", i, (float) CM[2][3]); + bank.setFloat("C35", i, (float) CM[2][4]); + bank.setFloat("C36", i, (float) CM[2][5]); + + bank.setFloat("C41", i, (float) CM[3][0]); + bank.setFloat("C42", i, (float) CM[3][1]); + bank.setFloat("C43", i, (float) CM[3][2]); + bank.setFloat("C44", i, (float) CM[3][3]); + bank.setFloat("C45", i, (float) CM[3][4]); + bank.setFloat("C46", i, (float) CM[3][5]); + + bank.setFloat("C51", i, (float) CM[4][0]); + bank.setFloat("C52", i, (float) CM[4][1]); + bank.setFloat("C53", i, (float) CM[4][2]); + bank.setFloat("C54", i, (float) CM[4][3]); + bank.setFloat("C55", i, (float) CM[4][4]); + bank.setFloat("C56", i, (float) CM[4][5]); + + bank.setFloat("C61", i, (float) CM[5][0]); + bank.setFloat("C62", i, (float) CM[5][1]); + bank.setFloat("C63", i, (float) CM[5][2]); + bank.setFloat("C64", i, (float) CM[5][3]); + bank.setFloat("C65", i, (float) CM[5][4]); + bank.setFloat("C66", i, (float) CM[5][5]); + + } + } + //bank.show(); + return bank; + } + /** * * @param event the EvioEvent @@ -939,7 +1002,8 @@ public void fillAllTBBanks(DataEvent event, List fhits, List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); @@ -306,9 +307,10 @@ public boolean processDataEvent(DataEvent event) { continue; } - // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); - TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); + // get CovMat at vertex + Point3D VTCS = TrackArray1.get(TrackArray1.size()-1).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + TrackArray1.set_CovMat(kFZRef.propagateToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z())); + TrackArray1.transCMToGlobal(); double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); From 33eb14b4a65eb9d9106f30d425f567e475d2dcd2 Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Wed, 21 Jan 2026 10:37:33 -0500 Subject: [PATCH 3/8] modify banks TimeBasedTrkg::TBCovMat and TimeBasedTrkg::AICovMat to store CM in the lab frame in replacement of CM in the tilted sector frame --- etc/bankdefs/hipo4/dc.json | 34 ------------- etc/bankdefs/hipo4/dcnn.json | 34 ------------- .../java/org/jlab/rec/dc/banks/Banks.java | 6 +-- .../org/jlab/rec/dc/banks/RecoBankWriter.java | 49 +------------------ 4 files changed, 3 insertions(+), 120 deletions(-) diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 12a482b050..54ce6acbb6 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -529,40 +529,6 @@ "name": "TimeBasedTrkg::TBCovMat", "group": 20600, "item" : 37, - "info": "reconstructed track covariance matrix", - "entries": [ - {"name":"id", "type":"S", "info":"id of the track"}, - {"name":"C11", "type":"F", "info":"C11 covariance matrix element at last superlayer used in the fit"}, - {"name":"C12", "type":"F", "info":"C12 covariance matrix element at last superlayer used in the fit"}, - {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, - {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, - {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, - {"name":"C21", "type":"F", "info":"C21 covariance matrix element at last superlayer used in the fit"}, - {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, - {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, - {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, - {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, - {"name":"C31", "type":"F", "info":"C31 covariance matrix element at last superlayer used in the fit"}, - {"name":"C32", "type":"F", "info":"C32 covariance matrix element at last superlayer used in the fit"}, - {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, - {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, - {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, - {"name":"C41", "type":"F", "info":"C41 covariance matrix element at last superlayer used in the fit"}, - {"name":"C42", "type":"F", "info":"C42 covariance matrix element at last superlayer used in the fit"}, - {"name":"C43", "type":"F", "info":"C43 covariance matrix element at last superlayer used in the fit"}, - {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, - {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C51", "type":"F", "info":"C51 covariance matrix element at last superlayer used in the fit"}, - {"name":"C52", "type":"F", "info":"C52 covariance matrix element at last superlayer used in the fit"}, - {"name":"C53", "type":"F", "info":"C53 covariance matrix element at last superlayer used in the fit"}, - {"name":"C54", "type":"F", "info":"C54 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} - ] - }, - { - "name": "TimeBasedTrkg::TBCovMatLab", - "group": 20600, - "item" : 38, "info": "reconstructed track covariance matrix in lab frame", "entries": [ {"name":"id", "type":"S", "info":"id of the track"}, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 234e7091c2..145f3cba6b 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -390,40 +390,6 @@ "name": "TimeBasedTrkg::AICovMat", "group": 20600, "item" : 77, - "info": "reconstructed track covariance matrix", - "entries": [ - {"name":"id", "type":"S", "info":"id of the track"}, - {"name":"C11", "type":"F", "info":"C11 covariance matrix element at last superlayer used in the fit"}, - {"name":"C12", "type":"F", "info":"C12 covariance matrix element at last superlayer used in the fit"}, - {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, - {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, - {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, - {"name":"C21", "type":"F", "info":"C21 covariance matrix element at last superlayer used in the fit"}, - {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, - {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, - {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, - {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, - {"name":"C31", "type":"F", "info":"C31 covariance matrix element at last superlayer used in the fit"}, - {"name":"C32", "type":"F", "info":"C32 covariance matrix element at last superlayer used in the fit"}, - {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, - {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, - {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, - {"name":"C41", "type":"F", "info":"C41 covariance matrix element at last superlayer used in the fit"}, - {"name":"C42", "type":"F", "info":"C42 covariance matrix element at last superlayer used in the fit"}, - {"name":"C43", "type":"F", "info":"C43 covariance matrix element at last superlayer used in the fit"}, - {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, - {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C51", "type":"F", "info":"C51 covariance matrix element at last superlayer used in the fit"}, - {"name":"C52", "type":"F", "info":"C52 covariance matrix element at last superlayer used in the fit"}, - {"name":"C53", "type":"F", "info":"C53 covariance matrix element at last superlayer used in the fit"}, - {"name":"C54", "type":"F", "info":"C54 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} - ] - }, - { - "name": "TimeBasedTrkg::AICovMatLab", - "group": 20600, - "item" : 78, "info": "reconstructed track covariance matrix in lab frame", "entries": [ {"name":"id", "type":"S", "info":"id of the track"}, diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java index 088526caa1..b677dd8f90 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java @@ -136,11 +136,7 @@ public String getTrajBank() { public String getCovmatBank() { return this.getOutputBank("CovMat"); - } - - public String getCovmatLabBank() { - return this.getOutputBank("CovMatLab"); - } + } public String getRecEventBank() { return this.getRecBank("Event"); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index 72094282af..01e734df15 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -446,51 +446,7 @@ public DataBank fillHBTracksBank(DataEvent event, List candlist) { public DataBank fillHBTrajectoryBank(DataEvent event, List candlist) { return this.fillTrajectoryBank(event, candlist); } - - /** - * - * @param event hipo event - * @param candlist tracks - * @return covariance matrix from HB fits to be used for starting TB tracking - */ - private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { - - DataBank bank = event.createBank(bankNames.getCovmatBank(), candlist.size()); - - for (int i = 0; i < candlist.size(); i++) { - bank.setShort("id", i, (short) candlist.get(i).get_Id()); - if(candlist.get(i).get_CovMat()!=null) { - bank.setFloat("C11", i, (float) candlist.get(i).get_CovMat().get(0, 0)); - bank.setFloat("C12", i, (float) candlist.get(i).get_CovMat().get(0, 1)); - bank.setFloat("C13", i, (float) candlist.get(i).get_CovMat().get(0, 2)); - bank.setFloat("C14", i, (float) candlist.get(i).get_CovMat().get(0, 3)); - bank.setFloat("C15", i, (float) candlist.get(i).get_CovMat().get(0, 4)); - bank.setFloat("C21", i, (float) candlist.get(i).get_CovMat().get(1, 0)); - bank.setFloat("C22", i, (float) candlist.get(i).get_CovMat().get(1, 1)); - bank.setFloat("C23", i, (float) candlist.get(i).get_CovMat().get(1, 2)); - bank.setFloat("C24", i, (float) candlist.get(i).get_CovMat().get(1, 3)); - bank.setFloat("C25", i, (float) candlist.get(i).get_CovMat().get(1, 4)); - bank.setFloat("C31", i, (float) candlist.get(i).get_CovMat().get(2, 0)); - bank.setFloat("C32", i, (float) candlist.get(i).get_CovMat().get(2, 1)); - bank.setFloat("C33", i, (float) candlist.get(i).get_CovMat().get(2, 2)); - bank.setFloat("C34", i, (float) candlist.get(i).get_CovMat().get(2, 3)); - bank.setFloat("C35", i, (float) candlist.get(i).get_CovMat().get(2, 4)); - bank.setFloat("C41", i, (float) candlist.get(i).get_CovMat().get(3, 0)); - bank.setFloat("C42", i, (float) candlist.get(i).get_CovMat().get(3, 1)); - bank.setFloat("C43", i, (float) candlist.get(i).get_CovMat().get(3, 2)); - bank.setFloat("C44", i, (float) candlist.get(i).get_CovMat().get(3, 3)); - bank.setFloat("C45", i, (float) candlist.get(i).get_CovMat().get(3, 4)); - bank.setFloat("C51", i, (float) candlist.get(i).get_CovMat().get(4, 0)); - bank.setFloat("C52", i, (float) candlist.get(i).get_CovMat().get(4, 1)); - bank.setFloat("C53", i, (float) candlist.get(i).get_CovMat().get(4, 2)); - bank.setFloat("C54", i, (float) candlist.get(i).get_CovMat().get(4, 3)); - bank.setFloat("C55", i, (float) candlist.get(i).get_CovMat().get(4, 4)); - } - } - //bank.show(); - return bank; - } - + /** * * @param event hipo event @@ -499,7 +455,7 @@ private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { */ private DataBank fillTrackCovMatLabBank(DataEvent event, List candlist) { - DataBank bank = event.createBank(bankNames.getCovmatLabBank(), candlist.size()); + DataBank bank = event.createBank(bankNames.getCovmatBank(), candlist.size()); for (int i = 0; i < candlist.size(); i++) { bank.setShort("id", i, (short) candlist.get(i).get_Id()); @@ -1002,7 +958,6 @@ public void fillAllTBBanks(DataEvent event, List fhits, List Date: Mon, 12 Jan 2026 14:40:18 -0500 Subject: [PATCH 4/8] transformation for covaraince matrix of DC TB tracks from local to global --- .../clas/tracking/utilities/MatrixOps.java | 2 +- etc/bankdefs/hipo4/dc.json | 45 ++++++++++ etc/bankdefs/hipo4/dcnn.json | 45 ++++++++++ .../java/org/jlab/rec/dc/banks/Banks.java | 4 + .../org/jlab/rec/dc/banks/RecoBankWriter.java | 66 +++++++++++++- .../java/org/jlab/rec/dc/track/Track.java | 87 +++++++++++++++++++ .../java/org/jlab/service/dc/DCTBEngine.java | 12 +-- 7 files changed, 254 insertions(+), 7 deletions(-) diff --git a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java index c1ce8072ab..afdf17834d 100644 --- a/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java +++ b/common-tools/clas-tracking/src/main/java/org/jlab/clas/tracking/utilities/MatrixOps.java @@ -128,7 +128,7 @@ public double[][] MatrixTranspose(Object obj1) { for(int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { - result[i][j] = arr1[j][i]; + result[j][i] = arr1[i][j]; } } arr1 = null; diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 4558300006..12a482b050 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -559,6 +559,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::TBCovMatLab", + "group": 20600, + "item" : 38, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::Trajectory", "group": 20600, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 74276a745d..234e7091c2 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -420,6 +420,51 @@ {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} ] }, + { + "name": "TimeBasedTrkg::AICovMatLab", + "group": 20600, + "item" : 78, + "info": "reconstructed track covariance matrix in lab frame", + "entries": [ + {"name":"id", "type":"S", "info":"id of the track"}, + {"name":"C11", "type":"F", "info":"var(x) at vertex in lab frame"}, + {"name":"C12", "type":"F", "info":"cov(x, y) at vertex in lab frame"}, + {"name":"C13", "type":"F", "info":"cov(x, z) at vertex in lab frame"}, + {"name":"C14", "type":"F", "info":"cov(x, p_theta) at vertex in lab frame"}, + {"name":"C15", "type":"F", "info":"cov(x, p_phi) at vertex in lab frame"}, + {"name":"C16", "type":"F", "info":"cov(x, p) at vertex in lab frame"}, + {"name":"C21", "type":"F", "info":"cov(y, x) at vertex in lab frame"}, + {"name":"C22", "type":"F", "info":"var(y) at vertex in lab frame"}, + {"name":"C23", "type":"F", "info":"cov(y, z) at vertex in lab frame"}, + {"name":"C24", "type":"F", "info":"cov(y, p_theta) at vertex in lab frame"}, + {"name":"C25", "type":"F", "info":"cov(y, p_phi) at vertex in lab frame"}, + {"name":"C26", "type":"F", "info":"cov(y, p) at vertex in lab frame"}, + {"name":"C31", "type":"F", "info":"cov(z, x) at vertex in lab frame"}, + {"name":"C32", "type":"F", "info":"cov(z, y) at vertex in lab frame"}, + {"name":"C33", "type":"F", "info":"var(z) at vertex in lab frame"}, + {"name":"C34", "type":"F", "info":"cov(z, p_theta) at vertex in lab frame"}, + {"name":"C35", "type":"F", "info":"cov(z, p_phi) at vertex in lab frame"}, + {"name":"C36", "type":"F", "info":"cov(z, p) at vertex in lab frame"}, + {"name":"C41", "type":"F", "info":"cov(p_theta, x) at vertex in lab frame"}, + {"name":"C42", "type":"F", "info":"cov(p_theta, y) at vertex in lab frame"}, + {"name":"C43", "type":"F", "info":"cov(p_theta, z) at vertex in lab frame"}, + {"name":"C44", "type":"F", "info":"var(p_theta) at vertex in lab frame"}, + {"name":"C45", "type":"F", "info":"cov(p_theta, p_phi) at vertex in lab frame"}, + {"name":"C46", "type":"F", "info":"cov(p_theta, p) at vertex in lab frame"}, + {"name":"C51", "type":"F", "info":"cov(p_phi, x) at vertex in lab frame"}, + {"name":"C52", "type":"F", "info":"cov(p_phi, y) at vertex in lab frame"}, + {"name":"C53", "type":"F", "info":"cov(p_phi, z) at vertex in lab frame"}, + {"name":"C54", "type":"F", "info":"cov(p_phi, p_theta) at vertex in lab frame"}, + {"name":"C55", "type":"F", "info":"var(p_phi) at vertex in lab frame"}, + {"name":"C56", "type":"F", "info":"cov(p_phi, p) at vertex in lab frame"}, + {"name":"C61", "type":"F", "info":"cov(p, x) at vertex in lab frame"}, + {"name":"C62", "type":"F", "info":"cov(p, y) at vertex in lab frame"}, + {"name":"C63", "type":"F", "info":"cov(p, z) at vertex in lab frame"}, + {"name":"C64", "type":"F", "info":"cov(p, p_theta) at vertex in lab frame"}, + {"name":"C65", "type":"F", "info":"cov(p, p_phi) at vertex in lab frame"}, + {"name":"C66", "type":"F", "info":"var(p) at vertex in lab frame"} + ] + }, { "name": "TimeBasedTrkg::AITrajectory", "group": 20600, diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java index aac1368be3..088526caa1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java @@ -138,6 +138,10 @@ public String getCovmatBank() { return this.getOutputBank("CovMat"); } + public String getCovmatLabBank() { + return this.getOutputBank("CovMatLab"); + } + public String getRecEventBank() { return this.getRecBank("Event"); } diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index 529be90740..72094282af 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -490,6 +490,69 @@ private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { //bank.show(); return bank; } + + /** + * + * @param event hipo event + * @param candlist tracks + * @return covariance matrix for momentum and vertex in lab frame + */ + private DataBank fillTrackCovMatLabBank(DataEvent event, List candlist) { + + DataBank bank = event.createBank(bankNames.getCovmatLabBank(), candlist.size()); + + for (int i = 0; i < candlist.size(); i++) { + bank.setShort("id", i, (short) candlist.get(i).get_Id()); + if(candlist.get(i).get_CMInLab()!=null) { + double[][] CM = candlist.get(i).get_CMInLab(); + bank.setFloat("C11", i, (float) CM[0][0]); + bank.setFloat("C12", i, (float) CM[0][1]); + bank.setFloat("C13", i, (float) CM[0][2]); + bank.setFloat("C14", i, (float) CM[0][3]); + bank.setFloat("C15", i, (float) CM[0][4]); + bank.setFloat("C16", i, (float) CM[0][5]); + + bank.setFloat("C21", i, (float) CM[1][0]); + bank.setFloat("C22", i, (float) CM[1][1]); + bank.setFloat("C23", i, (float) CM[1][2]); + bank.setFloat("C24", i, (float) CM[1][3]); + bank.setFloat("C25", i, (float) CM[1][4]); + bank.setFloat("C26", i, (float) CM[1][5]); + + bank.setFloat("C31", i, (float) CM[2][0]); + bank.setFloat("C32", i, (float) CM[2][1]); + bank.setFloat("C33", i, (float) CM[2][2]); + bank.setFloat("C34", i, (float) CM[2][3]); + bank.setFloat("C35", i, (float) CM[2][4]); + bank.setFloat("C36", i, (float) CM[2][5]); + + bank.setFloat("C41", i, (float) CM[3][0]); + bank.setFloat("C42", i, (float) CM[3][1]); + bank.setFloat("C43", i, (float) CM[3][2]); + bank.setFloat("C44", i, (float) CM[3][3]); + bank.setFloat("C45", i, (float) CM[3][4]); + bank.setFloat("C46", i, (float) CM[3][5]); + + bank.setFloat("C51", i, (float) CM[4][0]); + bank.setFloat("C52", i, (float) CM[4][1]); + bank.setFloat("C53", i, (float) CM[4][2]); + bank.setFloat("C54", i, (float) CM[4][3]); + bank.setFloat("C55", i, (float) CM[4][4]); + bank.setFloat("C56", i, (float) CM[4][5]); + + bank.setFloat("C61", i, (float) CM[5][0]); + bank.setFloat("C62", i, (float) CM[5][1]); + bank.setFloat("C63", i, (float) CM[5][2]); + bank.setFloat("C64", i, (float) CM[5][3]); + bank.setFloat("C65", i, (float) CM[5][4]); + bank.setFloat("C66", i, (float) CM[5][5]); + + } + } + //bank.show(); + return bank; + } + /** * * @param event the EvioEvent @@ -939,7 +1002,8 @@ public void fillAllTBBanks(DataEvent event, List fhits, List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); @@ -306,9 +307,10 @@ public boolean processDataEvent(DataEvent event) { continue; } - // get CovMat at vertex - Point3D VTCS = crosses.get(0).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); - TrackArray1.set_CovMat(kFZRef.propagateToVtx(crosses.get(0).get_Sector(), VTCS.z())); + // get CovMat at vertex + Point3D VTCS = TrackArray1.get(TrackArray1.size()-1).getCoordsInTiltedSector(TrackArray1.get_Vtx0().x(), TrackArray1.get_Vtx0().y(), TrackArray1.get_Vtx0().z()); + TrackArray1.set_CovMat(kFZRef.propagateToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z())); + TrackArray1.transCMToGlobal(); double deltaPathToVtx = kFZRef.getDeltaPathToVtx(TrackArray1.get(TrackArray1.size()-1).get_Sector(), VTCS.z()); List kfStateVecsAlongTrajectory = setKFStateVecsAlongTrajectory(kFZRef, deltaPathToVtx); From 35232326a9de31215294f23c3793bead6a7a981b Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Wed, 21 Jan 2026 10:37:33 -0500 Subject: [PATCH 5/8] modify banks TimeBasedTrkg::TBCovMat and TimeBasedTrkg::AICovMat to store CM in the lab frame in replacement of CM in the tilted sector frame --- etc/bankdefs/hipo4/dc.json | 34 ------------- etc/bankdefs/hipo4/dcnn.json | 34 ------------- .../java/org/jlab/rec/dc/banks/Banks.java | 6 +-- .../org/jlab/rec/dc/banks/RecoBankWriter.java | 49 +------------------ 4 files changed, 3 insertions(+), 120 deletions(-) diff --git a/etc/bankdefs/hipo4/dc.json b/etc/bankdefs/hipo4/dc.json index 12a482b050..54ce6acbb6 100644 --- a/etc/bankdefs/hipo4/dc.json +++ b/etc/bankdefs/hipo4/dc.json @@ -529,40 +529,6 @@ "name": "TimeBasedTrkg::TBCovMat", "group": 20600, "item" : 37, - "info": "reconstructed track covariance matrix", - "entries": [ - {"name":"id", "type":"S", "info":"id of the track"}, - {"name":"C11", "type":"F", "info":"C11 covariance matrix element at last superlayer used in the fit"}, - {"name":"C12", "type":"F", "info":"C12 covariance matrix element at last superlayer used in the fit"}, - {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, - {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, - {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, - {"name":"C21", "type":"F", "info":"C21 covariance matrix element at last superlayer used in the fit"}, - {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, - {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, - {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, - {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, - {"name":"C31", "type":"F", "info":"C31 covariance matrix element at last superlayer used in the fit"}, - {"name":"C32", "type":"F", "info":"C32 covariance matrix element at last superlayer used in the fit"}, - {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, - {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, - {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, - {"name":"C41", "type":"F", "info":"C41 covariance matrix element at last superlayer used in the fit"}, - {"name":"C42", "type":"F", "info":"C42 covariance matrix element at last superlayer used in the fit"}, - {"name":"C43", "type":"F", "info":"C43 covariance matrix element at last superlayer used in the fit"}, - {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, - {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C51", "type":"F", "info":"C51 covariance matrix element at last superlayer used in the fit"}, - {"name":"C52", "type":"F", "info":"C52 covariance matrix element at last superlayer used in the fit"}, - {"name":"C53", "type":"F", "info":"C53 covariance matrix element at last superlayer used in the fit"}, - {"name":"C54", "type":"F", "info":"C54 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} - ] - }, - { - "name": "TimeBasedTrkg::TBCovMatLab", - "group": 20600, - "item" : 38, "info": "reconstructed track covariance matrix in lab frame", "entries": [ {"name":"id", "type":"S", "info":"id of the track"}, diff --git a/etc/bankdefs/hipo4/dcnn.json b/etc/bankdefs/hipo4/dcnn.json index 234e7091c2..145f3cba6b 100644 --- a/etc/bankdefs/hipo4/dcnn.json +++ b/etc/bankdefs/hipo4/dcnn.json @@ -390,40 +390,6 @@ "name": "TimeBasedTrkg::AICovMat", "group": 20600, "item" : 77, - "info": "reconstructed track covariance matrix", - "entries": [ - {"name":"id", "type":"S", "info":"id of the track"}, - {"name":"C11", "type":"F", "info":"C11 covariance matrix element at last superlayer used in the fit"}, - {"name":"C12", "type":"F", "info":"C12 covariance matrix element at last superlayer used in the fit"}, - {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, - {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, - {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, - {"name":"C21", "type":"F", "info":"C21 covariance matrix element at last superlayer used in the fit"}, - {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, - {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, - {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, - {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, - {"name":"C31", "type":"F", "info":"C31 covariance matrix element at last superlayer used in the fit"}, - {"name":"C32", "type":"F", "info":"C32 covariance matrix element at last superlayer used in the fit"}, - {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, - {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, - {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, - {"name":"C41", "type":"F", "info":"C41 covariance matrix element at last superlayer used in the fit"}, - {"name":"C42", "type":"F", "info":"C42 covariance matrix element at last superlayer used in the fit"}, - {"name":"C43", "type":"F", "info":"C43 covariance matrix element at last superlayer used in the fit"}, - {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, - {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C51", "type":"F", "info":"C51 covariance matrix element at last superlayer used in the fit"}, - {"name":"C52", "type":"F", "info":"C52 covariance matrix element at last superlayer used in the fit"}, - {"name":"C53", "type":"F", "info":"C53 covariance matrix element at last superlayer used in the fit"}, - {"name":"C54", "type":"F", "info":"C54 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} - ] - }, - { - "name": "TimeBasedTrkg::AICovMatLab", - "group": 20600, - "item" : 78, "info": "reconstructed track covariance matrix in lab frame", "entries": [ {"name":"id", "type":"S", "info":"id of the track"}, diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java index 088526caa1..b677dd8f90 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/Banks.java @@ -136,11 +136,7 @@ public String getTrajBank() { public String getCovmatBank() { return this.getOutputBank("CovMat"); - } - - public String getCovmatLabBank() { - return this.getOutputBank("CovMatLab"); - } + } public String getRecEventBank() { return this.getRecBank("Event"); diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java index 72094282af..01e734df15 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/banks/RecoBankWriter.java @@ -446,51 +446,7 @@ public DataBank fillHBTracksBank(DataEvent event, List candlist) { public DataBank fillHBTrajectoryBank(DataEvent event, List candlist) { return this.fillTrajectoryBank(event, candlist); } - - /** - * - * @param event hipo event - * @param candlist tracks - * @return covariance matrix from HB fits to be used for starting TB tracking - */ - private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { - - DataBank bank = event.createBank(bankNames.getCovmatBank(), candlist.size()); - - for (int i = 0; i < candlist.size(); i++) { - bank.setShort("id", i, (short) candlist.get(i).get_Id()); - if(candlist.get(i).get_CovMat()!=null) { - bank.setFloat("C11", i, (float) candlist.get(i).get_CovMat().get(0, 0)); - bank.setFloat("C12", i, (float) candlist.get(i).get_CovMat().get(0, 1)); - bank.setFloat("C13", i, (float) candlist.get(i).get_CovMat().get(0, 2)); - bank.setFloat("C14", i, (float) candlist.get(i).get_CovMat().get(0, 3)); - bank.setFloat("C15", i, (float) candlist.get(i).get_CovMat().get(0, 4)); - bank.setFloat("C21", i, (float) candlist.get(i).get_CovMat().get(1, 0)); - bank.setFloat("C22", i, (float) candlist.get(i).get_CovMat().get(1, 1)); - bank.setFloat("C23", i, (float) candlist.get(i).get_CovMat().get(1, 2)); - bank.setFloat("C24", i, (float) candlist.get(i).get_CovMat().get(1, 3)); - bank.setFloat("C25", i, (float) candlist.get(i).get_CovMat().get(1, 4)); - bank.setFloat("C31", i, (float) candlist.get(i).get_CovMat().get(2, 0)); - bank.setFloat("C32", i, (float) candlist.get(i).get_CovMat().get(2, 1)); - bank.setFloat("C33", i, (float) candlist.get(i).get_CovMat().get(2, 2)); - bank.setFloat("C34", i, (float) candlist.get(i).get_CovMat().get(2, 3)); - bank.setFloat("C35", i, (float) candlist.get(i).get_CovMat().get(2, 4)); - bank.setFloat("C41", i, (float) candlist.get(i).get_CovMat().get(3, 0)); - bank.setFloat("C42", i, (float) candlist.get(i).get_CovMat().get(3, 1)); - bank.setFloat("C43", i, (float) candlist.get(i).get_CovMat().get(3, 2)); - bank.setFloat("C44", i, (float) candlist.get(i).get_CovMat().get(3, 3)); - bank.setFloat("C45", i, (float) candlist.get(i).get_CovMat().get(3, 4)); - bank.setFloat("C51", i, (float) candlist.get(i).get_CovMat().get(4, 0)); - bank.setFloat("C52", i, (float) candlist.get(i).get_CovMat().get(4, 1)); - bank.setFloat("C53", i, (float) candlist.get(i).get_CovMat().get(4, 2)); - bank.setFloat("C54", i, (float) candlist.get(i).get_CovMat().get(4, 3)); - bank.setFloat("C55", i, (float) candlist.get(i).get_CovMat().get(4, 4)); - } - } - //bank.show(); - return bank; - } - + /** * * @param event hipo event @@ -499,7 +455,7 @@ private DataBank fillTrackCovMatBank(DataEvent event, List candlist) { */ private DataBank fillTrackCovMatLabBank(DataEvent event, List candlist) { - DataBank bank = event.createBank(bankNames.getCovmatLabBank(), candlist.size()); + DataBank bank = event.createBank(bankNames.getCovmatBank(), candlist.size()); for (int i = 0; i < candlist.size(); i++) { bank.setShort("id", i, (short) candlist.get(i).get_Id()); @@ -1002,7 +958,6 @@ public void fillAllTBBanks(DataEvent event, List fhits, List Date: Tue, 3 Feb 2026 10:22:58 -0500 Subject: [PATCH 6/8] adapt eb to 6-dimensional covariance matrix --- .../main/java/org/jlab/clas/detector/DetectorData.java | 9 +++------ .../main/java/org/jlab/clas/detector/DetectorTrack.java | 2 +- etc/bankdefs/hipo4/event-ai.json | 8 +++++++- etc/bankdefs/hipo4/event.json | 8 +++++++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java index e86250b8cd..302c48594e 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java @@ -521,12 +521,9 @@ public static DataBank getCovMatrixBank(List particles, DataEv } bank.setShort("index", row, (short) p.getTrackIndex()); bank.setShort("pindex", row, (short) i); - for (int ii = 0; ii < 5; ii++) { - for (int jj = 0; jj < 5; jj++) { + for (int ii = 0; ii < 6; ii++) { + for (int jj = 0; jj < 6; jj++) { String varName = String.format("C%d%d", ii + 1, jj + 1); - if (bank.getDescriptor().hasEntry(varName) != true) { - continue; - } bank.setFloat(varName, row, p.getCovMatrix(ii, jj)); } } @@ -595,7 +592,7 @@ public static List readDetectorTracks(DataEvent event, String ban } } if (covBank != null) { - final int dimCovMat = 5; + final int dimCovMat = 6; for (int ii = 0; ii < covBank.rows(); ii++) { if (covBank.getInt("id", ii) != trkId) { continue; diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorTrack.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorTrack.java index 8de565b98a..75da99294b 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorTrack.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorTrack.java @@ -134,7 +134,7 @@ public int size() { private Vector3 trackP = new Vector3(); private Vector3 trackVertex = new Vector3(); - private float[][] covMatrix = new float[5][5]; + private float[][] covMatrix = new float[6][6]; private List trackCrosses = new ArrayList<>(); private Trajectory trajectory=new Trajectory(); diff --git a/etc/bankdefs/hipo4/event-ai.json b/etc/bankdefs/hipo4/event-ai.json index b5902b3667..6cc0ca69a2 100644 --- a/etc/bankdefs/hipo4/event-ai.json +++ b/etc/bankdefs/hipo4/event-ai.json @@ -550,16 +550,22 @@ {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, + {"name":"C16", "type":"F", "info":"C16 covariance matrix element at last superlayer used in the fit"}, {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, + {"name":"C26", "type":"F", "info":"C26 covariance matrix element at last superlayer used in the fit"}, {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, + {"name":"C36", "type":"F", "info":"C36 covariance matrix element at last superlayer used in the fit"}, {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} + {"name":"C46", "type":"F", "info":"C46 covariance matrix element at last superlayer used in the fit"}, + {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"}, + {"name":"C56", "type":"F", "info":"C56 covariance matrix element at last superlayer used in the fit"}, + {"name":"C66", "type":"F", "info":"C66 covariance matrix element at last superlayer used in the fit"} ] }, { diff --git a/etc/bankdefs/hipo4/event.json b/etc/bankdefs/hipo4/event.json index 5f87be6520..c99c55695b 100644 --- a/etc/bankdefs/hipo4/event.json +++ b/etc/bankdefs/hipo4/event.json @@ -555,16 +555,22 @@ {"name":"C13", "type":"F", "info":"C13 covariance matrix element at last superlayer used in the fit"}, {"name":"C14", "type":"F", "info":"C14 covariance matrix element at last superlayer used in the fit"}, {"name":"C15", "type":"F", "info":"C15 covariance matrix element at last superlayer used in the fit"}, + {"name":"C16", "type":"F", "info":"C16 covariance matrix element at last superlayer used in the fit"}, {"name":"C22", "type":"F", "info":"C22 covariance matrix element at last superlayer used in the fit"}, {"name":"C23", "type":"F", "info":"C23 covariance matrix element at last superlayer used in the fit"}, {"name":"C24", "type":"F", "info":"C24 covariance matrix element at last superlayer used in the fit"}, {"name":"C25", "type":"F", "info":"C25 covariance matrix element at last superlayer used in the fit"}, + {"name":"C26", "type":"F", "info":"C26 covariance matrix element at last superlayer used in the fit"}, {"name":"C33", "type":"F", "info":"C33 covariance matrix element at last superlayer used in the fit"}, {"name":"C34", "type":"F", "info":"C34 covariance matrix element at last superlayer used in the fit"}, {"name":"C35", "type":"F", "info":"C35 covariance matrix element at last superlayer used in the fit"}, + {"name":"C36", "type":"F", "info":"C36 covariance matrix element at last superlayer used in the fit"}, {"name":"C44", "type":"F", "info":"C44 covariance matrix element at last superlayer used in the fit"}, {"name":"C45", "type":"F", "info":"C45 covariance matrix element at last superlayer used in the fit"}, - {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"} + {"name":"C46", "type":"F", "info":"C46 covariance matrix element at last superlayer used in the fit"}, + {"name":"C55", "type":"F", "info":"C55 covariance matrix element at last superlayer used in the fit"}, + {"name":"C56", "type":"F", "info":"C56 covariance matrix element at last superlayer used in the fit"}, + {"name":"C66", "type":"F", "info":"C66 covariance matrix element at last superlayer used in the fit"} ] }, { From c73d7d09846220729b2e5620f8b1cf01dd4477ef Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 3 Feb 2026 18:13:03 -0500 Subject: [PATCH 7/8] dsts assume symmetric covariance matrix --- .../src/main/java/org/jlab/clas/detector/DetectorData.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java index 302c48594e..d0228a11c2 100644 --- a/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java +++ b/common-tools/clas-reco/src/main/java/org/jlab/clas/detector/DetectorData.java @@ -522,7 +522,7 @@ public static DataBank getCovMatrixBank(List particles, DataEv bank.setShort("index", row, (short) p.getTrackIndex()); bank.setShort("pindex", row, (short) i); for (int ii = 0; ii < 6; ii++) { - for (int jj = 0; jj < 6; jj++) { + for (int jj = ii; jj < 6; jj++) { String varName = String.format("C%d%d", ii + 1, jj + 1); bank.setFloat(varName, row, p.getCovMatrix(ii, jj)); } @@ -598,7 +598,7 @@ public static List readDetectorTracks(DataEvent event, String ban continue; } for (int jj = 1; jj <= dimCovMat; jj++) { - for (int kk = 1; kk <= dimCovMat; kk++) { + for (int kk = jj; kk <= dimCovMat; kk++) { float ele = covBank.getFloat(String.format("C%d%d", jj, kk), ii); track.setCovMatrix(jj - 1, kk - 1, ele); } From 9052fbc5bd6e01b755d65c290f604f307031c667 Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Thu, 5 Feb 2026 12:17:53 -0500 Subject: [PATCH 8/8] recude sinine and cosine calculations --- .../main/java/org/jlab/rec/dc/track/Track.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java index 96b07460fe..3b1023a0d1 100644 --- a/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java +++ b/reconstruction/dc/src/main/java/org/jlab/rec/dc/track/Track.java @@ -443,13 +443,17 @@ public void transCMToGlobal(){ }; double[][] jmT = mo.MatrixTranspose(jm); - //jt: Jacobi matrix for transformation from (x, y, z, θ, φ, p) in the tilted sector frame to (x’, y’, z’, θ’, φ’, p’) in the sector frame (rotate 250 around y) - double numerator11 = Constants.SIN25 * Math.cos(theta) * Math.cos(phi) + Constants.COS25 * Math.sin(theta); - double numerator12 = -Constants.SIN25 * Math.sin(theta) * Math.sin(phi); - double denominator1 = Math.sqrt(1 - Math.pow(Constants.SIN25*Math.sin(theta)*Math.cos(phi) - Constants.COS25*Math.cos(theta), 2)); - double numerator21 = Constants.SIN25 * Math.sin(phi); - double numerator22 = Constants.COS25 * Math.pow(Math.sin(theta),2) + Constants.SIN25 * Math.sin(theta) * Math.cos(theta) * Math.cos(phi); - double denoninator2 = Math.pow(Math.sin(theta) * Math.sin(phi), 2) + Math.pow(Constants.COS25 * Math.sin(theta) * Math.cos(phi) + Constants.SIN25 * Math.cos(theta),2); + //jt: Jacobi matrix for transformation from (x, y, z, θ, φ, p) in the tilted sector frame to (x’, y’, z’, θ’, φ’, p’) in the sector frame (rotate 25 degree around y) + double sinTheta = Math.sin(theta); + double cosTheta = Math.cos(theta); + double sinPhi = Math.sin(phi); + double cosPhi = Math.cos(phi); + double numerator11 = Constants.SIN25 * cosTheta * cosPhi + Constants.COS25 * sinTheta; + double numerator12 = -Constants.SIN25 * sinTheta * sinPhi; + double denominator1 = Math.sqrt(1 - Math.pow(Constants.SIN25*sinTheta*cosPhi - Constants.COS25*cosTheta, 2)); + double numerator21 = Constants.SIN25 * sinPhi; + double numerator22 = Constants.COS25 * Math.pow(sinTheta,2) + Constants.SIN25 * sinTheta * cosTheta * cosPhi; + double denoninator2 = Math.pow(sinTheta * sinPhi, 2) + Math.pow(Constants.COS25 * sinTheta * cosPhi + Constants.SIN25 * cosTheta,2); double[][] jt = {{Constants.COS25, 0, Constants.SIN25, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {-Constants.SIN25, 0, Constants.COS25, 0, 0, 0}, {0, 0, 0, numerator11/denominator1, numerator12/denominator1, 0}, {0, 0, 0, numerator21/denoninator2, numerator22/denoninator2, 0}, {0, 0, 0, 0, 0, 1} };