Geant4 11.1.1
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:
55
58
59 void Scan();
60 // The main entry point which triggers ray tracing.
61 // This method is available only if Geant4 is in Idle state.
62
63 inline void SetEyePosition(const G4ThreeVector& val) { eyePosition = val; }
64 inline G4ThreeVector GetEyePosition() const { return eyePosition; }
65 inline void SetNTheta(G4int val) { nTheta = val; }
66 inline G4int GetNTheta() const { return nTheta; }
67 inline void SetThetaMin(G4double val) { thetaMin = val; }
68 inline G4double GetThetaMin() const { return thetaMin; }
69 inline void SetThetaSpan(G4double val) { thetaSpan = val; }
70 inline G4double GetThetaSpan() const { return thetaSpan; }
71 inline void SetNPhi(G4int val) { nPhi = val; }
72 inline G4int GetNPhi() const { return nPhi; }
73 inline void SetPhiMin(G4double val) { phiMin = val; }
74 inline G4double GetPhiMin() const { return phiMin; }
75 inline void SetPhiSpan(G4double val) { phiSpan = val; }
76 inline G4double GetPhiSpan() const { return phiSpan; }
77 inline void SetRegionSensitive(G4bool val = true) { regionSensitive = val; }
78 inline G4bool GetRegionSensitive() const { return regionSensitive; }
79 G4bool SetRegionName(const G4String& val);
80 inline const G4String& GetRegionName() const { return regionName; }
81
82 private:
83
84 void DoScan();
85 // Event loop
86
87 void StoreUserActions();
88 void RestoreUserActions();
89 // Store and restore user action classes if defined.
90
91 private:
92
93 G4RayShooter* theRayShooter = nullptr;
94 G4MatScanMessenger* theMessenger = nullptr;
95
96 G4EventManager* theEventManager = nullptr;
97
98 G4UserEventAction* theUserEventAction = nullptr;
99 G4UserStackingAction* theUserStackingAction = nullptr;
100 G4UserTrackingAction* theUserTrackingAction = nullptr;
101 G4UserSteppingAction* theUserSteppingAction = nullptr;
102
103 G4UserEventAction* theMatScannerEventAction = nullptr;
104 G4UserStackingAction* theMatScannerStackingAction = nullptr;
105 G4UserTrackingAction* theMatScannerTrackingAction = nullptr;
106 G4MSSteppingAction* theMatScannerSteppingAction = nullptr;
107
108 G4ThreeVector eyePosition;
109 G4int nTheta = 91;
110 G4double thetaMin = 0.0;
111 G4double thetaSpan = 0.0;
112 G4int nPhi = 37;
113 G4double phiMin = 0.0;
114 G4double phiSpan = 0.0;
115
116 G4ThreeVector eyeDirection;
117
118 G4bool regionSensitive = false;
119 G4String regionName = "notDefined";
120 G4Region* theRegion = nullptr;
121};
122
123#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)
G4int GetNPhi() const
G4ThreeVector GetEyePosition() const
G4double GetPhiMin() const
const G4String & GetRegionName() const
G4int GetNTheta() const
G4double GetPhiSpan() const
void SetNTheta(G4int val)