From 293b1f939ce189eb7540c25cec4cd7d228ac2159 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Tue, 11 Mar 2025 10:08:20 +0800
Subject: [PATCH 1/3] improve resolution

---
 .../src/FitterTool/KalTestTool.cpp            | 22 ++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/Reconstruction/RecTrkGlobal/src/FitterTool/KalTestTool.cpp b/Reconstruction/RecTrkGlobal/src/FitterTool/KalTestTool.cpp
index 56074e6e..03846ba1 100644
--- a/Reconstruction/RecTrkGlobal/src/FitterTool/KalTestTool.cpp
+++ b/Reconstruction/RecTrkGlobal/src/FitterTool/KalTestTool.cpp
@@ -326,7 +326,13 @@ int KalTestTool::finaliseTrack(MarlinTrk::IMarlinTrack* marlintrk, edm4hep::Muta
 
   marlintrk->getTrackerHitAtPositiveNDF(last_constrained_hit);
 
+  debug() << "finaliseLCIOTrack:  firstHit: " << firstHit.getCellID() << " " << firstHit.getPosition()
+	  << " lastHit: " << lastHit.getCellID() << " " << lastHit.getPosition()
+	  << " last constrained hit: " << last_constrained_hit.getCellID() << " " << last_constrained_hit.getPosition()
+	  << " fit direction is backward : " << fit_backwards << endmsg;
+
   return_error = marlintrk->smooth(lastHit);
+  //return_error = marlintrk->smooth(last_constrained_hit);
 
   if (return_error != MarlinTrk::IMarlinTrack::success) {
     debug() << "return_code for smoothing to " << lastHit << " = " << MarlinTrk::errorCode(return_error) << " NDF = " << ndf << endmsg;
@@ -366,21 +372,21 @@ int KalTestTool::finaliseTrack(MarlinTrk::IMarlinTrack* marlintrk, edm4hep::Muta
     
     double chi2Tmp = 0;
     int    ndfTmp  = 0;
-    return_error = marlintrk->getTrackState( last_constrained_hit, ts, chi2, ndf);
-    //return_error = marlintrk->getTrackState( lastHit, ts, chi2, ndf);
+    //return_error = marlintrk->getTrackState( last_constrained_hit, ts, chi2, ndf);
+    return_error = marlintrk->getTrackState( lastHit, ts, chi2, ndf);
 
     debug() << "-- TrackState at last constrained hit : " << ts << endmsg;
 
     //need to add a dummy hit to the track
-    mTrk->addHit(last_constrained_hit);
-    //mTrk->addHit(lastHit);
+    //mTrk->addHit(last_constrained_hit);
+    mTrk->addHit(lastHit);
 
     double _bfield = m_magneticField;
     // fixme: the implementation for DDKalTest does no longer need this value but the IMarlinTrk interface is not yet changed
     mTrk->initialise(ts, _bfield, fit_backwards);
 
-    while (hI->first.id() != last_constrained_hit.id()) {
-      //while (hI->first.id() != lastHit.id()) {
+    //while (hI->first.id() != last_constrained_hit.id()) {
+    while (hI->first.id() != lastHit.id()) {
       debug() << "-- hit in reverse_iterator : " << hI->first.getCellID() << " " << hI->first.getPosition() << endmsg;
       ++hI;
     }
@@ -457,8 +463,8 @@ int KalTestTool::finaliseTrack(MarlinTrk::IMarlinTrack* marlintrk, edm4hep::Muta
     // @ last hit
     ///////////////////////////////////////////////////////
 
-    debug() << ">>>> create TrackState AtLastHit : using from trkhit "
-	    << last_constrained_hit.getCellID() << " " << last_constrained_hit.getPosition() << endmsg;
+    debug() << ">>>> create TrackState AtLastHit : using trkhit " << lastHit.getCellID() << " " << lastHit.getPosition()
+	    << " from last_constrained_hit " << last_constrained_hit.getCellID() << " " << last_constrained_hit.getPosition() << endmsg;
 
     edm4hep::Vector3d last_hit_pos(lastHit.getPosition());
 
-- 
GitLab


From 323c69ba09f2ecfba761cb2a4298a51d25b991a3 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Tue, 11 Mar 2025 10:08:52 +0800
Subject: [PATCH 2/3] minor print info change

---
 .../RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp b/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
index 7a256ff7..249513b2 100755
--- a/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
+++ b/Reconstruction/RecTrkGlobal/src/FullLDCTracking/FullLDCTrackingAlg.cpp
@@ -465,7 +465,7 @@ fitstart:
 	unsigned long cellID = hit.getCellID();
 	const edm4hep::Vector3d& pos = hit.getPosition();
 	double r = sqrt(pos.x*pos.x+pos.y*pos.y);
-	debug() << "Hit " << iHit << ": r= " << r << " id = " << hit.id() << " cellID = " << cellID << " det = " << (cellID&0x1F) << endmsg;
+	debug() << "Hit " << iHit << ": r = " << r << " z = " << pos.z << " id = " << hit.id() << " cellID = " << cellID << " det = " << (cellID&0x1F) << endmsg;
       }
     }
 
-- 
GitLab


From f54f6f8d9c9b2354c00d0aee287c434adb622c48 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Tue, 11 Mar 2025 10:09:45 +0800
Subject: [PATCH 3/3] add shell

---
 .../KalDet/include/kaldet/CEPCVTXKalDetector.h   |  4 ++++
 .../KalDet/src/ild/vxd/CEPCVTXKalDetector.cc     | 16 ++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/Utilities/KalDet/include/kaldet/CEPCVTXKalDetector.h b/Utilities/KalDet/include/kaldet/CEPCVTXKalDetector.h
index 9da9598d..cb70319b 100644
--- a/Utilities/KalDet/include/kaldet/CEPCVTXKalDetector.h
+++ b/Utilities/KalDet/include/kaldet/CEPCVTXKalDetector.h
@@ -35,6 +35,10 @@ private:
 
   double _relative_position_of_measurement_surface;
 
+  double _shellInnerR;
+  double _shellOuterR;
+  double _shellHalfZ;
+
   struct VXD_Layer {
     int nLadders;
     double phi0;
diff --git a/Utilities/KalDet/src/ild/vxd/CEPCVTXKalDetector.cc b/Utilities/KalDet/src/ild/vxd/CEPCVTXKalDetector.cc
index b49d6c07..ecf708d7 100644
--- a/Utilities/KalDet/src/ild/vxd/CEPCVTXKalDetector.cc
+++ b/Utilities/KalDet/src/ild/vxd/CEPCVTXKalDetector.cc
@@ -308,6 +308,18 @@ CEPCVTXKalDetector::CEPCVTXKalDetector( const gear::GearMgr& gearMgr, IGeomSvc*
    }
   }
 
+  if (_shellInnerR > 0 && _shellOuterR > _shellInnerR) {
+    TMaterial& shell = *MaterialDataBase::Instance().getMaterial("VXDShellMaterial");
+
+    Add(new ILDCylinderMeasLayer(air, shell, _shellInnerR, _shellHalfZ, 0, 0, 0, _bZ, dummy, -1, "VXDShellInnerWall"));
+    Add(new ILDCylinderMeasLayer(shell, air, _shellOuterR, _shellHalfZ, 0, 0, 0, _bZ, dummy, -1, "VXDShellOuterWall"));
+
+    TVector3 normal(0, 0, 1);
+    TVector3 xc(0.0, 0.0, _shellHalfZ);
+    Add(new ILDDiscMeasLayer(shell, air,  xc,  normal, _bZ, _shellOuterR + eps, _shellInnerR, _shellOuterR, dummy, -1, "VXDShellSidePositiveZ"));
+    Add(new ILDDiscMeasLayer(shell, air, -xc, -normal, _bZ, _shellOuterR + eps, _shellInnerR, _shellOuterR, dummy, -1, "VXDShellSideNegativeZ"));
+  }
+
   SetOwner();                   
 }
 
@@ -317,6 +329,10 @@ void CEPCVTXKalDetector::setupGearGeom( const gear::GearMgr& gearMgr ){
 
   _bZ = gearMgr.getBField().at( gear::Vector3D( 0.,0.,0.)  ).z() ;
 
+  _shellInnerR = pVXDDetMain.getShellInnerRadius();
+  _shellOuterR = pVXDDetMain.getShellOuterRadius();
+  _shellHalfZ  = pVXDDetMain.getShellHalfLength();
+
   _nLayers[0] = pVXDLayerLayout.getNLayers();
   _VXDgeo.resize(_nLayers[0]);
 
-- 
GitLab