Skip to content

Commit e8db3c5

Browse files
committed
Fill new fields for SBND CRT
1 parent 1136b4a commit e8db3c5

3 files changed

Lines changed: 48 additions & 3 deletions

File tree

sbncode/CAFMaker/CAFMaker_module.cc

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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
//......................................................................
13031328
template <class T, class D, class U>
13041329
art::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
{

sbncode/CAFMaker/FillReco.cxx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ namespace caf
164164
}
165165

166166
void FillCRTSpacePoint(const sbnd::crt::CRTSpacePoint &spacepoint,
167+
const art::Ptr<sbnd::crt::CRTCluster> &cluster,
167168
caf::SRCRTSpacePoint &srspacepoint,
168169
bool allowEmpty)
169170
{
@@ -173,6 +174,8 @@ namespace caf
173174
srspacepoint.time = spacepoint.Ts0();
174175
srspacepoint.time_err = spacepoint.Ts0Err();
175176
srspacepoint.complete = spacepoint.Complete();
177+
srspacepoint.nhits = cluster->NHits();
178+
srspacepoint.tagger = cluster->Tagger();
176179
}
177180

178181
void FillSBNDCRTTrack(const sbnd::crt::CRTTrack &track,
@@ -186,6 +189,9 @@ namespace caf
186189
srsbndcrttrack.time_err = track.Ts0Err();
187190
srsbndcrttrack.pe = track.PE();
188191
srsbndcrttrack.tof = track.ToF();
192+
193+
for(auto const& tagger : track.Taggers())
194+
srsbndcrttrack.taggers.push_back(tagger);
189195
}
190196

191197
void FillSBNDCRTVeto(const sbnd::crt::CRTVeto &veto,
@@ -811,11 +817,12 @@ namespace caf
811817

812818
void FillTrackCRTSpacePoint(const anab::T0 &t0match,
813819
const art::Ptr<sbnd::crt::CRTSpacePoint> &spacepointmatch,
820+
const art::Ptr<sbnd::crt::CRTCluster> &cluster,
814821
caf::SRTrack &srtrack,
815822
bool allowEmpty)
816823
{
817824
srtrack.crtspacepoint.score = t0match.fTriggerConfidence;
818-
FillCRTSpacePoint(*spacepointmatch, srtrack.crtspacepoint.spacepoint);
825+
FillCRTSpacePoint(*spacepointmatch, cluster, srtrack.crtspacepoint.spacepoint);
819826
}
820827

821828
void FillTrackSBNDCRTTrack(const anab::T0 &t0match,

sbncode/CAFMaker/FillReco.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include "sbnobj/Common/CRT/CRTHit.hh"
4242
#include "sbnobj/Common/CRT/CRTTrack.hh"
4343
#include "sbnobj/SBND/CRT/CRTSpacePoint.hh"
44+
#include "sbnobj/SBND/CRT/CRTCluster.hh"
4445
#include "sbnobj/SBND/CRT/CRTTrack.hh"
4546
#include "sbnobj/SBND/CRT/CRTVeto.hh"
4647
#include "sbnobj/Common/CRT/CRTPMTMatching.hh"
@@ -206,6 +207,7 @@ namespace caf
206207

207208
void FillTrackCRTSpacePoint(const anab::T0 &t0match,
208209
const art::Ptr<sbnd::crt::CRTSpacePoint> &spacepointmatch,
210+
const art::Ptr<sbnd::crt::CRTCluster> &cluster,
209211
caf::SRTrack &srtrack,
210212
bool allowEmpty = false);
211213

@@ -277,6 +279,7 @@ namespace caf
277279
bool allowEmpty = false);
278280

279281
void FillCRTSpacePoint(const sbnd::crt::CRTSpacePoint &spacepoint,
282+
const art::Ptr<sbnd::crt::CRTCluster> &cluster,
280283
caf::SRCRTSpacePoint &srspacepoint,
281284
bool allowEmpty = false);
282285

0 commit comments

Comments
 (0)