ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4UCNBoundaryProcess.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4UCNBoundaryProcess.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 //
30 // Ultra Cold Neutron (UCN) Boundary Process Class Definition
32 //
33 // File: G4UCNBoundaryProcess.hh
34 // Description: Discrete Process -- Boundary Process of UCN
35 // Version: 1.0
36 // Created: 2014-06-04
37 // Author: Peter Gumplinger
38 // Adopted from: UCNMaterialBoundary by Peter Fierlinger 4.9.2004
39 // Updated:
40 // mail: gum@triumf.ca
41 //
43 
44 #ifndef G4UCNBOUNDARYPROCESS_HH
45 #define G4UCNBOUNDARYPROCESS_HH 1
46 
48 // Includes
50 
51 #include "G4VDiscreteProcess.hh"
52 
53 #include "G4Neutron.hh"
54 
56 
58 
59 // Class Description:
60 // Discrete Process -- Boundary Process of Ultra Cold Neutrons.
61 // Reflects/Absorpts UCN at boundaries.
62 // Class inherits publicly from G4VDiscreteProcess.
63 // Class Description - End:
64 
66 // Class Definition
68 
69 
80  };
81 
83 {
84 
85 public:
86 
88  // Constructors and Destructor
90 
91  G4UCNBoundaryProcess(const G4String& processName = "UCNBoundaryProcess",
92  G4ProcessType type = fUCN);
93  virtual ~G4UCNBoundaryProcess();
94 
95 private:
96 
98 
100  // Operators
102 
104 
105 public:
106 
108  // Methods
110 
111  G4bool IsApplicable(const G4ParticleDefinition& aParticleType);
112  // Returns true -> 'is applicable' only for an UCN.
113 
114  G4double GetMeanFreePath(const G4Track& aTrack,
115  G4double ,
117 
118  G4VParticleChange* PostStepDoIt(const G4Track& aTrack,
119  const G4Step& aStep);
120 
121 private:
122 
124 
126 
128 
130 
133 
134  // the G4UCNMaterialPropertiesTable of PreStepPoint
136  // the G4UCNMaterialPropertiesTable of PostStepPoint
138 
141 
143  // Methods
145 
147 
149 
151 
153 
155 
157 
159 
160 public:
161 
164  G4double , G4double );
167  G4double , G4double , G4double& );
168 
169 private:
170 
175 
177  G4ThreeVector );
178 
179  void BoundaryProcessVerbose() const;
180 
181  // Invoke SD for post step point if the photon is 'detected'
182  G4bool InvokeSD(const G4Step* step);
183 
184 private:
185 
193 
195 
196 public:
197 
198  void SetMicroRoughness(G4bool );
200 
202 
203  void BoundaryProcessSummary() const;
204 
207 
210 
212  G4double GetPhi_o() {return fphi_o;};
213 
214 };
215 
217 // Inline methods
219 
220 inline G4bool
222 {
223  return ( &aParticleType == G4Neutron::NeutronDefinition() );
224 }
225 
226 inline
228 {
229  return theStatus;
230 }
231 
232 inline
234 {
235  // Returns true for Energy > Fermi Potential Difference
236 
237  return (Energy > FermiPotDiff);
238 }
239 
240 inline
242 {
244 }
245 
246 inline
248 {
250 }
251 
252 #endif /* G4UCNBOUNDARYPROCESS_HH */