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