117 {
118 if ( isInitialised ) return;
119
120 theParticle = part;
121
122 if ( part == bpart || part == G4Proton::Proton() ) theBaseParticle = 0;
123 else if ( bpart == 0 ) theBaseParticle = G4Proton::Proton();
124 else theBaseParticle = bpart;
125
126 SetBaseParticle( theBaseParticle );
127 SetSecondaryParticle( G4Electron::Electron() );
128 mass = theParticle->GetPDGMass();
129 ratio = electron_mass_c2 / mass;
130
131 G4VEmModel* em = new G4BraggModel();
132 em->SetLowEnergyLimit( 0.1 * keV );
133 eth = 2.0 * MeV * mass / proton_mass_c2;
134 em->SetHighEnergyLimit( eth );
135
136 flucModel = new G4UniversalFluctuation();
137
138 AddEmModel( 1, em, flucModel );
139 G4VEmModel* em1 = new G4BetheBlochModel();
140 em1->SetLowEnergyLimit( eth );
141 em1->SetHighEnergyLimit( 100.0 * TeV );
142 AddEmModel( 2, em1, flucModel );
143
144 SetStepFunction( 0.2, 1.0 * mm );
145
146 isInitialised = true;
147}