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