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/muons/include/G4MuBremsstrahlungModel.hh

    r819 r961  
    2424// ********************************************************************
    2525//
    26 // $Id: G4MuBremsstrahlungModel.hh,v 1.17 2007/10/11 09:25:31 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-01-patch-02 $
     26// $Id: G4MuBremsstrahlungModel.hh,v 1.22 2009/02/20 14:48:16 vnivanch Exp $
     27// GEANT4 tag $Name: geant4-09-02-ref-02 $
    2828//
    2929// -------------------------------------------------------------------
     
    4545// 10-02-04 Add lowestKinEnergy (V.Ivanchenko)
    4646// 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
    47 // 13-02-06 add ComputeCrossSectionPerAtom (mma)
     47// 13-02-06 Add ComputeCrossSectionPerAtom (mma)
    4848// 11-10-07 Add ignoreCut flag (V.Ivanchenko)
     49// 28-02-08 Reorganized protected methods and members (V.Ivanchenko)
     50// 06-03-08 Remove obsolete methods and members (V.Ivanchenko)
    4951//
    5052
     
    5254// Class Description:
    5355//
    54 // Implementation of energy loss for gamma emission by muons
     56// Implementation of bremssrahlung by muons
    5557
    5658// -------------------------------------------------------------------
     
    6163
    6264#include "G4VEmModel.hh"
     65#include "G4NistManager.hh"
    6366
    6467class G4Element;
     
    7578  virtual ~G4MuBremsstrahlungModel();
    7679
    77   void SetParticle(const G4ParticleDefinition*);
     80  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    7881
    79   void Initialise(const G4ParticleDefinition*, const G4DataVector&);
    80 
    81   void SetLowestKineticEnergy(G4double e) {lowestKinEnergy = e;};
    82 
    83   G4double MinEnergyCut(const G4ParticleDefinition*,
    84                         const G4MaterialCutsCouple*);
     82  virtual G4double MinEnergyCut(const G4ParticleDefinition*,
     83                                const G4MaterialCutsCouple*);
    8584                             
    8685  virtual G4double ComputeCrossSectionPerAtom(
     
    9089                                 G4double cutEnergy,
    9190                                 G4double maxEnergy);
    92                                  
    93   virtual G4double CrossSectionPerVolume(const G4Material*,
    94                          const G4ParticleDefinition*,
    95                                G4double kineticEnergy,
    96                                G4double cutEnergy,
    97                                G4double maxEnergy);
    98                                
     91                                                               
    9992  virtual G4double ComputeDEDXPerVolume(const G4Material*,
    10093                                const G4ParticleDefinition*,
     
    10295                                G4double cutEnergy);
    10396                             
    104   void SampleSecondaries(std::vector<G4DynamicParticle*>*,
    105                          const G4MaterialCutsCouple*,
    106                          const G4DynamicParticle*,
    107                          G4double tmin,
    108                          G4double maxEnergy);
     97  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
     98                                 const G4MaterialCutsCouple*,
     99                                 const G4DynamicParticle*,
     100                                 G4double tmin,
     101                                 G4double maxEnergy);
     102
     103  inline void SetLowestKineticEnergy(G4double e);
    109104
    110105protected:
    111106
    112   G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
    113                               G4double kineticEnergy);
     107  G4double ComputMuBremLoss(G4double Z, G4double tkin, G4double cut);
     108 
     109  G4double ComputeMicroscopicCrossSection(G4double tkin,
     110                                          G4double Z,
     111                                          G4double cut);
    114112
    115 public:
     113  virtual G4double ComputeDMicroscopicCrossSection(G4double tkin,
     114                                                   G4double Z,
     115                                                   G4double gammaEnergy);
    116116
    117  G4double ComputMuBremLoss(G4double Z, G4double A, G4double tkin, G4double cut);
    118 
    119  G4double ComputeMicroscopicCrossSection(G4double tkin,
    120                                            G4double Z,
    121                                            G4double A,
    122                                            G4double cut);
    123 
    124  G4double ComputeDMicroscopicCrossSection(G4double tkin,
    125                                           G4double Z,
    126                                           G4double A,
    127                                           G4double gammaEnergy);
    128 
    129   inline void SetIgnoreCutFlag(G4bool);
    130 
    131   inline G4bool IgnoreCutFlag() const;
     117  inline void SetParticle(const G4ParticleDefinition*);
    132118
    133119private:
    134120
    135  G4DataVector* ComputePartialSumSigma(const G4Material* material,
    136                                       G4double tkin, G4double cut);
     121  G4DataVector* ComputePartialSumSigma(const G4Material* material,
     122                                       G4double tkin, G4double cut);
    137123
    138  const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const;
    139 
    140  void MakeSamplingTables();
    141 
     124  const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const;
    142125
    143126  // hide assignment operator
     
    145128  G4MuBremsstrahlungModel(const  G4MuBremsstrahlungModel&);
    146129
     130protected:
     131
     132  const G4ParticleDefinition* particle;
     133  G4NistManager* nist;
     134  G4double mass;
     135  G4double rmass;
     136  G4double cc;
     137  G4double coeff;
     138  G4double sqrte;
     139  G4double bh;
     140  G4double bh1;
     141  G4double btf;
     142  G4double btf1;
     143
     144private:
     145
    147146  G4ParticleDefinition*       theGamma;
    148   const G4ParticleDefinition* particle;
    149147  G4ParticleChangeForLoss*    fParticleChange;
    150148
     
    153151  G4double lowestKinEnergy;
    154152  G4double minThreshold;
    155   G4double mass;
    156 
    157   // tables for sampling
    158   G4int nzdat,ntdat,NBIN;
    159   static G4double zdat[5],adat[5],tdat[8];
    160   G4double ya[1001], proba[5][8][1001];
    161   G4double cutFixed;
    162 
    163   G4bool  ignoreCut;
    164153
    165154  std::vector<G4DataVector*> partialSumSigma;
    166   G4bool  samplingTablesAreFilled;
    167 
    168155};
    169156
    170157//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    171158
    172 inline G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(
    173                                  const G4ParticleDefinition*,
    174                                  G4double kineticEnergy)
     159inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e)
    175160{
    176   return kineticEnergy;
     161  lowestKinEnergy = e;
    177162}
    178163
    179164//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    180165
    181 inline void G4MuBremsstrahlungModel::SetIgnoreCutFlag(G4bool val)
     166inline
     167void G4MuBremsstrahlungModel::SetParticle(const G4ParticleDefinition* p)
    182168{
    183   ignoreCut = val;
    184 }
    185 
    186 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
    187 
    188 inline G4bool G4MuBremsstrahlungModel::IgnoreCutFlag() const
    189 {
    190   return ignoreCut;
     169  if(!particle) {
     170    particle = p;
     171    mass = particle->GetPDGMass();
     172    rmass=mass/electron_mass_c2 ;
     173    cc=classic_electr_radius/rmass ;
     174    coeff= 16.*fine_structure_const*cc*cc/3. ;
     175  }
    191176}
    192177
Note: See TracChangeset for help on using the changeset viewer.