All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
opdet::FlashHypothesisCreator Class Reference

#include <FlashHypothesisCreator.h>

Public Types

using Providers_t = lar::ProviderPack< geo::GeometryCore, detinfo::LArProperties >
 Set of service providers used in the common(est) interface. More...
 

Public Member Functions

 FlashHypothesisCreator ()
 
FlashHypothesisCollection GetFlashHypothesisCollection (recob::Track const &track, std::vector< float > const &dEdxVector, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset=0)
 
FlashHypothesisCollection GetFlashHypothesisCollection (sim::MCTrack const &mctrack, std::vector< float > const &dEdxVector, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset=0)
 
FlashHypothesisCollection GetFlashHypothesisCollection (std::vector< TVector3 > const &trajVector, std::vector< float > const &dEdxVector, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset=0)
 
FlashHypothesisCollection GetFlashHypothesisCollection (TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset=0)
 

Private Member Functions

FlashHypothesisCollection CreateFlashHypothesesFromSegment (TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset)
 

Private Attributes

FlashHypothesisCalculator _calc
 

Detailed Description

Definition at line 31 of file FlashHypothesisCreator.h.

Member Typedef Documentation

Set of service providers used in the common(est) interface.

Definition at line 36 of file FlashHypothesisCreator.h.

Constructor & Destructor Documentation

opdet::FlashHypothesisCreator::FlashHypothesisCreator ( )
inline

Definition at line 38 of file FlashHypothesisCreator.h.

38 {}

Member Function Documentation

opdet::FlashHypothesisCollection opdet::FlashHypothesisCreator::CreateFlashHypothesesFromSegment ( TVector3 const &  pt1,
TVector3 const &  pt2,
float const &  dEdx,
Providers_t  providers,
phot::PhotonVisibilityService const &  pvs,
opdet::OpDigiProperties const &  opdigip,
float  XOffset 
)
private

Definition at line 130 of file FlashHypothesisCreator.cxx.

136 {
137  auto const* geom = providers.get<geo::GeometryCore>();
138  auto const* larp = providers.get<detinfo::LArProperties>();
139  auto const nOpDets = geom->NOpDets();
140  FlashHypothesisCollection fhc(nOpDets);
141 
142  FlashHypothesis prompt_hyp = FlashHypothesis(nOpDets);
143 
144  std::vector<double> xyz_segment(_calc.SegmentMidpoint(pt1,pt2,XOffset));
145 
146  //get the visibility vector
147  auto const& PointVisibility = pvs.GetAllVisibilities(&xyz_segment[0]);
148 
149  //check visibility pointer, as it may be null if given a y/z outside some range
150  if (!PointVisibility) return fhc;
151 
152  //klugey ... right now, set a qe_vector that gives constant qe across all opdets
153  std::vector<float> qe_vector(nOpDets,opdigip.QE());
154  _calc.FillFlashHypothesis(larp->ScintYield()*larp->ScintYieldRatio(),
155  dEdx,
156  pt1,pt2,
157  qe_vector,
158  PointVisibility,
159  prompt_hyp);
160 
161  fhc.SetPromptHypAndPromptFraction(prompt_hyp,larp->ScintYieldRatio());
162  return fhc;
163 }
void FillFlashHypothesis(const float &yield, const float &dEdx, const TVector3 &pt1, const TVector3 &pt2, const std::vector< float > &qe_vector, phot::MappedCounts_t const &vis_vector, FlashHypothesis &hyp)
FlashHypothesisCalculator _calc
Description of geometry of one entire detector.
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
Definition: PFPUtils.cxx:2687
std::vector< double > SegmentMidpoint(const TVector3 &pt1, const TVector3 &pt2, float XOffset=0)
opdet::FlashHypothesisCollection opdet::FlashHypothesisCreator::GetFlashHypothesisCollection ( recob::Track const &  track,
std::vector< float > const &  dEdxVector,
Providers_t  providers,
phot::PhotonVisibilityService const &  pvs,
opdet::OpDigiProperties const &  opdigip,
float  XOffset = 0 
)

Title: FlashHypothesis Creator Class Author: Wes Ketchum (wketc.nosp@m.hum@.nosp@m.lanl..nosp@m.gov)

Description: Class that produces a flash hypothesis for a trajectory. Input: Trajectory (std::vector<TVector3> objects) Output: FlashHypotheses

Definition at line 20 of file FlashHypothesisCreator.cxx.

26 {
27  bool interpolate_dEdx=false;
28  if(track.NumberTrajectoryPoints() == dEdxVector.size())
29  interpolate_dEdx=true;
30  else if(track.NumberTrajectoryPoints() == dEdxVector.size()+1)
31  interpolate_dEdx=false;
32  else
33  throw "ERROR in FlashHypothesisCreator: dEdx vector size not compatible with track size.";
34 
35  auto const* geom = providers.get<geo::GeometryCore>();
36  FlashHypothesisCollection fhc(geom->NOpDets());
37  for(size_t pt=1; pt<track.NumberTrajectoryPoints(); pt++){
38  if(interpolate_dEdx)
39  fhc = fhc + CreateFlashHypothesesFromSegment(track.LocationAtPoint<TVector3>(pt-1),
40  track.LocationAtPoint<TVector3>(pt),
41  0.5*(dEdxVector[pt]+dEdxVector[pt-1]),
42  providers,pvs,opdigip,XOffset);
43  else
44  fhc = fhc + CreateFlashHypothesesFromSegment(track.LocationAtPoint<TVector3>(pt-1),
45  track.LocationAtPoint<TVector3>(pt),
46  dEdxVector[pt-1],
47  providers,pvs,opdigip,XOffset);
48  }
49  return fhc;
50 }
process_name use argoneut_mc_hitfinder track
Description of geometry of one entire detector.
FlashHypothesisCollection CreateFlashHypothesesFromSegment(TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset)
opdet::FlashHypothesisCollection opdet::FlashHypothesisCreator::GetFlashHypothesisCollection ( sim::MCTrack const &  mctrack,
std::vector< float > const &  dEdxVector,
Providers_t  providers,
phot::PhotonVisibilityService const &  pvs,
opdet::OpDigiProperties const &  opdigip,
float  XOffset = 0 
)

Definition at line 53 of file FlashHypothesisCreator.cxx.

59 {
60  bool interpolate_dEdx=false;
61  if(mctrack.size() == dEdxVector.size())
62  interpolate_dEdx=true;
63  else if(mctrack.size() == dEdxVector.size()+1)
64  interpolate_dEdx=false;
65  else
66  throw "ERROR in FlashHypothesisCreator: dEdx vector size not compatible with mctrack size.";
67 
68  auto const* geom = providers.get<geo::GeometryCore>();
69  FlashHypothesisCollection fhc(geom->NOpDets());
70  for(size_t pt=1; pt<mctrack.size(); pt++){
71  if(interpolate_dEdx)
72  fhc = fhc + CreateFlashHypothesesFromSegment(mctrack[pt-1].Position().Vect(),
73  mctrack[pt].Position().Vect(),
74  0.5*(dEdxVector[pt]+dEdxVector[pt-1]),
75  providers,pvs,opdigip,XOffset);
76  else
77  fhc = fhc + CreateFlashHypothesesFromSegment(mctrack[pt-1].Position().Vect(),
78  mctrack[pt].Position().Vect(),
79  dEdxVector[pt-1],
80  providers,pvs,opdigip,XOffset);
81  }
82  return fhc;
83 }
Description of geometry of one entire detector.
FlashHypothesisCollection CreateFlashHypothesesFromSegment(TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset)
opdet::FlashHypothesisCollection opdet::FlashHypothesisCreator::GetFlashHypothesisCollection ( std::vector< TVector3 > const &  trajVector,
std::vector< float > const &  dEdxVector,
Providers_t  providers,
phot::PhotonVisibilityService const &  pvs,
opdet::OpDigiProperties const &  opdigip,
float  XOffset = 0 
)

Definition at line 86 of file FlashHypothesisCreator.cxx.

92 {
93  bool interpolate_dEdx=false;
94  if(trajVector.size() == dEdxVector.size())
95  interpolate_dEdx=true;
96  else if(trajVector.size() == dEdxVector.size()+1)
97  interpolate_dEdx=false;
98  else
99  throw "ERROR in FlashHypothesisCreator: dEdx vector size not compatible with trajVector size.";
100 
101  auto const* geom = providers.get<geo::GeometryCore>();
102  FlashHypothesisCollection fhc(geom->NOpDets());
103  for(size_t pt=1; pt<trajVector.size(); pt++){
104  if(interpolate_dEdx)
105  fhc = fhc + CreateFlashHypothesesFromSegment(trajVector[pt-1],
106  trajVector[pt],
107  0.5*(dEdxVector[pt]+dEdxVector[pt-1]),
108  providers,pvs,opdigip,XOffset);
109  else
110  fhc = fhc + CreateFlashHypothesesFromSegment(trajVector[pt-1],
111  trajVector[pt],
112  dEdxVector[pt-1],
113  providers,pvs,opdigip,XOffset);
114  }
115  return fhc;
116 }
Description of geometry of one entire detector.
FlashHypothesisCollection CreateFlashHypothesesFromSegment(TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset)
opdet::FlashHypothesisCollection opdet::FlashHypothesisCreator::GetFlashHypothesisCollection ( TVector3 const &  pt1,
TVector3 const &  pt2,
float const &  dEdx,
Providers_t  providers,
phot::PhotonVisibilityService const &  pvs,
opdet::OpDigiProperties const &  opdigip,
float  XOffset = 0 
)

Definition at line 119 of file FlashHypothesisCreator.cxx.

125 {
126  return CreateFlashHypothesesFromSegment(pt1,pt2,dEdx,providers,pvs,opdigip,XOffset);
127 }
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
Definition: PFPUtils.cxx:2687
FlashHypothesisCollection CreateFlashHypothesesFromSegment(TVector3 const &pt1, TVector3 const &pt2, float const &dEdx, Providers_t providers, phot::PhotonVisibilityService const &pvs, opdet::OpDigiProperties const &opdigip, float XOffset)

Member Data Documentation

FlashHypothesisCalculator opdet::FlashHypothesisCreator::_calc
private

Definition at line 76 of file FlashHypothesisCreator.h.


The documentation for this class was generated from the following files: