Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4NormalNavigation.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//
27// $Id$
28//
29//
30// class G4NormalNavigation
31//
32// Class description:
33//
34// Utility for navigation in volumes containing only G4PVPlacement
35// daughter volumes.
36
37// History:
38// - Created. Paul Kent, Aug 96
39// --------------------------------------------------------------------
40#ifndef G4NORMALNAVIGATION_HH
41#define G4NORMALNAVIGATION_HH
42
43#include <iomanip>
44
46#include "G4NavigationLogger.hh"
47#include "G4VPhysicalVolume.hh"
48#include "G4LogicalVolume.hh"
49#include "G4VSolid.hh"
50#include "G4ThreeVector.hh"
51#include "G4AuxiliaryNavServices.hh" // Needed for inline methods
52
54{
55 public: // with description
56
58 // Constructor
59
61 // Destructor
62
64 const G4VPhysicalVolume *blockedVol,
65 const G4int blockedNum,
66 const G4ThreeVector &globalPoint,
67 const G4ThreeVector* globalDirection,
68 const G4bool pLocatedOnEdge,
69 G4ThreeVector &localPoint);
70 // Search positioned volumes in mother at current top level of history
71 // for volume containing globalPoint. Do not test the blocked volume.
72 // If a containing volume is found, `stack' the new volume and return
73 // true, else return false (the point lying in the mother but not any
74 // of the daughters). localPoint = global point in local system on entry,
75 // point in new system on exit.
76
77 G4double ComputeStep( const G4ThreeVector &localPoint,
78 const G4ThreeVector &localDirection,
79 const G4double currentProposedStepLength,
80 G4double &newSafety,
81 G4NavigationHistory &history,
82 G4bool &validExitNormal,
83 G4ThreeVector &exitNormal,
84 G4bool &exiting,
85 G4bool &entering,
86 G4VPhysicalVolume *(*pBlockedPhysical),
87 G4int &blockedReplicaNo );
88
89 G4double ComputeSafety( const G4ThreeVector &globalpoint,
90 const G4NavigationHistory &history,
91 const G4double pMaxLength=DBL_MAX );
92
93 inline G4int GetVerboseLevel() const;
94 inline void SetVerboseLevel(G4int level);
95 // Get/Set Verbose(ness) level.
96 // [if level>0 && G4VERBOSE, printout can occur]
97
98 inline void CheckMode(G4bool mode);
99 // Run navigation in "check-mode", therefore using additional
100 // verifications and more strict correctness conditions.
101 // Is effective only with G4VERBOSE set.
102
103 private:
104
105 G4bool fCheck;
106 G4NavigationLogger* fLogger;
107};
108
109#include "G4NormalNavigation.icc"
110
111#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
void CheckMode(G4bool mode)
G4double ComputeStep(const G4ThreeVector &localPoint, const G4ThreeVector &localDirection, const G4double currentProposedStepLength, G4double &newSafety, G4NavigationHistory &history, G4bool &validExitNormal, G4ThreeVector &exitNormal, G4bool &exiting, G4bool &entering, G4VPhysicalVolume *(*pBlockedPhysical), G4int &blockedReplicaNo)
G4int GetVerboseLevel() const
G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4NavigationHistory &history, const G4double pMaxLength=DBL_MAX)
void SetVerboseLevel(G4int level)
G4bool LevelLocate(G4NavigationHistory &history, const G4VPhysicalVolume *blockedVol, const G4int blockedNum, const G4ThreeVector &globalPoint, const G4ThreeVector *globalDirection, const G4bool pLocatedOnEdge, G4ThreeVector &localPoint)
#define DBL_MAX
Definition: templates.hh:83