source: trunk/source/global/management/include/G4UserLimits.hh @ 1347

Last change on this file since 1347 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 4.5 KB
Line 
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: G4UserLimits.hh,v 1.9 2006/06/29 19:03:28 gunter Exp $
28// GEANT4 tag $Name: geant4-09-04-beta-01 $
29//
30//
31// class G4UserLimits
32//
33// Class description:
34//
35// Simple placeholder for user Step limitations
36// In order to activate these limitations, users need to register
37// their "special" processes to each particle they want.
38// Sample processes below can be found under processes/transportation
39//   MaxAllowedStep    : UserStepLimit
40//   other limitation  : UserSpecialCuts
41// In addition, users can add their own Step limitations by creating
42// new class derived from G4UserLimits. In these case, fType member
43// is supposed to be used to identify class.
44// 
45// Author: Paul Kent August 96
46//
47// 01-11-97: change GetMaxAllowedStep(), Hisaya Kurashige
48// 08-04-98: new data members, mma
49// 02-16-00: add fType member and accessors, Hisaya Kurashige
50//
51#ifndef G4USERLIMITS_HH
52#define G4USERLIMITS_HH
53
54#include "globals.hh"
55
56class G4Track;
57
58class G4UserLimits
59{
60public:  // with description
61
62  G4UserLimits(G4double ustepMax = DBL_MAX,
63               G4double utrakMax = DBL_MAX,
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();
74
75public:  // with description
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&);
84  virtual G4double GetUserMinEkine(const G4Track&);
85  virtual G4double GetUserMinRange(const G4Track&);
86 
87  virtual void SetMaxAllowedStep(G4double ustepMax);   
88  virtual void SetUserMaxTrackLength(G4double utrakMax);
89  virtual void SetUserMaxTime(G4double utimeMax);
90  virtual void SetUserMinEkine(G4double uekinMin);
91  virtual void SetUserMinRange(G4double urangMin);
92
93  const G4String & GetType() const;
94  void  SetType(const G4String& type);
95  // Set/Get type name for UserLimits.
96  // This type member is supposed to be used to check real class types for
97  // each concrete instantiation of G4UserLimits. In other words, users who
98  // use special classes derived from this base class should name their class
99  // with a proper identifier. 
100 
101protected:  // with description
102
103  G4double fMaxStep;        // max allowed Step size in this volume
104  G4double fMaxTrack;       // max total track length
105  G4double fMaxTime;        // max time
106  G4double fMinEkine;       // min kinetic energy  (only for charged particles)
107  G4double fMinRange;       // min remaining range (only for charged particles)
108
109  G4String fType;           // type name
110};
111
112#include "G4UserLimits.icc"
113
114#endif
Note: See TracBrowser for help on using the repository browser.