View | Details | Raw Unified | Return to problem 1001 | Differences between
and this patch

Collapse All | Expand All

(-)source.new/particles/management/include/G4DalitzDecayChannel.hh (-1 / +1 lines)
Lines 58-64 class G4DalitzDecayChannel :public G4VDe Link Here
58
      virtual ~G4DalitzDecayChannel();
58
      virtual ~G4DalitzDecayChannel();
59
59
60
  public: // With Description
60
  public: // With Description
61
     virtual G4DecayProducts *DecayIt(G4double);     
61
     virtual G4DecayProducts *DecayIt(G4double, G4double*);     
62
62
63
  private:
63
  private:
64
     enum{idGamma=0, idLepton=1, idAntiLepton=2}; 
64
     enum{idGamma=0, idLepton=1, idAntiLepton=2}; 
(-)source.new/particles/management/include/G4KL3DecayChannel.hh (-1 / +1 lines)
Lines 54-60 class G4KL3DecayChannel :public G4VDecay Link Here
54
      virtual ~G4KL3DecayChannel();
54
      virtual ~G4KL3DecayChannel();
55
55
56
  public:  // With Description
56
  public:  // With Description
57
     virtual G4DecayProducts *DecayIt(G4double);     
57
     virtual G4DecayProducts *DecayIt(G4double, G4double*);     
58
58
59
  protected:
59
  protected:
60
     // assignment of daughter particles for arrays of daughters[] etc.
60
     // assignment of daughter particles for arrays of daughters[] etc.
(-)source.new/particles/management/include/G4MuonDecayChannel.hh (-1 / +1 lines)
Lines 58-64 class G4MuonDecayChannel :public G4VDeca Link Here
58
      virtual ~G4MuonDecayChannel();
58
      virtual ~G4MuonDecayChannel();
59
59
60
  public:  // With Description
60
  public:  // With Description
61
     virtual G4DecayProducts *DecayIt(G4double);     
61
     virtual G4DecayProducts *DecayIt(G4double, G4double*);     
62
  
62
  
63
};  
63
};  
64
64
(-)source.new/particles/management/include/G4MuonDecayChannelWithSpin.hh (-1 / +1 lines)
Lines 63-69 public: // With Description Link Here
63
63
64
public:  // With Description
64
public:  // With Description
65
65
66
  virtual G4DecayProducts *DecayIt(G4double);
66
  virtual G4DecayProducts *DecayIt(G4double, G4double*);
67
67
68
  void SetPolarization(G4ThreeVector);
68
  void SetPolarization(G4ThreeVector);
69
  const G4ThreeVector& GetPolarization() const;
69
  const G4ThreeVector& GetPolarization() const;
(-)source.new/particles/management/include/G4MuonRadiativeDecayChannelWithSpin.hh (-1 / +1 lines)
Lines 66-72 class G4MuonRadiativeDecayChannelWithSpi Link Here
66
66
67
  public:  // With Description
67
  public:  // With Description
68
68
69
    virtual G4DecayProducts *DecayIt(G4double);
69
    virtual G4DecayProducts *DecayIt(G4double, G4double*);
70
70
71
    void SetPolarization(G4ThreeVector);
71
    void SetPolarization(G4ThreeVector);
72
    const G4ThreeVector& GetPolarization() const;
72
    const G4ThreeVector& GetPolarization() const;
(-)source.new/particles/management/include/G4NeutronBetaDecayChannel.hh (-1 / +1 lines)
Lines 56-62 class G4NeutronBetaDecayChannel :public Link Here
56
      virtual ~G4NeutronBetaDecayChannel();
56
      virtual ~G4NeutronBetaDecayChannel();
57
57
58
  public:  // With Description
58
  public:  // With Description
59
     virtual G4DecayProducts *DecayIt(G4double);     
59
     virtual G4DecayProducts *DecayIt(G4double, G4double*);     
60
  
60
  
61
  protected: 
61
  protected: 
62
  // e-neutrino angular correlation parameter 
62
  // e-neutrino angular correlation parameter 
(-)source.new/particles/management/include/G4PhaseSpaceDecayChannel.hh (-1 / +1 lines)
Lines 60-66 class G4PhaseSpaceDecayChannel :public G Link Here
60
      virtual ~G4PhaseSpaceDecayChannel();
60
      virtual ~G4PhaseSpaceDecayChannel();
61
61
62
  public:  // With Description
62
  public:  // With Description
63
     virtual G4DecayProducts *DecayIt(G4double);   
63
     virtual G4DecayProducts *DecayIt(G4double, G4double*);   
64
64
65
  public: 
65
  public: 
66
     static G4double Pmx(G4double e, G4double p1, G4double p2);
66
     static G4double Pmx(G4double e, G4double p1, G4double p2);
(-)source.new/particles/management/include/G4PionRadiativeDecayChannel.hh (-1 / +1 lines)
Lines 67-73 class G4PionRadiativeDecayChannel : publ Link Here
67
67
68
  public:  // With Description
68
  public:  // With Description
69
69
70
    virtual G4DecayProducts *DecayIt(G4double);
70
    virtual G4DecayProducts *DecayIt(G4double, G4double*);
71
71
72
  private:
72
  private:
73
73
(-)source.new/particles/management/include/G4TauLeptonicDecayChannel.hh (-1 / +1 lines)
Lines 58-64 class G4TauLeptonicDecayChannel :public Link Here
58
      virtual ~G4TauLeptonicDecayChannel();
58
      virtual ~G4TauLeptonicDecayChannel();
59
59
60
  public:  // With Description
60
  public:  // With Description
61
     virtual G4DecayProducts *DecayIt(G4double);   
61
     virtual G4DecayProducts *DecayIt(G4double, G4double*);   
62
  
62
  
63
  private:
63
  private:
64
     static G4double   spectrum(G4double momentum,
64
     static G4double   spectrum(G4double momentum,
(-)source.new/particles/management/include/G4VDecayChannel.hh (-1 / +1 lines)
Lines 82-88 class G4VDecayChannel Link Here
82
    G4int operator<(const G4VDecayChannel &right) const;
82
    G4int operator<(const G4VDecayChannel &right) const;
83
83
84
  public: // With Description
84
  public: // With Description
85
   virtual G4DecayProducts* DecayIt(G4double parentMass = -1.0) = 0;
85
  virtual G4DecayProducts* DecayIt(G4double parentMass = -1.0, G4double* localDeposit = 0) = 0;
86
86
87
  public: // With Description
87
  public: // With Description
88
     //get kinematics name
88
     //get kinematics name
(-)source.new/particles/management/src/G4DalitzDecayChannel.cc (-1 / +1 lines)
Lines 75-81 G4DalitzDecayChannel::~G4DalitzDecayChan Link Here
75
{
75
{
76
}
76
}
77
77
78
G4DecayProducts *G4DalitzDecayChannel::DecayIt(G4double) 
78
G4DecayProducts *G4DalitzDecayChannel::DecayIt(G4double, G4double*) 
79
{
79
{
80
#ifdef G4VERBOSE
80
#ifdef G4VERBOSE
81
  if (GetVerboseLevel()>1) G4cout << "G4DalitzDecayChannel::DecayIt ";
81
  if (GetVerboseLevel()>1) G4cout << "G4DalitzDecayChannel::DecayIt ";
(-)source.new/particles/management/src/G4KL3DecayChannel.cc (-1 / +1 lines)
Lines 99-105 G4KL3DecayChannel::~G4KL3DecayChannel() Link Here
99
{
99
{
100
}
100
}
101
101
102
G4DecayProducts* G4KL3DecayChannel::DecayIt(G4double) 
102
G4DecayProducts* G4KL3DecayChannel::DecayIt(G4double, G4double*) 
103
{
103
{
104
  // this version neglects muon polarization 
104
  // this version neglects muon polarization 
105
  //              assumes the pure V-A coupling
105
  //              assumes the pure V-A coupling
(-)source.new/particles/management/src/G4MuonDecayChannel.cc (-1 / +1 lines)
Lines 85-91 G4MuonDecayChannel::~G4MuonDecayChannel( Link Here
85
{
85
{
86
}
86
}
87
87
88
G4DecayProducts *G4MuonDecayChannel::DecayIt(G4double) 
88
G4DecayProducts *G4MuonDecayChannel::DecayIt(G4double, G4double*) 
89
{
89
{
90
  // this version neglects muon polarization,and electron mass  
90
  // this version neglects muon polarization,and electron mass  
91
  //              assumes the pure V-A coupling
91
  //              assumes the pure V-A coupling
(-)source.new/particles/management/src/G4MuonDecayChannelWithSpin.cc (-1 / +1 lines)
Lines 55-61 G4MuonDecayChannelWithSpin::~G4MuonDecay Link Here
55
{
55
{
56
}
56
}
57
57
58
G4DecayProducts *G4MuonDecayChannelWithSpin::DecayIt(G4double) 
58
G4DecayProducts *G4MuonDecayChannelWithSpin::DecayIt(G4double, G4double*) 
59
{
59
{
60
  // This version assumes V-A coupling with 1st order radiative correctons,
60
  // This version assumes V-A coupling with 1st order radiative correctons,
61
  //              the standard model Michel parameter values, but
61
  //              the standard model Michel parameter values, but
(-)source.new/particles/management/src/G4MuonRadiativeDecayChannelWithSpin.cc (-1 / +1 lines)
Lines 79-85 G4MuonRadiativeDecayChannelWithSpin::~G4 Link Here
79
{
79
{
80
}
80
}
81
81
82
G4DecayProducts *G4MuonRadiativeDecayChannelWithSpin::DecayIt(G4double) 
82
G4DecayProducts *G4MuonRadiativeDecayChannelWithSpin::DecayIt(G4double, G4double*) 
83
{
83
{
84
84
85
#ifdef G4VERBOSE
85
#ifdef G4VERBOSE
(-)source.new/particles/management/src/G4NeutronBetaDecayChannel.cc (-1 / +1 lines)
Lines 75-81 G4NeutronBetaDecayChannel::~G4NeutronBet Link Here
75
{
75
{
76
}
76
}
77
77
78
G4DecayProducts *G4NeutronBetaDecayChannel::DecayIt(G4double) 
78
G4DecayProducts *G4NeutronBetaDecayChannel::DecayIt(G4double, G4double*) 
79
{
79
{
80
  //  This class describes free neutron beta decay  kinemtics.
80
  //  This class describes free neutron beta decay  kinemtics.
81
  //  This version neglects neutron/electron polarization  
81
  //  This version neglects neutron/electron polarization  
(-)source.new/particles/management/src/G4PhaseSpaceDecayChannel.cc (-1 / +1 lines)
Lines 75-81 G4PhaseSpaceDecayChannel::~G4PhaseSpaceD Link Here
75
{
75
{
76
}
76
}
77
77
78
G4DecayProducts *G4PhaseSpaceDecayChannel::DecayIt(G4double parentMass)
78
G4DecayProducts *G4PhaseSpaceDecayChannel::DecayIt(G4double parentMass, G4double*)
79
{
79
{
80
#ifdef G4VERBOSE
80
#ifdef G4VERBOSE
81
  if (GetVerboseLevel()>1) G4cout << "G4PhaseSpaceDecayChannel::DecayIt ";
81
  if (GetVerboseLevel()>1) G4cout << "G4PhaseSpaceDecayChannel::DecayIt ";
(-)source.new/particles/management/src/G4PionRadiativeDecayChannel.cc (-1 / +1 lines)
Lines 95-101 G4PionRadiativeDecayChannel::~G4PionRadi Link Here
95
{
95
{
96
}
96
}
97
97
98
G4DecayProducts *G4PionRadiativeDecayChannel::DecayIt(G4double) 
98
G4DecayProducts *G4PionRadiativeDecayChannel::DecayIt(G4double, G4double*) 
99
{
99
{
100
100
101
#ifdef G4VERBOSE
101
#ifdef G4VERBOSE
(-)source.new/particles/management/src/G4TauLeptonicDecayChannel.cc (-1 / +1 lines)
Lines 94-100 G4TauLeptonicDecayChannel::~G4TauLeptoni Link Here
94
{
94
{
95
}
95
}
96
96
97
G4DecayProducts *G4TauLeptonicDecayChannel::DecayIt(G4double) 
97
G4DecayProducts *G4TauLeptonicDecayChannel::DecayIt(G4double, G4double*) 
98
{
98
{
99
  // this version neglects muon polarization 
99
  // this version neglects muon polarization 
100
  //              assumes the pure V-A coupling
100
  //              assumes the pure V-A coupling
(-)source.new/processes/hadronic/models/radioactive_decay/include/G4NuclearDecayChannel.hh (-1 / +1 lines)
Lines 84-90 public: // with description Link Here
84
84
85
  // destructor
85
  // destructor
86
  //
86
  //
87
  G4DecayProducts *DecayIt (G4double theParentMass);
87
  G4DecayProducts *DecayIt (G4double theParentMass, G4double* localDeposit);
88
  // Returns the decay products
88
  // Returns the decay products
89
  //
89
  //
90
  inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
90
  inline G4RadioactiveDecayMode GetDecayMode () {return decayMode;}
(-)source.new/processes/hadronic/models/radioactive_decay/include/G4RadioactiveDecay.hh (-1 / +1 lines)
Lines 194-200 protected: Link Here
194
  G4VParticleChange* DecayIt( const G4Track& theTrack,
194
  G4VParticleChange* DecayIt( const G4Track& theTrack,
195
                              const G4Step&  theStep);
195
                              const G4Step&  theStep);
196
196
197
  G4DecayProducts* DoDecay(G4ParticleDefinition& theParticleDef);
197
  G4DecayProducts* DoDecay(G4ParticleDefinition& theParticleDef, G4double& localEnergyDeposit);
198
198
199
  G4double GetMeanFreePath(const G4Track& theTrack,
199
  G4double GetMeanFreePath(const G4Track& theTrack,
200
                           G4double previousStepSize,
200
                           G4double previousStepSize,
(-)source.new/processes/hadronic/models/radioactive_decay/src/G4NuclearDecayChannel.cc (-4 / +18 lines)
Lines 66-71 Link Here
66
#include "G4BetaFermiFunction.hh"
66
#include "G4BetaFermiFunction.hh"
67
#include "G4PhotonEvaporation.hh"
67
#include "G4PhotonEvaporation.hh"
68
#include "G4AtomicDeexcitation.hh"
68
#include "G4AtomicDeexcitation.hh"
69
#include "G4AtomicTransitionManager.hh"
70
#include "G4AtomicShell.hh"
69
71
70
72
71
const G4double G4NuclearDecayChannel:: pTolerance = 0.001;
73
const G4double G4NuclearDecayChannel:: pTolerance = 0.001;
Lines 219-225 void G4NuclearDecayChannel::FillDaughter Link Here
219
//
221
//
220
//
222
//
221
//
223
//
222
G4DecayProducts *G4NuclearDecayChannel::DecayIt (G4double theParentMass)
224
G4DecayProducts *G4NuclearDecayChannel::DecayIt (G4double theParentMass, G4double* localDeposit)
223
{
225
{
224
  //
226
  //
225
  //
227
  //
Lines 295-301 G4DecayProducts *G4NuclearDecayChannel:: Link Here
295
      case KshellEC:
297
      case KshellEC:
296
	//
298
	//
297
	{
299
	{
298
	  eShell = 1;
300
	  eShell = 0;
299
	}
301
	}
300
	break;
302
	break;
301
      case LshellEC:
303
      case LshellEC:
Lines 317-331 G4DecayProducts *G4NuclearDecayChannel:: Link Here
317
      }
319
      }
318
    G4int aZ = daughterZ;
320
    G4int aZ = daughterZ;
319
    if (aZ > 5 && aZ < 101) {  // only applies to 5< Z <101 
321
    if (aZ > 5 && aZ < 101) {  // only applies to 5< Z <101 
322
323
      // Retrieve the corresponding identifier and binding energy of the selected shell
324
      const G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance();
325
      const G4AtomicShell* shell = transitionManager->Shell(aZ, eShell);
326
      G4double bindingEnergy = shell->BindingEnergy();
327
      G4int shellId = shell->ShellId();
328
320
      G4AtomicDeexcitation* atomDeex = new G4AtomicDeexcitation();
329
      G4AtomicDeexcitation* atomDeex = new G4AtomicDeexcitation();
321
      //no Auger electron generation 
330
      //no Auger electron generation 
322
      // atomDeex->ActivateAugerElectronProduction(0);
331
      // atomDeex->ActivateAugerElectronProduction(0);
323
      std::vector<G4DynamicParticle*>* armProducts = atomDeex->GenerateParticles(aZ,eShell);
332
      std::vector<G4DynamicParticle*>* armProducts = atomDeex->GenerateParticles(aZ,shellId);
324
333
325
      // pop up the daughter before insertion
334
      // pop up the daughter before insertion
326
      dynamicDaughter = products->PopProducts();
335
      dynamicDaughter = products->PopProducts();
327
      for (size_t i = 0;  i < armProducts->size(); i++)
336
      G4double totalEnergySecondaries = 0.0;
337
      for (size_t i = 0;  i < armProducts->size(); i++) {
338
	totalEnergySecondaries += (*armProducts)[i]->GetKineticEnergy();
328
	products->PushProducts ((*armProducts)[i]);
339
	products->PushProducts ((*armProducts)[i]);
340
      }
341
      *localDeposit += bindingEnergy - totalEnergySecondaries;
342
329
      delete armProducts;
343
      delete armProducts;
330
      delete atomDeex;
344
      delete atomDeex;
331
      products->PushProducts (dynamicDaughter); 
345
      products->PushProducts (dynamicDaughter); 
(-)source.new/processes/hadronic/models/radioactive_decay/src/G4RadioactiveDecay.cc (-5 / +5 lines)
Lines 1423-1429 G4VParticleChange* G4RadioactiveDecay::D Link Here
1423
	  }
1423
	  }
1424
#endif
1424
#endif
1425
	//
1425
	//
1426
	G4DecayProducts *products = DoDecay(*theParticleDef);
1426
	G4DecayProducts *products = DoDecay(*theParticleDef, energyDeposit);
1427
	//
1427
	//
1428
	//
1428
	//
1429
	// Get parent particle information and boost the decay products to the
1429
	// Get parent particle information and boost the decay products to the
Lines 1635-1646 G4VParticleChange* G4RadioactiveDecay::D Link Here
1635
		  {
1635
		  {
1636
		    // A decay channel has been identified, so execute the DecayIt.
1636
		    // A decay channel has been identified, so execute the DecayIt.
1637
		    G4double tempmass = parentNucleus->GetPDGMass();      
1637
		    G4double tempmass = parentNucleus->GetPDGMass();      
1638
		    tempprods = theDecayChannel->DecayIt(tempmass);
1638
		    tempprods = theDecayChannel->DecayIt(tempmass, &energyDeposit);
1639
		    weight *= (theDecayChannel->GetBR())*(theDecayTable->entries());
1639
		    weight *= (theDecayChannel->GetBR())*(theDecayTable->entries());
1640
		  }
1640
		  }
1641
	      }
1641
	      }
1642
	      else {
1642
	      else {
1643
		tempprods = DoDecay(*parentNucleus);
1643
		tempprods = DoDecay(*parentNucleus, energyDeposit);
1644
	      }
1644
	      }
1645
	      //
1645
	      //
1646
	      // save the secondaries for buffers
1646
	      // save the secondaries for buffers
Lines 1707-1713 G4VParticleChange* G4RadioactiveDecay::D Link Here
1707
//
1707
//
1708
// DoDecay
1708
// DoDecay
1709
//
1709
//
1710
G4DecayProducts* G4RadioactiveDecay::DoDecay(  G4ParticleDefinition& theParticleDef )
1710
G4DecayProducts* G4RadioactiveDecay::DoDecay(G4ParticleDefinition& theParticleDef, G4double& localDeposit)
1711
{
1711
{
1712
  G4DecayProducts *products = 0;
1712
  G4DecayProducts *products = 0;
1713
  //
1713
  //
Lines 1756-1762 G4DecayProducts* G4RadioactiveDecay::DoD Link Here
1756
      G4double tempmass = theParticleDef.GetPDGMass();
1756
      G4double tempmass = theParticleDef.GetPDGMass();
1757
      //
1757
      //
1758
      
1758
      
1759
      products = theDecayChannel->DecayIt(tempmass);
1759
      products = theDecayChannel->DecayIt(tempmass, &localDeposit);
1760
      
1760
      
1761
    }
1761
    }
1762
  return products;
1762
  return products;
(-)source.new/processes/hadronic/models/util/include/G4GeneralPhaseSpaceDecay.hh (-1 / +1 lines)
Lines 78-84 class G4GeneralPhaseSpaceDecay : public Link Here
78
  public:
78
  public:
79
     G4double GetParentMass() const;
79
     G4double GetParentMass() const;
80
     void SetParentMass(const G4double aParentMass);
80
     void SetParentMass(const G4double aParentMass);
81
     virtual G4DecayProducts* DecayIt(G4double mass=0.0);   
81
     virtual G4DecayProducts* DecayIt(G4double mass=0.0, G4double* = 0);   
82
     static G4double Pmx(G4double e, G4double p1, G4double p2);
82
     static G4double Pmx(G4double e, G4double p1, G4double p2);
83
83
84
  protected:
84
  protected:
(-)source.new/processes/hadronic/models/util/src/G4GeneralPhaseSpaceDecay.cc (-1 / +1 lines)
Lines 118-124 G4GeneralPhaseSpaceDecay::~G4GeneralPhas Link Here
118
{
118
{
119
}
119
}
120
120
121
G4DecayProducts *G4GeneralPhaseSpaceDecay::DecayIt(G4double) 
121
G4DecayProducts *G4GeneralPhaseSpaceDecay::DecayIt(G4double, G4double*) 
122
{
122
{
123
  if (GetVerboseLevel()>1) G4cout << "G4GeneralPhaseSpaceDecay::DecayIt ";
123
  if (GetVerboseLevel()>1) G4cout << "G4GeneralPhaseSpaceDecay::DecayIt ";
124
  G4DecayProducts * products = NULL;
124
  G4DecayProducts * products = NULL;

Return to problem 1001