LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
PhotonBackTrackerService.h
Go to the documentation of this file.
1 //
3 // \file: PhotonBackTrackerServiceService_service.cc
4 //
5 //jason.stock@mines.sdsmt.edu
6 //Based on the BackTracker_service by Brian Rebel
7 //
9 #ifndef CHEAT_PHOTONBACKTRACKERSERVICESERVICE_H
10 #define CHEAT_PHOTONBACKTRACKERSERVICESERVICE_H
11 
18 
19 namespace art {
20  class ActivityRegistry;
21  class Event;
22 }
23 
25 
26 #include "fhiclcpp/fwd.h"
27 #include "fhiclcpp/types/Comment.h"
28 #include "fhiclcpp/types/Name.h"
29 #include "fhiclcpp/types/Table.h"
30 
31 #include <set>
32 #include <vector>
33 
34 namespace cheat {
36  public:
37  struct fhiclConfig {
39  fhicl::Name("PhotonBackTracker"),
41  "This if the fhicl configuration of the PhotonBackTracker service provider.")};
42  };
43 
45  const provider_type* provider() const { return static_cast<provider_type const*>(this); }
46 
49 
50  // Temporarily include a rebuild function until the lazy rebuild works.
51 
52  void Rebuild(art::Event const& evt);
53 
54  //----------------------------------------------------------------------
55  // BackTracking implementation functions
56  std::vector<art::Ptr<sim::OpDetBacktrackerRecord>> const& OpDetBTRs();
57  double GetDelay();
58  std::vector<const sim::SDP*> TrackIdToSimSDPs_Ps(int id);
59  art::Ptr<sim::OpDetBacktrackerRecord> FindOpDetBTR(int opDetNum);
60  std::vector<sim::TrackSDP> OpDetToTrackSDPs(int OpDetNum,
61  double opHit_start_time,
62  double opHit_end_time);
63  std::vector<sim::TrackSDP> OpHitToTrackSDPs(art::Ptr<recob::OpHit> const& opHit_P);
64  std::vector<sim::TrackSDP> OpHitToTrackSDPs(recob::OpHit const& opHit);
65  std::vector<int> OpHitToTrackIds(recob::OpHit const& opHit);
66  std::vector<int> OpHitToTrackIds(art::Ptr<recob::OpHit> const& opHit_P);
67  std::vector<int> OpHitToEveTrackIds(recob::OpHit const& opHit);
68  std::vector<int> OpHitToEveTrackIds(art::Ptr<recob::OpHit> const& opHit_P);
69  std::vector<sim::TrackSDP> OpHitToEveTrackSDPs(art::Ptr<recob::OpHit> const& opHit_P);
70  std::vector<sim::TrackSDP> OpHitToEveTrackSDPs(recob::OpHit const& opHit);
71  std::vector<art::Ptr<recob::OpHit>> TrackIdToOpHits_Ps(
72  int tkId,
73  std::vector<art::Ptr<recob::OpHit>> const& hitsIn);
74  std::vector<std::vector<art::Ptr<recob::OpHit>>> TrackIdsToOpHits_Ps(
75  std::vector<int> const& tkIds,
76  std::vector<art::Ptr<recob::OpHit>> const& hitsIn);
77  std::vector<const sim::SDP*> OpHitToSimSDPs_Ps(recob::OpHit const& opHit);
78  std::vector<const sim::SDP*> OpHitToSimSDPs_Ps(art::Ptr<recob::OpHit> const& opHit_P);
79  std::unordered_set<const sim::SDP*> OpHitToEveSimSDPs_Ps(recob::OpHit const& opHit);
80  std::unordered_set<const sim::SDP*> OpHitToEveSimSDPs_Ps(art::Ptr<recob::OpHit>& opHit_P);
81  std::vector<double> SimSDPsToXYZ(std::vector<sim::SDP> const& sdps) const&;
82  std::vector<double> SimSDPsToXYZ(std::vector<const sim::SDP*> const& sdps_Ps);
83  std::vector<double> OpHitToXYZ(recob::OpHit const& opHit);
84  std::vector<double> OpHitToXYZ(art::Ptr<recob::OpHit> const& opHit_P);
85  std::set<int> GetSetOfEveIds();
86  std::set<int> GetSetOfTrackIds();
87  std::set<int> GetSetOfEveIds(std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps);
88  std::set<int> GetSetOfEveIds(const std::vector<recob::OpHit>& opHits);
89  std::set<int> GetSetOfTrackIds(std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps);
90  std::set<int> GetSetOfTrackIds(std::vector<recob::OpHit> const& opHits);
91  double OpHitCollectionPurity(std::set<int> const& tkIds,
92  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps);
93  double OpHitLightCollectionPurity(std::set<int> const& tkIds,
94  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps);
95  double OpHitCollectionEfficiency(std::set<int> const& tkIds,
96  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps,
97  std::vector<art::Ptr<recob::OpHit>> const& opHitsIn_Ps);
98  double OpHitLightCollectionEfficiency(std::set<int> const& tkIds,
99  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps,
100  std::vector<art::Ptr<recob::OpHit>> const& opHitsIn_Ps);
101  double OpHitChargeCollectionEfficiency(std::set<int> const& tkIds,
102  std::vector<art::Ptr<recob::OpHit>> const& opHits_Ps,
103  std::vector<art::Ptr<recob::OpHit>> const& opHitsIn_Ps)
104  {
105  return PhotonBackTracker::OpHitLightCollectionEfficiency(tkIds, opHits_Ps, opHitsIn_Ps);
106  } //Exists only temporarily. Is deprecated.
107  std::set<int> OpFlashToTrackIds(art::Ptr<recob::OpFlash>& flash_P) const;
108  std::vector<art::Ptr<recob::OpHit>> OpFlashToOpHits_Ps(art::Ptr<recob::OpFlash>& flash_P);
109  std::vector<double> OpFlashToXYZ(art::Ptr<recob::OpFlash>& flash_P);
110 
111  private:
112  //The PhotonBackTrackerService has no parameters.
113 
114  void priv_PrepEvent(art::Event const& evt, art::ScheduleContext);
115  void priv_PrepFailed();
116  void priv_PrepOpDetBTRs(art::Event const& evt);
117  void priv_PrepOpFlashToOpHits(art::Event const& evt);
118 
119  bool priv_CanRun(art::Event const& evt);
120  bool priv_OpDetBTRsReady() { return PhotonBackTracker::BTRsReady(); }
121  bool priv_OpFlashToOpHitsReady() { return PhotonBackTracker::OpFlashToOpHitsReady(); }
122 
123  }; //Class PhotonBackTrackerService
124 
125  //----------------------------------------------------------------------
126 } // namespace
127 
129 
130 #endif //CHEAT_PHOTONBACKTRACKERSERVICESERVICE_H
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
Definition: DumpUtils.h:289
#define DECLARE_ART_SERVICE(svc, scope)
back track the reconstruction to the simulation
Definition of data types for geometry description.
const provider_type * provider() const
code to link reconstructed objects back to the MC truth information
Definition: BackTracker.cc:24
Definition: MVAAlg.h:12
TCEvent evt
Definition: DataStructs.cxx:8
double OpHitChargeCollectionEfficiency(std::set< int > const &tkIds, std::vector< art::Ptr< recob::OpHit >> const &opHits_Ps, std::vector< art::Ptr< recob::OpHit >> const &opHitsIn_Ps)