270 {
if (TotalSigmaTableAreBuilt)
return;
277 for (
size_t i=0; i<listOfAdjointEMModel.size();i++){
278 listSigmaTableForAdjointModelScatProjToProj[i]->clearAndDestroy();
279 listSigmaTableForAdjointModelProdToProj[i]->clearAndDestroy();
281 listSigmaTableForAdjointModelScatProjToProj[i]->push_back(
new G4PhysicsLogVector(Tmin, Tmax, nbins));
282 listSigmaTableForAdjointModelProdToProj[i]->push_back(
new G4PhysicsLogVector(Tmin, Tmax, nbins));
288 for (
size_t i=0;i<theListOfAdjointParticlesInAction.size();i++){
290 DefineCurrentParticle(thePartDef);
291 theTotalForwardSigmaTableVector[i]->clearAndDestroy();
292 theTotalAdjointSigmaTableVector[i]->clearAndDestroy();
293 EminForFwdSigmaTables[i].clear();
294 EminForAdjSigmaTables[i].clear();
295 EkinofFwdSigmaMax[i].clear();
296 EkinofAdjSigmaMax[i].clear();
326 for (
size_t k=0; k<listOfForwardEmProcess[i]->size(); k++){
327 totCS+=(*listOfForwardEmProcess[i])[k]->GetLambda(e, couple);
329 for (
size_t k=0; k<listOfForwardEnergyLossProcess[i]->size(); k++){
330 if (thePartDef == theAdjIon) {
331 size_t mat_index = couple->
GetIndex();
332 G4VEmModel* currentModel = (*listOfForwardEnergyLossProcess[i])[k]->SelectModelForMaterial(e,mat_index);
334 (*listOfForwardEnergyLossProcess[i])[k]->SetDynamicMassCharge(massRatio,chargeSqRatio);
337 totCS+=(*listOfForwardEnergyLossProcess[i])[k]->GetLambda(e1, couple);
340 if (totCS>sigma_max){
347 if (totCS>0 && !Emin_found) {
348 EminForFwdSigmaTables[i].push_back(e);
356 EkinofFwdSigmaMax[i].push_back(e_sigma_max);
359 if(!Emin_found) EminForFwdSigmaTables[i].push_back(Tmax);
361 theTotalForwardSigmaTableVector[i]->push_back(aVector);
372 if (totCS>sigma_max){
378 if (totCS>0 && !Emin_found) {
379 EminForAdjSigmaTables[i].push_back(e);
385 EkinofAdjSigmaMax[i].push_back(e_sigma_max);
386 if(!Emin_found) EminForAdjSigmaTables[i].push_back(Tmax);
388 theTotalAdjointSigmaTableVector[i]->push_back(aVector1);
392 TotalSigmaTableAreBuilt =
true;
G4double ComputeTotalAdjointCS(const G4MaterialCutsCouple *aMatCutCouple, G4ParticleDefinition *aPart, G4double PrimEnergy)
size_t GetVectorLength() const
G4double GetLowEdgeEnergy(size_t binNumber) const
size_t GetTableSize() const
void PutValue(size_t index, G4double theValue)
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
static G4ProductionCutsTable * GetProductionCutsTable()
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
const G4Material * GetMaterial() const