From cb128981ceafed002651ce5a6a305a16a5a95827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20S=C3=A1nchez=20Castillo?= Date: Wed, 30 Sep 2026 03:25:22 -0500 Subject: [PATCH 1/3] Use neutrino vertex for particle propagation correction --- .../LightPropagationCorrection_module.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc index 80bddb18b..139bd8665 100644 --- a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc +++ b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc @@ -147,14 +147,15 @@ void sbnd::LightPropagationCorrection::produce(art::Event & e) if (propertiesMap.count("NuScore")) _fNuScore = propertiesMap.at("NuScore"); if(_fNuScore>_sliceMaxNuScore) _sliceMaxNuScore = _fNuScore; } + std::vector< art::Ptr > vertexVec = pfp_vertex_assns.at(pfp.key()); + for(const art::Ptr &ver : vertexVec){ + geo::Point_t xyz_vertex = ver->position(); + fRecoVx= xyz_vertex.X(); + fRecoVy= xyz_vertex.Y(); + fRecoVz= xyz_vertex.Z(); + } } - std::vector< art::Ptr > vertexVec = pfp_vertex_assns.at(pfp.key()); - for(const art::Ptr &ver : vertexVec){ - geo::Point_t xyz_vertex = ver->position(); - fRecoVx= xyz_vertex.X(); - fRecoVy= xyz_vertex.Y(); - fRecoVz= xyz_vertex.Z(); - } + //Get the spacepoints associated to the PFParticle std::vector> PFPSpacePointsVect = pfp_sp_assns.at(pfp.key()); //Get the SP Hit assns From d6c9a5234167c90f1486634be56317072814747f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20S=C3=A1nchez=20Castillo?= Date: Fri, 16 Oct 2026 11:42:03 -0500 Subject: [PATCH 2/3] Modify VIS light propagation correction to mimic MC VIS light simulation --- .../LightPropagationCorrection_module.cc | 14 +++++++++++--- .../LightPropagationCorrection_module.hh | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc index 139bd8665..1e106dadd 100644 --- a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc +++ b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc @@ -19,6 +19,7 @@ sbnd::LightPropagationCorrection::LightPropagationCorrection(fhicl::ParameterSet fSpeedOfLight( p.get("SpeedOfLight") ), fVGroupVIS( p.get("VGroupVIS") ), fVGroupVUV( p.get("VGroupVUV") ), + fUseMCVIS( p.get("UseMCVIS") ), fNuScoreThreshold( p.get("NuScoreThreshold") ), fFMScoreThreshold( p.get("FMScoreThreshold") ), fMinHitPE ( p.get("MinHitPE") ), @@ -409,9 +410,16 @@ for(size_t opdet = 0; opdet < fOpDetID.size(); ++opdet) { double dy = fSpacePointY[sp] - _opDetY; double dz = fSpacePointZ[sp] - _opDetZ; double distanceToOpDet = std::sqrt(dx*dx + dy*dy + dz*dz); - double cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from cathode to OpDet in mm - double spToCathode = std::sqrt( fSpacePointX[sp]*fSpacePointX[sp] + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from space point to cathode in mm - + double spToCathode; + double cathodeToOpDet; + if(fUseMCVIS){ // Correct VIS light as is simulated in MC. + spToCathode = std::sqrt(fSpacePointX[sp]*fSpacePointX[sp]); // Distance from space point to cathode in mm + cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy)*(dy) + (dz)*(dz)); // Distance from cathode to OpDet in mm + } + else{ // Correct VIS light ot minimise bias in data. + spToCathode = std::sqrt( fSpacePointX[sp]*fSpacePointX[sp] + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from space point to cathode in mm + cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from cathode to OpDet in mm + } float lightPropTimeVIS = spToCathode/fVGroupVUV + cathodeToOpDet/fVGroupVIS; // Speed float lightPropTimeVUV = distanceToOpDet / fVGroupVUV; // Speed of light in mm/ns for VUV float lightPropTime = 0; diff --git a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh index c8455e791..d51860f69 100644 --- a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh +++ b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh @@ -209,6 +209,7 @@ private: double fVGroupVUV_I; double fVGroupVIS; double fVGroupVUV; // Speed of light in vacuum in mm/ns + bool fUseMCVIS; // Flag to indicate if MC VIS light propagation should be used double fNuScoreThreshold; double fFMScoreThreshold; From 9290fac516d37c4f95f5ba2b79977d66cde74213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20S=C3=A1nchez=20Castillo?= Date: Tue, 20 Oct 2026 05:50:43 -0500 Subject: [PATCH 3/3] Revert "Modify VIS light propagation correction to mimic MC VIS light simulation" This reverts commit d6c9a5234167c90f1486634be56317072814747f. --- .../LightPropagationCorrection_module.cc | 14 +++----------- .../LightPropagationCorrection_module.hh | 1 - 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc index 1e106dadd..139bd8665 100644 --- a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc +++ b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.cc @@ -19,7 +19,6 @@ sbnd::LightPropagationCorrection::LightPropagationCorrection(fhicl::ParameterSet fSpeedOfLight( p.get("SpeedOfLight") ), fVGroupVIS( p.get("VGroupVIS") ), fVGroupVUV( p.get("VGroupVUV") ), - fUseMCVIS( p.get("UseMCVIS") ), fNuScoreThreshold( p.get("NuScoreThreshold") ), fFMScoreThreshold( p.get("FMScoreThreshold") ), fMinHitPE ( p.get("MinHitPE") ), @@ -410,16 +409,9 @@ for(size_t opdet = 0; opdet < fOpDetID.size(); ++opdet) { double dy = fSpacePointY[sp] - _opDetY; double dz = fSpacePointZ[sp] - _opDetZ; double distanceToOpDet = std::sqrt(dx*dx + dy*dy + dz*dz); - double spToCathode; - double cathodeToOpDet; - if(fUseMCVIS){ // Correct VIS light as is simulated in MC. - spToCathode = std::sqrt(fSpacePointX[sp]*fSpacePointX[sp]); // Distance from space point to cathode in mm - cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy)*(dy) + (dz)*(dz)); // Distance from cathode to OpDet in mm - } - else{ // Correct VIS light ot minimise bias in data. - spToCathode = std::sqrt( fSpacePointX[sp]*fSpacePointX[sp] + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from space point to cathode in mm - cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from cathode to OpDet in mm - } + double cathodeToOpDet = std::sqrt(_opDetX*_opDetX + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from cathode to OpDet in mm + double spToCathode = std::sqrt( fSpacePointX[sp]*fSpacePointX[sp] + (dy/2)*(dy/2) + (dz/2)*(dz/2)); // Distance from space point to cathode in mm + float lightPropTimeVIS = spToCathode/fVGroupVUV + cathodeToOpDet/fVGroupVIS; // Speed float lightPropTimeVUV = distanceToOpDet / fVGroupVUV; // Speed of light in mm/ns for VUV float lightPropTime = 0; diff --git a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh index d51860f69..c8455e791 100644 --- a/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh +++ b/sbndcode/LightPropagationCorrection/LightPropagationCorrection_module.hh @@ -209,7 +209,6 @@ private: double fVGroupVUV_I; double fVGroupVIS; double fVGroupVUV; // Speed of light in vacuum in mm/ns - bool fUseMCVIS; // Flag to indicate if MC VIS light propagation should be used double fNuScoreThreshold; double fFMScoreThreshold;