1212
1313namespace caf
1414{
15- const float ng_filter_cut = 0.5 ;
16-
1715 // ......................................................................
1816 bool SelectSlice (const caf::SRSlice &slice, bool cut_clear_cosmic) {
1917 return (!slice.is_clear_cosmic || !cut_clear_cosmic) // No clear cosmics
@@ -588,6 +586,7 @@ namespace caf
588586 const float vtx_tick[3 ],
589587 const float vtx_wire_dist,
590588 const float vtx_tick_dist,
589+ const float filter_cut,
591590 caf::SRSlice &slice)
592591 {
593592
@@ -596,9 +595,10 @@ namespace caf
596595 unsigned int npass = 0 ;
597596
598597 for ( unsigned int i = 0 ; i < nHits; i++ ) {
599- if (ngFilterResult.at (i)->at (0 )>=ng_filter_cut) npass++;
598+ if (ngFilterResult.at (i).isNull ()) continue ;
599+ if (ngFilterResult.at (i)->at (0 ) >= filter_cut) npass++;
600600 }
601- slice.ng_filt_pass_frac = float (npass)/ nHits;
601+ slice.ng_filt_pass_frac = (nHits > 0 ) ? float (npass) / nHits : 0 . f ;
602602
603603 // look-up between hits and PFPs
604604 std::set<art::Ptr<recob::Hit>> pfpHitSet;
@@ -619,6 +619,8 @@ namespace caf
619619 const recob::Hit& hit = *inputHits.at (i);
620620 if (hit.WireID ().Plane != plane) continue ;
621621
622+ if (ngSemanticResult.at (i).isNull ()) continue ;
623+
622624 auto const & sem = *ngSemanticResult.at (i);
623625 std::vector<float > semVec;
624626 for (size_t k = 0 ; k < sem.size (); ++k) semVec.push_back (sem.at (k));
@@ -1081,24 +1083,31 @@ namespace caf
10811083 void FillPFPNuGraph (const std::vector<art::Ptr<recob::Hit>> &pfpHits,
10821084 const std::vector<art::Ptr<anab::FeatureVector<1 >>> &ngFilterResult,
10831085 const std::vector<art::Ptr<anab::FeatureVector<5 >>> &ngSemanticResult,
1086+ const float filter_cut,
10841087 caf::SRPFP& srpfp,
10851088 bool allowEmpty)
10861089 {
1087- if (pfpHits.size ()> 0 ) {
1088- std::vector<float > ng2sempfpcounts (5 ,0 );
1090+ if (pfpHits.size () > 0 ) {
1091+ std::vector<float > ng2sempfpcounts (5 , 0 );
10891092 size_t ng2bkgpfpcount = 0 ;
1093+
10901094 for (size_t pos = 0 ; pos < pfpHits.size (); pos++) {
1095+
1096+ if (ngFilterResult.at (pos).isNull ()) continue ;
1097+
10911098 auto const & bkgscore = ngFilterResult.at (pos);
1092- if (bkgscore->at (0 )<ng_filter_cut ) {
1099+ if (bkgscore->at (0 ) < filter_cut ) {
10931100 ng2bkgpfpcount++;
10941101 } else {
1102+ if (ngSemanticResult.at (pos).isNull ()) continue ;
10951103 auto const & scores = ngSemanticResult.at (pos);
10961104 std::vector<float > ng2semscores;
10971105 for (size_t i=0 ;i<scores->size ();i++) ng2semscores.push_back (scores->at (i));
10981106 size_t sem_label = std::distance (ng2semscores.begin (), std::max_element (ng2semscores.begin (), ng2semscores.end ()));// arg_max(ng2semscores);
10991107 ng2sempfpcounts[sem_label]++;
11001108 }
11011109 }
1110+
11021111 srpfp.ngscore .sem_cat = SRNuGraphScore::NuGraphCategory (std::distance (ng2sempfpcounts.begin (), std::max_element (ng2sempfpcounts.begin (), ng2sempfpcounts.end ())));// arg_max(ng2sempfpcounts);
11031112 size_t nonBkgHits = (pfpHits.size () > ng2bkgpfpcount ? pfpHits.size ()-ng2bkgpfpcount : 0 );
11041113 srpfp.ngscore .mip_frac = (nonBkgHits>0 ? float (ng2sempfpcounts[0 ])/nonBkgHits : -1 .);
@@ -1116,7 +1125,6 @@ namespace caf
11161125 srpfp.ngscore .dif_frac = -1 .;
11171126 srpfp.ngscore .bkg_frac = -1 .;
11181127 }
1119-
11201128 }
11211129
11221130 void FillHitVars (const recob::Hit& hit,
0 commit comments