14 using namespace genie;
 
   15 using namespace genie::geometry;
 
   17 #include <TGeoVolume.h> 
   18 #include <TGeoMaterial.h> 
   19 #include <TGeoMedium.h> 
   22 GeomVolSelectorRockBox::GeomVolSelectorRockBox()
 
   24   , fExpandInclusion(false)
 
   25   , fRockBoxShape(0), fROOTGeom(0)
 
   31   for (
int i=0; i<3; ++i) {
 
   66     for ( ; srs_itr != srs_end; ++srs_itr ) {
 
   67       Double_t slo = srs_itr->first;
 
   68       Double_t shi = srs_itr->second;
 
   75       bool nonzerostep = ( step1.first != step1.second );
 
   77         modifiedStepRangeSet.push_back(step1);
 
   79           modifiedStepRangeSet.push_back(step2);
 
  102     LOG(
"GeomVolSel", 
pFATAL) << 
"no shape defined";
 
  134   for ( 
int j = 0; j < 3; ++j ) {
 
  147   for ( 
int j = 0; j < 3; ++j ) {
 
  156   for ( 
int j = 0; j < 3; ++j ) {
 
  167   double energy = 
fP4.Energy();
 
  168   double boxXYZMin[3], boxXYZMax[3];
 
  169   for ( 
int j = 0; j < 3; ++j ) {
 
  170     double dmin = 0, dmax = 0;
 
  172     if ( dircos > 0 ) dmin =  dircos*energy/
fDeDx;  
 
  173     else              dmax = -dircos*energy/
fDeDx;
 
  177     cout << 
"MakeRockBox [" << j << 
"] wall " << 
fMinimumWall 
  178          << 
" dm " << dmin << 
" " << dmax   << 
" dircos " << dircos
 
  179          << 
" e " << energy << 
" dedx " << 
fDeDx << endl;
 
  204   static bool first = 
true;
 
  206     cout << 
"MakeRockBox first Minimal min [" 
  214     cout << 
"MakeRockBox first Inclusion min [" 
  224   cout << 
"MakeRockBox this ray using min [" 
  225        << boxXYZMin[0] << 
"," 
  226        << boxXYZMin[1] << 
"," 
  227        << boxXYZMin[2] << 
"]" 
  229        << boxXYZMax[0] << 
"," 
  230        << boxXYZMax[1] << 
"," 
  231        << boxXYZMax[2] << 
"]" << endl;
 
  239   cout << 
"fid  after: " << *
fShape << endl;
 
GENIE Interface for user-defined volume selector functors Trim path segments based on the intersectio...
void TrimSegment(PathSegment &segment) const 
const TVector3 & GetStartPos() const 
void TrimSegment(PathSegment &segment) const 
TLorentzVector fP4
current neutrino ray's momentum (global) 
std::vector< StepRange > StepRangeSet
Double_t fMinimalXYZMin[3]
void SetRockBoxInclusion(Double_t *xyzmin, Double_t *xyzmax)
Bool_t fIsHit
distance along ray to exit fid volume 
StepRangeSet fStepRangeSet
collection of {steplo,stephi} pairs 
virtual void ConvertShapeMaster2Top(const ROOTGeomAnalyzer *rgeom)
Object to be filled with the neutrino path-segments representing geometry volume steps (generally bou...
const TVector3 & GetDirection() const 
void SetMinimumWall(Double_t w)
Double_t fInclusionXYZMin[3]
minimum distance around (XYZmin,XYZmax) 
Double_t fMinimumWall
interior box upper corner 
virtual ~GeomVolSelectorRockBox()
std::string fName
volume selector name 
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE...
bool fRemoveEntries
whether selector should remove entries or set hi=lo 
RayIntercept fInterceptRock
FidShape * fRockBoxShape
expand from minimal or inclusion box? 
Double_t fInclusionXYZMax[3]
box within which events are always 
A ROOT/GEANT4 geometry driver. 
void BeginPSList(const PathSegmentList *untrimmed) const 
std::pair< Double_t, Double_t > StepRange
static constexpr double ps
const ROOTGeomAnalyzer * fROOTGeom
shape changes for every nu ray 
Double_t fRayDist
distance from start of ray 
virtual RayIntercept Intercept(const TVector3 &start, const TVector3 &dir) const =0
virtual void ConvertShapeMaster2Top(const ROOTGeomAnalyzer *rgeom)
virtual void ConvertMaster2Top(const ROOTGeomAnalyzer *rgeom)=0
void SetReverseFiducial(Bool_t reverse=true)
static Bool_t NewStepPairs(Bool_t selectReverse, Double_t raydist, Double_t slo, Double_t shi, const RayIntercept &intercept, Bool_t &split, StepRange &step1, StepRange &step2)
void BeginPSList(const PathSegmentList *untrimmed) const 
Bool_t fExpandInclusion
how to scale from energy to distance 
void SetRockBoxMinimal(Double_t *xyzmin, Double_t *xyzmax)
void MakeBox(Double_t *xyzmin, Double_t *xyzmax)
FidShape * fShape
select for "outside" fiducial? 
void push_back(const PlaneParam &pln)
Double_t fMinimalXYZMax[3]
interior box lower corner 
const PathSegmentList * fCurrPathSegmentList
shape