Index: trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh
===================================================================
--- trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh	(revision 819)
+++ trunk/source/processes/electromagnetic/muons/include/G4MuBremsstrahlungModel.hh	(revision 961)
@@ -24,6 +24,6 @@
 // ********************************************************************
 //
-// $Id: G4MuBremsstrahlungModel.hh,v 1.17 2007/10/11 09:25:31 vnivanch Exp $
-// GEANT4 tag $Name: geant4-09-01-patch-02 $
+// $Id: G4MuBremsstrahlungModel.hh,v 1.22 2009/02/20 14:48:16 vnivanch Exp $
+// GEANT4 tag $Name: geant4-09-02-ref-02 $
 //
 // -------------------------------------------------------------------
@@ -45,6 +45,8 @@
 // 10-02-04 Add lowestKinEnergy (V.Ivanchenko)
 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
-// 13-02-06 add ComputeCrossSectionPerAtom (mma)
+// 13-02-06 Add ComputeCrossSectionPerAtom (mma)
 // 11-10-07 Add ignoreCut flag (V.Ivanchenko) 
+// 28-02-08 Reorganized protected methods and members (V.Ivanchenko) 
+// 06-03-08 Remove obsolete methods and members (V.Ivanchenko) 
 //
 
@@ -52,5 +54,5 @@
 // Class Description:
 //
-// Implementation of energy loss for gamma emission by muons
+// Implementation of bremssrahlung by muons
 
 // -------------------------------------------------------------------
@@ -61,4 +63,5 @@
 
 #include "G4VEmModel.hh"
+#include "G4NistManager.hh"
 
 class G4Element;
@@ -75,12 +78,8 @@
   virtual ~G4MuBremsstrahlungModel();
 
-  void SetParticle(const G4ParticleDefinition*);
+  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
 
-  void Initialise(const G4ParticleDefinition*, const G4DataVector&);
-
-  void SetLowestKineticEnergy(G4double e) {lowestKinEnergy = e;};
-
-  G4double MinEnergyCut(const G4ParticleDefinition*,
-                        const G4MaterialCutsCouple*);
+  virtual G4double MinEnergyCut(const G4ParticleDefinition*,
+				const G4MaterialCutsCouple*);
 			      
   virtual G4double ComputeCrossSectionPerAtom(
@@ -90,11 +89,5 @@
 				 G4double cutEnergy,
 				 G4double maxEnergy);
-				 
-  virtual G4double CrossSectionPerVolume(const G4Material*,
-                         const G4ParticleDefinition*,
-                               G4double kineticEnergy,
-                               G4double cutEnergy,
-                               G4double maxEnergy);
-			       
+				 			       
   virtual G4double ComputeDEDXPerVolume(const G4Material*,
                                 const G4ParticleDefinition*,
@@ -102,42 +95,32 @@
                                 G4double cutEnergy);
 			      
-  void SampleSecondaries(std::vector<G4DynamicParticle*>*,
-			 const G4MaterialCutsCouple*,
-			 const G4DynamicParticle*,
-			 G4double tmin,
-			 G4double maxEnergy);
+  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
+				 const G4MaterialCutsCouple*,
+				 const G4DynamicParticle*,
+				 G4double tmin,
+				 G4double maxEnergy);
+
+  inline void SetLowestKineticEnergy(G4double e);
 
 protected:
 
-  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
-			      G4double kineticEnergy);
+  G4double ComputMuBremLoss(G4double Z, G4double tkin, G4double cut);
+  
+  G4double ComputeMicroscopicCrossSection(G4double tkin,
+					  G4double Z,
+					  G4double cut);
 
-public:
+  virtual G4double ComputeDMicroscopicCrossSection(G4double tkin,
+						   G4double Z,
+						   G4double gammaEnergy);
 
- G4double ComputMuBremLoss(G4double Z, G4double A, G4double tkin, G4double cut);
-
- G4double ComputeMicroscopicCrossSection(G4double tkin,
-                                           G4double Z,
-                                           G4double A,
-                                           G4double cut);
-
- G4double ComputeDMicroscopicCrossSection(G4double tkin,
-                                          G4double Z,
-                                          G4double A,
-                                          G4double gammaEnergy);
-
-  inline void SetIgnoreCutFlag(G4bool);
-
-  inline G4bool IgnoreCutFlag() const;
+  inline void SetParticle(const G4ParticleDefinition*);
 
 private:
 
- G4DataVector* ComputePartialSumSigma(const G4Material* material,
-				      G4double tkin, G4double cut);
+  G4DataVector* ComputePartialSumSigma(const G4Material* material,
+				       G4double tkin, G4double cut);
 
- const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const;
-
- void MakeSamplingTables();
-
+  const G4Element* SelectRandomAtom(const G4MaterialCutsCouple* couple) const;
 
   // hide assignment operator
@@ -145,6 +128,21 @@
   G4MuBremsstrahlungModel(const  G4MuBremsstrahlungModel&);
 
+protected:
+
+  const G4ParticleDefinition* particle;
+  G4NistManager* nist;
+  G4double mass;
+  G4double rmass;
+  G4double cc;
+  G4double coeff;
+  G4double sqrte;
+  G4double bh;
+  G4double bh1;
+  G4double btf;
+  G4double btf1;
+
+private:
+
   G4ParticleDefinition*       theGamma;
-  const G4ParticleDefinition* particle;
   G4ParticleChangeForLoss*    fParticleChange;
 
@@ -153,40 +151,27 @@
   G4double lowestKinEnergy;
   G4double minThreshold;
-  G4double mass;
-
-  // tables for sampling
-  G4int nzdat,ntdat,NBIN;
-  static G4double zdat[5],adat[5],tdat[8];
-  G4double ya[1001], proba[5][8][1001];
-  G4double cutFixed;
-
-  G4bool  ignoreCut;
 
   std::vector<G4DataVector*> partialSumSigma;
-  G4bool  samplingTablesAreFilled;
-
 };
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-inline G4double G4MuBremsstrahlungModel::MaxSecondaryEnergy(
-                                 const G4ParticleDefinition*,
-				 G4double kineticEnergy)
+inline void G4MuBremsstrahlungModel::SetLowestKineticEnergy(G4double e) 
 {
-  return kineticEnergy;
+  lowestKinEnergy = e;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-inline void G4MuBremsstrahlungModel::SetIgnoreCutFlag(G4bool val)
+inline
+void G4MuBremsstrahlungModel::SetParticle(const G4ParticleDefinition* p)
 {
-  ignoreCut = val;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-inline G4bool G4MuBremsstrahlungModel::IgnoreCutFlag() const
-{
-  return ignoreCut;
+  if(!particle) {
+    particle = p;
+    mass = particle->GetPDGMass();
+    rmass=mass/electron_mass_c2 ;
+    cc=classic_electr_radius/rmass ;
+    coeff= 16.*fine_structure_const*cc*cc/3. ;
+  }
 }
 
