|
|
|||
File indexing completed on 2026-09-14 09:07:51
0001 // 0002 // ******************************************************************** 0003 // * License and Disclaimer * 0004 // * * 0005 // * The Geant4 software is copyright of the Copyright Holders of * 0006 // * the Geant4 Collaboration. It is provided under the terms and * 0007 // * conditions of the Geant4 Software License, included in the file * 0008 // * LICENSE and available at http://cern.ch/geant4/license . These * 0009 // * include a list of copyright holders. * 0010 // * * 0011 // * Neither the authors of this software system, nor their employing * 0012 // * institutes,nor the agencies providing financial support for this * 0013 // * work make any representation or warranty, express or implied, * 0014 // * regarding this software system or assume any liability for its * 0015 // * use. Please see the license in the file LICENSE and URL above * 0016 // * for the full disclaimer and the limitation of liability. * 0017 // * * 0018 // * This code implementation is the result of the scientific and * 0019 // * technical work of the GEANT4 collaboration. * 0020 // * By using, copying, modifying or distributing the software (or * 0021 // * any work based on the software) you agree to acknowledge its * 0022 // * use in resulting scientific publications, and indicate your * 0023 // * acceptance of all terms of the Geant4 Software license. * 0024 // ******************************************************************** 0025 // 0026 // G4ErrorPropagationNavigator 0027 // 0028 // Class Description: 0029 // 0030 // Class for performing double navigation in the detector geometry and 0031 // on the target surface for error propagation. It overloads ComputeStep() 0032 // and ComputeSafety() methods. 0033 0034 // Author: Pedro Arce (CIEMAT), September 2004 0035 // -------------------------------------------------------------------- 0036 #ifndef G4ErrorPropagationNavigator_hh 0037 #define G4ErrorPropagationNavigator_hh 1 0038 0039 #include "G4Navigator.hh" 0040 #include "G4ThreeVector.hh" 0041 0042 /** 0043 * @brief G4ErrorPropagationNavigator is a class for performing double 0044 * navigation in the detector geometry and on the target surface for error 0045 * propagation. It overloads ComputeStep() and ComputeSafety() methods. 0046 */ 0047 0048 class G4ErrorPropagationNavigator : public G4Navigator 0049 { 0050 public: 0051 0052 /** 0053 * Constructor and Destructor. 0054 */ 0055 G4ErrorPropagationNavigator() = default; 0056 ~G4ErrorPropagationNavigator() override = default; 0057 0058 /** 0059 * Calls the navigation in the detector geometry and then checks 0060 * if the distance to surface is smaller than the proposed step. 0061 * @param[in] pGlobalPoint The point in global coordinates system. 0062 * @param[in] pDirection The normalised vector direction. 0063 * @param[in] pCurrentProposedStepLength Current proposed step length. 0064 * @param[in,out] newSafety New safety. 0065 * @returns Length from current point to next boundary surface along 0066 * @p pDirection. 0067 */ 0068 G4double ComputeStep (const G4ThreeVector& pGlobalPoint, 0069 const G4ThreeVector& pDirection, 0070 const G4double pCurrentProposedStepLength, 0071 G4double &pNewSafety) override; 0072 0073 /** 0074 * Calls the navigation in the detector geometry and then checks 0075 * if the distance to surface is smaller than the proposed safety. 0076 * @param[in] globalpoint The point in global coordinates system. 0077 * The point must be within the current volume. 0078 * @param[in] pProposedMaxLength The proposed maximum length is used 0079 * to avoid volume safety calculations. 0080 * @param[in] keepState Flag to instruct keeping the state (default true) 0081 * to ensure minimum side effects from the call. 0082 * @returns Length from current point to closest boundary surface. 0083 * The value returned is usually an underestimate. 0084 */ 0085 G4double ComputeSafety(const G4ThreeVector& globalpoint, 0086 const G4double pProposedMaxLength = DBL_MAX, 0087 const G4bool keepState = true) override; 0088 0089 /** 0090 * Returns Exit Surface Normal and validity too. Can only be called if 0091 * the Navigator's last Step has crossed a volume geometrical boundary. 0092 * Normal points out of the volume exited and/or into the volume entered. 0093 * @param[in] point Point in global coordinates system to compare to. 0094 * @param[in,out] valid Flag indicating if normal is valid. 0095 * @returns A Exit Surface Normal vector and validity too. 0096 */ 0097 G4ThreeVector GetGlobalExitNormal(const G4ThreeVector& point, 0098 G4bool* valid) override; 0099 0100 /** 0101 * Computes the isotropic safety for 'Target'. 0102 * @param[in] pGlobalpoint Point in global coordinates system. 0103 * @returns The isotropic safety value. 0104 */ 0105 G4double TargetSafetyFromPoint( const G4ThreeVector& pGlobalpoint ); 0106 }; 0107 0108 #endif
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|