Changeset 1315 for trunk/source/processes/electromagnetic/lowenergy/src
- Timestamp:
- Jun 18, 2010, 11:42:07 AM (14 years ago)
- Location:
- trunk/source/processes/electromagnetic/lowenergy/src
- Files:
-
- 126 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc
r1228 r1315 26 26 // 27 27 // $Id: G4AtomicDeexcitation.cc,v 1.11 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) … … 384 384 385 385 G4int numberOfPossibleAuger = 0; 386 numberOfPossibleAuger = anAugerTransition->AugerTransitionProbabilities(transitionRandomShellId)->size(); 387 388 386 389 387 G4bool foundFlag = false; 390 388 -
trunk/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc
r1228 r1315 26 26 // 27 27 // $Id: G4AtomicTransitionManager.cc,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4AugerTransition.cc
r819 r1315 97 97 { 98 98 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionEnergiesMap.find(startShellId); 99 100 if (shellId == augerTransitionEnergiesMap.end() ) 101 {G4Exception("G4AugerTransition: corresponding map element not found");} 102 99 103 const G4DataVector* dataSet = &(*shellId).second; 100 104 … … 103 107 } 104 108 105 // Returns the emission probabilities of the auger electrons, given th shell109 // Returns the emission probabilities of the auger electrons, given the shell 106 110 // from wich the transition electron cames from. 107 111 108 112 const G4DataVector* G4AugerTransition::AugerTransitionProbabilities(G4int startShellId) const 109 113 { 114 115 //debugging 116 //if (startShellId == 1){G4cout <<"OI!!!"<< G4endl;} 117 110 118 std::map<G4int,G4DataVector,std::less<G4int> >::const_iterator shellId = augerTransitionProbabilitiesMap.find(startShellId); 119 120 if (shellId == augerTransitionProbabilitiesMap.end() ) 121 {G4Exception("G4AugerTransition: corresponding map element not found");} 122 111 123 const G4DataVector* dataSet = &(*shellId).second; 124 // debugging purpose: 125 /* G4cout << "id: " << shellId->first << G4endl; 126 G4cout << "size:" << dataSet->size() << G4endl; 127 for (G4int i = 0; i < dataSet->size(); i++){ 128 G4cout << (dataSet[0])[i] << G4endl; 129 }*/ 112 130 return dataSet; 113 131 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc
r1228 r1315 25 25 // 26 26 // $Id: G4BremsstrahlungCrossSectionHandler.cc,v 1.12 2009/09/27 10:47:42 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc
r1228 r1315 26 26 // 27 27 // $Id: G4BremsstrahlungParameters.cc,v 1.20 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CompositeEMDataSet.cc,v 1.15 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecrease.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionChargeDecrease.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionChargeDecrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeDecreasePartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionChargeDecreasePartial.cc,v 1.3 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionChargeDecreasePartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncrease.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionChargeIncrease.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionChargeIncrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeIncreasePartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionChargeIncreasePartial.cc,v 1.3 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionChargeIncreasePartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferCH.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferCH.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionChargeTransferExp.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionChargeTransferExp.cc,v 1.6 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticChampion.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionElasticChampion.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherford.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionElasticScreenedRutherford.cc,v 1.1 2007/10/12 23:11:41 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordHE.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordHE.cc,v 1.5 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionElasticScreenedRutherfordHE.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionElasticScreenedRutherfordLE.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionElasticScreenedRutherfordLE.cc,v 1.5 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionElasticScreenedRutherfordLE.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBorn.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationBorn.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationBornPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationBornPartial.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationBornPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglou.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglou.cc,v 1.8 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationEmfietzoglou.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationEmfietzoglouPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationEmfietzoglouPartial.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationEmfietzoglouPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreen.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationMillerGreen.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionExcitationMillerGreenPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionHandler.cc,v 1.21 2009/09/27 10:47:42 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBorn.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionIonisationBorn.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionIonisationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornElectron.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornElectron.cc,v 1.2 2007/11/08 18:51:34 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionIonisationBornPartial.cc,v 1.6 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionIonisationBornPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartialElectron.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionIonisationBornPartialElectron.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRudd.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionIonisationRudd.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionIonisationRudd.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationRuddPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionIonisationRuddPartial.cc,v 1.5 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4CrossSectionIonisationRuddPartial.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionKill.cc
r1228 r1315 26 26 // 27 27 // $Id: G4CrossSectionKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampion.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampion.cc,v 1.2 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionPsCreationChampionPartial.cc
r1228 r1315 25 25 // 26 26 // $Id: G4CrossSectionPsCreationChampionPartial.cc,v 1.2 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNABornExcitationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNABornExcitationModel.cc,v 1. 7 2009/08/31 14:03:29sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNABornExcitationModel.cc,v 1.9 2010/03/27 11:32:41 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 40 40 :G4VEmModel(nam),isInitialised(false) 41 41 { 42 43 lowEnergyLimit = 500 * keV;44 highEnergyLimit = 100 * MeV;45 SetLowEnergyLimit(lowEnergyLimit);46 SetHighEnergyLimit(highEnergyLimit);47 48 42 verboseLevel= 0; 49 43 // Verbosity scale: … … 54 48 // 4 = entering in methods 55 49 56 //57 58 table = 0;59 60 //61 62 50 if( verboseLevel>0 ) 63 51 { 64 G4cout << "Born excitation model is constructed " << G4endl 65 << "Energy range: " 66 << lowEnergyLimit / keV << " keV - " 67 << highEnergyLimit / MeV << " MeV" 68 << G4endl; 52 G4cout << "Born excitation model is constructed " << G4endl; 69 53 } 70 54 … … 76 60 { 77 61 // Cross section 78 delete table; 79 } 80 81 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 82 83 void G4DNABornExcitationModel::Initialise(const G4ParticleDefinition* /*particle*/, 62 63 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos; 64 for (pos = tableData.begin(); pos != tableData.end(); ++pos) 65 { 66 G4DNACrossSectionDataSet* table = pos->second; 67 delete table; 68 } 69 70 } 71 72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 73 74 void G4DNABornExcitationModel::Initialise(const G4ParticleDefinition* particle, 84 75 const G4DataVector& /*cuts*/) 85 76 { … … 89 80 90 81 // Energy limits 91 92 if (LowEnergyLimit() < lowEnergyLimit) 93 { 94 G4cout << "G4DNABornExcitationModel: low energy limit increased from " << 95 LowEnergyLimit()/keV << " keV to " << lowEnergyLimit/keV << " keV" << G4endl; 96 SetLowEnergyLimit(lowEnergyLimit); 97 } 98 99 if (HighEnergyLimit() > highEnergyLimit) 100 { 101 G4cout << "G4DNABornExcitationModel: high energy limit decreased from " << 102 HighEnergyLimit()/MeV << " MeV to " << highEnergyLimit/MeV << " MeV" << G4endl; 103 SetHighEnergyLimit(highEnergyLimit); 104 } 105 106 // 107 108 if (table == 0) 109 { 110 table = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,(1e-22/3.343)*m*m ); 111 table->LoadData("dna/sigma_excitation_p_born"); 82 // Energy limits 83 84 G4String fileElectron("dna/sigma_excitation_e_born"); 85 G4String fileProton("dna/sigma_excitation_p_born"); 86 87 G4ParticleDefinition* electronDef = G4Electron::ElectronDefinition(); 88 G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); 89 90 G4String electron; 91 G4String proton; 92 93 G4double scaleFactor = (1.e-22 / 3.343) * m*m; 94 95 if (electronDef != 0) 96 { 97 electron = electronDef->GetParticleName(); 98 99 tableFile[electron] = fileElectron; 100 101 lowEnergyLimit[electron] = 9. * eV; 102 highEnergyLimit[electron] = 1. * MeV; 103 104 // Cross section 105 106 G4DNACrossSectionDataSet* tableE = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); 107 tableE->LoadData(fileElectron); 108 109 tableData[electron] = tableE; 110 111 } 112 else 113 { 114 G4Exception("G4DNABornExcitationModel::Initialise(): electron is not defined"); 115 } 116 117 if (protonDef != 0) 118 { 119 proton = protonDef->GetParticleName(); 120 121 tableFile[proton] = fileProton; 122 123 lowEnergyLimit[proton] = 500. * keV; 124 highEnergyLimit[proton] = 100. * MeV; 125 126 // Cross section 127 128 G4DNACrossSectionDataSet* tableP = new G4DNACrossSectionDataSet(new G4LogLogInterpolation, eV,scaleFactor ); 129 tableP->LoadData(fileProton); 130 131 tableData[proton] = tableP; 132 133 } 134 else 135 { 136 G4Exception("G4DNABornExcitationModel::Initialise(): proton is not defined"); 137 } 138 139 if (particle==electronDef) 140 { 141 SetLowEnergyLimit(lowEnergyLimit[electron]); 142 SetHighEnergyLimit(highEnergyLimit[electron]); 143 } 144 145 if (particle==protonDef) 146 { 147 SetLowEnergyLimit(lowEnergyLimit[proton]); 148 SetHighEnergyLimit(highEnergyLimit[proton]); 112 149 } 113 150 … … 116 153 G4cout << "Born excitation model is initialized " << G4endl 117 154 << "Energy range: " 118 << LowEnergyLimit() / keV << " keV - " 119 << HighEnergyLimit() / MeV << " MeV " << G4endl; 120 } 155 << LowEnergyLimit() / eV << " eV - " 156 << HighEnergyLimit() / keV << " keV for " 157 << particle->GetParticleName() 158 << G4endl; 159 } 160 121 161 122 162 if(!isInitialised) … … 131 171 132 172 // InitialiseElementSelectors(particle,cuts); 133 134 // Test if water material 135 136 flagMaterialIsWater= false; 137 densityWater = 0; 138 139 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); 140 141 if(theCoupleTable) 142 { 143 G4int numOfCouples = theCoupleTable->GetTableSize(); 144 145 if(numOfCouples>0) 146 { 147 for (G4int i=0; i<numOfCouples; i++) 148 { 149 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i); 150 const G4Material* material = couple->GetMaterial(); 151 152 if (material->GetName() == "G4_WATER") 153 { 154 G4double density = material->GetAtomicNumDensityVector()[1]; 155 flagMaterialIsWater = true; 156 densityWater = density; 157 158 if (verboseLevel > 3) 159 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl; 160 } 161 162 } 163 164 } // if(numOfCouples>0) 165 166 } // if (theCoupleTable) 167 168 } 169 170 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 171 172 G4double G4DNABornExcitationModel::CrossSectionPerVolume(const G4Material*, 173 174 } 175 176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 177 178 G4double G4DNABornExcitationModel::CrossSectionPerVolume(const G4Material* material, 173 179 const G4ParticleDefinition* particleDefinition, 174 G4double k,180 G4double ekin, 175 181 G4double, 176 182 G4double) … … 179 185 G4cout << "Calling CrossSectionPerVolume() of G4DNABornExcitationModel" << G4endl; 180 186 187 if ( 188 particleDefinition != G4Proton::ProtonDefinition() 189 && 190 particleDefinition != G4Electron::ElectronDefinition() 191 ) 192 193 return 0; 194 181 195 // Calculate total cross section for model 182 196 183 G4double crossSection=0; 184 185 if (flagMaterialIsWater) 186 { 187 if (particleDefinition == G4Proton::ProtonDefinition()) 188 { 189 if (k >= lowEnergyLimit && k < highEnergyLimit) 197 G4double lowLim = 0; 198 G4double highLim = 0; 199 G4double sigma=0; 200 201 if (material->GetName() == "G4_WATER") 202 { 203 const G4String& particleName = particleDefinition->GetParticleName(); 204 205 std::map< G4String,G4double,std::less<G4String> >::iterator pos1; 206 pos1 = lowEnergyLimit.find(particleName); 207 if (pos1 != lowEnergyLimit.end()) 208 { 209 lowLim = pos1->second; 210 } 211 212 std::map< G4String,G4double,std::less<G4String> >::iterator pos2; 213 pos2 = highEnergyLimit.find(particleName); 214 if (pos2 != highEnergyLimit.end()) 215 { 216 highLim = pos2->second; 217 } 218 219 if (ekin >= lowLim && ekin < highLim) 220 { 221 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos; 222 pos = tableData.find(particleName); 223 224 if (pos != tableData.end()) 190 225 { 191 crossSection = table->FindValue(k); 226 G4DNACrossSectionDataSet* table = pos->second; 227 if (table != 0) 228 { 229 sigma = table->FindValue(ekin); 230 } 192 231 } 193 194 if (verboseLevel > 3) 232 else 195 233 { 196 G4cout << "---> Kinetic energy(keV)=" << k/keV << G4endl; 197 G4cout << " - Cross section per water molecule (cm^2)=" << crossSection/cm/cm << G4endl; 198 G4cout << " - Cross section per water molecule (cm^-1)=" << crossSection*densityWater/(1./cm) << G4endl; 199 } 234 G4Exception("G4DNABornExcitationModel::CrossSectionPerVolume: attempting to calculate cross section for wrong particle"); 235 } 200 236 } 201 } // if (flagMaterialIsWater) 202 203 return crossSection*densityWater; 237 238 if (verboseLevel > 3) 239 { 240 G4cout << "---> Kinetic energy(eV)=" << ekin/eV << G4endl; 241 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 242 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 243 } 244 245 } // if (waterMaterial) 246 247 return sigma*material->GetAtomicNumDensityVector()[1]; 248 204 249 205 250 } … … 219 264 G4double k = aDynamicParticle->GetKineticEnergy(); 220 265 221 G4int level = RandomSelect(k); 266 const G4String& particleName = aDynamicParticle->GetDefinition()->GetParticleName(); 267 268 G4int level = RandomSelect(k,particleName); 222 269 G4double excitationEnergy = waterStructure.ExcitationEnergy(level); 223 270 G4double newEnergy = k - excitationEnergy; … … 234 281 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 235 282 236 G4int G4DNABornExcitationModel::RandomSelect(G4double k )283 G4int G4DNABornExcitationModel::RandomSelect(G4double k, const G4String& particle) 237 284 { 238 285 G4int level = 0; 239 286 240 G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; 241 242 const size_t n(table->NumberOfComponents()); 243 size_t i(n); 244 G4double value = 0.; 245 246 while (i>0) 247 { 248 i--; 249 valuesBuffer[i] = table->GetComponent(i)->FindValue(k); 250 value += valuesBuffer[i]; 251 } 252 253 value *= G4UniformRand(); 254 255 i = n; 256 257 while (i > 0) 258 { 259 i--; 260 261 if (valuesBuffer[i] > value) 262 { 263 delete[] valuesBuffer; 264 return i; 287 std::map< G4String,G4DNACrossSectionDataSet*,std::less<G4String> >::iterator pos; 288 pos = tableData.find(particle); 289 290 if (pos != tableData.end()) 291 { 292 G4DNACrossSectionDataSet* table = pos->second; 293 294 if (table != 0) 295 { 296 G4double* valuesBuffer = new G4double[table->NumberOfComponents()]; 297 const size_t n(table->NumberOfComponents()); 298 size_t i(n); 299 G4double value = 0.; 300 301 while (i>0) 302 { 303 i--; 304 valuesBuffer[i] = table->GetComponent(i)->FindValue(k); 305 value += valuesBuffer[i]; 306 } 307 308 value *= G4UniformRand(); 309 310 i = n; 311 312 while (i > 0) 313 { 314 i--; 315 316 if (valuesBuffer[i] > value) 317 { 318 delete[] valuesBuffer; 319 return i; 320 } 321 value -= valuesBuffer[i]; 322 } 323 324 if (valuesBuffer) delete[] valuesBuffer; 325 265 326 } 266 value -= valuesBuffer[i];267 }268 269 if (valuesBuffer) delete[] valuesBuffer;270 327 } 328 else 329 { 330 G4Exception("G4DNABornExcitationModel::RandomSelect attempting to calculate cross section for wrong particle"); 331 } 271 332 return level; 272 333 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNABornIonisationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNABornIonisationModel.cc,v 1.1 4 2009/11/12 03:08:58sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNABornIonisationModel.cc,v 1.16 2010/03/26 18:10:43 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 239 239 // InitialiseElementSelectors(particle,cuts); 240 240 241 // Test if water material242 243 flagMaterialIsWater= false;244 densityWater = 0;245 246 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable();247 248 if(theCoupleTable)249 {250 G4int numOfCouples = theCoupleTable->GetTableSize();251 252 if(numOfCouples>0)253 {254 for (G4int i=0; i<numOfCouples; i++)255 {256 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i);257 const G4Material* material = couple->GetMaterial();258 259 if (material->GetName() == "G4_WATER")260 {261 G4double density = material->GetAtomicNumDensityVector()[1];262 flagMaterialIsWater = true;263 densityWater = density;264 265 if (verboseLevel > 3)266 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl;267 }268 269 }270 271 } // if(numOfCouples>0)272 273 } // if (theCoupleTable)274 275 241 } 276 242 277 243 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 278 244 279 G4double G4DNABornIonisationModel::CrossSectionPerVolume(const G4Material* ,245 G4double G4DNABornIonisationModel::CrossSectionPerVolume(const G4Material* material, 280 246 const G4ParticleDefinition* particleDefinition, 281 247 G4double ekin, … … 300 266 G4double sigma=0; 301 267 302 if ( flagMaterialIsWater)268 if (material->GetName() == "G4_WATER") 303 269 { 304 270 const G4String& particleName = particleDefinition->GetParticleName(); … … 341 307 G4cout << "---> Kinetic energy(eV)=" << ekin/eV << G4endl; 342 308 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 343 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma* densityWater/(1./cm) << G4endl;309 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 344 310 } 345 311 346 312 } // if (waterMaterial) 347 313 348 return sigma* densityWater;314 return sigma*material->GetAtomicNumDensityVector()[1]; 349 315 350 316 } … … 429 395 G4DynamicParticle* dp = new G4DynamicParticle (G4Electron::Electron(),deltaDirection,secondaryKinetic) ; 430 396 fvect->push_back(dp); 431 /* 432 // creating neutral water molechule... 433 434 G4DNAGenericMoleculeManager *instance; 435 instance = G4DNAGenericMoleculeManager::Instance(); 436 G4ParticleDefinition* waterDef = NULL; 437 G4Molecule* water = instance->GetMolecule("H2O"); 438 waterDef = (G4ParticleDefinition*)water; 439 440 direction.set(0.,0.,0.); 441 442 //G4DynamicParticle* dynamicWater = new G4DynamicParticle(waterDef, direction, bindingEnergy); 443 G4DynamicMolecule* dynamicWater = new G4DynamicMolecule(water, direction, bindingEnergy); 444 445 446 //dynamicWater->RemoveElectron(ionizationShell, 1); 447 448 G4DynamicMolecule* dynamicWater2 = new G4DynamicMolecule(water, direction, bindingEnergy); 449 G4DynamicMolecule* dynamicWater3 = new G4DynamicMolecule(water, direction, bindingEnergy); 450 451 fvect->push_back(dynamicWater); 452 fvect->push_back(dynamicWater2); 453 fvect->push_back(dynamicWater3); 454 */ 397 455 398 } 456 399 … … 512 455 if (particleDefinition == G4Proton::ProtonDefinition()) 513 456 { 514 G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k - (waterStructure.IonisationEnergy(shell));457 G4double maximumKineticEnergyTransfer = 4.* (electron_mass_c2 / proton_mass_c2) * k; 515 458 516 459 G4double crossSectionMaximum = 0.; -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAChampionElasticModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAChampionElasticModel.cc,v 1.1 0 2009/11/03 15:04:25sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAChampionElasticModel.cc,v 1.12 2010/04/08 17:29:08 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 132 132 133 133 // For final state 134 134 135 135 char *path = getenv("G4LEDATA"); 136 136 … … 139 139 140 140 std::ostringstream eFullFileName; 141 eFullFileName << path << "/dna/sigmadiff_ elastic_e_champion.dat";141 eFullFileName << path << "/dna/sigmadiff_cumulated_elastic_e_champion.dat"; 142 142 std::ifstream eDiffCrossSection(eFullFileName.str().c_str()); 143 143 … … 151 151 double eDummy; 152 152 eDiffCrossSection>>tDummy>>eDummy; 153 153 154 154 // SI : mandatory eVecm initialization 155 155 156 if (tDummy != eTdummyVec.back()) 156 157 { … … 161 162 eDiffCrossSection>>eDiffCrossSectionData[tDummy][eDummy]; 162 163 163 // SI : only if not end of file reached !164 if (!eDiffCrossSection.eof()) eDiffCrossSectionData[tDummy][eDummy]*=scaleFactor;165 166 164 if (eDummy != eVecm[tDummy].back()) eVecm[tDummy].push_back(eDummy); 167 165 168 166 } 169 167 … … 197 195 // InitialiseElementSelectors(particle,cuts); 198 196 199 // Test if water material 200 201 flagMaterialIsWater= false; 202 densityWater = 0; 203 204 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); 205 206 if(theCoupleTable) 207 { 208 G4int numOfCouples = theCoupleTable->GetTableSize(); 209 210 if(numOfCouples>0) 211 { 212 for (G4int i=0; i<numOfCouples; i++) 213 { 214 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i); 215 const G4Material* material = couple->GetMaterial(); 216 217 if (material->GetName() == "G4_WATER") 218 { 219 G4double density = material->GetAtomicNumDensityVector()[1]; 220 flagMaterialIsWater = true; 221 densityWater = density; 222 223 if (verboseLevel > 3) 224 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl; 225 } 226 227 } 228 229 } // if(numOfCouples>0) 230 231 } // if (theCoupleTable) 232 233 } 234 235 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 236 237 G4double G4DNAChampionElasticModel::CrossSectionPerVolume(const G4Material*, 197 } 198 199 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 200 201 G4double G4DNAChampionElasticModel::CrossSectionPerVolume(const G4Material* material, 238 202 const G4ParticleDefinition* p, 239 203 G4double ekin, … … 248 212 G4double sigma=0; 249 213 250 if ( flagMaterialIsWater)214 if (material->GetName() == "G4_WATER") 251 215 { 252 216 const G4String& particleName = p->GetParticleName(); … … 279 243 G4cout << "---> Kinetic energy(eV)=" << ekin/eV << G4endl; 280 244 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 281 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma* densityWater/(1./cm) << G4endl;245 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 282 246 } 283 247 284 } // if (flagMaterialIsWater)248 } 285 249 286 return sigma* densityWater;250 return sigma*material->GetAtomicNumDensityVector()[1]; 287 251 } 288 252 … … 310 274 if (electronEnergy0>= killBelowEnergy && electronEnergy0 < highEnergyLimit) 311 275 { 276 312 277 G4double cosTheta = RandomizeCosTheta(electronEnergy0); 313 278 … … 334 299 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 335 300 336 G4double G4DNAChampionElasticModel::DifferentialCrossSection 337 (G4ParticleDefinition * particleDefinition, G4double k, G4double theta) 338 { 339 340 G4double sigma = 0.; 301 G4double G4DNAChampionElasticModel::Theta 302 (G4ParticleDefinition * particleDefinition, G4double k, G4double integrDiff) 303 { 304 G4double theta = 0.; 341 305 G4double valueT1 = 0; 342 306 G4double valueT2 = 0; … … 350 314 G4double xs22 = 0; 351 315 352 //SI : ensure the correct computation of cross section at the 180*deg limit353 if (theta==180.) theta=theta-1e-9;354 355 316 if (particleDefinition == G4Electron::ElectronDefinition()) 356 317 { … … 358 319 std::vector<double>::iterator t1 = t2-1; 359 320 360 std::vector<double>::iterator e12 = std::upper_bound(eVecm[(*t1)].begin(),eVecm[(*t1)].end(), theta);321 std::vector<double>::iterator e12 = std::upper_bound(eVecm[(*t1)].begin(),eVecm[(*t1)].end(), integrDiff); 361 322 std::vector<double>::iterator e11 = e12-1; 362 323 363 std::vector<double>::iterator e22 = std::upper_bound(eVecm[(*t2)].begin(),eVecm[(*t2)].end(), theta);324 std::vector<double>::iterator e22 = std::upper_bound(eVecm[(*t2)].begin(),eVecm[(*t2)].end(), integrDiff); 364 325 std::vector<double>::iterator e21 = e22-1; 365 326 … … 375 336 xs21 = eDiffCrossSectionData[valueT2][valueE21]; 376 337 xs22 = eDiffCrossSectionData[valueT2][valueE22]; 377 378 } 379 380 G4double xsProduct = xs11 * xs12 * xs21 * xs22; 381 382 if (xs11==0 || xs12==0 ||xs21==0 ||xs22==0) return (0.); 383 384 if (xsProduct != 0.) 385 { 386 sigma = QuadInterpolator( valueE11, valueE12, 338 } 339 340 if (xs11==0 && xs12==0 && xs21==0 && xs22==0) return (0.); 341 342 theta = QuadInterpolator ( valueE11, valueE12, 387 343 valueE21, valueE22, 388 344 xs11, xs12, 389 345 xs21, xs22, 390 346 valueT1, valueT2, 391 k, theta ); 392 } 393 394 return sigma; 347 k, integrDiff ); 348 349 return theta; 395 350 } 396 351 … … 411 366 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 412 367 368 G4double G4DNAChampionElasticModel::LinLinInterpolate(G4double e1, 369 G4double e2, 370 G4double e, 371 G4double xs1, 372 G4double xs2) 373 { 374 G4double d1 = xs1; 375 G4double d2 = xs2; 376 G4double value = (d1 + (d2 - d1)*(e - e1)/ (e2 - e1)); 377 return value; 378 } 379 380 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 381 413 382 G4double G4DNAChampionElasticModel::LogLogInterpolate(G4double e1, 414 383 G4double e2, … … 425 394 426 395 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 396 427 397 428 398 G4double G4DNAChampionElasticModel::QuadInterpolator(G4double e11, G4double e12, … … 433 403 G4double t, G4double e) 434 404 { 435 // Log-Log405 // Log-Log 436 406 /* 437 407 G4double interpolatedvalue1 = LogLogInterpolate(e11, e12, e, xs11, xs12); 438 408 G4double interpolatedvalue2 = LogLogInterpolate(e21, e22, e, xs21, xs22); 439 409 G4double value = LogLogInterpolate(t1, t2, t, interpolatedvalue1, interpolatedvalue2); 440 */ 441 442 // Lin-Log410 411 412 // Lin-Log 443 413 G4double interpolatedvalue1 = LinLogInterpolate(e11, e12, e, xs11, xs12); 444 414 G4double interpolatedvalue2 = LinLogInterpolate(e21, e22, e, xs21, xs22); 445 415 G4double value = LinLogInterpolate(t1, t2, t, interpolatedvalue1, interpolatedvalue2); 416 */ 417 418 // Lin-Lin 419 G4double interpolatedvalue1 = LinLinInterpolate(e11, e12, e, xs11, xs12); 420 G4double interpolatedvalue2 = LinLinInterpolate(e21, e22, e, xs21, xs22); 421 G4double value = LinLinInterpolate(t1, t2, t, interpolatedvalue1, interpolatedvalue2); 422 446 423 return value; 447 424 } … … 451 428 G4double G4DNAChampionElasticModel::RandomizeCosTheta(G4double k) 452 429 { 453 // ***** Similar method as for screened Rutherford scattering 454 455 G4int iMax=180; 456 G4double max=0; 457 G4double tmp=0; 458 459 // Look for maximum : 460 for (G4int i=0; i<iMax; i++) 461 { 462 tmp = DifferentialCrossSection(G4Electron::ElectronDefinition(),k/eV,G4double(i)*180./(iMax-1)); 463 if (tmp>max) max = tmp; 464 } 465 466 G4double oneOverMax=0; 467 if (max!=0) oneOverMax = 1./max; 468 469 G4double cosTheta = 0.; 470 G4double fCosTheta = 0.; 471 472 do 473 { 474 cosTheta = 2. * G4UniformRand() - 1.; 475 fCosTheta = oneOverMax * DifferentialCrossSection(G4Electron::ElectronDefinition(),k/eV,std::acos(cosTheta)*180./pi); 476 } 477 while (fCosTheta < G4UniformRand()); 478 479 if (verboseLevel > 3) 480 { 481 G4cout << "---> Cos(theta)=" << cosTheta << G4endl; 482 } 430 431 G4double integrdiff=0; 432 G4double uniformRand=G4UniformRand(); 433 integrdiff = uniformRand; 434 435 G4double theta=0.; 436 G4double cosTheta=0.; 437 theta = Theta(G4Electron::ElectronDefinition(),k/eV,integrdiff); 438 439 cosTheta= std::cos(theta*pi/180); 483 440 484 441 return cosTheta; -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAChargeDecrease.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAChargeDecrease.cc,v 1. 3 2009/03/04 13:28:49sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAChargeDecrease.cc,v 1.4 2010/03/18 16:36:48 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAChargeDecrease.hh" … … 72 72 G4String name = p->GetParticleName(); 73 73 74 if( name == "proton" || name == "alpha" || name == "alpha+" ) 74 if( name == "proton" ) 75 { 76 if(!Model()) SetModel(new G4DNADingfelderChargeDecreaseModel); 77 Model()->SetLowEnergyLimit(100*eV); 78 Model()->SetHighEnergyLimit(10*MeV); 79 80 AddEmModel(1, Model()); 81 } 82 83 if( name == "alpha" || name == "alpha+" ) 75 84 { 76 85 if(!Model()) SetModel(new G4DNADingfelderChargeDecreaseModel); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAChargeIncrease.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAChargeIncrease.cc,v 1. 3 2009/03/04 13:28:49sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAChargeIncrease.cc,v 1.4 2010/03/18 16:36:48 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAChargeIncrease.hh" … … 72 72 G4String name = p->GetParticleName(); 73 73 74 if( name == "hydrogen" || name =="alpha+" || name =="helium" ) 74 if( name == "hydrogen" ) 75 { 76 if(!Model()) SetModel(new G4DNADingfelderChargeIncreaseModel); 77 Model()->SetLowEnergyLimit(100*eV); 78 Model()->SetHighEnergyLimit(10*MeV); 79 80 AddEmModel(1, Model()); 81 } 82 83 if( name =="alpha+" || name =="helium" ) 75 84 { 76 85 if(!Model()) SetModel(new G4DNADingfelderChargeIncreaseModel); … … 80 89 AddEmModel(1, Model()); 81 90 } 91 82 92 83 93 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNACrossSectionDataSet.cc
r1228 r1315 27 27 28 28 // $Id: G4DNACrossSectionDataSet.cc,v 1.11 2009/11/12 10:05:30 sincerti Exp $ 29 // GEANT4 tag $Name: geant4-09-0 3$29 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 30 30 // 31 31 // Author: Riccardo Capra <capra@ge.infn.it> -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNADingfelderChargeDecreaseModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNADingfelderChargeDecreaseModel.cc,v 1. 6 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNADingfelderChargeDecreaseModel.cc,v 1.9 2010/04/06 11:00:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 84 84 { 85 85 proton = protonDef->GetParticleName(); 86 lowEnergyLimit[proton] = 1 . * keV;86 lowEnergyLimit[proton] = 100. * eV; 87 87 highEnergyLimit[proton] = 10. * MeV; 88 88 } … … 209 209 // InitialiseElementSelectors(particle,cuts); 210 210 211 // Test if water material212 213 flagMaterialIsWater= false;214 densityWater = 0;215 216 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable();217 218 if(theCoupleTable)219 {220 G4int numOfCouples = theCoupleTable->GetTableSize();221 222 if(numOfCouples>0)223 {224 for (G4int i=0; i<numOfCouples; i++)225 {226 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i);227 const G4Material* material = couple->GetMaterial();228 229 if (material->GetName() == "G4_WATER")230 {231 G4double density = material->GetAtomicNumDensityVector()[1];232 flagMaterialIsWater = true;233 densityWater = density;234 235 if (verboseLevel > 3)236 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl;237 }238 239 }240 241 } // if(numOfCouples>0)242 243 } // if (theCoupleTable)244 245 211 } 246 212 247 213 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 248 214 249 G4double G4DNADingfelderChargeDecreaseModel::CrossSectionPerVolume(const G4Material* ,215 G4double G4DNADingfelderChargeDecreaseModel::CrossSectionPerVolume(const G4Material* material, 250 216 const G4ParticleDefinition* particleDefinition, 251 217 G4double k, … … 275 241 G4double crossSection = 0.; 276 242 277 if ( flagMaterialIsWater)243 if (material->GetName() == "G4_WATER") 278 244 { 279 245 const G4String& particleName = particleDefinition->GetParticleName(); … … 304 270 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 305 271 G4cout << " - Cross section per water molecule (cm^2)=" << crossSection/cm/cm << G4endl; 306 G4cout << " - Cross section per water molecule (cm^-1)=" << crossSection* densityWater/(1./cm) << G4endl;272 G4cout << " - Cross section per water molecule (cm^-1)=" << crossSection*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 307 273 } 308 274 309 } // if (flagMaterialIsWater)310 311 return crossSection* densityWater;275 } 276 277 return crossSection*material->GetAtomicNumDensityVector()[1]; 312 278 313 279 } … … 327 293 328 294 G4ParticleDefinition* definition = aDynamicParticle->GetDefinition(); 295 296 G4double particleMass = definition->GetPDGMass(); 329 297 330 298 G4int finalStateIndex = RandomSelect(inK,definition); … … 338 306 outK = inK - n*(inK*electron_mass_c2/proton_mass_c2) - waterBindingEnergy + outgoingParticleBindingEnergy; 339 307 else 340 outK = inK - n*(inK*electron_mass_c2/ (3728*MeV)) - waterBindingEnergy + outgoingParticleBindingEnergy;308 outK = inK - n*(inK*electron_mass_c2/particleMass) - waterBindingEnergy + outgoingParticleBindingEnergy; 341 309 342 310 if (outK<0) -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNADingfelderChargeIncreaseModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNADingfelderChargeIncreaseModel.cc,v 1. 6 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNADingfelderChargeIncreaseModel.cc,v 1.9 2010/04/06 11:00:35 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 85 85 { 86 86 hydrogen = hydrogenDef->GetParticleName(); 87 lowEnergyLimit[hydrogen] = 1 . * keV;87 lowEnergyLimit[hydrogen] = 100. * eV; 88 88 highEnergyLimit[hydrogen] = 10. * MeV; 89 89 } … … 200 200 // InitialiseElementSelectors(particle,cuts); 201 201 202 // Test if water material203 204 flagMaterialIsWater= false;205 densityWater = 0;206 207 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable();208 209 if(theCoupleTable)210 {211 G4int numOfCouples = theCoupleTable->GetTableSize();212 213 if(numOfCouples>0)214 {215 for (G4int i=0; i<numOfCouples; i++)216 {217 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i);218 const G4Material* material = couple->GetMaterial();219 220 if (material->GetName() == "G4_WATER")221 {222 G4double density = material->GetAtomicNumDensityVector()[1];223 flagMaterialIsWater = true;224 densityWater = density;225 226 if (verboseLevel > 3)227 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl;228 }229 230 }231 232 } // if(numOfCouples>0)233 234 } // if (theCoupleTable)235 236 202 } 237 203 238 204 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 239 205 240 G4double G4DNADingfelderChargeIncreaseModel::CrossSectionPerVolume(const G4Material* ,206 G4double G4DNADingfelderChargeIncreaseModel::CrossSectionPerVolume(const G4Material* material, 241 207 const G4ParticleDefinition* particleDefinition, 242 208 G4double k, … … 266 232 G4double totalCrossSection = 0.; 267 233 268 if ( flagMaterialIsWater)234 if (material->GetName() == "G4_WATER") 269 235 { 270 236 const G4String& particleName = particleDefinition->GetParticleName(); … … 315 281 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 316 282 G4cout << " - Cross section per water molecule (cm^2)=" << totalCrossSection/cm/cm << G4endl; 317 G4cout << " - Cross section per water molecule (cm^-1)=" << totalCrossSection* densityWater/(1./cm) << G4endl;283 G4cout << " - Cross section per water molecule (cm^-1)=" << totalCrossSection*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 318 284 } 319 285 320 } // if (flagMaterialIsWater)321 322 return totalCrossSection* densityWater;286 } 287 288 return totalCrossSection*material->GetAtomicNumDensityVector()[1]; 323 289 324 290 } … … 339 305 340 306 G4ParticleDefinition* definition = aDynamicParticle->GetDefinition(); 341 307 308 G4double particleMass = definition->GetPDGMass(); 309 342 310 G4double inK = aDynamicParticle->GetKineticEnergy(); 343 311 … … 353 321 G4double electronK; 354 322 if (definition == instance->GetIon("hydrogen")) electronK = inK*electron_mass_c2/proton_mass_c2; 355 else electronK = inK*electron_mass_c2/( 3728*MeV);323 else electronK = inK*electron_mass_c2/(particleMass); 356 324 357 325 if (outK<0) -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAElastic.cc
r1228 r1315 25 25 // 26 26 // $Id: G4DNAElastic.cc,v 1.3 2009/03/04 13:28:49 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAElastic.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAEmfietzoglouExcitationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAEmfietzoglouExcitationModel.cc,v 1. 8 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAEmfietzoglouExcitationModel.cc,v 1.10 2010/06/08 21:50:00 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 45 45 SetLowEnergyLimit(lowEnergyLimit); 46 46 SetHighEnergyLimit(highEnergyLimit); 47 48 nLevels = waterExcitation.NumberOfLevels(); 47 49 48 50 verboseLevel= 0; … … 97 99 98 100 // 99 100 nLevels = waterExcitation.NumberOfLevels();101 102 //103 101 if( verboseLevel>0 ) 104 102 { … … 122 120 // InitialiseElementSelectors(particle,cuts); 123 121 124 // Test if water material 125 126 flagMaterialIsWater= false; 127 densityWater = 0; 128 129 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); 130 131 if(theCoupleTable) 132 { 133 G4int numOfCouples = theCoupleTable->GetTableSize(); 134 135 if(numOfCouples>0) 136 { 137 for (G4int i=0; i<numOfCouples; i++) 138 { 139 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i); 140 const G4Material* material = couple->GetMaterial(); 141 142 if (material->GetName() == "G4_WATER") 143 { 144 G4double density = material->GetAtomicNumDensityVector()[1]; 145 flagMaterialIsWater = true; 146 densityWater = density; 147 148 if (verboseLevel > 3) 149 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl; 150 } 151 152 } 153 154 } // if(numOfCouples>0) 155 156 } // if (theCoupleTable) 157 158 } 159 160 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 161 162 G4double G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume(const G4Material*, 122 } 123 124 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 125 126 G4double G4DNAEmfietzoglouExcitationModel::CrossSectionPerVolume(const G4Material* material, 163 127 const G4ParticleDefinition* particleDefinition, 164 128 G4double ekin, … … 173 137 G4double sigma=0; 174 138 175 if ( flagMaterialIsWater)139 if (material->GetName() == "G4_WATER") 176 140 { 177 141 … … 188 152 G4cout << "---> Kinetic energy(eV)=" << ekin/eV << G4endl; 189 153 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 190 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma* densityWater/(1./cm) << G4endl;154 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 191 155 } 192 156 193 } // if (flagMaterialIsWater)194 195 return sigma* densityWater;157 } 158 159 return sigma*material->GetAtomicNumDensityVector()[1]; 196 160 } 197 161 … … 271 235 sigma = excitationSigma / density; 272 236 } 237 273 238 return sigma; 274 239 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAExcitation.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAExcitation.cc,v 1. 3 2009/03/04 13:28:49sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAExcitation.cc,v 1.4 2010/03/27 11:32:41 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAExcitation.hh" … … 76 76 if(name == "e-") 77 77 { 78 79 // First model 80 78 81 if(!Model()) SetModel(new G4DNAEmfietzoglouExcitationModel); 79 82 Model()->SetLowEnergyLimit(8.23*eV); 80 83 Model()->SetHighEnergyLimit(10*MeV); 81 84 85 // Alternative model 86 /* 87 if(!Model()) SetModel(new G4DNABornExcitationModel); 88 Model()->SetLowEnergyLimit(9*eV); 89 Model()->SetHighEnergyLimit(1*MeV); 90 */ 82 91 AddEmModel(1, Model()); 83 92 } … … 91 100 if(!Model(2)) SetModel(new G4DNABornExcitationModel,2); 92 101 Model(2)->SetLowEnergyLimit(500*keV); 93 Model(2)->SetHighEnergyLimit(10 *MeV);102 Model(2)->SetHighEnergyLimit(100*MeV); 94 103 95 104 AddEmModel(1, Model(1)); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc
r1228 r1315 25 25 // 26 26 // $Id: G4DNAGenericIonsManager.cc,v 1.6 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAGenericIonsManager.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAIonisation.cc
r1228 r1315 25 25 // 26 26 // $Id: G4DNAIonisation.cc,v 1.4 2009/11/02 17:00:11 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4DNAIonisation.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAMillerGreenExcitationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAMillerGreenExcitationModel.cc,v 1. 6 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAMillerGreenExcitationModel.cc,v 1.9 2010/06/08 21:50:00 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 210 210 // InitialiseElementSelectors(particle,cuts); 211 211 212 // Test if water material213 214 flagMaterialIsWater= false;215 densityWater = 0;216 217 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable();218 219 if(theCoupleTable)220 {221 G4int numOfCouples = theCoupleTable->GetTableSize();222 223 if(numOfCouples>0)224 {225 for (G4int i=0; i<numOfCouples; i++)226 {227 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i);228 const G4Material* material = couple->GetMaterial();229 230 if (material->GetName() == "G4_WATER")231 {232 G4double density = material->GetAtomicNumDensityVector()[1];233 flagMaterialIsWater = true;234 densityWater = density;235 236 if (verboseLevel > 3)237 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl;238 }239 240 }241 242 } // if(numOfCouples>0)243 244 } // if (theCoupleTable)245 246 212 } 247 213 … … 278 244 G4double crossSection = 0.; 279 245 280 if ( flagMaterialIsWater)246 if (material->GetName() == "G4_WATER") 281 247 { 282 248 const G4String& particleName = particleDefinition->GetParticleName(); … … 317 283 G4double tmp =0.; 318 284 319 if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = 320 excitationXS->CrossSectionPerVolume(material,particleDefinition,k*0.511/3728,tmp,tmp)/densityWater; 285 if (k*0.511/3728 > 8.23*eV && k*0.511/3728 < 10*MeV ) sigmaExcitation = 286 excitationXS->CrossSectionPerVolume(material,G4Electron::ElectronDefinition(),k*0.511/3728,tmp,tmp) 287 /material->GetAtomicNumDensityVector()[1]; 321 288 322 289 if ( particleDefinition == instance->GetIon("alpha+") ) … … 335 302 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 336 303 G4cout << " - Cross section per water molecule (cm^2)=" << crossSection/cm/cm << G4endl; 337 G4cout << " - Cross section per water molecule (cm^-1)=" << crossSection* densityWater/(1./cm) << G4endl;304 G4cout << " - Cross section per water molecule (cm^-1)=" << crossSection*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 338 305 } 339 306 340 } // if (flagMaterialIsWater)341 342 return crossSection* densityWater;307 } 308 309 return crossSection*material->GetAtomicNumDensityVector()[1]; 343 310 344 311 } … … 485 452 G4double sigmaExcitation=0; 486 453 487 if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = excitationXS->PartialCrossSection(k*0.511/3728,i);454 if (k*0.511/3728 > 8.23*eV && k*0.511/3728 < 10*MeV ) sigmaExcitation = excitationXS->PartialCrossSection(k*0.511/3728,i); 488 455 489 456 G4double partial = PartialCrossSection(k,i,particle); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNARuddIonisationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNARuddIonisationModel.cc,v 1.1 0 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNARuddIonisationModel.cc,v 1.17 2010/04/07 20:08:31 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 271 271 // InitialiseElementSelectors(particle,cuts); 272 272 273 // Test if water material274 275 flagMaterialIsWater= false;276 densityWater = 0;277 278 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable();279 280 if(theCoupleTable)281 {282 G4int numOfCouples = theCoupleTable->GetTableSize();283 284 if(numOfCouples>0)285 {286 for (G4int i=0; i<numOfCouples; i++)287 {288 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i);289 const G4Material* material = couple->GetMaterial();290 291 if (material->GetName() == "G4_WATER")292 {293 G4double density = material->GetAtomicNumDensityVector()[1];294 flagMaterialIsWater = true;295 densityWater = density;296 297 if (verboseLevel > 3)298 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl;299 }300 301 }302 303 } // if(numOfCouples>0)304 305 } // if (theCoupleTable)306 307 273 } 308 274 309 275 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 310 276 311 G4double G4DNARuddIonisationModel::CrossSectionPerVolume(const G4Material* ,277 G4double G4DNARuddIonisationModel::CrossSectionPerVolume(const G4Material* material, 312 278 const G4ParticleDefinition* particleDefinition, 313 279 G4double k, … … 355 321 G4double sigma=0; 356 322 357 if ( flagMaterialIsWater)323 if (material->GetName() == "G4_WATER") 358 324 { 359 325 const G4String& particleName = particleDefinition->GetParticleName(); … … 421 387 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 422 388 G4cout << " - Cross section per water molecule (cm^2)=" << tmp1/cm/cm << G4endl; 423 G4cout << " - Cross section per water molecule (cm^-1)=" << tmp1*densityWater/(1./cm) << G4endl; 389 G4cout << " - Cross section per water molecule (cm^-1)=" << 390 tmp1*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 424 391 } 425 return tmp1* densityWater;392 return tmp1*material->GetAtomicNumDensityVector()[1]; 426 393 } 427 394 … … 434 401 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 435 402 G4cout << " - Cross section per water molecule (cm^2)=" << tmp2/cm/cm << G4endl; 436 G4cout << " - Cross section per water molecule (cm^-1)=" << tmp2*densityWater/(1./cm) << G4endl; 403 G4cout << " - Cross section per water molecule (cm^-1)=" << tmp2* 404 material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 437 405 } 438 return tmp2* densityWater;406 return tmp2*material->GetAtomicNumDensityVector()[1]; 439 407 } 440 408 } … … 454 422 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl; 455 423 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 456 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*densityWater/(1./cm) << G4endl; 424 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma* 425 material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 457 426 } 458 427 459 428 } // if (waterMaterial) 460 429 461 return sigma* densityWater;430 return sigma*material->GetAtomicNumDensityVector()[1]; 462 431 463 432 } … … 562 531 fvect->push_back(dp); 563 532 564 /*565 // creating neutral water molechule...566 567 G4DNAGenericMoleculeManager *instance;568 instance = G4DNAGenericMoleculeManager::Instance();569 G4ParticleDefinition* waterDef = NULL;570 G4Molecule* water = instance->GetMolecule("H2O");571 waterDef = (G4ParticleDefinition*)water;572 573 direction.set(0.,0.,0.);574 575 //G4DynamicParticle* dynamicWater = new G4DynamicParticle(waterDef, direction, bindingEnergy);576 G4DynamicMolecule* dynamicWater = new G4DynamicMolecule(water, direction, bindingEnergy);577 //dynamicWater->RemoveElectron(ionizationShell, 1);578 579 G4DynamicMolecule* dynamicWater2 = new G4DynamicMolecule(water, direction, bindingEnergy);580 G4DynamicMolecule* dynamicWater3 = new G4DynamicMolecule(water, direction, bindingEnergy);581 // insertion inside secondaries582 583 fvect->push_back(dynamicWater);584 fvect->push_back(dynamicWater2);585 fvect->push_back(dynamicWater3);586 */587 533 } 588 534 … … 623 569 G4double crossSectionMaximum = 0.; 624 570 625 for(G4double value=waterStructure.IonisationEnergy(shell); value<= 4.*waterStructure.IonisationEnergy(shell); value+=0.1*eV)571 for(G4double value=waterStructure.IonisationEnergy(shell); value<=5.*waterStructure.IonisationEnergy(shell) && k>=value ; value+=0.1*eV) 626 572 { 627 573 G4double differentialCrossSection = DifferentialCrossSection(particleDefinition, k, value, shell); … … 710 656 G4double alphaConst ; 711 657 658 const G4double Bj[5] = {12.61*eV, 14.73*eV, 18.55*eV, 32.20*eV, 539.7*eV}; 659 712 660 if (j == 4) 713 661 { … … 746 694 747 695 G4double wBig = (energyTransfer - waterStructure.IonisationEnergy(ionizationLevelIndex)); 748 G4double w = wBig / waterStructure.IonisationEnergy(ionizationLevelIndex); 696 if (wBig<0) return 0.; 697 698 G4double w = wBig / Bj[ionizationLevelIndex]; 749 699 G4double Ry = 13.6*eV; 750 700 … … 764 714 } 765 715 766 G4double S = 4.*pi * Bohr_radius*Bohr_radius * n * std::pow((Ry/ waterStructure.IonisationEnergy(ionizationLevelIndex)),2);767 G4double v2 = tau / waterStructure.IonisationEnergy(ionizationLevelIndex);716 G4double S = 4.*pi * Bohr_radius*Bohr_radius * n * std::pow((Ry/Bj[ionizationLevelIndex]),2); 717 G4double v2 = tau / Bj[ionizationLevelIndex]; 768 718 G4double v = std::sqrt(v2); 769 G4double wc = 4.*v2 - 2.*v - (Ry/(4.* waterStructure.IonisationEnergy(ionizationLevelIndex)));719 G4double wc = 4.*v2 - 2.*v - (Ry/(4.*Bj[ionizationLevelIndex])); 770 720 771 721 G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.))); … … 777 727 G4double F2 = (L2*H2)/(L2+H2); 778 728 779 G4double sigma = CorrectionFactor(particleDefinition, k/eV) 780 * Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) 729 G4double sigma = CorrectionFactor(particleDefinition, k) 730 * Gj[j] * (S/Bj[ionizationLevelIndex]) 731 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 732 733 if ( (particleDefinition == instance->GetIon("hydrogen")) && (ionizationLevelIndex==4)) 734 735 sigma = Gj[j] * (S/Bj[ionizationLevelIndex]) 781 736 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 782 737 … … 823 778 ) 824 779 { 825 sigma = Gj[j] * (S/ waterStructure.IonisationEnergy(ionizationLevelIndex)) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) );780 sigma = Gj[j] * (S/Bj[ionizationLevelIndex]) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 826 781 827 782 G4double zEff = particleDefinition->GetPDGCharge() / eplus + particleDefinition->GetLeptonNumber(); … … 916 871 if (particleDefinition == instance->GetIon("hydrogen")) 917 872 { 918 G4double value = (std::log (k/eV)-4.2)/0.5;873 G4double value = (std::log10(k/eV)-4.2)/0.5; 919 874 return((0.8/(1+std::exp(value))) + 0.9); 920 875 } … … 932 887 // BEGIN PART 1/2 OF ELECTRON CORRECTION 933 888 934 // add ONE or TWO electron-water excitation for alpha+ and helium889 // add ONE or TWO electron-water ionisation for alpha+ and helium 935 890 936 891 G4DNAGenericIonsManager *instance; 937 892 instance = G4DNAGenericIonsManager::Instance(); 938 893 G4double kElectron(0); 939 G4double electronComponent(0); 894 940 895 G4DNACrossSectionDataSet * electronDataset = new G4DNACrossSectionDataSet (new G4LogLogInterpolation, eV, (1./3.343e22)*m*m); 941 896 … … 949 904 kElectron = k * 0.511/3728; 950 905 951 electronComponent = electronDataset->FindValue(kElectron);952 953 906 } 954 955 delete electronDataset;956 907 957 908 // END PART 1/2 OF ELECTRON CORRECTION … … 982 933 983 934 // BEGIN PART 2/2 OF ELECTRON CORRECTION 984 935 // Use only electron partial cross sections 936 985 937 if (particle == instance->GetIon("alpha+")->GetParticleName()) 986 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + electron Component; }987 938 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + electronDataset->GetComponent(i)->FindValue(kElectron); } 939 988 940 if (particle == instance->GetIon("helium")->GetParticleName()) 989 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + 2*electron Component; }990 941 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + 2*electronDataset->GetComponent(i)->FindValue(kElectron); } 942 991 943 // BEGIN PART 2/2 OF ELECTRON CORRECTION 992 944 … … 1001 953 { 1002 954 i--; 955 1003 956 1004 957 if (valuesBuffer[i] > value) 1005 958 { 1006 959 delete[] valuesBuffer; 960 961 if (electronDataset) delete electronDataset; 962 1007 963 return i; 1008 964 } … … 1018 974 G4Exception("G4DNARuddIonisationModel::RandomSelect: attempting to calculate cross section for wrong particle"); 1019 975 } 976 977 delete electronDataset; 1020 978 1021 979 return level; -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAScreenedRutherfordElasticModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAScreenedRutherfordElasticModel.cc,v 1. 9 2009/08/13 11:32:47sincerti Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4DNAScreenedRutherfordElasticModel.cc,v 1.10 2010/01/07 18:10:50 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 … … 152 152 // InitialiseElementSelectors(particle,cuts); 153 153 154 // Test if water material 155 156 flagMaterialIsWater= false; 157 densityWater = 0; 158 159 const G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); 160 161 if(theCoupleTable) 162 { 163 G4int numOfCouples = theCoupleTable->GetTableSize(); 164 165 if(numOfCouples>0) 166 { 167 for (G4int i=0; i<numOfCouples; i++) 168 { 169 const G4MaterialCutsCouple* couple = theCoupleTable->GetMaterialCutsCouple(i); 170 const G4Material* material = couple->GetMaterial(); 171 172 if (material->GetName() == "G4_WATER") 173 { 174 G4double density = material->GetAtomicNumDensityVector()[1]; 175 flagMaterialIsWater = true; 176 densityWater = density; 177 178 if (verboseLevel > 3) 179 G4cout << "****** Water material is found with density(cm^-3)=" << density/(cm*cm*cm) << G4endl; 180 } 181 182 } 183 184 } // if(numOfCouples>0) 185 186 } // if (theCoupleTable) 187 188 } 189 190 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 191 192 G4double G4DNAScreenedRutherfordElasticModel::CrossSectionPerVolume(const G4Material*, 154 } 155 156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 157 158 G4double G4DNAScreenedRutherfordElasticModel::CrossSectionPerVolume(const G4Material* material, 193 159 const G4ParticleDefinition*, 194 160 G4double ekin, … … 203 169 G4double sigma=0; 204 170 205 if ( flagMaterialIsWater)171 if (material->GetName() == "G4_WATER") 206 172 { 207 173 … … 223 189 G4cout << "---> Kinetic energy(eV)=" << ekin/eV << G4endl; 224 190 G4cout << " - Cross section per water molecule (cm^2)=" << sigma/cm/cm << G4endl; 225 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma* densityWater/(1./cm) << G4endl;191 G4cout << " - Cross section per water molecule (cm^-1)=" << sigma*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl; 226 192 } 227 193 228 } // if (flagMaterialIsWater)229 230 return sigma* densityWater;194 } 195 196 return sigma*material->GetAtomicNumDensityVector()[1]; 231 197 } 232 198 -
trunk/source/processes/electromagnetic/lowenergy/src/G4DopplerProfile.cc
r1228 r1315 26 26 // 27 27 // $Id: G4DopplerProfile.cc,v 1.3 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4DummyFinalState.cc
r1228 r1315 26 26 // 27 27 // $Id: G4DummyFinalState.cc,v 1.2 2007/10/15 08:36:35 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc
r1228 r1315 26 26 // 27 27 // $Id: G4EMDataSet.cc,v 1.20 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateChargeDecrease.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateChargeDecrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateChargeIncrease.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateChargeIncrease.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeTransferProton.cc
r1228 r1315 26 26 // 27 27 // $Id: G4FinalStateChargeTransferProton.cc,v 1.2 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticBrennerZaider.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateElasticBrennerZaider.cc,v 1.11 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateElasticBrennerZaider.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticChampion.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateElasticChampion.cc,v 1.10 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateElasticScreenedRutherford.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateElasticScreenedRutherford.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateElasticScreenedRutherford.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationBorn.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateExcitationBorn.cc,v 1.6 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateExcitationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationEmfietzoglou.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateExcitationEmfietzoglou.cc,v 1.8 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateExcitationEmfietzoglou.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateExcitationMillerGreen.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateExcitationMillerGreen.cc,v 1.6 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateExcitationMillerGreen.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationBorn.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateIonisationBorn.cc,v 1.19 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateIonisationBorn.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateIonisationRudd.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStateIonisationRudd.cc,v 1.11 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 29 29 #include "G4FinalStateIonisationRudd.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateKill.cc
r1228 r1315 26 26 // 27 27 // $Id: G4FinalStateKill.cc,v 1.1 2007/11/09 20:26:12 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc
r1228 r1315 26 26 // 27 27 // $Id: G4FinalStateProduct.cc,v 1.7 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStatePsCreationChampion.cc
r1228 r1315 25 25 // 26 26 // $Id: G4FinalStatePsCreationChampion.cc,v 1.2 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // ------------------------------------------------------------------- 29 29 -
trunk/source/processes/electromagnetic/lowenergy/src/G4FluoTransition.cc
r1228 r1315 26 26 // 27 27 // $Id: G4FluoTransition.cc,v 1.2 ???? 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) -
trunk/source/processes/electromagnetic/lowenergy/src/G4LinInterpolation.cc
r1228 r1315 26 26 // 27 27 // $Id: G4LinInterpolation.cc,v 1.5 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreBremsstrahlungModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermoreBremsstrahlungModel.cc,v 1.6 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreComptonModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermoreComptonModel.cc,v 1.7 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreGammaConversionModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermoreGammaConversionModel.cc,v 1.8 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreIonisationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermoreIonisationModel.cc,v 1. 7 2009/10/23 09:30:08pandola Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4LivermoreIonisationModel.cc,v 1.8 2010/03/26 09:32:50 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola … … 85 85 // 86 86 verboseLevel = 0; 87 //88 87 //By default: use deexcitation, not auger 89 88 SetDeexcitationFlag(true); 90 89 ActivateAuger(false); 91 90 // 92 91 // 93 92 // Notice: the fluorescence along step is generated only if it is -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePhotoElectricModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermorePhotoElectricModel.cc,v 1. 9 2009/10/23 09:31:03pandola Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4LivermorePhotoElectricModel.cc,v 1.11 2010/03/26 09:32:50 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // … … 43 43 // - atomic deexcitation managed via G4VEmModel::DeexcitationFlag() is 44 44 // set as "true" (default would be false) 45 // 45 // 15 Mar 2010 L Pandola 46 // - removed methods to set explicitely fluorescence cuts. 47 // Main cuts from G4ProductionCutsTable are always used 48 // 46 49 47 50 #include "G4LivermorePhotoElectricModel.hh" … … 62 65 // SetLowEnergyLimit(lowEnergyLimit); 63 66 SetHighEnergyLimit(highEnergyLimit); 64 65 //Set atomic deexcitation by default 66 SetDeexcitationFlag(true); 67 ActivateAuger(false); 68 67 69 68 verboseLevel= 0; 70 69 // Verbosity scale: … … 74 73 // 3 = calculation of cross sections, file openings, sampling of atoms 75 74 // 4 = entering in methods 75 76 //Set atomic deexcitation by default 77 SetDeexcitationFlag(true); 78 ActivateAuger(false); 79 76 80 if(verboseLevel>0) { 77 81 G4cout << "Livermore PhotoElectric is constructed " << G4endl … … 125 129 shellCrossSectionHandler->LoadShellData(shellCrossSectionFile); 126 130 127 // SI - Simple generator is buggy 128 //generatorName = "geant4.6.2"; 129 //ElectronAngularGenerator = new G4PhotoElectricAngularGeneratorSimple("GEANTSimpleGenerator"); // default generator 131 // default generator 130 132 ElectronAngularGenerator = 131 133 new G4PhotoElectricAngularGeneratorSauterGavrila("GEANTSauterGavrilaGenerator"); … … 298 300 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 299 301 300 void G4LivermorePhotoElectricModel::SetCutForLowEnSecPhotons(G4double cut) 301 { 302 cutForLowEnergySecondaryPhotons = cut; 303 deexcitationManager.SetCutForSecondaryPhotons(cut); 304 } 305 306 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 307 308 void G4LivermorePhotoElectricModel::SetCutForLowEnSecElectrons(G4double cut) 309 { 310 cutForLowEnergySecondaryElectrons = cut; 311 deexcitationManager.SetCutForAugerElectrons(cut); 312 } 313 314 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 315 316 void G4LivermorePhotoElectricModel::ActivateAuger(G4bool val) 317 { 318 deexcitationManager.ActivateAugerElectronProduction(val); 302 void G4LivermorePhotoElectricModel::ActivateAuger(G4bool augerbool) 303 { 304 if (!DeexcitationFlag() && augerbool) 305 { 306 G4cout << "WARNING - G4PenelopePhotoElectricModel" << G4endl; 307 G4cout << "The use of the Atomic Deexcitation Manager is set to false " << G4endl; 308 G4cout << "Therefore, Auger electrons will be not generated anyway" << G4endl; 309 } 310 deexcitationManager.ActivateAugerElectronProduction(augerbool); 311 if (verboseLevel > 1) 312 G4cout << "Auger production set to " << augerbool << G4endl; 319 313 } 320 314 -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedComptonModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermorePolarizedComptonModel.cc,v 1.6 2009/05/03 08:29:55 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // History: -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePolarizedRayleighModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermorePolarizedRayleighModel.cc,v 1.5 2009/05/02 15:20:53 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // History: -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreRayleighModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LivermoreRayleighModel.cc,v 1.8 2009/09/23 16:54:06 flongo Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Sebastien Inserti -
trunk/source/processes/electromagnetic/lowenergy/src/G4LogLogInterpolation.cc
r1228 r1315 26 26 // 27 27 // $Id: G4LogLogInterpolation.cc,v 1.16 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyBremsstrahlung.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LowEnergyBremsstrahlung.cc,v 1.74 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LowEnergyCompton.cc,v 1.50 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc
r1228 r1315 27 27 /// 28 28 // $Id: G4LowEnergyGammaConversion.cc,v 1.39 2009/06/11 15:47:08 mantero Exp $ 29 // GEANT4 tag $Name: geant4-09-0 3$29 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 30 30 // 31 31 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LowEnergyIonisation.cc,v 1.106 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc
r1228 r1315 26 26 // 27 27 // $Id: G4LowEnergyPhotoElectric.cc,v 1.59 2009/06/11 15:47:08 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc
r1228 r1315 26 26 // 27 27 // $Id: G4LowEnergyPolarizedCompton.cc,v 1.28 2009/06/11 15:47:08 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ------------------------------------------------------------ -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedRayleigh.cc
r1228 r1315 25 25 // 26 26 // $Id: G4LowEnergyPolarizedRayleigh.cc,v 1.10 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc
r1228 r1315 27 27 // 28 28 // $Id: G4LowEnergyRayleigh.cc,v 1.40 2009/06/11 15:47:08 mantero Exp $ 29 // GEANT4 tag $Name: geant4-09-0 3$29 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 30 30 // 31 31 // Author: A. Forti -
trunk/source/processes/electromagnetic/lowenergy/src/G4OrlicLiCrossSection.cc
r1197 r1315 24 24 // ******************************************************************** 25 25 // 26 //$Id: G4OrlicLiCrossSection.cc,v 1. 4 2009/11/11 09:14:53mantero Exp $27 // GEANT4 tag $Name: geant4-09-0 3-cand-01 $26 //$Id: G4OrlicLiCrossSection.cc,v 1.5 2010/06/06 23:40:35 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Haifa Ben Abdelouahed … … 36 36 // 21 Apr 2009 ALF Some correction for compatibility to G4VShellCrossSection 37 37 // and changed name to G4OrlicLiCrossSection 38 // 11 Nov 2009 ALF update and code cleaning for the Dec Release39 38 // 40 39 // ------------------------------------------------------------------- … … 200 199 else 201 200 { 202 G4cout << "ERROR: L1 Cross-Section exist only for ZTarget between 41and 92!!! " << G4endl;201 G4cout << "ERROR: L1 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl; 203 202 204 203 } … … 326 325 else 327 326 { 328 G4cout << "ERROR: L2 Cross-Section exist only for ZTarget between 41and 92!!! " << G4endl;327 G4cout << "ERROR: L2 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl; 329 328 330 329 } … … 446 445 else 447 446 { 448 G4cout << "ERROR: L3 Cross-Section exist only for ZTarget between 41and 92!!! " << G4endl;447 G4cout << "ERROR: L3 Cross-Section exist only for ZTarget between 14 and 92!!! " << G4endl; 449 448 450 449 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4PaulKCrossSection.cc
r1228 r1315 25 25 // 26 26 // 27 // History: 28 // ----------- 29 // 21 Apr 2008 H. Abdelohauwed - 1st implementation 30 // 29 Apr 2009 ALF Major Design Revision 31 // 32 // ------------------------------------------------------------------- 33 34 // Class description: 35 // Low Energy Electromagnetic Physics, Cross section, p ionisation, K shell 36 // Further documentation available from http://www.ge.infn.it/geant4/lowE 37 38 // ------------------------------------------------------------------- 27 39 28 40 #include "globals.hh" … … 30 42 #include <fstream> 31 43 #include <iomanip> 32 #include "G4CompositeEMDataSet.hh"33 #include "G4ShellEMDataSet.hh"44 //#include "G4CompositeEMDataSet.hh" 45 //#include "G4ShellEMDataSet.hh" 34 46 #include "G4EMDataSet.hh" 35 #include "G4VEMDataSet.hh"36 #include "G4VDataSetAlgorithm.hh"47 //#include "G4VEMDataSet.hh" 48 //#include "G4VDataSetAlgorithm.hh" 37 49 #include "G4LogLogInterpolation.hh" 38 50 #include "G4PaulKCrossSection.hh" 51 #include "G4Proton.hh" 52 #include "G4Alpha.hh" 53 39 54 40 55 G4PaulKCrossSection::G4PaulKCrossSection() 41 { } 56 { 57 58 59 interpolation = new G4LogLogInterpolation(); 60 61 /* 62 G4String path = getenv("G4LEDATA"); 63 64 if (!path) 65 G4Exception("G4paulKCrossSection::G4paulKCrossSection: G4LEDATA environment variable not set"); 66 G4cout << path + "/kcsPaul/kcs-" << G4endl; 67 */ 68 69 70 for (G4int i=4; i<93; i++) { 71 protonDataSetMap[i] = new G4EMDataSet(i,interpolation); 72 protonDataSetMap[i]->LoadData("pixe/kpcsPaul/kcs-"); 73 } 74 for (G4int i=6; i<93; i++) { 75 alphaDataSetMap[i] = new G4EMDataSet(i,interpolation); 76 alphaDataSetMap[i]->LoadData("pixe/kacsPaul/kacs-"); 77 } 78 79 80 81 82 } 42 83 43 84 G4PaulKCrossSection::~G4PaulKCrossSection() 44 { }85 { 45 86 46 G4double G4PaulKCrossSection::CalculateKCrossSection(G4int zTarget,G4int zIncident, G4double energyIncident) 87 protonDataSetMap.clear(); 88 alphaDataSetMap.clear(); 89 90 } 91 92 G4double G4PaulKCrossSection::CalculateKCrossSection(G4int zTarget,G4double massIncident, G4double energyIncident) 47 93 { 48 94 49 G4String fileName; 95 G4Proton* aProtone = G4Proton::Proton(); 96 G4Alpha* aAlpha = G4Alpha::Alpha(); 97 98 G4double sigma = 0; 50 99 51 if (zIncident == 1) 52 { fileName = "kcsPaul/kcs-";} 100 if (massIncident == aProtone->GetPDGMass() ) 101 { 102 103 sigma = protonDataSetMap[zTarget]->FindValue(energyIncident/MeV) / barn; 104 105 } 53 106 else 54 107 { 55 if (zIncident == 2) 56 { fileName = "kacsPaul/kacs-";} 57 108 if (massIncident == aAlpha->GetPDGMass()) 109 { 110 111 sigma = alphaDataSetMap[zTarget]->FindValue(energyIncident/MeV) / barn; 112 113 } 114 else 115 { 116 G4cout << "we can treat only Proton or Alpha incident particles " << G4endl; 117 sigma = 0.; 118 } 58 119 } 59 60 120 61 G4VDataSetAlgorithm* interpolation = new G4LogLogInterpolation();62 63 G4VEMDataSet* dataSet;64 65 dataSet = new G4EMDataSet(zTarget,interpolation);66 121 67 dataSet->LoadData(fileName); 68 69 70 G4double sigma = dataSet->FindValue(energyIncident/MeV) / barn; 71 72 return sigma; 122 123 return sigma; 73 124 } 74 125 -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeAnnihilationModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeAnnihilationModel.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlung.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlung.cc,v 1.21 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungAngular.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlungAngular.cc,v 1.8 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungContinuous.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlungContinuous.cc,v 1.12 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeBremsstrahlungModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeBremsstrahlungModel.cc,v 1.7 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeCompton.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeCompton.cc,v 1.36 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeComptonModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopeComptonModel.cc,v 1. 8 2009/10/23 09:29:24pandola Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4PenelopeComptonModel.cc,v 1.9 2010/03/26 09:32:50 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola … … 81 81 ZForIntegration = 1; 82 82 83 //by default, the model will use atomic deexcitation84 SetDeexcitationFlag(true);85 ActivateAuger(false);86 87 83 verboseLevel= 0; 88 84 // Verbosity scale: … … 92 88 // 3 = calculation of cross sections, file openings, sampling of atoms 93 89 // 4 = entering in methods 90 91 //by default, the model will use atomic deexcitation 92 SetDeexcitationFlag(true); 93 ActivateAuger(false); 94 94 95 95 //These vectors do not change when materials or cut change. -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeGammaConversionModel.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeGammaConversionModel.cc,v 1.6 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisation.cc
r1228 r1315 25 25 // 26 26 // $Id: G4PenelopeIonisation.cc,v 1.22 2009/06/11 15:47:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeIonisationModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopeIonisationModel.cc,v 1.1 0 2009/10/23 09:29:24pandola Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4PenelopeIonisationModel.cc,v 1.16 2010/04/29 07:28:50 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola … … 42 42 // G4VEmModel::DeexcitationFlag() 43 43 // Add ActivateAuger() method 44 // 15 Mar 2010 L Pandola Explicitely initialize Auger to false 45 // 29 Mar 2010 L Pandola Added a dummy ComputeCrossSectionPerAtom() method issueing a 46 // warning if users try to access atomic cross sections via 47 // G4EmCalculator 48 // 15 Apr 2010 L. Pandola Implemented model's own version of MinEnergyCut() 49 // 23 Apr 2010 L. Pandola Removed InitialiseElementSelectors() call. Useless here and 50 // triggers fake warning messages 44 51 // 45 52 … … 80 87 SetHighEnergyLimit(fIntrinsicHighEnergyLimit); 81 88 // 82 // Atomic deexcitation model activated by default 83 SetDeexcitationFlag(true); 89 // 84 90 verboseLevel= 0; 85 91 … … 90 96 // 3 = calculation of cross sections, file openings, sampling of atoms 91 97 // 4 = entering in methods 98 99 // Atomic deexcitation model activated by default 100 SetDeexcitationFlag(true); 101 ActivateAuger(false); 92 102 93 103 //These vectors do not change when materials or cut change. … … 140 150 141 151 void G4PenelopeIonisationModel::Initialise(const G4ParticleDefinition* particle, 142 const G4DataVector& cuts)152 const G4DataVector& ) 143 153 { 144 154 if (verboseLevel > 3) … … 175 185 //This is used to retrieve cross section values later on 176 186 crossSectionHandler->BuildMeanFreePathForMaterials(); 177 178 InitialiseElementSelectors(particle,cuts);179 187 180 188 if (verboseLevel > 2) … … 280 288 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 281 289 290 //This is a dummy method. Never inkoved by the tracking, it just issues 291 //a warning if one tries to get Cross Sections per Atom via the 292 //G4EmCalculator. 293 G4double G4PenelopeIonisationModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 294 G4double, 295 G4double, 296 G4double, 297 G4double, 298 G4double) 299 { 300 G4cout << "*** G4PenelopeIonisationModel -- WARNING ***" << G4endl; 301 G4cout << "Penelope Ionisation model does not calculate cross section _per atom_ " << G4endl; 302 G4cout << "so the result is always zero. For physics values, please invoke " << G4endl; 303 G4cout << "GetCrossSectionPerVolume() or GetMeanFreePath() via the G4EmCalculator" << G4endl; 304 return 0; 305 } 306 307 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 308 282 309 G4double G4PenelopeIonisationModel::ComputeDEDXPerVolume(const G4Material* material, 283 310 const G4ParticleDefinition* theParticle, … … 348 375 } 349 376 return sPower; 377 } 378 379 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 380 381 G4double G4PenelopeIonisationModel::MinEnergyCut(const G4ParticleDefinition*, 382 const G4MaterialCutsCouple*) 383 { 384 return fIntrinsicLowEnergyLimit; 350 385 } 351 386 -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc
r1228 r1315 26 26 // 27 27 // $Id: G4PenelopePhotoElectric.cc,v 1.16 2009/06/11 15:47:08 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: L. Pandola -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopePhotoElectricModel.cc,v 1.1 0 2009/10/23 09:29:24pandola Exp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4PenelopePhotoElectricModel.cc,v 1.12 2010/03/26 09:32:50 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola … … 46 46 // 21 Oct 2009 L Pandola Remove un-necessary fUseAtomicDeexcitation flag - now managed by 47 47 // G4VEmModel::DeexcitationFlag() 48 // 15 Mar 2010 L Pandola Explicitely initialize Auger to false 48 49 // 49 50 … … 75 76 SetHighEnergyLimit(fIntrinsicHighEnergyLimit); 76 77 // 77 //by default the model will inkove the atomic deexcitation78 SetDeexcitationFlag(true);79 80 78 verboseLevel= 0; 81 79 // Verbosity scale: … … 85 83 // 3 = calculation of cross sections, file openings, sampling of atoms 86 84 // 4 = entering in methods 85 86 //by default the model will inkove the atomic deexcitation 87 SetDeexcitationFlag(true); 88 ActivateAuger(false); 87 89 } 88 90 … … 252 254 // In such cases do not generate secondaries 253 255 if (eKineticEnergy > 0.) 254 { 255 //Now check if the electron is above cuts: if so, it is created explicitely 256 //VI: checking cut here provides inconsistency in testing 257 // if (eKineticEnergy > cutE) 256 { 258 257 // The electron is created 259 258 // Direction sampled from the Sauter distribution … … 271 270 fvect->push_back(electron); 272 271 } 273 // else274 // {275 // localEnergyDeposit += eKineticEnergy;276 // eKineticEnergy = 0;277 // }278 // }279 272 else 280 273 { -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleigh.cc
r1228 r1315 27 27 // 28 28 // $Id: G4PenelopeRayleigh.cc,v 1.19 2009/06/11 15:47:08 mantero Exp $ 29 // GEANT4 tag $Name: geant4-09-0 3$29 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 30 30 // 31 31 // Author: L. Pandola (luciano.pandola@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeRayleighModel.cc
r1228 r1315 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4PenelopeRayleighModel.cc,v 1. 6 2009/06/11 15:47:08 manteroExp $27 // GEANT4 tag $Name: geant4-09-0 3$26 // $Id: G4PenelopeRayleighModel.cc,v 1.7 2009/12/21 12:49:01 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // Author: Luciano Pandola … … 37 37 // 19 May 2009 L Pandola Explicitely set to zero pointers deleted in 38 38 // PrepareConstants(), since they might be checked later on 39 // 18 Dec 2009 L Pandola Added a dummy ComputeCrossSectionPerAtom() method issueing a 40 // warning if users try to access atomic cross sections via 41 // G4EmCalculator 39 42 // 40 43 … … 190 193 G4int atomsPerMolecule = 0; 191 194 for (G4int k=0;k<nElements;k++) 195 { 192 196 atomsPerMolecule += stechiometric[k]; 197 if (verboseLevel > 2) 198 { 199 G4cout << "Element: " << (G4int) (*elementVector)[k]->GetZ() << " has " << 200 stechiometric[k] << " atoms/molecule" << G4endl; 201 } 202 } 193 203 if (atomsPerMolecule) 194 204 { … … 203 213 } 204 214 } 205 215 206 216 if (verboseLevel > 2) 207 217 { … … 221 231 return cross; 222 232 } 233 234 235 //This is a dummy method. Never inkoved by the tracking, it just issues 236 //a warning if one tries to get Cross Sections per Atom via the 237 //G4EmCalculator. 238 G4double G4PenelopeRayleighModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition*, 239 G4double, 240 G4double, 241 G4double, 242 G4double, 243 G4double) 244 { 245 G4cout << "*** G4PenelopeRayleighModel -- WARNING ***" << G4endl; 246 G4cout << "Penelope Rayleigh model does not calculate cross section _per atom_ " << G4endl; 247 G4cout << "so the result is always zero. For physics values, please invoke " << G4endl; 248 G4cout << "GetCrossSectionPerVolume() or GetMeanFreePath() via the G4EmCalculator" << G4endl; 249 return 0; 250 } 251 223 252 224 253 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc
r1228 r1315 26 26 // 27 27 // $Id: G4RangeTest.cc,v 1.9 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4RayleighScattering.cc
r1228 r1315 25 25 // 26 26 // $Id: G4RayleighScattering.cc,v 1.2 2009/03/18 13:45:51 pandola Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc
r1228 r1315 26 26 // 27 27 // $Id: G4SemiLogInterpolation.cc,v 1.8 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc
r1228 r1315 26 26 // 27 27 // $Id: G4ShellData.cc,v 1.11 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc
r1228 r1315 26 26 // 27 27 // $Id: G4ShellEMDataSet.cc,v 1.18 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc
r1228 r1315 26 26 // 27 27 // $Id: G4VCrossSectionHandler.cc,v 1.19 2009/09/25 07:41:34 sincerti Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4VLowEnergyDiscretePhotonProcess.cc
r1228 r1315 25 25 // 26 26 // $Id: G4VLowEnergyDiscretePhotonProcess.cc,v 1.6 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc
r1228 r1315 26 26 // 27 27 // $Id: G4VeLowEnergyLoss.cc,v 1.27 2009/07/23 09:15:37 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4VhShellCrossSection.cc
r819 r1315 61 61 G4double mass, 62 62 G4double deltaEnergy) const 63 // returns the shell ionized if the shell exists. If the shell is not counted, it returns -1 64 63 65 { 64 66 std::vector<G4double> p = Probabilities(Z,incidentEnergy,mass,deltaEnergy); 65 G4int shell = 0;67 G4int shell = -1; 66 68 size_t nShells = p.size(); 67 69 G4double q = G4UniformRand(); -
trunk/source/processes/electromagnetic/lowenergy/src/G4WaterExcitationStructure.cc
r1228 r1315 26 26 // 27 27 // $Id: G4WaterExcitationStructure.cc,v 1.1 2007/10/15 08:57:54 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4WaterIonisationStructure.cc
r1228 r1315 26 26 // 27 27 // $Id: G4WaterIonisationStructure.cc,v 1.1 2007/11/08 20:39:35 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc
r1228 r1315 25 25 // 26 26 // $Id: G4eBremsstrahlungSpectrum.cc,v 1.16 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionExcitationEmfietzoglou.cc
r1228 r1315 26 26 // 27 27 // $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 31 31 // $Id: G4eCrossSectionExcitationEmfietzoglou.cc,v 1.1 2007/05/04 10:16:06 pia Exp $ 32 // GEANT4 tag $Name: geant4-09-0 3$32 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 33 33 // 34 34 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eCrossSectionScreenedRutherford.cc
r1228 r1315 26 26 // 27 27 // $Id: G4eCrossSectionScreenedRutherford.cc,v 1.3 2007/10/12 12:27:19 pia Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc
r1228 r1315 25 25 // 26 26 // $Id: G4eIonisationCrossSectionHandler.cc,v 1.15 2009/09/27 10:47:42 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc
r1228 r1315 26 26 // 27 27 // $Id: G4eIonisationParameters.cc,v 1.25 2009/06/10 13:32:36 mantero Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) -
trunk/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc
r1228 r1315 25 25 // 26 26 // $Id: G4eIonisationSpectrum.cc,v 1.27 2009/06/10 13:32:36 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3$27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc
r1228 r1315 26 26 // 27 27 // $Id: G4eLowEnergyLoss.cc,v 1.37 2009/07/23 09:15:37 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ----------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4empCrossSection.cc
r1197 r1315 25 25 // 26 26 //$Id: G4empCrossSection.cc,v 1.2 2009/06/25 15:52:08 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-0 3-cand-01 $27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc
r1228 r1315 100 100 // parametrised proton model: min(user value, model limit) 101 101 // 26 Jan 2005 S. Chauvie added PrintInfoDefinition() for antiproton 102 103 102 // 30 Sep 2009 A.Mantero Removed dependencies to old shell Ionisation XS models 103 // 07 Jun 2010 Code Celaning for June beta Release 104 104 // ----------------------------------------------------------------------- 105 105 … … 121 121 #include "G4ShellVacancy.hh" 122 122 #include "G4VhShellCrossSection.hh" 123 #include "G4hShellCrossSection.hh"124 #include "G4hShellCrossSectionExp.hh"125 #include "G4hShellCrossSectionDoubleExp.hh"126 123 #include "G4VEMDataSet.hh" 127 124 #include "G4EMDataSet.hh" … … 132 129 #include "G4ProcessManager.hh" 133 130 #include "G4ProductionCutsTable.hh" 134 131 #include "G4teoCrossSection.hh" 132 #include "G4empCrossSection.hh" 135 133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 136 134 … … 153 151 shellVacancy(0), 154 152 shellCS(0), 155 theFluo(false), 156 expFlag(false) 153 theFluo(false) 157 154 { 158 155 InitializeMe(); … … 175 172 verboseLevel = 0; 176 173 177 //**************************************************************************** 178 // By default the method of cross section's calculation is swiched on an 179 // 2nd implementation empirical model (G4hShellCrossSectionDoubleExp), 180 // if you want to use Gryzinski's model (G4hShellCrossSection()) or the 181 // 1st empiric one (G4hShellCrossSectionExp), you must change the 182 // selection below and switching expFlag to FALSE 183 //**************************************************************************** 184 185 //shellCS = new G4hShellCrossSection(); 186 //shellCS = new G4hShellCrossSectionExp(); 187 shellCS = new G4hShellCrossSectionDoubleExp(); 188 expFlag=true; 174 shellCS = new G4teoCrossSection("analytical"); 175 189 176 } 190 177 … … 1280 1267 // G4cout << "Fluorescence is switched :" << theFluo << G4endl; 1281 1268 1269 // Fluorescence data start from element 6 1282 1270 if(theFluo && Z > 5) { 1283 1271 1284 1272 1285 1273 1286 // Atom total cross section for the Empiric Model 1287 if (expFlag) { 1274 // Atom total cross section 1288 1275 shellCS->SetTotalCS(totalCrossSectionMap[Z]); 1289 } 1276 1290 1277 G4int shell = shellCS->SelectRandomShell(Z, KineticEnergy,ParticleMass,DeltaKineticEnergy); 1291 1278 1292 if (expFlag && shell==1) { 1293 aParticleChange.ProposeLocalEnergyDeposit (KineticEnergy); 1294 aParticleChange.ProposeEnergy(0); 1295 } 1296 1297 1298 const G4AtomicShell* atomicShell = 1299 (G4AtomicTransitionManager::Instance())->Shell(Z, shell); 1300 G4double bindingEnergy = atomicShell->BindingEnergy(); 1301 1302 if(verboseLevel > 1) { 1303 G4cout << "PostStep Z= " << Z << " shell= " << shell 1304 << " bindingE(keV)= " << bindingEnergy/keV 1305 << " finalE(keV)= " << finalKineticEnergy/keV 1306 << G4endl; 1307 } 1308 1309 // Fluorescence data start from element 6 1310 1311 if (finalKineticEnergy >= bindingEnergy 1312 && (bindingEnergy >= minGammaEnergy 1313 || bindingEnergy >= minElectronEnergy) ) { 1314 1315 G4int shellId = atomicShell->ShellId(); 1316 secondaryVector = deexcitationManager.GenerateParticles(Z, shellId); 1317 1318 if (secondaryVector != 0) { 1319 1320 nSecondaries = secondaryVector->size(); 1321 for (size_t i = 0; i<nSecondaries; i++) { 1322 1323 aSecondary = (*secondaryVector)[i]; 1324 if (aSecondary) { 1325 1326 G4double e = aSecondary->GetKineticEnergy(); 1327 type = aSecondary->GetDefinition(); 1328 if (e < finalKineticEnergy && 1329 ((type == G4Gamma::Gamma() && e > minGammaEnergy ) || 1330 (type == G4Electron::Electron() && e > minElectronEnergy ))) { 1331 1332 finalKineticEnergy -= e; 1333 totalNumber++; 1334 1335 } else { 1336 1337 delete aSecondary; 1338 (*secondaryVector)[i] = 0; 1279 if (shell!=-1) { 1280 1281 const G4AtomicShell* atomicShell = 1282 (G4AtomicTransitionManager::Instance())->Shell(Z, shell); 1283 G4double bindingEnergy = atomicShell->BindingEnergy(); 1284 1285 if(verboseLevel > 1) { 1286 G4cout << "PostStep Z= " << Z << " shell= " << shell 1287 << " bindingE(keV)= " << bindingEnergy/keV 1288 << " finalE(keV)= " << finalKineticEnergy/keV 1289 << G4endl; 1290 } 1291 1292 1293 1294 if (finalKineticEnergy >= bindingEnergy 1295 && (bindingEnergy >= minGammaEnergy 1296 || bindingEnergy >= minElectronEnergy) ) { 1297 1298 G4int shellId = atomicShell->ShellId(); 1299 secondaryVector = deexcitationManager.GenerateParticles(Z, shellId); 1300 1301 if (secondaryVector != 0) { 1302 1303 nSecondaries = secondaryVector->size(); 1304 for (size_t i = 0; i<nSecondaries; i++) { 1305 1306 aSecondary = (*secondaryVector)[i]; 1307 if (aSecondary) { 1308 1309 G4double e = aSecondary->GetKineticEnergy(); 1310 type = aSecondary->GetDefinition(); 1311 if (e < finalKineticEnergy && 1312 ((type == G4Gamma::Gamma() && e > minGammaEnergy ) || 1313 (type == G4Electron::Electron() && e > minElectronEnergy ))) { 1314 1315 finalKineticEnergy -= e; 1316 totalNumber++; 1317 1318 } else { 1319 1320 delete aSecondary; 1321 (*secondaryVector)[i] = 0; 1322 } 1339 1323 } 1340 1324 } … … 1343 1327 } 1344 1328 } 1345 1329 1346 1330 // Save delta-electrons 1347 1331 … … 1401 1385 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1402 1386 1403 std::vector<G4DynamicParticle*>* 1404 G4hLowEnergyIonisation::DeexciteAtom(const G4MaterialCutsCouple* couple, 1387 1388 1389 void G4hLowEnergyIonisation::SelectShellIonisationCS(G4String val) { 1390 1391 if (val == "analytical" ) { 1392 if (shellCS) delete shellCS; 1393 shellCS = new G4teoCrossSection(val); 1394 } 1395 else if (val == "empirical") { 1396 if (shellCS) delete shellCS; 1397 shellCS = new G4empCrossSection(); 1398 } 1399 } 1400 1401 1402 1403 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 1404 1405 1406 std::vector<G4DynamicParticle*>* G4hLowEnergyIonisation::DeexciteAtom(const G4MaterialCutsCouple* couple, 1405 1407 G4double incidentEnergy, 1406 1408 G4double hMass, -
trunk/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc
r1228 r1315 26 26 // 27 27 // $Id: G4hLowEnergyLoss.cc,v 1.30 2009/07/23 09:15:37 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-0 3$28 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 29 29 // 30 30 // ----------------------------------------------------------- -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExp.cc
r1228 r1315 41 41 // Empiric Model for shell cross sections in proton ionisation 42 42 // ------------------------------------------------------------------- 43 // $Id: G4hShellCrossSectionDoubleExp.cc,v 1.1 0 2009/06/10 13:32:36 manteroExp $44 // GEANT4 tag $Name: geant4-09-0 3$43 // $Id: G4hShellCrossSectionDoubleExp.cc,v 1.11 2010/02/05 08:54:12 sincerti Exp $ 44 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 45 45 46 46 #include "globals.hh" … … 56 56 { 57 57 kShellData = new G4hShellCrossSectionDoubleExpData(); 58 59 atomTotalCrossSection = 0.; 58 60 } 59 61 -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionDoubleExpData.cc
r1228 r1315 34 34 // ------------------------------------------------------------------- 35 35 // $Id: G4hShellCrossSectionDoubleExpData.cc,v 1.5 2009/06/10 13:32:36 mantero Exp $ 36 // GEANT4 tag $Name: geant4-09-0 3$36 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 37 37 38 38 #include "G4hShellCrossSectionDoubleExpData.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExp.cc
r1228 r1315 42 42 // ------------------------------------------------------------------- 43 43 // $Id: G4hShellCrossSectionExp.cc,v 1.7 2009/06/10 13:32:36 mantero Exp $ 44 // GEANT4 tag $Name: geant4-09-0 3$44 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 45 45 46 46 #include "globals.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSectionExpData.cc
r1228 r1315 34 34 // ------------------------------------------------------------------- 35 35 // $Id: G4hShellCrossSectionExpData.cc,v 1.4 2009/06/10 13:32:36 mantero Exp $ 36 // GEANT4 tag $Name: geant4-09-0 3$36 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 37 37 38 38 #include "G4hShellCrossSectionExpData.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4teoCrossSection.cc
r1197 r1315 24 24 // ******************************************************************** 25 25 // 26 //$Id: G4teoCrossSection.cc,v 1. 5 2009/11/11 09:14:53mantero Exp $27 // GEANT4 tag $Name: geant4-09-0 3-cand-01 $26 //$Id: G4teoCrossSection.cc,v 1.6 2010/06/06 23:40:35 mantero Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ 28 28 // 29 29 // … … 33 33 // 21 Apr 2009 ALF 1st implementation 34 34 // 29 Apr 2009 ALF Updated Desing for Integration 35 // 11 Nov 2009 ALF update and code cleaning for the Dec Release36 35 // 37 36 // ------------------------------------------------------------------- … … 50 49 //#include <math.h> 51 50 52 G4teoCrossSection::G4teoCrossSection(G4String shellModel = "ecpssr")51 G4teoCrossSection::G4teoCrossSection(G4String shellModel) 53 52 :totalCS(0) 54 53 { 55 54 56 if (shellModel == "ecpssr") { 57 58 ecpssrShellK = new G4ecpssrKCrossSection(); 59 60 ecpssrShellLi = new G4ecpssrLiCrossSection(); 55 if (shellModel == "analytical") { 56 57 58 ecpssrShellK = new G4AnalyticalEcpssrKCrossSection(); 59 ecpssrShellLi = new G4AnalyticalEcpssrLiCrossSection(); 60 61 61 } 62 else {63 64 G4cout << "G4teoCrossSection: sorry, only ECPSSR model available at the moment" << G4endl;65 66 ecpssrShellK = new G4ecpssrKCrossSection();67 68 ecpssrShellLi = new G4ecpssrLiCrossSection();69 70 }71 72 73 62 } 74 63
Note: See TracChangeset
for help on using the changeset viewer.