Skip to content

Commit 157371a

Browse files
committed
resolving merge conflict
2 parents e3bb6d5 + d2455cc commit 157371a

20 files changed

Lines changed: 203 additions & 175 deletions

.github/pull_request_template.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
## Description
22
Please provide a detailed description of the changes this pull request introduces.
33

4-
$${\color{red}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}$$
4+
$${\color{blue}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}$$
55

6-
$${\color{red}\bf{\textrm{IMPORTANT UPDATE June 22nd 2025:}}}$$ If you are making a PR which is intended as a patch for the CURRENT production (which started in Spring 2025), you must make two PRs: one for develop and one for the production/v10_06_00 branch.
6+
$${\color{blue}\bf{\textrm{IMPORTANT UPDATE Feb 2nd 2026:}}}$$ If you are making a PR which is intended as a patch for the CURRENT production for gen 2 SBND analyses, you must make two PRs: one for develop and one for the production/sbnd-gen2 branch.
77

8-
$${\color{red}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}$$
8+
$${\color{blue}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}$$
99

1010
## Checklist
1111
- [ ] Added at least 1 label from [available labels](https://github.com/SBNSoftware/sbndcode/issues/labels?sort=name-asc).

CMakeLists.txt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
1717

18-
set(${PROJECT_NAME}_CMAKE_PROJECT_VERSION_STRING 10.14.02)
18+
set(${PROJECT_NAME}_CMAKE_PROJECT_VERSION_STRING 10.14.02.02)
1919
find_package(cetmodules REQUIRED)
2020
project(sbndcode LANGUAGES CXX)
2121

@@ -88,11 +88,8 @@ find_package( Eigen3 REQUIRED )
8888
find_package( Geant4 REQUIRED )
8989
find_package( Boost COMPONENTS system REQUIRED )
9090
find_package( ROOT REQUIRED )
91-
92-
if(DEFINED ENV{HEP_HPC_DIR} )
93-
find_ups_product( hdf5 )
94-
find_ups_product( hep_hpc )
95-
endif()
91+
find_package( hdf5 REQUIRED )
92+
find_package( hep_hpc REQUIRED )
9693

9794
# macros for dictionary and simple_plugin
9895
include(ArtDictionary)

sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.cc

Lines changed: 64 additions & 89 deletions
Large diffs are not rendered by default.

sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ namespace blip {
132132

133133
// --- FCL configs ---
134134
std::string fHitProducer;
135+
std::string fHitTruthMatcher;
135136
std::string fTrkProducer;
136137
std::string fGeantProducer;
137138
std::string fSimDepProducer;

sbndcode/BlipRecoSBND/BlipAna_module.cc

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -458,10 +458,10 @@ class BlipAnaTreeDataStruct
458458
evtTree->Branch("hit_ismatch",hit_ismatch,"hit_ismatch[nhits]/I");
459459
evtTree->Branch("hit_trkid",hit_trkid,"hit_trkid[nhits]/I");
460460
if( saveTruthInfo ) {
461-
evtTree->Branch("hit_g4trkid",hit_g4trkid,"hit_g4trkid[nhits]/I");
462-
evtTree->Branch("hit_g4frac",hit_g4frac,"hit_g4frac[nhits]/F");
463-
evtTree->Branch("hit_g4energy",hit_g4energy,"hit_g4energy[nhits]/F");
464-
evtTree->Branch("hit_g4charge",hit_g4charge,"hit_g4charge[nhits]/F");
461+
evtTree->Branch("hit_g4trkid",hit_g4trkid,"hit_g4trkid[nhits]/I");
462+
evtTree->Branch("hit_g4frac",hit_g4frac,"hit_g4frac[nhits]/F");
463+
evtTree->Branch("hit_g4energy",hit_g4energy,"hit_g4energy[nhits]/F");
464+
evtTree->Branch("hit_g4charge",hit_g4charge,"hit_g4charge[nhits]/F");
465465
}
466466
evtTree->Branch("hit_clustid",hit_clustid,"hit_clustid[nhits]/I");
467467
evtTree->Branch("hit_blipid",hit_blipid,"hit_blipid[nhits]/I");
@@ -747,22 +747,22 @@ class BlipAna : public art::EDAnalyzer
747747

748748
h_part_process = dir_truth.make<TH1D>("part_process","MCParticle->Process()",5,0,5);
749749
auto xa = h_part_process->GetXaxis();
750-
xa->SetBinLabel(1,"primary");
751-
xa->SetBinLabel(2,"compt");
752-
xa->SetBinLabel(3,"phot");
753-
xa->SetBinLabel(4,"conv");
754-
xa->SetBinLabel(5,"other");
750+
xa->SetBinLabel(1,"primary");
751+
xa->SetBinLabel(2,"compt");
752+
xa->SetBinLabel(3,"phot");
753+
xa->SetBinLabel(4,"conv");
754+
xa->SetBinLabel(5,"other");
755755

756756
h_nblips_tm = dir_truth.make<TH1D>("nblips_tm","Truth-matched 3D blips per event",blipBins,0,blipMax);
757757
h_blip_qcomp = dir_truth.make<TH1D>("blip_qcomp","Fraction of true charge (at anode) reconstructed into 3D blips",202,0,1.01);
758758
h_blip_reszy = dir_truth.make<TH2D>("blip_res_zy","Blip position resolution;Z_{reco} - Z_{true} [cm];Y_{reco} - Y_{true} [cm]",150,-15,15,150,-15,15);
759-
h_blip_reszy ->SetOption("colz");
759+
h_blip_reszy ->SetOption("colz");
760760
h_blip_resx = dir_truth.make<TH1D>("blip_res_x","Blip position resolution;X_{reco} - X_{true} [cm]",200,-10,10);
761761
h_blip_resE = dir_truth.make<TH1D>("blip_res_E","Blip energy resolution;(E_{reco} - E_{true})/E_{true} [cm]",200,-1.,1.);
762762
h_blip_E_vs_resE = dir_truth.make<TH2D>("blip_res_energy","Energy resolution of 3D blips;Energy [MeV];#deltaE/E_{true}",100,0,5,200,-1.,1.);
763-
h_blip_E_vs_resE ->SetOption("colz");
763+
h_blip_E_vs_resE ->SetOption("colz");
764764
h_clust_qres_vs_q = dir_truth.make<TH2D>("qres_vs_q","Clusters on collection plane;True charge deposited [ #times 10^{3} e- ];Reco resolution",160,0,80,200,-1,1);
765-
h_clust_qres_vs_q ->SetOption("colz");
765+
h_clust_qres_vs_q ->SetOption("colz");
766766
h_clust_qres_anode = dir_truth.make<TH1D>("qres_anode","Reco charge vs true charge collected;( reco-true ) / true;Area-normalized entries",200,-1.,1.);
767767
h_clust_qres_dep = dir_truth.make<TH1D>("qres_dep","Reco charge vs true charge deposited;( reco-true ) / true;Area-normalized entries",200,-1.,1.);
768768
h_qratio_vs_time_sim = dir_truth.make<TH2D>("qratio_vs_time_sim",";Drift time [#mus]; Q_{anode} / Q_{dep}",44,100,2300, 1000,0.50,1.50);
@@ -803,10 +803,10 @@ class BlipAna : public art::EDAnalyzer
803803
h_hitqres[i] = dir_truth.make<TH1D>(Form("pl%i_hit_q_res",i), Form("Plane %i hits;charge resolution: (reco-true)/true",i), 400,-1,1);
804804
h_hitqres_scatter[i] = dir_truth.make<TH2D>( Form("pl%i_hit_qres_scatter",i),
805805
Form("Plane %i;true hit charge [#times 10^{3} e-];Reconstructed hit charge [#times 10^{3} e-]",i),qBins,0,qMax/1e3,qBins,0,qMax/1e3);
806-
h_hitqres_scatter[i] ->SetOption("colz");
806+
h_hitqres_scatter[i] ->SetOption("colz");
807807
h_hitqres_vs_q[i] = dir_truth.make<TH2D>( Form("pl%i_hit_qres_vs_q",i),
808808
Form("Plane %i;true hit charge [#times 10^{3} e-];hit charge resolution: (reco-true)/true",i),qBins,0,qMax/1e3, 400,-2,2);
809-
h_hitqres_vs_q[i] ->SetOption("colz");
809+
h_hitqres_vs_q[i] ->SetOption("colz");
810810

811811
h_chargecomp[i] = dir_truth.make<TH1D>(Form("pl%i_hit_charge_completeness",i),Form("charge completness, plane %i",i),101,0,1.01);
812812
h_hitpur[i] = dir_truth.make<TH1D>(Form("pl%i_hit_purity",i),Form("hit purity, plane %i",i),101,0,1.01);
@@ -1328,7 +1328,6 @@ void BlipAna::analyze(const art::Event& evt)
13281328
}
13291329

13301330
}
1331-
13321331
if( fDebugMode ) PrintClusterInfo(clust);
13331332

13341333
}//endloop over 2D hit clusters
@@ -1388,7 +1387,7 @@ void BlipAna::analyze(const art::Event& evt)
13881387
nblips_picky++;
13891388
fNum3DBlipsPicky++;
13901389
h_blip_charge_picky ->Fill(blp.clusters[fCaloPlane].Charge);
1391-
h_blip_zy_picky ->Fill(blp.Position.Z(), blp.Position.Y());
1390+
h_blip_zy_picky ->Fill(blp.Position.Z(), blp.Position.Y());
13921391
h_blip_charge_YU_picky->Fill( 0.001*blp.clusters[2].Charge, 0.001*blp.clusters[0].Charge );
13931392
h_blip_charge_YV_picky->Fill( 0.001*blp.clusters[2].Charge, 0.001*blp.clusters[1].Charge );
13941393
h_blip_charge_UV_picky->Fill( 0.001*blp.clusters[0].Charge, 0.001*blp.clusters[1].Charge );
@@ -1491,27 +1490,27 @@ void BlipAna::endJob(){
14911490
//printf(" picky frac : %5.3f\n", fNum3DBlipsPicky/float(fNum3DBlips));
14921491

14931492
if(fIsMC){
1494-
printf(" MC-matched blips per evt : %.3f\n", fNum3DBlipsTrue/nEvents);
1495-
printf(" MC blip purity : %.3f\n", fNum3DBlipsTrue/float(fNum3DBlips));
1496-
printf(" MC blip purity, 3 planes : %.3f\n", fNum3DBlipsTrue3P/float(fNum3DBlips3Plane));
1497-
if( h_blip_qcomp->GetMean() > 0 )
1498-
printf(" Charge completeness, total : %.4f +/- %.4f\n", h_blip_qcomp->GetMean(), h_blip_qcomp->GetStdDev()/sqrt(fNumEvents));
1499-
//printf(" < 2MeV : %.4f +/- %.4f\n", h_blip_qcomp_2MeV->GetMean(), h_blip_qcomp_2MeV->GetStdDev()/sqrt(fNumEvents));
1500-
//printf(" Blip purity : %.4f\n", h_blip_pur->GetMean());
1493+
printf(" MC-matched blips per evt : %.3f\n", fNum3DBlipsTrue/nEvents);
1494+
printf(" MC blip purity : %.3f\n", fNum3DBlipsTrue/float(fNum3DBlips));
1495+
printf(" MC blip purity, 3 planes : %.3f\n", fNum3DBlipsTrue3P/float(fNum3DBlips3Plane));
1496+
if( h_blip_qcomp->GetMean() > 0 )
1497+
printf(" Charge completeness, total : %.4f +/- %.4f\n", h_blip_qcomp->GetMean(), h_blip_qcomp->GetStdDev()/sqrt(fNumEvents));
1498+
//printf(" < 2MeV : %.4f +/- %.4f\n", h_blip_qcomp_2MeV->GetMean(), h_blip_qcomp_2MeV->GetStdDev()/sqrt(fNumEvents));
1499+
//printf(" Blip purity : %.4f\n", h_blip_pur->GetMean());
15011500
}
15021501
printf(" Mean blip charge : %.0f e-\n", h_blip_charge->GetMean());
15031502
printf("\n");
15041503
for(size_t i=0; i<kNplanes; i++){
1505-
printf(" Plane %lu -------------------------\n",i);
1506-
printf(" * total hits/evt : %.2f\n",fNumHits[i]/(float)fNumEvents);
1507-
printf(" * untracked hits/evt : %.2f (%.2f plane-matched)\n",fNumHitsUntracked[i]/(float)fNumEvents, fNumHitsMatched[i]/(float)fNumEvents);
1508-
//printf(" * plane-matched hits/evt : %.2f\n",fNumHitsMatched[i]/(float)fNumEvents);
1509-
if(fIsMC) {
1510-
printf(" * true-matched hits/evt : %.2f (%.2f plane-matched)\n",fNumHitsTrue[i]/(float)fNumEvents, fNumHitsMatchedTrue[i]/(float)fNumEvents);
1511-
if( h_chargecomp[i]->GetMean() > 0 )
1512-
printf(" * charge completeness : %.4f\n",h_chargecomp[i]->GetMean());
1513-
printf(" * hit purity : %.4f\n",h_hitpur[i]->GetMean());
1514-
}
1504+
printf(" Plane %lu -------------------------\n",i);
1505+
printf(" * total hits/evt : %.2f\n",fNumHits[i]/(float)fNumEvents);
1506+
printf(" * untracked hits/evt : %.2f (%.2f plane-matched)\n",fNumHitsUntracked[i]/(float)fNumEvents, fNumHitsMatched[i]/(float)fNumEvents);
1507+
//printf(" * plane-matched hits/evt : %.2f\n",fNumHitsMatched[i]/(float)fNumEvents);
1508+
if(fIsMC) {
1509+
printf(" * true-matched hits/evt : %.2f (%.2f plane-matched)\n",fNumHitsTrue[i]/(float)fNumEvents, fNumHitsMatchedTrue[i]/(float)fNumEvents);
1510+
if( h_chargecomp[i]->GetMean() > 0 )
1511+
printf(" * charge completeness : %.4f\n",h_chargecomp[i]->GetMean());
1512+
printf(" * hit purity : %.4f\n",h_hitpur[i]->GetMean());
1513+
}
15151514
}
15161515
printf("\n***********************************************\n");
15171516

@@ -1584,6 +1583,9 @@ void BlipAna::PrintClusterInfo(const blip::HitClust& hc){
15841583
hc.EdepID,
15851584
hc.isMatched
15861585
);
1586+
printf("G4 IDs contib \n");
1587+
for(int g4ID : hc.G4IDs) printf(" %i ", g4ID);
1588+
printf("\n");
15871589
}
15881590

15891591
void BlipAna::PrintBlipInfo(const blip::Blip& bl){

sbndcode/BlipRecoSBND/Utils/BlipUtils.cc

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ namespace BlipUtils {
3232
//===========================================================================
3333
// Provided a MCParticle, calculate everything we'll need for later calculations
3434
// and save into ParticleInfo object
35-
void FillParticleInfo( const simb::MCParticle& part, blip::ParticleInfo& pinfo, SEDVec_t& sedvec, int caloPlane){
36-
37-
// Get important info and do conversions
35+
void FillParticleInfo( const simb::MCParticle& part, blip::ParticleInfo& pinfo){
36+
// Get important info and do conversions
3837
pinfo.particle = part;
3938
pinfo.trackId = part.TrackId();
4039
pinfo.isPrimary = (int)(part.Process() == "primary");
@@ -50,17 +49,29 @@ namespace BlipUtils {
5049
pinfo.time = /*ns ->mus*/1e-3 * part.T();
5150
pinfo.endtime = /*ns ->mus*/1e-3 * part.EndT();
5251
pinfo.numTrajPts = part.NumberTrajectoryPoints();
53-
5452
// Pathlength (in AV) and start/end point
5553
pinfo.pathLength = PathLength( part, pinfo.startPoint, pinfo.endPoint);
56-
5754
// Central position of trajectory
5855
pinfo.Position = geo::vect::middlePoint({ pinfo.startPoint, pinfo.endPoint });
5956

6057
// Energy/charge deposited by this particle, found using SimEnergyDeposits
6158
pinfo.depEnergy = 0;
6259
pinfo.depElectrons = 0;
60+
return;
61+
}
62+
void FillParticleInfo( const simb::MCParticle& part, blip::ParticleInfo& pinfo, SEDVec_t& sedvec, int caloPlane){
63+
FillParticleInfo( part, pinfo);
6364
for(auto& sed : sedvec ) {
65+
if( -1*sed->TrackID() == part.TrackId() || sed->TrackID() == part.TrackId() ) {
66+
pinfo.depEnergy += sed->Energy();
67+
pinfo.depElectrons += sed->NumElectrons();
68+
}
69+
}
70+
return;
71+
}
72+
void FillParticleInfo( const simb::MCParticle& part, blip::ParticleInfo& pinfo, SIDEVec_t& sIDEvec, int caloPlane){
73+
FillParticleInfo( part, pinfo);
74+
for(auto& sed : sIDEvec ) {
6475
if( -1*sed.trackID == part.TrackId() || sed.trackID == part.TrackId() ) {
6576
pinfo.depEnergy += sed.energy;
6677
pinfo.depElectrons += sed.numElectrons;
@@ -99,12 +110,14 @@ namespace BlipUtils {
99110

100111
// We want to loop through any contiguous electrons (produced
101112
// with process "eIoni") and add the energy they deposit into this blip.
102-
if( part.NumberDaughters() ) {
113+
if( part.NumberDaughters() ) { //particles have daughters but they must all be neutron, gamma, or one of the special processes?
103114
for(size_t j=0; j<pinfo.size(); j++){
104115
simb::MCParticle& p = pinfo[j].particle;
105116
std::string pr = p.Process();
106-
if( p.PdgCode() != 2112 && (pr == "eIoni" || pr == "muIoni" || pr == "hIoni") ){
107-
if( IsAncestorOf(p.TrackId(),part.TrackId(),true) ) GrowTrueBlip(pinfo[j],tb);
117+
if( p.PdgCode() != 2112 && p.PdgCode() != 22 && (pr == "eIoni" || pr == "muIoni" || pr == "hIoni") ){ //neutron and photons leave track
118+
if( IsAncestorOf(p.TrackId(),part.TrackId(),true,true) ){
119+
GrowTrueBlip(pinfo[j],tb);
120+
}
108121
}
109122
}
110123
}
@@ -151,7 +164,7 @@ namespace BlipUtils {
151164
// .. otherwise, check that the new particle
152165
// creation time is comparable to existing blip.
153166
// then calculate new energy-weighted position.
154-
} else if ( fabs(tblip.Time-pinfo.time) < 3 ) {
167+
} else if ( fabs(tblip.Time-pinfo.time) < 3) {
155168
float totE = tblip.Energy + pinfo.depEnergy;
156169
float w1 = tblip.Energy/totE;
157170
float w2 = pinfo.depEnergy/totE;
@@ -387,7 +400,7 @@ namespace BlipUtils {
387400
// use view with the maximal wire extent to calculate transverse (YZ) length
388401
if( hcs[i].NWires > newblip.MaxWireSpan ) {
389402
newblip.MaxWireSpan = hcs[i].NWires;
390-
newblip.dYZ = hcs[i].NWires * wirepitch;
403+
newblip.dYZ = hcs[i].NWires * wirepitch;
391404
}
392405

393406
for(size_t j=i+1; j<hcs.size(); j++){
@@ -401,9 +414,8 @@ namespace BlipUtils {
401414
intsec_p.SetY(hcs[i].IntersectLocations.find(hcs[j].ID)->second.Y());
402415
intsec_p.SetZ(hcs[i].IntersectLocations.find(hcs[j].ID)->second.Z());
403416
} else {
404-
std::vector<geo::WireID> i_wireids = wireReadoutGeom->Get().ChannelToWire((unsigned int)hcs[i].CenterChan);
405-
std::vector<geo::WireID> j_wireids = wireReadoutGeom->Get().ChannelToWire((unsigned int)hcs[j].CenterChan);
406-
417+
std::vector<geo::WireID> i_wireids = wireReadoutGeom->Get().ChannelToWire((unsigned int)hcs[i].CenterChan);
418+
std::vector<geo::WireID> j_wireids = wireReadoutGeom->Get().ChannelToWire((unsigned int)hcs[j].CenterChan);
407419
match3d = wireReadoutGeom->Get().WireIDsIntersect(i_wireids.at(0), j_wireids.at(0), intsec_p);
408420
}
409421

@@ -482,7 +494,7 @@ namespace BlipUtils {
482494
//====================================================================
483495
// Function to determine if a particle descended from another particle.
484496
// Allows option to break lineage at photons for contiguous parentage.
485-
bool IsAncestorOf(int particleID, int ancestorID, bool breakAtPhots = false){
497+
bool IsAncestorOf(int particleID, int ancestorID, bool breakAtPhots = false, bool breakAtNeutrons = false){
486498
art::ServiceHandle<cheat::ParticleInventoryService> pi_serv;
487499
const sim::ParticleList& plist = pi_serv->ParticleList();
488500
if( particleID == ancestorID ) return true;
@@ -496,6 +508,7 @@ namespace BlipUtils {
496508
simb::MCParticle pM = pi_serv->TrackIdToParticle(p.Mother());
497509
if ( pM.TrackId() == ancestorID ) { return true; }
498510
else if ( breakAtPhots == true && pM.PdgCode() == 22 ) { return false; }
511+
else if ( breakAtNeutrons && pM.PdgCode() == 2112 ) { return false; }
499512
else if ( pM.Process() == "primary" || pM.TrackId() == 1 ) { return false; }
500513
else if ( pM.Mother() == 0 ) { return false; }
501514
else { particleID = pM.TrackId(); }

sbndcode/BlipRecoSBND/Utils/BlipUtils.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
#include "sbnobj/SBND/Blip/BlipDataTypes.h"
3838
#include "TH1D.h"
3939

40-
41-
typedef std::vector<sim::IDE> SEDVec_t;
40+
typedef std::vector<art::Ptr<sim::SimEnergyDeposit>> SEDVec_t;
41+
typedef std::vector<sim::IDE> SIDEVec_t;
4242

4343
geo::View_t kViews[3]={geo::kU, geo::kV, geo::kW};
4444

@@ -48,7 +48,9 @@ namespace BlipUtils {
4848
// Functions related to blip reconstruction
4949
//###################################################
5050
//void InitializeDetProps();
51-
void FillParticleInfo(simb::MCParticle const&, blip::ParticleInfo&, SEDVec_t&, int plane=2);
51+
void FillParticleInfo(simb::MCParticle const&, blip::ParticleInfo&, SEDVec_t&, int plane);
52+
void FillParticleInfo(simb::MCParticle const&, blip::ParticleInfo&, SIDEVec_t&, int plane);
53+
void FillParticleInfo( const simb::MCParticle& part, blip::ParticleInfo& pinfo);
5254
//void CalcPartDrift(blip::ParticleInfo&, int);
5355
//void CalcTotalDep(float&,int&,float&, SEDVec_t&);
5456
void MakeTrueBlips(std::vector<blip::ParticleInfo>&, std::vector<blip::TrueBlip>&);
@@ -78,7 +80,7 @@ namespace BlipUtils {
7880
//bool G4IdToMCTruth( int const, art::Ptr<simb::MCTruth>&);
7981
double PathLength(const simb::MCParticle&, geo::Point_t&, geo::Point_t&);
8082
double PathLength(const simb::MCParticle&);
81-
bool IsAncestorOf(int, int, bool);
83+
bool IsAncestorOf(int, int, bool, bool);
8284
double DistToBoundary(const recob::Track::Point_t&);
8385
double DistToLine(TVector3&, TVector3&, TVector3&);
8486
double DistToLine2D(TVector2&, TVector2&, TVector2&);

sbndcode/BlipRecoSBND/blipreco_configs.fcl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ BEGIN_PROLOG
66
sbnd_blipalg:
77
{
88
HitProducer: "specialblipgaushit" #// input recob::Hits to use for blip reconstruction
9+
HitTruthMatcher: "blipgaushitTruthMatch" #// Truth info corresponding to the above hit collection
910
TrkProducer: "blipPandoraTrackCopy" #// input recob::Tracks to use for blip reconstruction
1011
GeantProducer: "largeant" #// input sim::MCParticles (getting true particle info)
11-
SimEDepProducer: "ionandscint" #// input sim::SimEnergyDeposits (getting energy/electrons deposited)
12+
SimEDepProducer: "ionandscint:priorSCE:G4" #// input sim::SimEnergyDeposits (getting energy/electrons deposited)
1213
SimChanProducer: "simtpc2d:simpleSC:DetSim" #// label for sim::SimChannels (getting drifted charge; optional)
1314
MaxHitTrkLength: 5.0 #// hits in trks > this length will be vetoed [cm]
1415
DoHitFiltering: false #// filter hits based on amp, width, RMS

sbndcode/Calibration/TPCCalorimetry/NormalizeYZ_tool.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// Author : Shweta Yadav (sxy1439@mavs.uta.edu)
2+
// University of Texas at Arlington
13

24
// Framework Includes
35
#include "art/Framework/Core/EDProducer.h"

sbndcode/Calibration/TPCCalorimetry/normtools_sbnd.fcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ driftnorm_sql: {
1111

1212
yznorm_hist_data: {
1313
tool_type: NormalizeYZ
14-
FileName: "YZmaps/yz_correction_map_data1e20.root"
14+
FileName: "YZmaps/yz_data2025_v10_14_02.root"
1515
Verbose: false
1616
}
1717

1818
yznorm_hist_mc: {
1919
tool_type: NormalizeYZ
20-
FileName: "YZmaps/yz_correction_map_mcp2025b5e18.root"
20+
FileName: "YZmaps/yz_mc2025_v10_14_02.root"
2121
Verbose: false
2222
}
2323

0 commit comments

Comments
 (0)