LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
PhotonBackTrackerService.cc
Go to the documentation of this file.
1 //
3 // \file PhotonBackTrackerServiceService_service.cc
4 // \brief This is the LArSoft facing implimentation of the PhotonBackTracker.
5 // \author jason.stock@mines.sdsmt.edu
6 //
7 //
9 
11 
12 // Framework includes
15 #include "fhiclcpp/ParameterSet.h"
17 
18 // LArSoft includes
19 #include "larcore/CoreUtils/ServiceUtil.h" // for provid...
20 #include "larcore/Geometry/WireReadout.h" // for Geometry
21 #include "larsim/MCCheater/ParticleInventoryService.h" // for Partic...
22 
23 namespace cheat {
24 
25  //----------------------------------------------------------------------
28  : PhotonBackTracker(pSet.get<fhicl::ParameterSet>("PhotonBackTracker"),
30  &art::ServiceHandle<geo::WireReadout const>()->Get())
31  {
33  }
34 
35  //----------------------------------------------------------------------
38  : PhotonBackTracker(config.PhotonBackTrackerTable(),
40  &art::ServiceHandle<geo::WireReadout const>()->Get())
41  {
43  }
44 
45  //----------------------------------------------------------------------
46  // Event Rebuild Implementation: This section contains the implementation
47  // of all Prep templates from the service provider.
48 
49  //----------------------------------------------------------------------
51  {
53  }
54 
55  //----------------------------------------------------------------------
57  {
59  if (!priv_CanRun(evt)) { return; }
60  priv_PrepOpDetBTRs(evt);
62  }
63 
64  //----------------------------------------------------------------------
66  {
67  return PhotonBackTracker::CanRun(evt);
68  }
69 
70  //----------------------------------------------------------------------
72  {
73  throw cet::exception("PhotonBackTrackerService")
74  << "The called Prep Fucntion failed. This is most likely due "
75  << "to a PhotonBackTracker fucntion being used on a file that "
76  << "is real data.";
77  }
78 
79  //----------------------------------------------------------------------
81  {
82  if (!priv_CanRun(evt)) { priv_PrepFailed(); }
83  if (priv_OpDetBTRsReady()) { return; }
84  try {
86  }
87  catch (cet::exception const&) {
88  //This needs to go. Make it specific if there is a really an exception we would like to catch.
89  mf::LogWarning("PhotonBackTrackerService")
90  << "Rebuild failed to get the OpDetBTRs. This is expected when "
91  << "running on a generation or simulation step.";
92  }
93  }
94 
96  {
97  if (!priv_CanRun(evt)) { priv_PrepFailed(); }
98  if (priv_OpFlashToOpHitsReady()) { return; }
99  try {
101  }
102  catch (cet::exception const&) {
103  // This needs to go. Make it specific if there is a really an exception we would like to catch.
104  mf::LogWarning("PhotonBackTrackerService")
105  << "Rebuild failed to get the OpFlashToOpHits. This is expected when "
106  << "running on a generation or simulation stage.";
107  }
108  }
109 
110  //----------------------------------------------------------------------
111  // BackTracking Function Implementation: This section contains the implimentation of all
112  // PhotonBackTrackerService end user functionality
113 
114  //----------------------------------------------------------------------
115  const std::vector<art::Ptr<sim::OpDetBacktrackerRecord>>& PhotonBackTrackerService::OpDetBTRs()
116  {
118  }
119 
120  //----------------------------------------------------------------------
122  {
124  }
125 
126  //----------------------------------------------------------------------
127  std::vector<const sim::SDP*> PhotonBackTrackerService::TrackIdToSimSDPs_Ps(int const id)
128  {
130  }
131 
132  //----------------------------------------------------------------------
134  {
135  return PhotonBackTracker::FindOpDetBTR(opDetNum);
136  }
137 
138  //----------------------------------------------------------------------
139  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpDetToTrackSDPs(
140  int const OpDetNum,
141  double const opHit_start_time,
142  double const opHit_end_time)
143  {
144  return PhotonBackTracker::OpDetToTrackSDPs(OpDetNum, opHit_start_time, opHit_end_time);
145  }
146 
147  //----------------------------------------------------------------------
148  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToTrackSDPs(
149  art::Ptr<recob::OpHit> const& opHit_P)
150  {
151  return PhotonBackTracker::OpHitToTrackSDPs(opHit_P);
152  }
153 
154  //----------------------------------------------------------------------
155  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToTrackSDPs(recob::OpHit const& opHit)
156  {
158  }
159 
160  //----------------------------------------------------------------------
162  {
164  }
165 
166  //----------------------------------------------------------------------
168  {
169  return PhotonBackTracker::OpHitToTrackIds(opHit_P);
170  }
171 
172  //----------------------------------------------------------------------
173  //----------------------------------------------------------------------
175  {
177  }
178 
179  //----------------------------------------------------------------------
181  art::Ptr<recob::OpHit> const& opHit_P)
182  {
184  }
185 
186  //----------------------------------------------------------------------
188  art::Ptr<recob::OpHit> const& opHit_P)
189  {
191  }
192 
193  //----------------------------------------------------------------------
195  recob::OpHit const& opHit)
196  {
198  }
199 
200  //----------------------------------------------------------------------
201  std::vector<art::Ptr<recob::OpHit>> PhotonBackTrackerService::TrackIdToOpHits_Ps(
202  int const tkId,
203  std::vector<art::Ptr<recob::OpHit>> const& hitsIn)
204  {
205  return PhotonBackTracker::TrackIdToOpHits_Ps(tkId, hitsIn);
206  }
207 
208  //----------------------------------------------------------------------
209  std::vector<std::vector<art::Ptr<recob::OpHit>>> PhotonBackTrackerService::TrackIdsToOpHits_Ps(
210  std::vector<int> const& tkIds,
211  std::vector<art::Ptr<recob::OpHit>> const& hitsIn)
212  {
213  return PhotonBackTracker::TrackIdsToOpHits_Ps(tkIds, hitsIn);
214  }
215 
216  //----------------------------------------------------------------------
217  std::vector<const sim::SDP*> PhotonBackTrackerService::OpHitToSimSDPs_Ps(
218  recob::OpHit const& opHit)
219  {
221  }
222 
223  //----------------------------------------------------------------------
224  std::vector<const sim::SDP*> PhotonBackTrackerService::OpHitToSimSDPs_Ps(
225  art::Ptr<recob::OpHit> const& opHit_P)
226  {
227  return PhotonBackTracker::OpHitToSimSDPs_Ps(opHit_P);
228  }
229 
230  //----------------------------------------------------------------------
231  std::unordered_set<const sim::SDP*> PhotonBackTrackerService::OpHitToEveSimSDPs_Ps(
232  recob::OpHit const& opHit)
233  {
235  }
236 
237  //----------------------------------------------------------------------
238  std::unordered_set<const sim::SDP*> PhotonBackTrackerService::OpHitToEveSimSDPs_Ps(
239  art::Ptr<recob::OpHit>& opHit_P)
240  {
242  }
243 
244  //----------------------------------------------------------------------
246  std::vector<sim::SDP> const& sdps) const&
247  {
248  return PhotonBackTracker::SimSDPsToXYZ(sdps);
249  }
250 
251  //----------------------------------------------------------------------
253  std::vector<const sim::SDP*> const& sdps_Ps)
254  {
255  return PhotonBackTracker::SimSDPsToXYZ(sdps_Ps);
256  }
257 
258  //----------------------------------------------------------------------
259  std::vector<double> PhotonBackTrackerService::OpHitToXYZ(recob::OpHit const& opHit)
260  {
261  return PhotonBackTracker::OpHitToXYZ(opHit);
262  }
263 
264  //----------------------------------------------------------------------
266  {
267  return PhotonBackTracker::OpHitToXYZ(opHit_P);
268  }
269 
270  //----------------------------------------------------------------------
272  {
274  }
275 
276  //----------------------------------------------------------------------
278  {
280  }
281 
282  //----------------------------------------------------------------------
284  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps)
285  {
286  return PhotonBackTracker::GetSetOfEveIds(opHits_Ps);
287  }
288  //----------------------------------------------------------------------
289  std::set<int> PhotonBackTrackerService::GetSetOfEveIds(std::vector<recob::OpHit> const& opHits)
290  {
291  return PhotonBackTracker::GetSetOfEveIds(opHits);
292  }
293 
294  //----------------------------------------------------------------------
296  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps)
297  {
298  return PhotonBackTracker::GetSetOfTrackIds(opHits_Ps);
299  }
300  //----------------------------------------------------------------------
301  std::set<int> PhotonBackTrackerService::GetSetOfTrackIds(std::vector<recob::OpHit> const& opHits)
302  {
304  }
305 
306  //----------------------------------------------------------------------
308  std::set<int> const& tkIds,
309  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps)
310  {
311  return PhotonBackTracker::OpHitCollectionPurity(tkIds, opHits_Ps);
312  }
313 
314  //----------------------------------------------------------------------
316  std::set<int> const& tkIds,
317  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps)
318  {
319  return PhotonBackTracker::OpHitLightCollectionPurity(tkIds, opHits_Ps);
320  }
321 
322  //----------------------------------------------------------------------
324  std::set<int> const& tkIds,
325  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps,
326  std::vector<art::Ptr<recob::OpHit>> const& opHitsIn_Ps)
327  {
328  return PhotonBackTracker::OpHitCollectionEfficiency(tkIds, opHits_Ps, opHitsIn_Ps);
329  }
330 
331  //----------------------------------------------------------------------
333  std::set<int> const& tkIds,
334  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps,
335  std::vector<art::Ptr<recob::OpHit>> const& opHitsIn_Ps)
336  {
337  return PhotonBackTracker::OpHitLightCollectionEfficiency(tkIds, opHits_Ps, opHitsIn_Ps);
338  }
339 
340  //----------------------------------------------------------------------
342  {
343  return PhotonBackTracker::OpFlashToTrackIds(flash_P);
344  }
345 
346  //----------------------------------------------------------------------
347  std::vector<art::Ptr<recob::OpHit>> PhotonBackTrackerService::OpFlashToOpHits_Ps(
348  art::Ptr<recob::OpFlash>& flash_P)
349  {
351  }
352 
353  //----------------------------------------------------------------------
355  {
356  return PhotonBackTracker::OpFlashToXYZ(flash_P);
357  }
358 
359 } // namespace
std::vector< int > OpHitToEveTrackIds(recob::OpHit const &opHit)
std::vector< int > OpHitToTrackIds(recob::OpHit const &opHit)
double OpHitCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits_Ps)
Utilities related to art service access.
double OpHitLightCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits)
std::vector< double > OpHitToXYZ(art::Ptr< recob::OpHit > const &hit)
std::vector< double > OpFlashToXYZ(art::Ptr< recob::OpFlash > &flash_P) const
std::vector< art::Ptr< recob::OpHit > > OpFlashToOpHits_Ps(art::Ptr< recob::OpFlash > &flash_P)
std::vector< sim::TrackSDP > OpDetToTrackSDPs(int OpDetNum, double opHit_start_time, double opHit_end_time) const
bool CanRun(Evt const &evt)
std::vector< const sim::SDP * > TrackIdToSimSDPs_Ps(int id) const
T::provider_type const * providerFrom()
Returns a constant pointer to the provider of specified service.
Definition: ServiceUtil.h:75
art::Ptr< sim::OpDetBacktrackerRecord > FindOpDetBTR(int opDetNum) const
std::vector< double > OpFlashToXYZ(art::Ptr< recob::OpFlash > &flash_P)
std::vector< double > SimSDPsToXYZ(std::vector< sim::SDP > const &sdps)
void PrepOpFlashToOpHits(Evt const &evt)
bool priv_CanRun(art::Event const &evt)
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
Definition: AddMC.C:8
std::vector< int > OpHitToEveTrackIds(recob::OpHit const &opHit)
double OpHitLightCollectionEfficiency(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits, std::vector< art::Ptr< recob::OpHit >> const &opHitsIn)
std::set< int > OpFlashToTrackIds(art::Ptr< recob::OpFlash > &flash_P) const
art::Ptr< sim::OpDetBacktrackerRecord > FindOpDetBTR(int opDetNum)
std::vector< const sim::SDP * > TrackIdToSimSDPs_Ps(int id)
std::vector< std::vector< art::Ptr< recob::OpHit > > > TrackIdsToOpHits_Ps(std::vector< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
std::vector< double > SimSDPsToXYZ(std::vector< sim::SDP > const &sdps) const &
double OpHitLightCollectionEfficiency(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits_Ps, std::vector< art::Ptr< recob::OpHit >> const &opHitsIn_Ps)
void priv_PrepOpDetBTRs(art::Event const &evt)
std::set< int > OpFlashToTrackIds(art::Ptr< recob::OpFlash > &flash_P) const
std::vector< art::Ptr< sim::OpDetBacktrackerRecord > > const & OpDetBTRs() const
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
Definition: DumpUtils.h:289
std::vector< const sim::SDP * > OpHitToSimSDPs_Ps(recob::OpHit const &opHit) const
std::vector< art::Ptr< sim::OpDetBacktrackerRecord > > const & OpDetBTRs()
std::vector< art::Ptr< recob::OpHit > > TrackIdToOpHits_Ps(int tkId, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
void PrepOpDetBTRs(Evt const &evt)
parameter set interface
void Rebuild(art::Event const &evt)
std::vector< sim::TrackSDP > OpHitToTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P)
std::set< int > GetSetOfTrackIds() const
double OpHitLightCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits_Ps)
std::vector< const sim::SDP * > OpHitToSimSDPs_Ps(recob::OpHit const &opHit)
GlobalSignal< detail::SignalResponseType::FIFO, void(Event const &, ScheduleContext)> sPreProcessEvent
std::vector< sim::TrackSDP > OpDetToTrackSDPs(int OpDetNum, double opHit_start_time, double opHit_end_time)
std::vector< sim::TrackSDP > OpHitToTrackSDPs(art::Ptr< recob::OpHit > const &hit)
decltype(auto) get(T &&obj)
ADL-aware version of std::to_string.
Definition: StdUtils.h:120
code to link reconstructed objects back to the MC truth information
Definition: BackTracker.cc:24
LArSoft-specific namespace.
PhotonBackTrackerService(fhicl::ParameterSet const &pSet, art::ActivityRegistry &reg)
std::vector< int > OpHitToTrackIds(recob::OpHit const &opHit) const
double OpHitCollectionEfficiency(std::set< int > trackIDs, std::vector< art::Ptr< recob::OpHit >> const &hits, std::vector< art::Ptr< recob::OpHit >> const &allhits)
std::vector< std::vector< art::Ptr< recob::OpHit > > > TrackIdsToOpHits_Ps(std::vector< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &hitsIn) const
static ScheduleContext invalid()
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
double OpHitCollectionPurity(std::set< int > trackIDs, std::vector< art::Ptr< recob::OpHit >> const &hits)
Definition: MVAAlg.h:12
std::unordered_set< const sim::SDP * > OpHitToEveSimSDPs_Ps(recob::OpHit const &opHit)
void priv_PrepEvent(art::Event const &evt, art::ScheduleContext)
std::set< int > GetSetOfEveIds() const
std::unordered_set< const sim::SDP * > OpHitToEveSimSDPs_Ps(recob::OpHit const &opHit)
TCEvent evt
Definition: DataStructs.cxx:8
std::vector< sim::TrackSDP > OpHitToEveTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P)
std::vector< art::Ptr< recob::OpHit > > OpFlashToOpHits_Ps(art::Ptr< recob::OpFlash > &flash_P) const
ROOT libraries.
std::vector< art::Ptr< recob::OpHit > > TrackIdToOpHits_Ps(int tkId, std::vector< art::Ptr< recob::OpHit >> const &hitsIn) const
std::vector< sim::TrackSDP > OpHitToEveTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P) const
std::vector< double > OpHitToXYZ(recob::OpHit const &opHit)
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void priv_PrepOpFlashToOpHits(art::Event const &evt)
double OpHitCollectionEfficiency(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits_Ps, std::vector< art::Ptr< recob::OpHit >> const &opHitsIn_Ps)