PhotonBackTrackerService_service.cc
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 //
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 //
8 ////////////////////////////////////////////////////////////////////////
9 
11 
12 // Framework includes
15 
16 // LArSoft includes
17 #include "larcore/CoreUtils/ServiceUtil.h" // for provid...
18 #include "larcore/Geometry/Geometry.h" // for Geometry
20 #include "lardataobj/Simulation/OpDetBacktrackerRecord.h" // for SDP (p...
21 #include "larsim/MCCheater/ParticleInventoryService.h" // for Partic...
22 #include "larsim/MCCheater/PhotonBackTracker.h" // for Photon...
23 
24 namespace cheat{
25 
26  //----------------------------------------------------------------------
29  pSet.get<fhicl::ParameterSet>("PhotonBackTracker"),
31  lar::providerFrom<geo::Geometry>()//,
32 // lar::providerFrom<detinfo::DetectorClocksService>()
33  )
34  {
36  }
37 
38  //----------------------------------------------------------------------
41  config.PhotonBackTrackerTable(),
43  lar::providerFrom<geo::Geometry>()//,
44 // lar::providerFrom<detinfo::DetectorClocksService>()
45  )
46  {
48  }
49 
50  ////////////////////////////////////////////////
51  //////////Event Rebuild Implimentation//////////
52  /// This section contains the implimentation ///
53  /// of all Prep templates from the service ///
54  /// provider. ///
55  ////////////////////////////////////////////////
56 
57 
58  //----------------------------------------------------------------------
60  {
62  }
63 
64  //----------------------------------------------------------------------
66  {
68  if( ! this->priv_CanRun(evt) ){ return; }
69  this->priv_PrepOpDetBTRs(evt);
70  this->priv_PrepOpFlashToOpHits(evt);
71  }
72 
73  //----------------------------------------------------------------------
75  return PhotonBackTracker::CanRun(evt);
76  }
77 
78  //----------------------------------------------------------------------
80  throw cet::exception("PhotonBackTrackerService")
81  <<"The called Prep Fucntion failed. This is most likely due "
82  <<"to a PhotonBackTracker fucntion being used on a file that "
83  <<"is real data.";
84  }
85 
86  //----------------------------------------------------------------------
88  if( !this->priv_CanRun(evt) ) {this->priv_PrepFailed(); }
89  if( this->priv_OpDetBTRsReady()){ return; }
91  //catch(...){ mf::LogWarning("PhotonBackTrackerService")//This needs to go. Catch all should not be used.
92  catch(cet::exception const&){//This needs to go. Make it specific if there is a really an exception we would like to catch.
93  mf::LogWarning("PhotonBackTrackerService")
94  <<"Rebuild failed to get the OpDetBTRs. This is expected when "
95  <<"running on a generation or simulation step.";}
96  }
97 
99  if( !this->priv_CanRun(evt) ) {this->priv_PrepFailed();}
100  if( this->priv_OpFlashToOpHitsReady()){ return; }
102  //catch(...){ //This needs to go. Catch all should not be used.
103  catch(cet::exception const&){//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  // End of the Event Rebuild Implimentation //
112  /////////////////////////////////////////////
113 
114  ///////////////////////////////////////////////
115  /////BackTracking Functions Implimentation/////
116  // This section contains the implimentation //
117  // of all PhotonBackTrackerService end user //
118  // functionality //
119  ///////////////////////////////////////////////
120 
121 
122  //----------------------------------------------------------------------
123  const std::vector< art::Ptr< sim::OpDetBacktrackerRecord >>& PhotonBackTrackerService::OpDetBTRs()
124  {
126  }
127 
128  //----------------------------------------------------------------------
130 
131  //----------------------------------------------------------------------
132  const std::vector< const sim::SDP* > PhotonBackTrackerService::TrackIdToSimSDPs_Ps(int const& id)
133  {
135  }
136 
137  //----------------------------------------------------------------------
138  const std::vector< const sim::SDP* > PhotonBackTrackerService::TrackIdToSimSDPs_Ps(int const& id, geo::View_t const& view )
139  {
141  }
142 
143  //----------------------------------------------------------------------
145  {
146  return PhotonBackTracker::FindOpDetBTR(opDetNum);
147  }
148 
149  //----------------------------------------------------------------------
150  const std::vector < sim::TrackSDP > PhotonBackTrackerService::OpDetToTrackSDPs( int const& OpDetNum,
151  double const& opHit_start_time,
152  double const& opHit_end_time)
153  {
154  return PhotonBackTracker::OpDetToTrackSDPs(OpDetNum, opHit_start_time, opHit_end_time);
155  }
156 
157  //----------------------------------------------------------------------
158  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToTrackSDPs(art::Ptr<recob::OpHit> const& opHit_P )
159  {
160  return PhotonBackTracker::OpHitToTrackSDPs(opHit_P );
161  }
162 
163  //----------------------------------------------------------------------
164  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToTrackSDPs(recob::OpHit const& opHit)
165  {
167  }
168 
169  //----------------------------------------------------------------------
170  const std::vector < int > PhotonBackTrackerService::OpHitToTrackIds(recob::OpHit const& opHit) {
172  }
173 
174  //----------------------------------------------------------------------
175  const std::vector < int > PhotonBackTrackerService::OpHitToTrackIds(art::Ptr<recob::OpHit> const& opHit_P) {
176  return PhotonBackTracker::OpHitToTrackIds(opHit_P);
177  }
178 
179  //----------------------------------------------------------------------
180  //----------------------------------------------------------------------
181  const std::vector < int > PhotonBackTrackerService::OpHitToEveTrackIds(recob::OpHit const& opHit) {
183  }
184 
185  //----------------------------------------------------------------------
186  const std::vector < int > PhotonBackTrackerService::OpHitToEveTrackIds(art::Ptr<recob::OpHit> const& opHit_P) {
188  }
189 
190  //----------------------------------------------------------------------
191  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToEveTrackSDPs(art::Ptr<recob::OpHit> const& opHit_P )
192  {
194  }
195 
196  //----------------------------------------------------------------------
197  std::vector<sim::TrackSDP> PhotonBackTrackerService::OpHitToEveTrackSDPs(recob::OpHit const& opHit)
198  {
200  }
201 
202  //----------------------------------------------------------------------
203  const std::vector<art::Ptr<recob::OpHit>> PhotonBackTrackerService::TrackIdToOpHits_Ps(int const& tkId, std::vector<art::Ptr<recob::OpHit>> const& hitsIn)
204  {
205  return PhotonBackTracker::TrackIdToOpHits_Ps(tkId, hitsIn);
206  }
207 
208  //----------------------------------------------------------------------
209  const std::vector<std::vector<art::Ptr<recob::OpHit>>> PhotonBackTrackerService::TrackIdsToOpHits_Ps(std::vector<int> const& tkIds, std::vector<art::Ptr<recob::OpHit>> const& hitsIn)
210  {
211  return PhotonBackTracker::TrackIdsToOpHits_Ps(tkIds, hitsIn);
212  }
213 
214  //----------------------------------------------------------------------
215  const std::vector< const sim::SDP* > PhotonBackTrackerService::OpHitToSimSDPs_Ps(recob::OpHit const& opHit)
216  {
218  }
219 
220  //----------------------------------------------------------------------
221  const std::vector< const sim::SDP* > PhotonBackTrackerService::OpHitToSimSDPs_Ps(art::Ptr<recob::OpHit> const& opHit_P)
222  {
223  return PhotonBackTracker::OpHitToSimSDPs_Ps(opHit_P);
224  }
225 
226  //----------------------------------------------------------------------
227  /*
228  const std::vector< sim::SDP > PhotonBackTrackerService::OpHitToChannelWeightedSimSDPs(art::Ptr<recob::OpHit> const& opHit_P)
229  {
230  return PhotonBackTracker::OpHitToChannelWeightedSimSDPs(opHit_P);
231  }*/
232 
233  //----------------------------------------------------------------------
234  const std::unordered_set< const sim::SDP* > PhotonBackTrackerService::OpHitToEveSimSDPs_Ps(recob::OpHit const& opHit)
235  {
237  }
238 
239  //----------------------------------------------------------------------
240  const std::unordered_set< const sim::SDP* > PhotonBackTrackerService::OpHitToEveSimSDPs_Ps(art::Ptr<recob::OpHit> & opHit_P)
241  {
243  }
244 
245  //----------------------------------------------------------------------
246  const std::vector< double> PhotonBackTrackerService::SimSDPsToXYZ(std::vector<sim::SDP> const& sdps) const&
247  {
248  return PhotonBackTracker::SimSDPsToXYZ(sdps);
249  }
250 
251  //----------------------------------------------------------------------
252  const std::vector< double> PhotonBackTrackerService::SimSDPsToXYZ(std::vector<const sim::SDP*> const& sdps_Ps )
253  {
254  return PhotonBackTracker::SimSDPsToXYZ(sdps_Ps);
255  }
256 
257  //----------------------------------------------------------------------
258  const std::vector< double> PhotonBackTrackerService::OpHitToXYZ(recob::OpHit const& opHit)
259  {
260  return PhotonBackTracker::OpHitToXYZ(opHit);
261  }
262 
263  //----------------------------------------------------------------------
264  const std::vector< double> PhotonBackTrackerService::OpHitToXYZ(art::Ptr<recob::OpHit> const& opHit_P)
265  {
266  return PhotonBackTracker::OpHitToXYZ(opHit_P);
267  }
268 
269  //----------------------------------------------------------------------
271  {
273  }
274 
275  //----------------------------------------------------------------------
277  {
279  }
280 
281  //----------------------------------------------------------------------
283  {
284  return PhotonBackTracker::GetSetOfEveIds(opHits_Ps);
285  }
286  //----------------------------------------------------------------------
287  const std::set< int> PhotonBackTrackerService::GetSetOfEveIds(std::vector< recob::OpHit > const& opHits)
288  {
289  return PhotonBackTracker::GetSetOfEveIds(opHits);
290  }
291 
292  //----------------------------------------------------------------------
294  {
295  return PhotonBackTracker::GetSetOfTrackIds(opHits_Ps);
296  }
297  //----------------------------------------------------------------------
298  const std::set< int> PhotonBackTrackerService::GetSetOfTrackIds(std::vector< recob::OpHit > const& opHits)
299  {
301  }
302 
303  //----------------------------------------------------------------------
304  const double PhotonBackTrackerService::OpHitCollectionPurity(std::set<int> const& tkIds,
305  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps)
306  {
307  return PhotonBackTracker::OpHitCollectionPurity(tkIds, opHits_Ps);
308  }
309 
310  //----------------------------------------------------------------------
311  const double PhotonBackTrackerService::OpHitLightCollectionPurity(std::set<int> const& tkIds,
312  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps)
313  {
314  return PhotonBackTracker::OpHitLightCollectionPurity(tkIds, opHits_Ps);
315  }
316 
317 
318  //----------------------------------------------------------------------
319  const double PhotonBackTrackerService::OpHitCollectionEfficiency(std::set<int> const& tkIds,
320  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps,
321  std::vector< art::Ptr<recob::OpHit> > const& opHitsIn_Ps,
322  geo::View_t const& view)
323  {
324  throw cet::exception("PhotonBackTrackerService")<<"This function is not supported. OpHits do not have type View.\n";
325  }
326 
327  //----------------------------------------------------------------------
328  const double PhotonBackTrackerService::OpHitCollectionEfficiency(std::set<int> const& tkIds,
329  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps,
330  std::vector< art::Ptr<recob::OpHit> > const& opHitsIn_Ps)
331  {
332  return PhotonBackTracker::OpHitCollectionEfficiency(tkIds, opHits_Ps, opHitsIn_Ps);
333  }
334 
335  //----------------------------------------------------------------------
336  const double PhotonBackTrackerService::OpHitLightCollectionEfficiency(std::set<int> const& tkIds,
337  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps,
338  std::vector< art::Ptr<recob::OpHit> > const& opHitsIn_Ps,
339  geo::View_t const& view)
340  {
341  throw cet::exception("PhotonBackTrackerService")<<"This function is not supported. OpHits do not have type View.\n";
342  }
343 
344  //----------------------------------------------------------------------
345  const double PhotonBackTrackerService::OpHitLightCollectionEfficiency(std::set<int> const& tkIds,
346  std::vector< art::Ptr<recob::OpHit> > const& opHits_Ps,
347  std::vector< art::Ptr<recob::OpHit> > const& opHitsIn_Ps)
348  {
349  return PhotonBackTracker::OpHitLightCollectionEfficiency(tkIds, opHits_Ps, opHitsIn_Ps);
350  }
351 
352  //----------------------------------------------------------------------
354  return PhotonBackTracker::OpFlashToTrackIds( flash_P);
355  }
356 
357  //----------------------------------------------------------------------
358  const std::vector < art::Ptr< recob::OpHit > > PhotonBackTrackerService::OpFlashToOpHits_Ps ( art::Ptr < recob::OpFlash > & flash_P ){
359  return PhotonBackTracker::OpFlashToOpHits_Ps( flash_P);
360  }
361 
362  //----------------------------------------------------------------------
363  const std::vector < double > PhotonBackTrackerService::OpFlashToXYZ ( art::Ptr < recob::OpFlash > & flash_P ){
364  return PhotonBackTracker::OpFlashToXYZ( flash_P );
365  }
366 
367 
369  //-------------------------------------------------------------------
370  } // namespace
const art::Ptr< sim::OpDetBacktrackerRecord > FindOpDetBTR(int const &opDetNum) const
art::Ptr< sim::OpDetBacktrackerRecord > FindOpDetBTR(int const &opDetNum)
const std::vector< art::Ptr< recob::OpHit > > OpFlashToOpHits_Ps(art::Ptr< recob::OpFlash > &flash_P)
const std::unordered_set< const sim::SDP * > OpHitToEveSimSDPs_Ps(recob::OpHit const &opHit)
const std::vector< art::Ptr< recob::OpHit > > TrackIdToOpHits_Ps(int const &tkId, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
const double OpHitLightCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit > > const &opHits_Ps)
const std::vector< const sim::SDP * > OpHitToSimSDPs_Ps(recob::OpHit const &opHit)
const bool CanRun(Evt const &evt)
enum geo::_plane_proj View_t
Enumerate the possible plane projections.
const std::unordered_set< const sim::SDP * > OpHitToEveSimSDPs_Ps(recob::OpHit const &opHit)
const std::vector< double > SimSDPsToXYZ(std::vector< sim::SDP > const &sdps) const &
const std::vector< art::Ptr< recob::OpHit > > TrackIdToOpHits_Ps(int const &tkId, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
std::vector< double > SimSDPsToXYZ(std::vector< sim::SDP > const &sdps)
void PrepOpFlashToOpHits(Evt const &evt)
struct vector vector
const std::vector< int > OpHitToEveTrackIds(recob::OpHit const &opHit)
const std::vector< const sim::SDP * > TrackIdToSimSDPs_Ps(int const &id)
const std::vector< std::vector< art::Ptr< recob::OpHit > > > TrackIdsToOpHits_Ps(std::vector< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
double OpHitCollectionPurity(std::set< int > trackIDs, std::vector< art::Ptr< recob::OpHit > > const &hits)
const double OpHitCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit > > const &opHits_Ps)
const std::vector< double > OpHitToXYZ(recob::OpHit const &opHit)
art framework interface to geometry description
std::vector< double > OpHitToXYZ(art::Ptr< recob::OpHit > const &hit)
const std::vector< sim::TrackSDP > OpHitToEveTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P) const
const std::vector< art::Ptr< sim::OpDetBacktrackerRecord > > & OpDetBTRs()
const std::set< int > OpFlashToTrackIds(art::Ptr< recob::OpFlash > &flash_P) const
const std::set< int > GetSetOfEveIds() const
const std::vector< std::vector< art::Ptr< recob::OpHit > > > TrackIdsToOpHits_Ps(std::vector< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &hitsIn)
void PrepOpDetBTRs(Evt const &evt)
static Config * config
Definition: config.cpp:1054
const double OpHitLightCollectionEfficiency(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit > > const &opHits, std::vector< art::Ptr< recob::OpHit > > const &opHitsIn)
std::vector< sim::TrackSDP > OpHitToTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P)
double OpHitCollectionEfficiency(std::set< int > trackIDs, std::vector< art::Ptr< recob::OpHit > > const &hits, std::vector< art::Ptr< recob::OpHit > > const &allhits)
back track the reconstruction to the simulation
const std::vector< const sim::SDP * > TrackIdToSimSDPs_Ps(int const &id)
const double OpHitLightCollectionPurity(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit > > const &opHits)
Definition of data types for geometry description.
GlobalSignal< detail::SignalResponseType::FIFO, void(Event const &, ScheduleContext)> sPreProcessEvent
const std::vector< sim::TrackSDP > OpDetToTrackSDPs(int const &OpDetNum, double const &opHit_start_time, double const &opHit_end_time)
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, geo::View_t const &view)
const std::vector< int > OpHitToEveTrackIds(recob::OpHit const &opHit)
const std::vector< double > OpFlashToXYZ(art::Ptr< recob::OpFlash > &flash_P)
const 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, geo::View_t const &view)
#define DEFINE_ART_SERVICE(svc)
std::vector< sim::TrackSDP > OpHitToTrackSDPs(art::Ptr< recob::OpHit > const &hit)
code to link reconstructed objects back to the MC truth information
Definition: BackTracker.cc:22
const std::set< int > GetSetOfTrackIds() const
const std::vector< int > OpHitToTrackIds(recob::OpHit const &opHit) const
LArSoft-specific namespace.
PhotonBackTrackerService(fhicl::ParameterSet const &pSet, art::ActivityRegistry &reg)
static ScheduleContext invalid()
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
const std::vector< const sim::SDP * > OpHitToSimSDPs_Ps(recob::OpHit const &opHit) const
T::provider_type const * providerFrom()
Returns a constant pointer to the provider of specified service.
Definition: ServiceUtil.h:63
void priv_PrepEvent(art::Event const &evt, art::ScheduleContext)
const std::vector< int > OpHitToTrackIds(recob::OpHit const &opHit)
std::vector< art::Ptr< sim::OpDetBacktrackerRecord > > const & OpDetBTRs()
TCEvent evt
Definition: DataStructs.cxx:7
const std::set< int > OpFlashToTrackIds(art::Ptr< recob::OpFlash > &flash_P) const
auto const & get(AssnsNode< L, R, D > const &r)
Definition: AssnsNode.h:115
const std::vector< double > OpFlashToXYZ(art::Ptr< recob::OpFlash > &flash_P) const
std::vector< sim::TrackSDP > OpHitToEveTrackSDPs(art::Ptr< recob::OpHit > const &opHit_P)
LArSoft geometry interface.
Definition: ChannelGeo.h:16
const std::vector< sim::TrackSDP > OpDetToTrackSDPs(int const &OpDetNum, double const &opHit_start_time, double const &opHit_end_time) const
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
const std::vector< art::Ptr< recob::OpHit > > OpFlashToOpHits_Ps(art::Ptr< recob::OpFlash > &flash_P) const
void priv_PrepOpFlashToOpHits(art::Event const &evt)