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
G4ePolarizedIonisation.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// $Id$
27// -------------------------------------------------------------------
28//
29// GEANT4 Class header file
30//
31//
32// File name: G4ePolarizedIonisation
33//
34// Author: A.Schaelicke on base of Vladimir Ivanchenko code
35//
36// Creation date: 10.11.2005
37//
38// Modifications:
39//
40// 10-11-05, include polarization description (A.Schaelicke)
41// , create asymmetry table and determine interactionlength
42// , update polarized differential cross section
43//
44// 20-08-06, modified interface (A.Schaelicke)
45// 11-06-07, add PostStepGetPhysicalInteractionLength (A.Schalicke)
46//
47// Class Description:
48//
49// polarized version of G4eIonisation
50// ----------------------------------------------------------------------------
51// -------------------------------------------------------------------
52//
53
54#ifndef G4ePolarizedIonisation_h
55#define G4ePolarizedIonisation_h 1
56
58#include "G4Electron.hh"
59#include "G4Positron.hh"
60
61class G4Material;
65
67{
68
69public:
70
71 G4ePolarizedIonisation(const G4String& name = "pol-eIoni");
72
74
76
77 // Print out of the class parameters
78 virtual void PrintInfo();
79
80protected:
81
84
86 const G4Material*, G4double cut);
87
88
89 // for polarization
91 const G4Track& track,
92 G4double previousStepSize,
94 );
95
96 G4double GetMeanFreePath(const G4Track& track,
97 G4double previousStepSize,
99
100 virtual void BuildPhysicsTable(const G4ParticleDefinition&);
101
103 const G4MaterialCutsCouple* couple,
104 const G4ParticleDefinition& particle,
105 G4double cut,
106 G4double &tasm);
107
108protected:
109
111
112private:
113 G4ePolarizedIonisation & operator=(const G4ePolarizedIonisation &right);
115
116 G4ParticleDefinition* theElectron;
117 G4VEmFluctuationModel* flucModel;
119
120 G4bool isElectron;
121 G4bool isInitialised;
122
123 // for polarization:
124 G4ThreeVector theTargetPolarization;
125
126
127
128 G4PhysicsTable* theAsymmetryTable; // table for cross section assym.
129 G4PhysicsTable* theTransverseAsymmetryTable; // table for transverse cross section assym.
130};
131
132//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
133//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
134
136 const G4Material*,
137 G4double cut)
138{
139 G4double x = cut;
140 if(isElectron) x += cut;
141 return x;
142}
143
144//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
145
147{
148 return (&p == G4Electron::Electron() || &p == G4Positron::Positron());
149}
150//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
151
152#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
static G4Electron * Electron()
Definition: G4Electron.cc:94
static G4Positron * Positron()
Definition: G4Positron.cc:94
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition *, const G4ParticleDefinition *)
const G4ParticleDefinition * DefineBaseParticle(const G4ParticleDefinition *p)
virtual G4double MinPrimaryEnergy(const G4ParticleDefinition *, const G4Material *, G4double cut)
G4bool IsApplicable(const G4ParticleDefinition &p)
G4double ComputeAsymmetry(G4double energy, const G4MaterialCutsCouple *couple, const G4ParticleDefinition &particle, G4double cut, G4double &tasm)
G4double GetMeanFreePath(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)