GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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-2024, 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 
32 using namespace std;
33 
34 namespace genie {
35 namespace geometry {
36 
38 
39 public :
41  virtual ~GeomVolSelectorRockBox();
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 
68 protected:
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
GENIE Interface for user-defined volume selector functors Trim path segments based on the intersectio...
Object to be filled with the neutrino path-segments representing geometry volume steps (generally bou...
Double_t fMinimumWall
interior box upper corner
GENIE Interface for limiting vertex selection in the rock to a volume that depends (in part) on the n...
FidShape * fRockBoxShape
expand from minimal or inclusion box?
A ROOT/GEANT4 geometry driver.
const ROOTGeomAnalyzer * fROOTGeom
shape changes for every nu ray
Bool_t fExpandInclusion
how to scale from energy to distance