Ignore:
Timestamp:
Apr 6, 2009, 12:21:12 PM (15 years ago)
Author:
garnier
Message:

update processes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/processes/electromagnetic/highenergy/src/G4eeToHadronsModel.cc

    r819 r961  
    2424// ********************************************************************
    2525//
    26 // $Id: G4eeToHadronsModel.cc,v 1.8 2007/05/22 17:37:30 vnivanch Exp $
    27 // GEANT4 tag $Name: $
     26// $Id: G4eeToHadronsModel.cc,v 1.9 2008/07/10 18:06:39 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02-ref-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    6565using namespace std;
    6666
    67 G4eeToHadronsModel::G4eeToHadronsModel(const G4Vee2hadrons* m,
    68                                              G4int ver,
     67G4eeToHadronsModel::G4eeToHadronsModel(G4Vee2hadrons* m, G4int ver,
    6968                                       const G4String& nam)
    7069  : G4VEmModel(nam),
    71   model(m),
    72   crossPerElectron(0),
    73   crossBornPerElectron(0),
    74   isInitialised(false),
    75   nbins(100),
    76   verbose(ver)
    77 {
    78   theGamma      = G4Gamma::Gamma();
     70    model(m),
     71    crossPerElectron(0),
     72    crossBornPerElectron(0),
     73    isInitialised(false),
     74    nbins(100),
     75    verbose(ver)
     76{
     77  theGamma = G4Gamma::Gamma();
    7978}
    8079
     
    9695  isInitialised  = true;
    9796
     97  // Lab system
    9898  highKinEnergy = HighEnergyLimit();
    9999  lowKinEnergy  = LowEnergyLimit();
    100100
    101   emin  = model->ThresholdEnergy();
    102   emax = 2.0*electron_mass_c2*sqrt(1.0 + 0.5*highKinEnergy/electron_mass_c2);
    103   if(emin > emax) emin = emax;
    104 
    105   lowKinEnergy  = 0.5*emin*emin/electron_mass_c2 - 2.0*electron_mass_c2;
    106 
    107   epeak = min(model->PeakEnergy(), emax);
     101  // CM system
     102  emin  = model->LowEnergy();
     103  emax  = model->HighEnergy();
     104
     105  G4double emin0 =
     106    2.0*electron_mass_c2*sqrt(1.0 + 0.5*lowKinEnergy/electron_mass_c2);
     107  G4double emax0 =
     108    2.0*electron_mass_c2*sqrt(1.0 + 0.5*highKinEnergy/electron_mass_c2);
     109
     110  // recompute low energy
     111  if(emin0 > emax) {
     112    emin0 = emax;
     113    model->SetLowEnergy(emin0);
     114  }
     115  if(emin > emin0) {
     116    emin0 = emin;
     117    lowKinEnergy  = 0.5*emin*emin/electron_mass_c2 - 2.0*electron_mass_c2;
     118    SetLowEnergyLimit(lowKinEnergy);
     119  }
     120
     121  // recompute high energy
     122  if(emax < emax0) {
     123    emax0 = emax;
     124    highKinEnergy = 0.5*emax*emax/electron_mass_c2 - 2.0*electron_mass_c2;
     125    SetHighEnergyLimit(highKinEnergy);
     126  }
     127
     128  // peak energy
     129  epeak = std::min(model->PeakEnergy(), emax);
    108130  peakKinEnergy  = 0.5*epeak*epeak/electron_mass_c2 - 2.0*electron_mass_c2;
    109131
     
    148170    }
    149171  }
     172}
     173
     174//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     175
     176G4double G4eeToHadronsModel::CrossSectionPerVolume(
     177                                      const G4Material* mat,
     178                                      const G4ParticleDefinition* p,
     179                                      G4double kineticEnergy,
     180                                      G4double, G4double)
     181{
     182  return mat->GetElectronDensity()*
     183    ComputeCrossSectionPerElectron(p, kineticEnergy);
     184}
     185
     186//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
     187
     188G4double G4eeToHadronsModel::ComputeCrossSectionPerAtom(
     189                                      const G4ParticleDefinition* p,
     190                                      G4double kineticEnergy,
     191                                      G4double Z, G4double,
     192                                      G4double, G4double)
     193{
     194  return Z*ComputeCrossSectionPerElectron(p, kineticEnergy);
    150195}
    151196
Note: See TracChangeset for help on using the changeset viewer.