GENIEGenerator
Loading...
Searching...
No Matches
GeomVolSelectorRockBox.h
Go to the documentation of this file.
1//____________________________________________________________________________
2/*!
3
4\class genie::geometry::GeomVolSelectorRockBox
5
6\brief GENIE Interface for limiting vertex selection in the rock
7 to a volume that depends (in part) on the neutrino p4.
8 Uses GeomVolSelectorFiducial to possibly exclude an inner region.
9
10\author Robert Hatcher <rhatcher@fnal.gov>
11 FNAL
12
13\created August 5, 2010
14
15\cpright Copyright (c) 2003-2025, The GENIE Collaboration
16 For the full text of the license visit http://copyright.genie-mc.org
17*/
18//____________________________________________________________________________
19
20#ifndef _GEOM_VOL_SELECTOR_ROCKBOX_H_
21#define _GEOM_VOL_SELECTOR_ROCKBOX_H_
22
23#include <string>
24#include <vector>
25
26#include "TMath.h"
27#include "TLorentzVector.h"
31
32using namespace std;
33
34namespace genie {
35namespace geometry {
36
38
39public :
42
43 //
44 // define the missing part of the GeomVolSelectorI interface:
45 //
46 void TrimSegment(PathSegment& segment) const;
47 void BeginPSList(const PathSegmentList* untrimmed) const;
48 void EndPSList() const;
49
50 //
51 // set fiducial volume parameter (call only once)
52 // in "top vol" coordinates and units
53 // set minimal (inner (optionally exclusion)) extent
54 // before either wall or inclusion extent (which define region
55 // where events are always accepted)
56 void SetRockBoxMinimal(Double_t* xyzmin, Double_t* xyzmax);
57 void SetRockBoxInclusion(Double_t* xyzmin, Double_t* xyzmax);
58 void SetMinimumWall(Double_t w);
59 void SetDeDx(Double_t dedx) { fDeDx = dedx; }
60 void SetExpandFromInclusion(bool how=false) { fExpandInclusion = how; }
61
62 // by default shapes are assumed to be in "top vol" coordinates
63 // in the case where they are entered in master coordinates
64 // ask the configured shape to convert itself
65 // (do this only once for any shape definition)
66 virtual void ConvertShapeMaster2Top(const ROOTGeomAnalyzer* rgeom);
67
68protected:
69
70 void MakeRockBox() const;
71
72 Double_t fMinimalXYZMin[3]; /// interior box lower corner
73 Double_t fMinimalXYZMax[3]; /// interior box upper corner
74 Double_t fMinimumWall; /// minimum distance around (XYZmin,XYZmax)
75 Double_t fInclusionXYZMin[3]; /// box within which events are always
76 Double_t fInclusionXYZMax[3]; /// accepted
77 Double_t fDeDx; /// how to scale from energy to distance
78 Bool_t fExpandInclusion; /// expand from minimal or inclusion box?
79
80 mutable FidShape* fRockBoxShape; /// shape changes for every nu ray
81
82 const ROOTGeomAnalyzer* fROOTGeom; // ref! only (for coordinate transforms, units)
83
84 // values calculated during BeginPSList():
85 mutable RayIntercept fInterceptRock; // current intercept parameters
86
87};
88
89} // geometry namespace
90} // genie namespace
91
92#endif // _GEOM_VOL_SELECTOR_ROCKBOX_H_
Some simple volumes that know how to calculate where a ray intercepts them.
Definition FidShape.h:90
void SetRockBoxInclusion(Double_t *xyzmin, Double_t *xyzmax)
Bool_t fExpandInclusion
how to scale from energy to distance
FidShape * fRockBoxShape
expand from minimal or inclusion box?
Double_t fInclusionXYZMax[3]
box within which events are always
Double_t fInclusionXYZMin[3]
minimum distance around (XYZmin,XYZmax)
Double_t fMinimalXYZMax[3]
interior box lower corner
Double_t fMinimumWall
interior box upper corner
void TrimSegment(PathSegment &segment) const
void BeginPSList(const PathSegmentList *untrimmed) const
virtual void ConvertShapeMaster2Top(const ROOTGeomAnalyzer *rgeom)
void SetRockBoxMinimal(Double_t *xyzmin, Double_t *xyzmax)
const ROOTGeomAnalyzer * fROOTGeom
shape changes for every nu ray
Object to be filled with the neutrino path-segments representing geometry volume steps (generally bou...
A ROOT/GEANT4 geometry driver.
GENIE geometry drivers.
THE MAIN GENIE PROJECT NAMESPACE
Definition AlgCmp.h:25