21 #ifndef _PATH_SEGMENT_LIST_H_
22 #define _PATH_SEGMENT_LIST_H_
27 #define PATHSEG_KEEP_PATH
51 ostream &
operator << (ostream & stream,
const PathSegment & list);
63 void SetEnter(
const TVector3 & p3enter,
double raydist)
65 void SetEnter(
const Double_t * p3enter,
double raydist)
66 {
fEnter.SetXYZ(p3enter[0],p3enter[1],p3enter[2]);
fRayDist = raydist; }
71 {
fExit.SetXYZ(p3exit[0],p3exit[1],p3exit[2]); }
74 void SetGeo(
const TGeoVolume * gvol,
const TGeoMedium * gmed,
75 const TGeoMaterial * gmat)
77 #ifdef PATHSEG_KEEP_PATH
82 void SetStep(Double_t step,
bool setlimits =
true );
93 void DoCrossCheck(
const TVector3& startpos,
double& ddist,
double& dstep)
const;
98 void Print (ostream & stream)
const;
110 #ifdef PATHSEG_KEEP_PATH
120 class PathSegmentList;
121 ostream &
operator << (ostream & stream,
const PathSegmentList & list);
133 void SetStartInfo (
const TVector3& pos = TVector3(0,0,1e37),
134 const TVector3&
dir = TVector3(0,0,0) );
135 bool IsSameStart (
const TVector3& pos,
const TVector3&
dir)
const;
153 void CrossCheck(
double& mxddist,
double& mxdstep)
const;
155 #ifdef UNNEEDED_SEGFUNCS
163 void Print (ostream & stream)
const;
186 #endif // _PATH_SEGMENT_LIST_H_
void SetEnter(const TVector3 &p3enter, double raydist)
point of entry to geometry element
bool operator<(const PathSegment &lhs, const PathSegment &rhs)
const TVector3 & GetStartPos() const
void SetPrintVerbose(bool doit=true)
PathSegmentV_t fSegmentList
Actual list of segments.
std::vector< StepRange > StepRangeSet
void CrossCheck(double &mxddist, double &mxdstep) const
MaterialMap_t fMatStepSum
Segment list re-evaluated by material for fast lookup of path lengths.
void SetPath(const char *path)
StepRangeSet fStepRangeSet
collection of {steplo,stephi} pairs
TVector3 fEnter
top vol coordinates and units
TVector3 fStartPos
Record, for future comparison, the path taken.
void SetEnter(const Double_t *p3enter, double raydist)
void AddSegment(const PathSegment &ps)
friend ostream & operator<<(ostream &stream, const PathSegment &list)
Object to be filled with the neutrino path-segments representing geometry volume steps (generally bou...
const TVector3 & GetDirection() const
bool IsSameStart(const TVector3 &pos, const TVector3 &dir) const
void SetStep(Double_t step, bool setlimits=true)
step taken in the geometry element
const TGeoMaterial * fMaterial
ref only ptr to TGeoMaterial
PathSegmentV_t::const_iterator PathSegVCItr_t
void Print(ostream &stream) const
TVector3 fDirection
direction (in top vol coords)
const TGeoVolume * fVolume
ref only ptr to TGeoVolume
TVector3 fExit
top vol coordinates and units
const TGeoMedium * fMedium
ref only ptr to TGeoMedium
void Copy(const PathSegmentList &plist)
void SetStartInfo(const TVector3 &pos=TVector3(0, 0, 1e37), const TVector3 &dir=TVector3(0, 0, 0))
Double_t GetSummedStepRange() const
get the sum of all the step range (in case step has been trimmed or split)
std::pair< Double_t, Double_t > StepRange
static constexpr double ps
const PathSegmentV_t & GetPathSegmentV(void) const
bool IsTrimmedEmpty() const
MaterialMap_t::const_iterator MaterialMapCItr_t
Double_t fRayDist
distance from start of ray
friend bool operator<(const PathSegment &lhs, const PathSegment &rhs)
void SetDoCrossCheck(bool doit=true)
void SetGeo(const TGeoVolume *gvol, const TGeoMedium *gmed, const TGeoMaterial *gmat)
info about the geometry element
std::map< const TGeoMaterial *, Double_t > MaterialMap_t
TVector3 GetPosition(Double_t frac) const
calculate position within allowed ranges passed on fraction of total
void Print(ostream &stream) const
const MaterialMap_t & GetMatStepSumMap(void) const
void SetExit(const Double_t *p3exit)
friend ostream & operator<<(ostream &stream, const PathSegmentList &list)
PathSegmentList & operator=(const PathSegmentList &list)
void SetExit(const TVector3 &p3exit)
point of exit from geometry element
void DoCrossCheck(const TVector3 &startpos, double &ddist, double &dstep) const
perform cross check on segment, return differences
std::list< PathSegment > PathSegmentV_t
std::ostream & operator<<(std::ostream &stream, const genie::geometry::PlaneParam &pparam)
Double_t fStepLength
total step size in volume
void FillMatStepSum(void)
std::string fPathString
full path names