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
G4UserLimits.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 G4UserLimits
31//
32// Class description:
33//
34// Simple placeholder for user Step limitations
35// In order to activate these limitations, users need to register
36// their "special" processes to each particle they want.
37// Sample processes below can be found under processes/transportation
38// MaxAllowedStep : UserStepLimit
39// other limitation : UserSpecialCuts
40// In addition, users can add their own Step limitations by creating
41// new class derived from G4UserLimits. In these case, fType member
42// is supposed to be used to identify class.
43//
44// Author: Paul Kent August 96
45//
46// 01-11-97: change GetMaxAllowedStep(), Hisaya Kurashige
47// 08-04-98: new data members, mma
48// 02-16-00: add fType member and accessors, Hisaya Kurashige
49//
50#ifndef G4USERLIMITS_HH
51#define G4USERLIMITS_HH
52
53#include "globals.hh"
54
55class G4Track;
56
58{
59public: // with description
60
62 G4double utrakMax = DBL_MAX,
63 G4double utimeMax = DBL_MAX,
64 G4double uekinMin = 0.,
65 G4double urangMin = 0. );
67 G4double ustepMax = DBL_MAX,
68 G4double utrakMax = DBL_MAX,
69 G4double utimeMax = DBL_MAX,
70 G4double uekinMin = 0.,
71 G4double urangMin = 0. );
72 virtual ~G4UserLimits();
73
74public: // with description
75
77 // If a Logical Volume has a G4UserLimits object, the Step length can
78 // be limited as shorter than MaxAllowedStep in the volume.
79
80 //
85
86 virtual void SetMaxAllowedStep(G4double ustepMax);
87 virtual void SetUserMaxTrackLength(G4double utrakMax);
88 virtual void SetUserMaxTime(G4double utimeMax);
89 virtual void SetUserMinEkine(G4double uekinMin);
90 virtual void SetUserMinRange(G4double urangMin);
91
92 const G4String & GetType() const;
93 void SetType(const G4String& type);
94 // Set/Get type name for UserLimits.
95 // This type member is supposed to be used to check real class types for
96 // each concrete instantiation of G4UserLimits. In other words, users who
97 // use special classes derived from this base class should name their class
98 // with a proper identifier.
99
100protected: // with description
101
102 G4double fMaxStep; // max allowed Step size in this volume
103 G4double fMaxTrack; // max total track length
104 G4double fMaxTime; // max time
105 G4double fMinEkine; // min kinetic energy (only for charged particles)
106 G4double fMinRange; // min remaining range (only for charged particles)
107
108 G4String fType; // type name
109};
110
111#include "G4UserLimits.icc"
112
113#endif
double G4double
Definition: G4Types.hh:64
G4String fType
G4double fMaxTime
virtual G4double GetUserMinEkine(const G4Track &)
virtual void SetUserMinRange(G4double urangMin)
virtual G4double GetUserMinRange(const G4Track &)
G4double fMaxStep
G4double fMinRange
virtual ~G4UserLimits()
void SetType(const G4String &type)
virtual G4double GetMaxAllowedStep(const G4Track &)
const G4String & GetType() const
virtual void SetMaxAllowedStep(G4double ustepMax)
virtual void SetUserMinEkine(G4double uekinMin)
G4double fMinEkine
virtual void SetUserMaxTime(G4double utimeMax)
G4UserLimits(const G4String &type, G4double ustepMax=DBL_MAX, G4double utrakMax=DBL_MAX, G4double utimeMax=DBL_MAX, G4double uekinMin=0., G4double urangMin=0.)
virtual G4double GetUserMaxTrackLength(const G4Track &)
virtual G4double GetUserMaxTime(const G4Track &)
G4double fMaxTrack
G4UserLimits(G4double ustepMax=DBL_MAX, G4double utrakMax=DBL_MAX, G4double utimeMax=DBL_MAX, G4double uekinMin=0., G4double urangMin=0.)
virtual void SetUserMaxTrackLength(G4double utrakMax)
#define DBL_MAX
Definition: templates.hh:83