From bf360d3c3df2fa27b1ec513d09a7c14831be431d Mon Sep 17 00:00:00 2001 From: tongtongcao Date: Mon, 12 Jan 2026 14:40:18 -0500 Subject: [PATCH 1/3] 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/3] 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/3] 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