@@ -352,6 +352,10 @@ class CAFMaker : public art::EDProducer {
352352 art::FindOneP<T> FindOnePStrict (const U& from, const art::Event& evt,
353353 const art::InputTag& label) const ;
354354
355+ template <class T , class U >
356+ art::FindOneP<T> FindOnePStrictSingle (const U& from, const art::Event& evt,
357+ const art::InputTag& label) const ;
358+
355359 template <class T , class D , class U >
356360 art::FindOneP<T, D> FindOnePDStrict (const U& from,
357361 const art::Event& evt,
@@ -1299,6 +1303,27 @@ art::FindOneP<T> CAFMaker::FindOnePStrict(const U& from,
12991303 return ret;
13001304}
13011305
1306+ // ......................................................................
1307+ template <class T , class U >
1308+ art::FindOneP<T> CAFMaker::FindOnePStrictSingle (const U& from,
1309+ const art::Event& evt,
1310+ const art::InputTag& tag) const {
1311+ std::vector<U> vec = { from };
1312+
1313+ art::FindOneP<T> ret (vec, evt, tag);
1314+
1315+ if (!tag.label ().empty () && !ret.isValid () && fParams .StrictMode ()) {
1316+ std::cout << " CAFMaker: No Assn from '"
1317+ << cet::demangle_symbol (typeid (from).name ()) << " ' to '"
1318+ << cet::demangle_symbol (typeid (T).name ())
1319+ << " ' found under label '" << tag << " '. "
1320+ << " Set 'StrictMode: false' to continue anyway." << std::endl;
1321+ abort ();
1322+ }
1323+
1324+ return ret;
1325+ }
1326+
13021327// ......................................................................
13031328template <class T , class D , class U >
13041329art::FindOneP<T, D> CAFMaker::FindOnePDStrict (const U& from,
@@ -1791,12 +1816,15 @@ void CAFMaker::produce(art::Event& evt) noexcept {
17911816 {
17921817 art::Handle<std::vector<sbnd::crt::CRTSpacePoint>> crtspacepoints_handle;
17931818 GetByLabelStrict (evt, fParams .CRTSpacePointLabel (), crtspacepoints_handle);
1819+ art::FindOneP<sbnd::crt::CRTCluster> foCRTCluster =
1820+ FindOnePStrict<sbnd::crt::CRTCluster>(crtspacepoints_handle, evt, fParams .CRTSpacePointLabel ());
17941821
17951822 if (crtspacepoints_handle.isValid ()) {
17961823 const std::vector<sbnd::crt::CRTSpacePoint> &crtspacepoints = *crtspacepoints_handle;
17971824 for (unsigned i = 0 ; i < crtspacepoints.size (); i++) {
17981825 srcrtspacepoints.emplace_back ();
1799- FillCRTSpacePoint (crtspacepoints[i], srcrtspacepoints.back ());
1826+ const art::Ptr<sbnd::crt::CRTCluster> crtcluster = foCRTCluster.at (i);
1827+ FillCRTSpacePoint (crtspacepoints[i], crtcluster, srcrtspacepoints.back ());
18001828 }
18011829 }
18021830
@@ -2239,6 +2267,9 @@ void CAFMaker::produce(art::Event& evt) noexcept {
22392267 FindOnePDStrict<sbnd::crt::CRTSpacePoint, anab::T0>(slcTracks, evt,
22402268 fParams .CRTSpacePointMatchLabel () + slice_tag_suff);
22412269
2270+ art::Handle<std::vector<sbnd::crt::CRTSpacePoint>> crtspacepoints_handle;
2271+ GetByLabelStrict (evt, fParams .CRTSpacePointLabel (), crtspacepoints_handle);
2272+
22422273 art::FindOneP<sbnd::crt::CRTTrack, anab::T0> foSBNDCRTTrackMatch =
22432274 FindOnePDStrict<sbnd::crt::CRTTrack, anab::T0>(slcTracks, evt,
22442275 fParams .SBNDCRTTrackMatchLabel () + slice_tag_suff);
@@ -2515,8 +2546,12 @@ void CAFMaker::produce(art::Event& evt) noexcept {
25152546 {
25162547 const art::Ptr<sbnd::crt::CRTSpacePoint> crtspacepoint = foCRTSpacePointMatch.at (iPart);
25172548
2549+ art::FindOneP<sbnd::crt::CRTCluster> foCRTCluster =
2550+ FindOnePStrictSingle<sbnd::crt::CRTCluster>(crtspacepoint, evt, fParams .CRTSpacePointLabel ());
2551+ const art::Ptr<sbnd::crt::CRTCluster> crtcluster = foCRTCluster.at (0 );
2552+
25182553 if (crtspacepoint.isNonnull ())
2519- FillTrackCRTSpacePoint (foCRTSpacePointMatch.data (iPart).ref (), crtspacepoint, trk);
2554+ FillTrackCRTSpacePoint (foCRTSpacePointMatch.data (iPart).ref (), crtspacepoint, crtcluster, trk);
25202555 }
25212556 if (foSBNDCRTTrackMatch.isValid () && fDet == kSBND )
25222557 {
0 commit comments