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