Changeset 1055 for trunk/source/processes/electromagnetic/highenergy/src
- Timestamp:
- May 28, 2009, 4:26:57 PM (17 years ago)
- Location:
- trunk/source/processes/electromagnetic/highenergy/src
- Files:
-
- 14 edited
-
G4BetheBlochNoDeltaModel.cc (modified) (3 diffs)
-
G4BraggNoDeltaModel.cc (modified) (3 diffs)
-
G4ee2KChargedModel.cc (modified) (2 diffs)
-
G4ee2KNeutralModel.cc (modified) (2 diffs)
-
G4eeTo3PiModel.cc (modified) (2 diffs)
-
G4eeToHadrons.cc (modified) (2 diffs)
-
G4eeToHadronsMultiModel.cc (modified) (2 diffs)
-
G4eeToPGammaModel.cc (modified) (2 diffs)
-
G4eeToTwoPiModel.cc (modified) (2 diffs)
-
G4hBremsstrahlung.cc (modified) (2 diffs)
-
G4hPairProduction.cc (modified) (2 diffs)
-
G4hhIonisation.cc (modified) (2 diffs)
-
G4mplIonisation.cc (modified) (2 diffs)
-
G4mplIonisationModel.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/highenergy/src/G4BetheBlochNoDeltaModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BetheBlochNoDeltaModel.cc,v 1. 3 2006/06/29 19:32:36 gunterExp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4BetheBlochNoDeltaModel.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 58 58 {} 59 59 60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 61 60 62 G4BetheBlochNoDeltaModel::~G4BetheBlochNoDeltaModel() 61 63 {} … … 63 65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 64 66 67 G4double G4BetheBlochNoDeltaModel::ComputeDEDXPerVolume( 68 const G4Material* material, 69 const G4ParticleDefinition* pd, 70 G4double kinEnergy, G4double) 71 { 72 return 73 G4BetheBlochModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX); 74 } 65 75 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 77 78 G4double G4BetheBlochNoDeltaModel::CrossSectionPerVolume( 79 const G4Material*,const G4ParticleDefinition*, 80 G4double, G4double, G4double) 81 { 82 return 0.0; 83 } 84 85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 86 87 -
trunk/source/processes/electromagnetic/highenergy/src/G4BraggNoDeltaModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4BraggNoDeltaModel.cc,v 1. 3 2006/06/29 19:32:38 gunterExp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4BraggNoDeltaModel.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 53 53 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 54 54 55 56 55 G4BraggNoDeltaModel::G4BraggNoDeltaModel(const G4ParticleDefinition*p, 57 56 const G4String& nam) : 58 57 G4BraggIonModel(p, nam) 59 58 {} 59 60 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 60 61 61 62 G4BraggNoDeltaModel::~G4BraggNoDeltaModel() … … 64 65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 65 66 67 G4double G4BraggNoDeltaModel::ComputeDEDXPerVolume( 68 const G4Material* material, 69 const G4ParticleDefinition* pd, 70 G4double kinEnergy, G4double) 71 { 72 return 73 G4BraggIonModel::ComputeDEDXPerVolume(material, pd, kinEnergy, DBL_MAX); 74 } 66 75 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 77 78 G4double G4BraggNoDeltaModel::CrossSectionPerVolume( 79 const G4Material*, 80 const G4ParticleDefinition*, 81 G4double, G4double, G4double) 82 { 83 return 0.0; 84 } 85 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 87 88 -
trunk/source/processes/electromagnetic/highenergy/src/G4ee2KChargedModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KChargedModel.cc,v 1. 1 2008/07/10 18:07:27vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4ee2KChargedModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4ee2KChargedModel::ThresholdEnergy() const 78 { 79 return 2.0*massK; 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 84 G4double G4ee2KChargedModel::PeakEnergy() const 85 { 86 return massPhi; 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 90 91 G4double G4ee2KChargedModel::ComputeCrossSection(G4double e) const 92 { 93 G4double ee = std::min(HighEnergy(),e); 94 return cross->CrossSection2Kcharged(ee); 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 98 77 99 G4PhysicsVector* G4ee2KChargedModel::PhysicsVector(G4double emin, 78 100 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4ee2KNeutralModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4ee2KNeutralModel.cc,v 1. 1 2008/07/10 18:07:27vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4ee2KNeutralModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4ee2KNeutralModel::ThresholdEnergy() const 78 { 79 return 2.0*massK; 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 84 G4double G4ee2KNeutralModel::PeakEnergy() const 85 { 86 return massPhi; 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 90 91 G4double G4ee2KNeutralModel::ComputeCrossSection(G4double e) const 92 { 93 G4double ee = std::min(HighEnergy(),e); 94 return cross->CrossSection2Kneutral(ee); 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 98 77 99 G4PhysicsVector* G4ee2KNeutralModel::PhysicsVector(G4double emin, 78 100 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4eeTo3PiModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeTo3PiModel.cc,v 1. 1 2008/07/10 18:07:27vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4eeTo3PiModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 81 81 G4cout << "### G4eeTo3PiModel::~G4eeTo3PiModel: gmax= " 82 82 << gmax << " gcash= " << gcash << G4endl; 83 } 84 85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 86 87 G4double G4eeTo3PiModel::ThresholdEnergy() const 88 { 89 return std::max(LowEnergy(),2.0*massPi + massPi0); 90 } 91 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 93 94 G4double G4eeTo3PiModel::PeakEnergy() const 95 { 96 G4double e = massOm; 97 if(HighEnergy() > massPhi) e = massPhi; 98 return e; 99 } 100 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 102 103 G4double G4eeTo3PiModel::ComputeCrossSection(G4double e) const 104 { 105 G4double ee = std::min(HighEnergy(),e); 106 return cross->CrossSection3pi(ee); 83 107 } 84 108 -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadrons.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToHadrons.cc,v 1. 8 2008/10/16 14:29:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4eeToHadrons.cc,v 1.9 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p) 78 { 79 return (&p == G4Positron::Positron()); 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 77 84 void G4eeToHadrons::InitialiseProcess(const G4ParticleDefinition*) 78 85 { -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsMultiModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToHadronsMultiModel.cc,v 1. 6 2008/07/11 17:49:11 vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4eeToHadronsMultiModel.cc,v 1.8 2009/04/12 17:48:21 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 129 129 nModels = models.size(); 130 130 131 if(pParticleChange) { 132 fParticleChange = 133 reinterpret_cast<G4ParticleChangeForGamma*>(pParticleChange); 134 } else { 135 fParticleChange = new G4ParticleChangeForGamma(); 136 } 131 fParticleChange = GetParticleChangeForGamma(); 137 132 } 138 133 } -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToPGammaModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToPGammaModel.cc,v 1. 1 2008/07/10 18:07:27vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4eeToPGammaModel.cc,v 1.2 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 83 83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 84 84 85 G4double G4eeToPGammaModel::ThresholdEnergy() const 86 { 87 return LowEnergy(); 88 } 89 90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 91 92 G4double G4eeToPGammaModel::PeakEnergy() const 93 { 94 return massR; 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 98 99 G4double G4eeToPGammaModel::ComputeCrossSection(G4double e) const 100 { 101 G4double ee = std::min(HighEnergy(),e); 102 G4double xs; 103 if(particle == pi0) xs = cross->CrossSectionPi0G(ee); 104 else xs = cross->CrossSectionEtaG(ee); 105 return xs; 106 } 107 108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 109 85 110 G4PhysicsVector* G4eeToPGammaModel::PhysicsVector(G4double emin, 86 111 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4eeToTwoPiModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4eeToTwoPiModel.cc,v 1. 6 2008/07/10 18:06:39vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4eeToTwoPiModel.cc,v 1.7 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4double G4eeToTwoPiModel::ThresholdEnergy() const 78 { 79 return 2.0*massPi; 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 84 G4double G4eeToTwoPiModel::PeakEnergy() const 85 { 86 return massRho; 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 90 91 G4double G4eeToTwoPiModel::ComputeCrossSection(G4double e) const 92 { 93 G4double ee = std::min(HighEnergy(),e); 94 return cross->CrossSection2pi(ee); 95 } 96 97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 98 77 99 G4PhysicsVector* G4eeToTwoPiModel::PhysicsVector(G4double emin, 78 100 G4double emax) const -
trunk/source/processes/electromagnetic/highenergy/src/G4hBremsstrahlung.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hBremsstrahlung.cc,v 1. 3 2008/10/16 14:29:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4hBremsstrahlung.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 72 72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 73 73 74 G4bool G4hBremsstrahlung::IsApplicable(const G4ParticleDefinition& p) 75 { 76 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV); 77 } 78 79 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 80 81 G4double G4hBremsstrahlung::MinPrimaryEnergy(const G4ParticleDefinition*, 82 const G4Material*, 83 G4double) 84 { 85 return lowestKinEnergy; 86 } 87 88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 89 74 90 void G4hBremsstrahlung::InitialiseEnergyLossProcess( 75 91 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/highenergy/src/G4hPairProduction.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hPairProduction.cc,v 1. 3 2008/10/16 14:29:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4hPairProduction.cc,v 1.4 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 73 73 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 74 74 75 G4bool G4hPairProduction::IsApplicable(const G4ParticleDefinition& p) 76 { 77 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 110.0*MeV); 78 } 79 80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 81 82 G4double G4hPairProduction::MinPrimaryEnergy(const G4ParticleDefinition*, 83 const G4Material*, 84 G4double) 85 { 86 return lowestKinEnergy; 87 } 88 89 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 90 75 91 void G4hPairProduction::InitialiseEnergyLossProcess( 76 92 const G4ParticleDefinition* part, -
trunk/source/processes/electromagnetic/highenergy/src/G4hhIonisation.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4hhIonisation.cc,v 1. 8 2008/10/16 14:29:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4hhIonisation.cc,v 1.9 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 G4hhIonisation::~G4hhIonisation() 76 76 {} 77 78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 79 80 G4bool G4hhIonisation::IsApplicable(const G4ParticleDefinition& p) 81 { 82 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV && 83 !p.IsShortLived()); 84 } 85 86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 87 88 G4double G4hhIonisation::MinPrimaryEnergy(const G4ParticleDefinition*, 89 const G4Material*, 90 G4double cut) 91 { 92 G4double x = 0.5*cut/electron_mass_c2; 93 G4double y = electron_mass_c2/mass; 94 G4double g = x*y + std::sqrt((1. + x)*(1. + x*y*y)); 95 return mass*(g - 1.0); 96 } 77 97 78 98 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -
trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisation.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisation.cc,v 1. 7 2008/10/16 14:29:48vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4mplIonisation.cc,v 1.8 2009/02/20 16:38:33 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 75 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 76 77 G4bool G4mplIonisation::IsApplicable(const G4ParticleDefinition& p) 78 { 79 return (p.GetParticleName() == "monopole"); 80 } 81 82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 77 84 void G4mplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition*, 78 85 const G4ParticleDefinition*) -
trunk/source/processes/electromagnetic/highenergy/src/G4mplIonisationModel.cc
r1007 r1055 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4mplIonisationModel.cc,v 1. 5 2007/11/13 18:36:29vnivanch Exp $27 // GEANT4 tag $Name: geant4-09-0 2$26 // $Id: G4mplIonisationModel.cc,v 1.7 2009/04/12 17:35:41 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-03-beta-cand-01 $ 28 28 // 29 29 // ------------------------------------------------------------------- … … 79 79 chargeSquare = magCharge * magCharge; 80 80 dedxlim = 45.*nmpl*nmpl*GeV*cm2/g; 81 fParticleChange = 0; 81 82 } 82 83 … … 93 94 monopole = p; 94 95 mass = monopole->GetPDGMass(); 95 96 if(pParticleChange) 97 fParticleChange = reinterpret_cast<G4ParticleChangeForLoss*>(pParticleChange); 98 else 99 fParticleChange = new G4ParticleChangeForLoss(); 96 if(!fParticleChange) fParticleChange = GetParticleChangeForLoss(); 100 97 } 101 98 … … 139 136 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 140 137 141 G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, G4double bg2) 138 G4double G4mplIonisationModel::ComputeDEDXAhlen(const G4Material* material, 139 G4double bg2) 142 140 { 143 141 G4double eDensity = material->GetElectronDensity(); … … 176 174 return dedx; 177 175 } 176 177 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 178 179 void G4mplIonisationModel::SampleSecondaries(std::vector<G4DynamicParticle*>*, 180 const G4MaterialCutsCouple*, 181 const G4DynamicParticle*, 182 G4double, 183 G4double) 184 {} 178 185 179 186 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... … … 204 211 return loss; 205 212 } 213 214 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 215 216 G4double G4mplIonisationModel::Dispersion(const G4Material* material, 217 const G4DynamicParticle* dp, 218 G4double& tmax, 219 G4double& length) 220 { 221 G4double siga = 0.0; 222 G4double tau = dp->GetKineticEnergy()/mass; 223 if(tau > 0.0) { 224 G4double electronDensity = material->GetElectronDensity(); 225 G4double gam = tau + 1.0; 226 G4double invbeta2 = (gam*gam)/(tau * (tau+2.0)); 227 siga = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length 228 * electronDensity * chargeSquare; 229 } 230 return siga; 231 } 232 233 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
Note:
See TracChangeset
for help on using the changeset viewer.
