00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00029
00030
00031
00032
00033
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef G4AdjointhIonisationModel_h
00048 #define G4AdjointhIonisationModel_h 1
00049
00050 #include "globals.hh"
00051 #include "G4DynamicParticle.hh"
00052 #include "G4ParticleDefinition.hh"
00053 #include "G4MaterialCutsCouple.hh"
00054 #include "G4Material.hh"
00055 #include "G4Element.hh"
00056 #include "G4ElementVector.hh"
00057 #include "Randomize.hh"
00058 #include "G4ParticleDefinition.hh"
00059 #include "G4VEmModel.hh"
00060 #include "G4Electron.hh"
00061 #include "G4Gamma.hh"
00062 #include "G4ProductionCutsTable.hh"
00063 #include "G4VEmAdjointModel.hh"
00064 class G4PhysicsTable;
00065 class G4Region;
00066 class G4VParticleChange;
00067 class G4ParticleChange;
00068 class G4Track;
00069 class G4AdjointCSMatrix;
00070
00071
00072 class G4AdjointhIonisationModel: public G4VEmAdjointModel
00073 {
00074
00075 public:
00076
00077 G4AdjointhIonisationModel(G4ParticleDefinition* projectileDefinition);
00078
00079 virtual ~G4AdjointhIonisationModel();
00080
00081 virtual void SampleSecondaries(const G4Track& aTrack,
00082 G4bool IsScatProjToProjCase,
00083 G4ParticleChange* fParticleChange);
00084 void RapidSampleSecondaries(const G4Track& aTrack,
00085 G4bool IsScatProjToProjCase,
00086 G4ParticleChange* fParticleChange);
00087 virtual G4double DiffCrossSectionPerAtomPrimToSecond(
00088 G4double kinEnergyProj,
00089 G4double kinEnergyProd,
00090 G4double Z,
00091 G4double A = 0.);
00092
00093 virtual G4double AdjointCrossSection(const G4MaterialCutsCouple* aCouple,
00094 G4double primEnergy,
00095 G4bool IsScatProjToProjCase);
00096
00097
00098
00099
00100 virtual G4double GetSecondAdjEnergyMaxForScatProjToProjCase(G4double PrimAdjEnergy);
00101 virtual G4double GetSecondAdjEnergyMinForScatProjToProjCase(G4double PrimAdjEnergy,G4double Tcut=0);
00102 virtual G4double GetSecondAdjEnergyMaxForProdToProjCase(G4double PrimAdjEnergy);
00103 virtual G4double GetSecondAdjEnergyMinForProdToProjCase(G4double PrimAdjEnergy);
00104
00105
00106 private:
00107
00108
00109 void DefineProjectileProperty();
00110
00111
00112 G4double mass;
00113 G4double tlimit;
00114 G4double spin;
00115 G4double magMoment2;
00116 G4double chargeSquare;
00117 G4double ratio, ratio2;
00118 G4double one_plus_ratio_2;
00119 G4double formfact;
00120 G4bool isIon;
00121 G4double one_minus_ratio_2;
00122
00123
00124
00125 G4VEmModel* theBraggDirectEMModel;
00126
00127
00128
00129
00130
00131
00132
00133
00134 };
00135
00136
00137 #endif
00138