Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4MicroElecSurface.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// G4MicroElecSurface.hh,
28// 2020/05/20 P. Caron, C. Inguimbert are with ONERA [b]
29// Q. Gibaru is with CEA [a], ONERA [b] and CNES [c]
30// D. Lambert is with CEA [a]
31//
32// A part of this work has been funded by the French space agency(CNES[c])
33// [a] CEA, DAM, DIF - 91297 ARPAJON, France
34// [b] ONERA - DPHY, 2 avenue E.Belin, 31055 Toulouse, France
35// [c] CNES, 18 av.E.Belin, 31401 Toulouse CEDEX, France
36//
37// Based on the following publications
38//
39// - Q.Gibaru, C.Inguimbert, P.Caron, M.Raine, D.Lambert, J.Puech,
40// Geant4 physics processes for microdosimetry and secondary electron emission simulation :
41// Extension of MicroElec to very low energies and new materials
42// NIM B, 2020, in review.
43//
44//
45//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
46
47#ifndef G4MicroElecSurface_h
48#define G4MicroElecSurface_h 1
49
50/////////////
51// Includes
52/////////////
53
54#include "globals.hh"
55#include "templates.hh"
56#include "geomdefs.hh"
57#include "Randomize.hh"
59#include "G4RandomTools.hh"
60#include "G4RandomDirection.hh"
62#include "G4Step.hh"
63#include "G4VDiscreteProcess.hh"
64#include "G4DynamicParticle.hh"
65#include "G4Material.hh"
69
70// Class Description:
71// Discrete Process -- reflection/refraction at interfaces for electrons.
72// Class inherits publicly from G4VDiscreteProcess.
73// Class Description - End:
74
75/////////////////////
76// Class Definition
77/////////////////////
78
83
85{
86 public:
87 explicit G4MicroElecSurface(const G4String& processName = "MicroElecSurface",
89
90 ~G4MicroElecSurface() override;
91
92 G4bool IsApplicable(const G4ParticleDefinition& aParticleType) override;
93 // Returns true -> 'is applicable' only for an electron.
94
96
98 G4double ,
99 G4ForceCondition* condition) override;
100 // Returns infinity; i. e. the process does not limit the step,
101 // but sets the 'Forced' condition for the DoIt to be invoked at
102 // every step. However, only at a boundary will any action be
103 // taken.
104
105 G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
106 const G4Step& aStep) override;
107 // This is the method implementing boundary processes.
108
109 void BuildPhysicsTable(const G4ParticleDefinition&) override;
110 // Initialisation
111
113 // Returns the current status.
114
115 G4MicroElecSurface(const G4MicroElecSurface &right) = delete;
117
118private:
119 G4double GetIncidentAngle();
120 G4ThreeVector Reflexion(const G4StepPoint* PostStepPoint);
121
122 // private elements
123 typedef std::map<G4String, G4double, std::less<G4String> > WorkFunctionTable;
124 WorkFunctionTable tableWF; //Table of all materials simulated
125
126 G4ThreeVector oldMomentum, previousMomentum;
127 G4ThreeVector theGlobalNormal;
128 G4ThreeVector theFacetNormal;
129 const G4Material* material1;
130 const G4Material* material2;
131 G4MicroElecSurfaceStatus theStatus;
132
133 G4double theParticleMomentum;
134 G4double kCarTolerance;
135 G4double ekint, thetat, thetaft, energyThreshold, crossingProbability;
136 G4bool flag_franchissement_surface, flag_reflexion,flag_normal, teleportToDo, teleportDone, isInitialised;
137
138};
139
140#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
G4MicroElecSurfaceStatus
@ StepTooSmallSurf
@ SameMaterialSurf
@ UndefinedSurf
@ NotAtBoundarySurf
G4ProcessType
@ fElectromagnetic
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4MicroElecSurface & operator=(const G4MicroElecSurface &right)=delete
G4MicroElecSurfaceStatus GetStatus() const
G4double GetMeanFreePath(const G4Track &, G4double, G4ForceCondition *condition) override
G4MicroElecSurface(const G4MicroElecSurface &right)=delete
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
~G4MicroElecSurface() override
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4bool IsApplicable(const G4ParticleDefinition &aParticleType) override
Definition: G4Step.hh:62