25 #ifndef _ROOT_GEOMETRY_ANALYZER_H_
26 #define _ROOT_GEOMETRY_ANALYZER_H_
31 #include <TGeoManager.h>
51 class PathSegmentList;
52 class GeomVolSelectorI;
68 const TLorentzVector & p);
70 virtual std::vector< std::pair<double, const TGeoMaterial*> >
ComputeMatLengths(
const TLorentzVector & x,
71 const TLorentzVector & p);
74 const TLorentzVector & p,
int tgtpdg);
112 virtual void Local2SI (TVector3 & v)
const;
113 virtual void SI2Local (TVector3 & v)
const;
129 virtual void Load (
string geometry_filename);
130 virtual void Load (TGeoManager * gm);
133 virtual double GetWeight (
const TGeoMaterial * mat,
int pdgc);
134 virtual double GetWeight (
const TGeoMixture * mixt,
int pdgc);
135 virtual double GetWeight (
const TGeoMixture * mixt,
int ielement,
int pdgc);
139 virtual bool GenBoxRay (
int indx, TLorentzVector& x4, TLorentzVector& p4);
142 virtual void SwimOnce (
const TVector3 & r,
const TVector3 & udir);
147 virtual double Step (
void);
192 #endif // _ROOT_GEOMETRY_ANALYZER_H_
virtual int ScannerNParticles(void) const
virtual void SetMaxPlSafetyFactor(double sf)
TGeoManager * fGeometry
input detector geometry
virtual double StepUntilEntering(void)
virtual GeomVolSelectorI * AdoptGeomVolSelector(GeomVolSelectorI *selector)
configure processing to perform path segment trimming
virtual double GetWeight(const TGeoMaterial *mat, int pdgc)
virtual void MaxPathLengthsFluxMethod(void)
virtual bool WeightWithDensity(void) const
virtual const PathLengthList & ComputeMaxPathLengths(void)
virtual void CleanUp(void)
virtual void SetDebugFlags(int flgs)
bool fDensWeight
if true pathlengths are weighted with density [def:true]
virtual const PathLengthList & GetMaxPathLengths(void) const
virtual double StepToNextBoundary(void)
GFluxI * fFlux
a flux objects that can be used to scan the max path lengths
virtual void Top2Master(TVector3 &v) const
double fLengthScale
conversion factor: input geometry length units -> meters
Object to be filled with the neutrino path-segments representing geometry volume steps (generally bou...
virtual int ScannerNPoints(void) const
retrieve geometry driver's configuration options
int fNRays
max path length scanner (box method): rays/point [def:200]
TVector3 * fCurrVertex
current generated vertex
double fMaxPlSafetyFactor
factor that can multiply the computed max path lengths
GENIE Interface for user-defined volume selector functors.
virtual void SetScannerNParticles(int np)
string fTopVolumeName
input top vol [other than TGeoManager::GetTopVolume()]
virtual void SetDensityUnits(double du)
virtual const PDGCodeList & ListOfTargetNuclei(void)
implement the GeomAnalyzerI interface
virtual bool FindMaterialInCurrentVol(int pdgc)
virtual double MixtureWeightsSum(void) const
virtual double Step(void)
virtual const PathLengthList & ComputePathLengths(const TLorentzVector &x, const TLorentzVector &p)
int fMaterial
input selected material for vertex generation
Object to be filled with the neutrino path-length, for all detector geometry materials, when starting from a position x and travelling along the direction of the neutrino 4-momentum.
virtual int GetTargetPdgCode(const TGeoMaterial *const m) const
double foz
top vol size/origin (top vol units)
double fDensityScale
conversion factor: input geometry density units -> kgr/meters^3
virtual void MaxPathLengthsBoxMethod(void)
int fNPoints
max path length scanner (box method): points/surface [def:200]
virtual bool GenBoxRay(int indx, TLorentzVector &x4, TLorentzVector &p4)
virtual double LengthUnits(void) const
virtual void SetScannerNRays(int nr)
PDGCodeList * fCurrPDGCodeList
current list of target nuclei
virtual void SetWeightWithDensity(bool wt)
PathSegmentList * fCurrPathSegmentList
current list of path-segments
PathLengthList * fCurrMaxPathLengthList
current list of max path-lengths
A ROOT/GEANT4 geometry driver.
virtual void Load(string geometry_filename)
virtual double ComputePathLengthPDG(const TVector3 &r, const TVector3 &udir, int pdgc)
virtual void Local2SI(PathLengthList &pl) const
access to geometry coordinate/unit transforms for validation/test purposes
GeomVolSelectorI * fGeomVolSelector
optional path seg trimmer (owned)
double fmxdstep
max errors in pathsegmentlist
virtual double DensityUnits(void) const
virtual void Initialize(void)
virtual void Master2TopDir(TVector3 &v) const
virtual string TopVolName(void) const
virtual const TVector3 & GenerateVertex(const TLorentzVector &x, const TLorentzVector &p, int tgtpdg)
PathLengthList * fCurrPathLengthList
current list of path-lengths
virtual void SetTopVolName(string nm)
virtual bool GetKeepSegPath(void) const
TGeoHMatrix * fMasterToTop
matrix connecting master coordinates to top volume coordinates
bool fMasterToTopIsIdentity
is fMasterToTop matrix the identity matrix?
int fNParticles
max path length scanner (flux method): particles in [def:10000]
virtual void SetScannerNPoints(int np)
set geometry driver's configuration options
virtual void SetKeepSegPath(bool keep)
virtual void SetScannerFlux(GFluxI *f)
virtual void SetMixtureWeightsSum(double sum)
TGeoVolume * fTopVolume
top volume
virtual double MaxPlSafetyFactor(void) const
virtual void SetLengthUnits(double lu)
virtual void Top2MasterDir(TVector3 &v) const
double fMixtWghtSum
norm of relative weights (<0 if explicit summing required)
Defines the GENIE Geometry Analyzer Interface.
virtual void BuildListOfTargetNuclei(void)
virtual void SI2Local(TVector3 &v) const
bool fKeepSegPath
need to fill path segment "path"
static constexpr double m
virtual void SwimOnce(const TVector3 &r, const TVector3 &udir)
virtual void Master2Top(TVector3 &v) const
virtual TGeoManager * GetGeometry(void) const
virtual std::vector< std::pair< double, const TGeoMaterial * > > ComputeMatLengths(const TLorentzVector &x, const TLorentzVector &p)
virtual int ScannerNRays(void) const
virtual bool WillNeverEnter(double step)
GENIE Interface for user-defined flux classes.