Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4MaterialScanner.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4MaterialScanner
27//
28// Class description:
29//
30// Utility class for scanning of materials through ray-tracing
31// in a detector setup.
32
33// Author: M.Asai, May 2006
34// --------------------------------------------------------------------
35#ifndef G4MaterialScanner_hh
36#define G4MaterialScanner_hh 1
37
38#include "G4ThreeVector.hh"
39#include "globals.hh"
40
41class G4Event;
42class G4EventManager;
49class G4RayShooter;
50class G4Region;
51
53{
54 public:
57
58 // The main entry point which triggers ray tracing.
59 // This method is available only if Geant4 is in Idle state.
60 void Scan();
61
62 inline void SetEyePosition(const G4ThreeVector& val) { eyePosition = val; }
63 inline G4ThreeVector GetEyePosition() const { return eyePosition; }
64 inline void SetNTheta(G4int val) { nTheta = val; }
65 inline G4int GetNTheta() const { return nTheta; }
66 inline void SetThetaMin(G4double val) { thetaMin = val; }
67 inline G4double GetThetaMin() const { return thetaMin; }
68 inline void SetThetaSpan(G4double val) { thetaSpan = val; }
69 inline G4double GetThetaSpan() const { return thetaSpan; }
70 inline void SetNPhi(G4int val) { nPhi = val; }
71 inline G4int GetNPhi() const { return nPhi; }
72 inline void SetPhiMin(G4double val) { phiMin = val; }
73 inline G4double GetPhiMin() const { return phiMin; }
74 inline void SetPhiSpan(G4double val) { phiSpan = val; }
75 inline G4double GetPhiSpan() const { return phiSpan; }
76 inline void SetRegionSensitive(G4bool val = true) { regionSensitive = val; }
77 inline G4bool GetRegionSensitive() const { return regionSensitive; }
78 G4bool SetRegionName(const G4String& val);
79 inline const G4String& GetRegionName() const { return regionName; }
80
81 private:
82 void DoScan();
83 // Event loop
84
85 void StoreUserActions();
86 void RestoreUserActions();
87 // Store and restore user action classes if defined.
88
89 private:
90 G4RayShooter* theRayShooter = nullptr;
91 G4MatScanMessenger* theMessenger = nullptr;
92
93 G4EventManager* theEventManager = nullptr;
94
95 G4UserEventAction* theUserEventAction = nullptr;
96 G4UserStackingAction* theUserStackingAction = nullptr;
97 G4UserTrackingAction* theUserTrackingAction = nullptr;
98 G4UserSteppingAction* theUserSteppingAction = nullptr;
99
100 G4UserEventAction* theMatScannerEventAction = nullptr;
101 G4UserStackingAction* theMatScannerStackingAction = nullptr;
102 G4UserTrackingAction* theMatScannerTrackingAction = nullptr;
103 G4MSSteppingAction* theMatScannerSteppingAction = nullptr;
104
105 G4ThreeVector eyePosition;
106 G4int nTheta = 91;
107 G4double thetaMin = 0.0;
108 G4double thetaSpan = 0.0;
109 G4int nPhi = 37;
110 G4double phiMin = 0.0;
111 G4double phiSpan = 0.0;
112
113 G4ThreeVector eyeDirection;
114
115 G4bool regionSensitive = false;
116 G4String regionName = "notDefined";
117 G4Region* theRegion = nullptr;
118};
119
120#endif
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
void SetNPhi(G4int val)
G4bool GetRegionSensitive() const
void SetThetaSpan(G4double val)
G4bool SetRegionName(const G4String &val)
G4double GetThetaMin() const
void SetRegionSensitive(G4bool val=true)
void SetThetaMin(G4double val)
G4double GetThetaSpan() const
void SetPhiMin(G4double val)
void SetEyePosition(const G4ThreeVector &val)
void SetPhiSpan(G4double val)
G4ThreeVector GetEyePosition() const
G4double GetPhiMin() const
const G4String & GetRegionName() const
G4int GetNTheta() const
G4double GetPhiSpan() const
void SetNTheta(G4int val)