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