Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // G4UserLimits << 26 // >> 27 // $Id: G4UserLimits.hh,v 1.9 2006/06/29 19:03:28 gunter Exp $ >> 28 // GEANT4 tag $Name: geant4-09-02-patch-03 $ >> 29 // >> 30 // >> 31 // class G4UserLimits 27 // 32 // 28 // Class description: 33 // Class description: 29 // 34 // 30 // Simple placeholder for user Step limitation 35 // Simple placeholder for user Step limitations 31 // In order to activate these limitations, use 36 // In order to activate these limitations, users need to register 32 // their "special" processes to each particle << 37 // their "special" processes to each particle they want. 33 // Sample processes below can be found under p << 38 // Sample processes below can be found under processes/transportation 34 // MaxAllowedStep : UserStepLimit 39 // MaxAllowedStep : UserStepLimit 35 // other limitation : UserSpecialCuts 40 // other limitation : UserSpecialCuts 36 // In addition, users can add their own Step l << 41 // In addition, users can add their own Step limitations by creating 37 // a new class derived from G4UserLimits. In t << 42 // new class derived from G4UserLimits. In these case, fType member 38 // is supposed to be used to identify the clas << 43 // is supposed to be used to identify class. 39 << 44 // 40 // Author: Paul Kent, August 1996 << 45 // Author: Paul Kent August 96 41 // Revisions: << 46 // 42 // - 01-11-1997, H.Kurashige: changed GetMaxAl << 47 // 01-11-97: change GetMaxAllowedStep(), Hisaya Kurashige 43 // - 08-04-1998: M.Maire: new data members << 48 // 08-04-98: new data members, mma 44 // ------------------------------------------- << 49 // 02-16-00: add fType member and accessors, Hisaya Kurashige >> 50 // 45 #ifndef G4USERLIMITS_HH 51 #ifndef G4USERLIMITS_HH 46 #define G4USERLIMITS_HH 1 << 52 #define G4USERLIMITS_HH 47 53 48 #include "globals.hh" 54 #include "globals.hh" 49 55 50 class G4Track; 56 class G4Track; 51 57 52 class G4UserLimits 58 class G4UserLimits 53 { 59 { 54 public: << 60 public: // with description 55 G4UserLimits(G4double ustepMax = DBL_MAX, G4 << 56 G4double utimeMax = DBL_MAX, G4 << 57 G4double urangMin = 0.); << 58 G4UserLimits(const G4String& type, G4double << 59 G4double utrakMax = DBL_MAX, G4 << 60 G4double uekinMin = 0., G4doubl << 61 virtual ~G4UserLimits(); << 62 61 63 virtual G4double GetMaxAllowedStep(const G4T << 62 G4UserLimits(G4double ustepMax = DBL_MAX, 64 // If a logical volume has a G4UserLimits ob << 63 G4double utrakMax = DBL_MAX, 65 // be limited as shorter than MaxAllowedStep << 64 G4double utimeMax = DBL_MAX, >> 65 G4double uekinMin = 0., >> 66 G4double urangMin = 0. ); >> 67 G4UserLimits(const G4String& type, >> 68 G4double ustepMax = DBL_MAX, >> 69 G4double utrakMax = DBL_MAX, >> 70 G4double utimeMax = DBL_MAX, >> 71 G4double uekinMin = 0., >> 72 G4double urangMin = 0. ); >> 73 virtual ~G4UserLimits(); 66 74 67 virtual G4double GetUserMaxTrackLength(const << 75 public: // with description 68 virtual G4double GetUserMaxTime(const G4Trac << 76 >> 77 virtual G4double GetMaxAllowedStep(const G4Track&); >> 78 // If a Logical Volume has a G4UserLimits object, the Step length can >> 79 // be limited as shorter than MaxAllowedStep in the volume. >> 80 >> 81 // >> 82 virtual G4double GetUserMaxTrackLength(const G4Track&) ; >> 83 virtual G4double GetUserMaxTime (const G4Track&); 69 virtual G4double GetUserMinEkine(const G4Tra 84 virtual G4double GetUserMinEkine(const G4Track&); 70 virtual G4double GetUserMinRange(const G4Tra 85 virtual G4double GetUserMinRange(const G4Track&); 71 << 86 72 virtual void SetMaxAllowedStep(G4double uste << 87 virtual void SetMaxAllowedStep(G4double ustepMax); 73 virtual void SetUserMaxTrackLength(G4double 88 virtual void SetUserMaxTrackLength(G4double utrakMax); 74 virtual void SetUserMaxTime(G4double utimeMa 89 virtual void SetUserMaxTime(G4double utimeMax); 75 virtual void SetUserMinEkine(G4double uekinM 90 virtual void SetUserMinEkine(G4double uekinMin); 76 virtual void SetUserMinRange(G4double urangM 91 virtual void SetUserMinRange(G4double urangMin); 77 92 78 const G4String& GetType() const; << 93 const G4String & GetType() const; 79 void SetType(const G4String& type); << 94 void SetType(const G4String& type); 80 // Set/Get type name for UserLimits. 95 // Set/Get type name for UserLimits. 81 // This type member is supposed to be used t 96 // This type member is supposed to be used to check real class types for 82 // each concrete instantiation of G4UserLimi 97 // each concrete instantiation of G4UserLimits. In other words, users who 83 // use special classes derived from this bas << 98 // use special classes derived from this base class should name their class 84 // class with a proper identifier << 99 // with a proper identifier. 85 << 100 86 protected: << 101 protected: // with description 87 G4double fMaxStep = 0.; // max allowed Ste << 102 88 G4double fMaxTrack = 0.; // max total track << 103 G4double fMaxStep; // max allowed Step size in this volume 89 G4double fMaxTime = 0.; // max time << 104 G4double fMaxTrack; // max total track length 90 G4double fMinEkine = 0.; // min kinetic ene << 105 G4double fMaxTime; // max time 91 G4double fMinRange = 0.; // min remaining r << 106 G4double fMinEkine; // min kinetic energy (only for charged particles) >> 107 G4double fMinRange; // min remaining range (only for charged particles) 92 108 93 G4String fType; // type name << 109 G4String fType; // type name 94 }; 110 }; 95 111 96 #include "G4UserLimits.icc" 112 #include "G4UserLimits.icc" 97 113 98 #endif 114 #endif 99 115