Import Geant4 9.6.0 source tree
This commit is contained in:
@@ -15,6 +15,93 @@ code and to keep track of all tags.
|
||||
* Please list in reverse chronological order (last date on top)
|
||||
---------------------------------------------------------------
|
||||
|
||||
27 September 2012, G.Cosmo
|
||||
= Explicitly use inclusion of headers for system of units and physical
|
||||
constants, in plan to remove implicit inclusion from globals.hh.
|
||||
|
||||
15 August 2012, A.Ribon (hadr-string-diff-V09-05-17)
|
||||
- Coverity fixes in G4FTFParticipants.cc.
|
||||
|
||||
14 August 2012, A.Ribon (hadr-string-diff-V09-05-16)
|
||||
- Coverity fixes in G4FTFParticipants.cc and G4FTFParameters.cc.
|
||||
|
||||
25 July 2012, A.Ribon (hadr-string-diff-V09-05-15)
|
||||
- Coverity fixes in: G4FTFModel, G4FTFAnnihilation,
|
||||
G4ElasticHNScattering, G4FTFParameters, G4FTFParticipants.
|
||||
|
||||
17 July 2012, G.Folger (hadr-string-diff-V09-05-14)
|
||||
- fixes for coverity in G4DiffractiveSplitableHadron
|
||||
|
||||
6 July 2012, V. Uzhinsky (hadr-string-diff-V09-05-13)
|
||||
- FTF parameters tunned: Wdelta 0.25 -> 0.05, Dcor 0.4 -> 0.3
|
||||
E* 75 -> 100 MeV
|
||||
-------------------------------------------------------
|
||||
21 June 2012, W.Pokorski (hadr-string-diff-V09-05-12)
|
||||
- removed dependency on CHIPS in sources.cmake file
|
||||
-------------------------------------------------------
|
||||
|
||||
20 June 2012, V. Uzhinsky (hadr-string-diff-V09-05-11)
|
||||
- Bug is fixed for K-minus interactions in FTFModel
|
||||
-------------------------------------------------------
|
||||
|
||||
13 June 2012, V. Uzhinsky (hadr-string-diff-V09-05-10)
|
||||
- Bug is fixed for high energy anti-baryons in FTFModel
|
||||
-------------------------------------------------------
|
||||
|
||||
12 June 2012, V. Uzhinsky (hadr-string-diff-V09-05-09)
|
||||
- Bug is fixed in PutOnMassShell in FTFModel
|
||||
- FTFModel operation is improved.
|
||||
-------------------------------------------------------------
|
||||
|
||||
12 June 2012, G.Folger (hadr-string-diff-V09-05-08)
|
||||
- Fix sahdowing of variables,
|
||||
affected files:G4FTFParameters.{hh,cc},G4FTFModel.cc,G4DiffractiveExcitation.cc
|
||||
--------------------------------------------------------------------
|
||||
|
||||
6 June 2012, V. Uzhinsky (hadr-string-diff-V09-05-07)
|
||||
- Diffraction dissociation of p/pi/k-mesons are improved.
|
||||
- Fit of exp. data on p/pi/k + H has been done.
|
||||
- Good results are obtained for h+A interactions.
|
||||
- New energy dependences are introduced for the diffraction
|
||||
cross sections.
|
||||
- Quark exchange algorithm is improved. Strings with large masses
|
||||
are now allowed to save thier masses.
|
||||
- Pt transfered in the excitation is increased up to 0.3 GeV/c.
|
||||
- String mass sampling for baryon like strings is changed.
|
||||
--------------------------------------------------------------------
|
||||
31 May 2012, W.Pokorski (hadr-string-diff-V09-05-06)
|
||||
---------------------------------------------------------------------
|
||||
- slight change in the implementation of the static pointer for the
|
||||
cross sections (to make it safer)
|
||||
|
||||
30 May 2012, W.Pokorski (hadr-string-diff-V09-05-05)
|
||||
---------------------------------------------------------------------
|
||||
- making G4ChipsComponentXS static to avoid multiple instanciations
|
||||
|
||||
25-May-2012, Gunter Folger (hadr-string-diff-V09-05-04)
|
||||
- Add ModelDescription in FTF
|
||||
- Make copy ctor, =, ==, and != operators private without implementation
|
||||
- add Modelname in Ctor
|
||||
|
||||
21 May 2012, V.Uzhinsky (hadr-string-diff-V09-05-03)
|
||||
- Improved diffraction dissociation is implemented
|
||||
|
||||
--------------------------------------------------------
|
||||
21 May 2012, W.Pokorski (hadr-string-diff-V09-05-02)
|
||||
---------------------------------------------------------------------
|
||||
- definitely removing G4ComponentCHIPShadronNuclearXS
|
||||
|
||||
11 May 2012, W.Pokorski (hadr-string-diff-V09-05-01)
|
||||
---------------------------------------------------------------------
|
||||
- G4FTFParameters uses the new G4ChipsComponentXS from
|
||||
hadronic/cross_sections
|
||||
|
||||
May 5, 2012, Gunter Folger ( ..trunk.. )
|
||||
- revert changes by Mikhail ( rev. r58261 )
|
||||
|
||||
28 April 2012, M.Kosov (hadr-string-diff-V09-05-00)
|
||||
- hadronic/models/chiral_inv_phase_space moved to hadronic/chips
|
||||
|
||||
22-November 2011, V. Uzhinsky& G.Folger (hadr-string-diff-V09-04-10)
|
||||
Fix memory leak in G4FTFParticipants.cc
|
||||
|
||||
|
||||
-121
@@ -1,121 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// Calculation of the total, elastic and inelastic cross-sections
|
||||
// of hadron (proton, neutron, pi+, pi-, K+, K-, anti_proton, anti_neutron
|
||||
// interactions with nuclei based on CHIPS model
|
||||
//
|
||||
// Created by V. Uzhinsky, 31.05.2011
|
||||
|
||||
|
||||
#ifndef G4ComponentCHIPShadronNuclearXS_h
|
||||
#define G4ComponentCHIPShadronNuclearXS_h
|
||||
|
||||
#include <CLHEP/Units/PhysicalConstants.h> // pi, fermi,..
|
||||
|
||||
#include "globals.hh"
|
||||
#include "G4Proton.hh"
|
||||
#include "G4AntiProton.hh"
|
||||
#include "G4Nucleus.hh"
|
||||
|
||||
#include "G4VComponentCrossSection.hh"
|
||||
|
||||
class G4ParticleDefinition;
|
||||
class G4VQCrossSection;
|
||||
|
||||
class G4ComponentCHIPShadronNuclearXS : public G4VComponentCrossSection
|
||||
{
|
||||
public:
|
||||
|
||||
G4ComponentCHIPShadronNuclearXS ();
|
||||
virtual ~G4ComponentCHIPShadronNuclearXS ();
|
||||
|
||||
virtual
|
||||
G4double GetTotalElementCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4double N);
|
||||
|
||||
virtual
|
||||
G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4int N);
|
||||
virtual
|
||||
G4double GetInelasticElementCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4double N);
|
||||
virtual
|
||||
G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4int N);
|
||||
|
||||
virtual
|
||||
G4double GetElasticElementCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4double N);
|
||||
|
||||
virtual
|
||||
G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition* aParticle,
|
||||
G4double kinEnergy,
|
||||
G4int Z, G4int N);
|
||||
|
||||
virtual
|
||||
void BuildPhysicsTable(const G4ParticleDefinition&)
|
||||
{}
|
||||
|
||||
virtual
|
||||
void DumpPhysicsTable(const G4ParticleDefinition&)
|
||||
{}
|
||||
|
||||
private:
|
||||
G4ComponentCHIPShadronNuclearXS & operator=(const G4ComponentCHIPShadronNuclearXS &right);
|
||||
G4ComponentCHIPShadronNuclearXS(const G4ComponentCHIPShadronNuclearXS&);
|
||||
|
||||
const G4double fUpperLimit;
|
||||
const G4double fLowerLimit;
|
||||
|
||||
G4VQCrossSection* PxsManagerEl;
|
||||
G4VQCrossSection* PxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* NxsManagerEl;
|
||||
G4VQCrossSection* NxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* PBARxsManagerEl;
|
||||
G4VQCrossSection* PBARxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* PIPxsManagerEl;
|
||||
G4VQCrossSection* PIPxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* PIMxsManagerEl;
|
||||
G4VQCrossSection* PIMxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* KPxsManagerEl;
|
||||
G4VQCrossSection* KPxsManagerInEl;
|
||||
|
||||
G4VQCrossSection* KMxsManagerEl;
|
||||
G4VQCrossSection* KMxsManagerInEl;
|
||||
};
|
||||
|
||||
#endif
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveExcitation.hh,v 1.4 2009-09-17 18:24:30 vuzhinsk Exp $
|
||||
// $Id$
|
||||
|
||||
#ifndef G4DiffractiveExcitation_h
|
||||
#define G4DiffractiveExcitation_h 1
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveHHScatterer.hh,v 1.8 2010-06-14 16:26:46 gcosmo Exp $
|
||||
// $Id$
|
||||
|
||||
#ifndef G4DiffractiveHHScatterer_h
|
||||
#define G4DiffractiveHHScatterer_h 1
|
||||
|
||||
+7
-7
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveSplitableHadron.hh,v 1.7 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
|
||||
@@ -48,16 +48,19 @@ class G4DiffractiveSplitableHadron : public G4VSplitableHadron
|
||||
|
||||
public:
|
||||
|
||||
G4DiffractiveSplitableHadron();
|
||||
G4DiffractiveSplitableHadron(const G4ReactionProduct & aPrimary);
|
||||
G4DiffractiveSplitableHadron(const G4Nucleon & aNucleon);
|
||||
G4DiffractiveSplitableHadron(const G4VKineticNucleon * aNucleon);
|
||||
~G4DiffractiveSplitableHadron();
|
||||
|
||||
|
||||
private:
|
||||
G4DiffractiveSplitableHadron(const G4DiffractiveSplitableHadron &);
|
||||
G4DiffractiveSplitableHadron& operator=(const G4DiffractiveSplitableHadron &);
|
||||
int operator==(const G4DiffractiveSplitableHadron &right) const;
|
||||
int operator!=(const G4DiffractiveSplitableHadron &right) const;
|
||||
|
||||
|
||||
public:
|
||||
void SplitUp();
|
||||
G4Parton * GetNextParton() ;
|
||||
G4Parton * GetNextAntiParton();
|
||||
@@ -65,10 +68,7 @@ public:
|
||||
void SetFirstParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
void SetSecondParton(G4int PDGcode); // Uzhi 24.11.10
|
||||
|
||||
//private: // Uzhi 29.11.2010
|
||||
G4DiffractiveSplitableHadron();
|
||||
G4DiffractiveSplitableHadron(const G4DiffractiveSplitableHadron &right);
|
||||
const G4DiffractiveSplitableHadron & operator=(const G4DiffractiveSplitableHadron &right);
|
||||
private:
|
||||
|
||||
//implementation
|
||||
G4int Diquark(G4int aquark,G4int bquark,G4int Spin) const; // to splitable hadron
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4ElasticHNScattering.hh,v 1.2 2009-08-03 13:14:19 vuzhinsk Exp $
|
||||
// $Id$
|
||||
|
||||
#ifndef G4ElasticHNScattering_h
|
||||
#define G4ElasticHNScattering_h 1
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFAnnihilation.hh,v 1.1 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
|
||||
#ifndef G4FTFAnnihilation_h
|
||||
#define G4FTFAnnihilation_h 1
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFModel.hh,v 1.12 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
// Class Description
|
||||
@@ -64,20 +64,20 @@ class G4FTFModel : public G4VPartonStringModel
|
||||
{
|
||||
|
||||
public:
|
||||
G4FTFModel();
|
||||
G4FTFModel(G4double , G4double , G4double );
|
||||
G4FTFModel(G4DiffractiveExcitation * anExcitation);
|
||||
G4FTFModel(const G4FTFModel &right);
|
||||
G4FTFModel(const G4String& modelName = "FTF");
|
||||
//G4FTFModel(G4double , G4double , G4double );
|
||||
//G4FTFModel(G4DiffractiveExcitation * anExcitation);
|
||||
~G4FTFModel();
|
||||
private:
|
||||
G4FTFModel(const G4FTFModel &right);
|
||||
const G4FTFModel & operator=(const G4FTFModel &right);
|
||||
|
||||
int operator==(const G4FTFModel &right) const;
|
||||
int operator!=(const G4FTFModel &right) const;
|
||||
|
||||
public:
|
||||
void Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile);
|
||||
G4ExcitedStringVector * GetStrings();
|
||||
G4V3DNucleus * GetWoundedNucleus() const;
|
||||
|
||||
virtual void ModelDescription(std::ostream&) const;
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
+22
-12
@@ -23,15 +23,18 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
#ifndef G4FTFParameters_h
|
||||
#define G4FTFParameters_h 1
|
||||
//
|
||||
// $Id: G4FTFParameters.hh,v 1.10 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
#ifndef G4FTFParameters_h
|
||||
#define G4FTFParameters_h 1
|
||||
|
||||
#include <CLHEP/Units/SystemOfUnits.h>
|
||||
|
||||
#include "G4Proton.hh"
|
||||
#include "G4Neutron.hh"
|
||||
#include "G4VComponentCrossSection.hh" // 31 May 2011
|
||||
#include "G4ChipsComponentXS.hh"
|
||||
|
||||
class G4FTFParameters
|
||||
{
|
||||
@@ -80,6 +83,7 @@ class G4FTFParameters
|
||||
void SetProbabilityOfTarDiff(const G4double aValue);
|
||||
|
||||
void SetAveragePt2(const G4double aValue);
|
||||
void SetProbLogDistr(const G4double aValue);
|
||||
|
||||
// --------- Set parameters of a string kink --------------------------------
|
||||
void SetPt2Kink(const G4double aValue);
|
||||
@@ -130,6 +134,7 @@ class G4FTFParameters
|
||||
G4double GetProbabilityOfTarDiff();
|
||||
|
||||
G4double GetAveragePt2();
|
||||
G4double GetProbLogDistr();
|
||||
|
||||
// --------- Get parameters of a string kink --------------------------------
|
||||
G4double GetPt2Kink();
|
||||
@@ -156,7 +161,7 @@ class G4FTFParameters
|
||||
G4double FTFhNcmsEnergy; // Initial hN CMS energy
|
||||
|
||||
// ------------ hN cross section manager -----------------------------
|
||||
G4VComponentCrossSection* FTFxsManager;
|
||||
G4ChipsComponentXS* FTFxsManager;
|
||||
// ------------ Geometrical parameteres ------------------------------
|
||||
G4double FTFXtotal; // Total X in mb
|
||||
G4double FTFXelastic; // Elastic X in mb
|
||||
@@ -184,6 +189,7 @@ class G4FTFParameters
|
||||
G4double ProbabilityOfTarDiff;
|
||||
|
||||
G4double AveragePt2;
|
||||
G4double ProbLogDistr;
|
||||
|
||||
// ---------- Parameters of kink -------------------------------------
|
||||
G4double Pt2kink;
|
||||
@@ -205,8 +211,8 @@ class G4FTFParameters
|
||||
};
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
inline void G4FTFParameters::SethNcmsEnergy(const G4double s)
|
||||
{FTFhNcmsEnergy = s;}
|
||||
inline void G4FTFParameters::SethNcmsEnergy(const G4double S)
|
||||
{FTFhNcmsEnergy = S;}
|
||||
|
||||
// --------- Set geometrical parameteres ------------------------------
|
||||
inline void G4FTFParameters::SetTotalCrossSection(const G4double Xtotal)
|
||||
@@ -256,21 +262,24 @@ inline void G4FTFParameters::SetProbOfSameQuarkExchange(const G4double aValue)
|
||||
{ProbOfSameQuarkExchange = aValue;}
|
||||
|
||||
inline void G4FTFParameters::SetProjMinDiffMass(const G4double aValue)
|
||||
{ProjMinDiffMass = aValue*GeV;}
|
||||
{ProjMinDiffMass = aValue*CLHEP::GeV;}
|
||||
inline void G4FTFParameters::SetProjMinNonDiffMass(const G4double aValue)
|
||||
{ProjMinNonDiffMass = aValue*GeV;}
|
||||
{ProjMinNonDiffMass = aValue*CLHEP::GeV;}
|
||||
inline void G4FTFParameters::SetProbabilityOfProjDiff(const G4double aValue)
|
||||
{ProbabilityOfProjDiff = aValue;}
|
||||
|
||||
inline void G4FTFParameters::SetTarMinDiffMass(const G4double aValue)
|
||||
{TarMinDiffMass = aValue*GeV;}
|
||||
{TarMinDiffMass = aValue*CLHEP::GeV;}
|
||||
inline void G4FTFParameters::SetTarMinNonDiffMass(const G4double aValue)
|
||||
{TarMinNonDiffMass = aValue*GeV;}
|
||||
{TarMinNonDiffMass = aValue*CLHEP::GeV;}
|
||||
inline void G4FTFParameters::SetProbabilityOfTarDiff(const G4double aValue)
|
||||
{ProbabilityOfTarDiff = aValue;}
|
||||
|
||||
inline void G4FTFParameters::SetAveragePt2(const G4double aValue)
|
||||
{AveragePt2 = aValue*GeV*GeV;}
|
||||
{AveragePt2 = aValue*CLHEP::GeV*CLHEP::GeV;}
|
||||
|
||||
inline void G4FTFParameters::SetProbLogDistr(const G4double aValue)
|
||||
{ProbLogDistr = aValue;}
|
||||
|
||||
// --------- Set parameters of a string kink --------------------------------
|
||||
inline void G4FTFParameters::SetPt2Kink(const G4double aValue)
|
||||
@@ -366,6 +375,7 @@ inline G4double G4FTFParameters::GetTarMinNonDiffMass() {return TarMinNonD
|
||||
inline G4double G4FTFParameters::GetProbabilityOfTarDiff() {return ProbabilityOfTarDiff;}
|
||||
|
||||
inline G4double G4FTFParameters::GetAveragePt2() {return AveragePt2;}
|
||||
inline G4double G4FTFParameters::GetProbLogDistr() {return ProbLogDistr;}
|
||||
|
||||
// --------- Get parameters of a string kink --------------------------
|
||||
inline G4double G4FTFParameters::GetPt2Kink() {return Pt2kink;}
|
||||
|
||||
+4
-3
@@ -24,8 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFParticipants.hh,v 1.7 2010-09-20 15:50:46 vuzhinsk Exp $
|
||||
// GEANT4 tag $Name: not supported by cvs2svn $
|
||||
// $Id$
|
||||
//
|
||||
|
||||
#ifndef G4FTFParticipants_h
|
||||
@@ -53,7 +52,6 @@ class G4FTFParticipants : public G4VParticipants
|
||||
|
||||
public:
|
||||
G4FTFParticipants();
|
||||
G4FTFParticipants(const G4FTFParticipants &right);
|
||||
const G4FTFParticipants & operator=(const G4FTFParticipants &right);
|
||||
~G4FTFParticipants();
|
||||
|
||||
@@ -76,6 +74,9 @@ class G4FTFParticipants : public G4VParticipants
|
||||
G4V3DNucleus *theProjectileNucleus;
|
||||
private:
|
||||
|
||||
//A.R. 25-Jul-2012 Coverity fix : copy constructor becomes private.
|
||||
G4FTFParticipants(const G4FTFParticipants &right);
|
||||
|
||||
// std::vector<G4InteractionContent *> theInteractions;
|
||||
|
||||
G4int currentInteraction;
|
||||
|
||||
@@ -36,8 +36,6 @@ include_directories(${CMAKE_SOURCE_DIR}/source/particles/shortlived/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/cross_sections/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/management/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/chiral_inv_phase_space/cross_sections/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/chiral_inv_phase_space/body/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/parton_string/diffraction/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/parton_string/hadronization/include)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/source/processes/hadronic/models/parton_string/management/include)
|
||||
@@ -60,7 +58,6 @@ GEANT4_DEFINE_MODULE(NAME G4had_string_diff
|
||||
G4FTFModel.hh
|
||||
G4FTFParameters.hh
|
||||
G4FTFParticipants.hh
|
||||
G4ComponentCHIPShadronNuclearXS.hh
|
||||
SOURCES
|
||||
G4DiffractiveExcitation.cc
|
||||
G4DiffractiveHHScatterer.cc
|
||||
@@ -70,7 +67,6 @@ GEANT4_DEFINE_MODULE(NAME G4had_string_diff
|
||||
G4FTFModel.cc
|
||||
G4FTFParameters.cc
|
||||
G4FTFParticipants.cc
|
||||
G4ComponentCHIPShadronNuclearXS.cc
|
||||
GRANULAR_DEPENDENCIES
|
||||
G4baryons
|
||||
G4bosons
|
||||
|
||||
-243
@@ -1,243 +0,0 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// Calculation of the total, elastic and inelastic cross-sections
|
||||
// of hadron (proton, neutron, pi+, pi-, K+, K-, anti_proton, anti_neutron
|
||||
// interactions with nuclei based on CHIPS model
|
||||
//
|
||||
// Created by V. Uzhinsky, 31.05.2011
|
||||
|
||||
#include "G4ComponentCHIPShadronNuclearXS.hh"
|
||||
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4IonTable.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
|
||||
#include "G4VQCrossSection.hh"
|
||||
|
||||
#include "G4QProtonElasticCrossSection.hh"
|
||||
#include "G4QProtonNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QNeutronElasticCrossSection.hh"
|
||||
#include "G4QNeutronNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QAntiBaryonElasticCrossSection.hh"
|
||||
#include "G4QAntiBaryonNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QPionMinusElasticCrossSection.hh"
|
||||
#include "G4QPionMinusNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QPionPlusElasticCrossSection.hh"
|
||||
#include "G4QPionPlusNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QKaonMinusElasticCrossSection.hh"
|
||||
#include "G4QKaonMinusNuclearCrossSection.hh"
|
||||
|
||||
#include "G4QKaonPlusElasticCrossSection.hh"
|
||||
#include "G4QKaonPlusNuclearCrossSection.hh"
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
G4ComponentCHIPShadronNuclearXS::G4ComponentCHIPShadronNuclearXS()
|
||||
: fUpperLimit( 10000 * GeV ),
|
||||
fLowerLimit( 10 * MeV )
|
||||
{
|
||||
PxsManagerEl = G4QProtonElasticCrossSection::GetPointer();
|
||||
PxsManagerInEl = G4QProtonNuclearCrossSection::GetPointer();
|
||||
|
||||
NxsManagerEl = G4QNeutronElasticCrossSection::GetPointer();
|
||||
NxsManagerInEl = G4QNeutronNuclearCrossSection::GetPointer();
|
||||
|
||||
PBARxsManagerEl = G4QAntiBaryonElasticCrossSection::GetPointer();
|
||||
PBARxsManagerInEl = G4QAntiBaryonNuclearCrossSection::GetPointer();
|
||||
|
||||
PIPxsManagerEl = G4QPionPlusElasticCrossSection::GetPointer();
|
||||
PIPxsManagerInEl = G4QPionPlusNuclearCrossSection::GetPointer();
|
||||
|
||||
PIMxsManagerEl = G4QPionMinusElasticCrossSection::GetPointer();
|
||||
PIMxsManagerInEl = G4QPionMinusNuclearCrossSection::GetPointer();
|
||||
|
||||
KPxsManagerEl = G4QKaonPlusElasticCrossSection::GetPointer();
|
||||
KPxsManagerInEl = G4QKaonPlusNuclearCrossSection::GetPointer();
|
||||
|
||||
KMxsManagerEl = G4QKaonMinusElasticCrossSection::GetPointer();
|
||||
KMxsManagerInEl = G4QKaonMinusNuclearCrossSection::GetPointer();
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
G4ComponentCHIPShadronNuclearXS::~G4ComponentCHIPShadronNuclearXS()
|
||||
{
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetTotalElementCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4double N)
|
||||
{
|
||||
G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass()));
|
||||
G4int PDGcode=aParticle->GetPDGEncoding();
|
||||
|
||||
G4VQCrossSection* CHIPSmanagerEl=0;
|
||||
G4VQCrossSection* CHIPSmanagerInEl=0;
|
||||
|
||||
if (PDGcode == 2212) // Projectile is Proton
|
||||
{
|
||||
CHIPSmanagerEl=PxsManagerEl; CHIPSmanagerInEl=PxsManagerInEl;
|
||||
} else if(PDGcode == 2112) // Projectile is Neutron
|
||||
{
|
||||
CHIPSmanagerEl=NxsManagerEl; CHIPSmanagerInEl=NxsManagerInEl;
|
||||
} else if(PDGcode == -2212) // Projectile is Anti-Proton
|
||||
{
|
||||
CHIPSmanagerEl=PBARxsManagerEl; CHIPSmanagerInEl=PBARxsManagerInEl;
|
||||
} else if(PDGcode == -2112) // Projectile is Anti-Neutron
|
||||
{
|
||||
CHIPSmanagerEl=PBARxsManagerEl; CHIPSmanagerInEl=PBARxsManagerInEl;
|
||||
} else if(PDGcode == 211) // Projectile is Pi+
|
||||
{
|
||||
CHIPSmanagerEl=PIPxsManagerEl; CHIPSmanagerInEl=PIPxsManagerInEl;
|
||||
} else if(PDGcode == -211) // Projectile is Pi-
|
||||
{
|
||||
CHIPSmanagerEl=PIMxsManagerEl; CHIPSmanagerInEl=PIMxsManagerInEl;
|
||||
} else if(PDGcode == 321) // Projectile is K+
|
||||
{
|
||||
CHIPSmanagerEl=KPxsManagerEl; CHIPSmanagerInEl=KPxsManagerInEl;
|
||||
} else if(PDGcode == -321) // Projectile is K-
|
||||
{
|
||||
CHIPSmanagerEl=KMxsManagerEl; CHIPSmanagerInEl=KMxsManagerInEl;
|
||||
}
|
||||
|
||||
G4double Xelastic(0.), Xinelastic(0.);
|
||||
|
||||
if((CHIPSmanagerEl != 0) && (CHIPSmanagerInEl != 0))
|
||||
{
|
||||
Xelastic = CHIPSmanagerEl->GetCrossSection(false,momentum,Z,(G4int)N,PDGcode);
|
||||
Xinelastic = CHIPSmanagerInEl->GetCrossSection(false,momentum,Z,(G4int)N,PDGcode);
|
||||
}
|
||||
|
||||
return Xelastic+Xinelastic;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetTotalIsotopeCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4int A )
|
||||
{ return GetTotalElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetInelasticElementCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4double N)
|
||||
{
|
||||
G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass()));
|
||||
G4int PDGcode=aParticle->GetPDGEncoding();
|
||||
|
||||
G4VQCrossSection* CHIPSmanagerInEl=0;
|
||||
|
||||
if (PDGcode == 2212) // Projectile is Proton
|
||||
{
|
||||
CHIPSmanagerInEl=PxsManagerInEl;
|
||||
} else if(PDGcode == 2112) // Projectile is Neutron
|
||||
{
|
||||
CHIPSmanagerInEl=NxsManagerInEl;
|
||||
} else if(PDGcode == -2212) // Projectile is Anti-Proton
|
||||
{
|
||||
CHIPSmanagerInEl=PBARxsManagerInEl;
|
||||
} else if(PDGcode == -2112) // Projectile is Anti-Neutron
|
||||
{
|
||||
CHIPSmanagerInEl=PBARxsManagerInEl;
|
||||
} else if(PDGcode == 211) // Projectile is Pi+
|
||||
{
|
||||
CHIPSmanagerInEl=PIPxsManagerInEl;
|
||||
} else if(PDGcode == -211) // Projectile is Pi-
|
||||
{
|
||||
CHIPSmanagerInEl=PIMxsManagerInEl;
|
||||
} else if(PDGcode == 321) // Projectile is K+
|
||||
{
|
||||
CHIPSmanagerInEl=KPxsManagerInEl;
|
||||
} else if(PDGcode == -321) // Projectile is K-
|
||||
{
|
||||
CHIPSmanagerInEl=KMxsManagerInEl;
|
||||
}
|
||||
|
||||
G4double Xinelastic(0.);
|
||||
|
||||
if(CHIPSmanagerInEl != 0)
|
||||
{
|
||||
Xinelastic = CHIPSmanagerInEl->GetCrossSection(false,momentum,Z,(G4int)N,PDGcode);
|
||||
}
|
||||
return Xinelastic;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetInelasticIsotopeCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4int A)
|
||||
{return GetInelasticElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetElasticElementCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4double N)
|
||||
{
|
||||
G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass()));
|
||||
G4int PDGcode=aParticle->GetPDGEncoding();
|
||||
|
||||
G4VQCrossSection* CHIPSmanagerEl=0;
|
||||
|
||||
if (PDGcode == 2212) // Projectile is Proton
|
||||
{
|
||||
CHIPSmanagerEl=PxsManagerEl;
|
||||
} else if(PDGcode == 2112) // Projectile is Neutron
|
||||
{
|
||||
CHIPSmanagerEl=NxsManagerEl;
|
||||
} else if(PDGcode == -2212) // Projectile is Anti-Proton
|
||||
{
|
||||
CHIPSmanagerEl=PBARxsManagerEl;
|
||||
} else if(PDGcode == -2112) // Projectile is Anti-Neutron
|
||||
{
|
||||
CHIPSmanagerEl=PBARxsManagerEl;
|
||||
} else if(PDGcode == 211) // Projectile is Pi+
|
||||
{
|
||||
CHIPSmanagerEl=PIPxsManagerEl;
|
||||
} else if(PDGcode == -211) // Projectile is Pi-
|
||||
{
|
||||
CHIPSmanagerEl=PIMxsManagerEl;
|
||||
} else if(PDGcode == 321) // Projectile is K+
|
||||
{
|
||||
CHIPSmanagerEl=KPxsManagerEl;
|
||||
} else if(PDGcode == -321) // Projectile is K-
|
||||
{
|
||||
CHIPSmanagerEl=KMxsManagerEl;
|
||||
}
|
||||
|
||||
G4double Xelastic(0.);
|
||||
|
||||
if(CHIPSmanagerEl != 0)
|
||||
{
|
||||
Xelastic = CHIPSmanagerEl->GetCrossSection(false,momentum,Z,(G4int)N,PDGcode);
|
||||
}
|
||||
return Xelastic;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
G4double G4ComponentCHIPShadronNuclearXS::GetElasticIsotopeCrossSection
|
||||
(const G4ParticleDefinition* aParticle, G4double kinEnergy, G4int Z, G4int A)
|
||||
{ return GetElasticElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }
|
||||
+126
-47
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveExcitation.cc,v 1.24 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class implemetation file
|
||||
//
|
||||
@@ -45,6 +45,8 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DiffractiveExcitation.hh"
|
||||
#include "G4FTFParameters.hh"
|
||||
@@ -77,7 +79,7 @@ G4bool G4DiffractiveExcitation::
|
||||
//G4cout<<G4endl<<"ExciteParticipants --------------"<<G4endl;
|
||||
// -------------------- Projectile parameters -----------------------
|
||||
G4LorentzVector Pprojectile=projectile->Get4Momentum();
|
||||
//G4cout<<"Pproj "<<Pprojectile<<G4endl;
|
||||
|
||||
if(Pprojectile.z() < 0.)
|
||||
{
|
||||
target->SetStatus(2);
|
||||
@@ -109,9 +111,10 @@ G4bool G4DiffractiveExcitation::
|
||||
// -------------------- Target parameters -------------------------
|
||||
G4int TargetPDGcode=target->GetDefinition()->GetPDGEncoding();
|
||||
G4int absTargetPDGcode=std::abs(TargetPDGcode);
|
||||
//G4cout<<"Excit "<<ProjectilePDGcode<<" "<<TargetPDGcode<<G4endl;
|
||||
//G4cout<<"Entry to QE or Excit "<<ProjectilePDGcode<<" "<<TargetPDGcode<<G4endl;
|
||||
|
||||
G4LorentzVector Ptarget=target->Get4Momentum();
|
||||
//G4cout<<"Pproj "<<Pprojectile<<G4endl;
|
||||
//G4cout<<"Ptarget "<<Ptarget<<G4endl;
|
||||
G4double M0target = Ptarget.mag();
|
||||
|
||||
@@ -130,6 +133,7 @@ G4bool G4DiffractiveExcitation::
|
||||
G4double ProbTargetDiffraction=theParameters->GetProbabilityOfTarDiff();
|
||||
|
||||
G4double AveragePt2=theParameters->GetAveragePt2();
|
||||
G4double ProbLogDistr=theParameters->GetProbLogDistr(); // Uzhi 21.05.2012
|
||||
|
||||
// G4double ProbOfDiffraction=ProbProjectileDiffraction +
|
||||
// ProbTargetDiffraction;
|
||||
@@ -142,6 +146,8 @@ G4bool G4DiffractiveExcitation::
|
||||
Psum=Pprojectile+Ptarget;
|
||||
G4double S=Psum.mag2();
|
||||
|
||||
//Uzhi_SqrtS=std::sqrt(S);
|
||||
|
||||
// Transform momenta to cms and then rotate parallel to z axis;
|
||||
G4LorentzRotation toCms(-1*Psum.boostVector());
|
||||
|
||||
@@ -236,6 +242,13 @@ G4cout<<"M0pr M0tr "<<M0projectile<<" "<<M0target<<" "<<SumMasses<<G4endl;
|
||||
//G4cout<<"Targ "<<Ptarget<<G4endl;
|
||||
G4double maxPtSquare; // = PZcms2;
|
||||
/*
|
||||
Uzhi_targetdiffraction=0;
|
||||
Uzhi_projectilediffraction=0;
|
||||
Uzhi_Mx2=1.0;
|
||||
Uzhi_modT=0.;
|
||||
G4int Uzhi_QE=0;
|
||||
*/
|
||||
/*
|
||||
G4cout<<"Start --------------------"<<G4endl;
|
||||
G4cout<<"Proj "<<M0projectile<<" "<<ProjectileDiffStateMinMass<<" "<<ProjectileNonDiffStateMinMass<<G4endl;
|
||||
G4cout<<"Targ "<<M0target <<" "<<TargetDiffStateMinMass <<" "<<TargetNonDiffStateMinMass<<G4endl;
|
||||
@@ -245,8 +258,9 @@ G4cout<<"Rapid "<<ProjectileRapidity<<G4endl; //" "<<TargetRapidity<<G4endl;
|
||||
// Charge exchange can be possible for baryons -----------------
|
||||
|
||||
// Getting the values needed for exchange ----------------------
|
||||
G4double MagQuarkExchange =theParameters->GetMagQuarkExchange();
|
||||
G4double SlopeQuarkExchange =theParameters->GetSlopeQuarkExchange();
|
||||
G4double MagQuarkExchange =theParameters->GetMagQuarkExchange();//0.045; //
|
||||
G4double SlopeQuarkExchange =theParameters->GetSlopeQuarkExchange();//0.; //
|
||||
// 777777777777777777777777777777777777777777777777777777777777777777777777777777
|
||||
G4double DeltaProbAtQuarkExchange=theParameters->GetDeltaProbAtQuarkExchange();
|
||||
|
||||
// G4double NucleonMass=
|
||||
@@ -255,7 +269,7 @@ G4cout<<"Rapid "<<ProjectileRapidity<<G4endl; //" "<<TargetRapidity<<G4endl;
|
||||
(G4ParticleTable::GetParticleTable()->FindParticle(2224))->GetPDGMass();
|
||||
|
||||
//G4double TargetRapidity(0.);
|
||||
//G4cout<<"Prob Q Exch "<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*(ProjectileRapidity - TargetRapidity))<<G4endl;
|
||||
//G4cout<<"Prob Q Exch "<<MagQuarkExchange*std::exp(-SlopeQuarkExchange*ProjectileRapidity)<<G4endl;
|
||||
|
||||
//G4cout<<"Q exc Mag Slop Wdelta"<<MagQuarkExchange<<" "<<SlopeQuarkExchange<<" "<<DeltaProbAtQuarkExchange<<G4endl;
|
||||
//G4cout<<"ProjectileRapidity "<<ProjectileRapidity<<G4endl;
|
||||
@@ -268,6 +282,7 @@ G4cout<<"Rapid "<<ProjectileRapidity<<G4endl; //" "<<TargetRapidity<<G4endl;
|
||||
{
|
||||
// std::exp(-SlopeQuarkExchange*(ProjectileRapidity - 1.36))) //TargetRapidity))) 1.45
|
||||
//G4cout<<"Q exchange"<<G4endl;
|
||||
//Uzhi_QE=1;
|
||||
G4int NewProjCode(0), NewTargCode(0);
|
||||
|
||||
G4int ProjQ1(0), ProjQ2(0), ProjQ3(0);
|
||||
@@ -388,9 +403,24 @@ TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode);
|
||||
|
||||
if(TestParticle)
|
||||
{
|
||||
M0projectile=
|
||||
G4double MtestPart= // 31.05.2012
|
||||
(G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass();
|
||||
M0projectile2 = M0projectile * M0projectile;
|
||||
/*
|
||||
G4cout<<"TestParticle Name "<<NewProjCode<<" "<<TestParticle->GetParticleName()<<G4endl;
|
||||
G4cout<<"MtestPart M0projectile projectile->GetDefinition()->GetPDGMass() "<<MtestPart<<" "<<M0projectile<<" "<<projectile->GetDefinition()->GetPDGMass()<<G4endl;
|
||||
G4bool Test =M0projectile <= projectile->GetDefinition()->GetPDGMass();
|
||||
G4cout<<"M0projectile <= projectile->GetDefinition()->GetPDGMass() "<<Test<<G4endl;
|
||||
*/
|
||||
|
||||
if(MtestPart > M0projectile)
|
||||
{M0projectile = MtestPart;}
|
||||
else
|
||||
{
|
||||
if(std::abs(M0projectile - projectile->GetDefinition()->GetPDGMass()) < 140.*MeV)
|
||||
{M0projectile = MtestPart;}
|
||||
}
|
||||
//G4cout<<"M0projectile After check "<<M0projectile<<G4endl;
|
||||
M0projectile2 = M0projectile * M0projectile;
|
||||
|
||||
ProjectileDiffStateMinMass =M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV
|
||||
ProjectileNonDiffStateMinMass=M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV
|
||||
@@ -424,14 +454,20 @@ if(TestParticle)
|
||||
// target->SetDefinition( // Fix 15.12.09
|
||||
// G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode));// Fix 15.12.09
|
||||
|
||||
//G4cout<<"NewTargCode "<<NewTargCode<<G4endl;
|
||||
//G4int Uzhi; G4cin>>Uzhi;
|
||||
TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode);
|
||||
//G4cout<<"New targ "<<NewTargCode<<" "<<TestParticle->GetParticleName()<<G4endl;
|
||||
if(TestParticle)
|
||||
{
|
||||
M0target=
|
||||
G4double MtestPart= // 31.05.2012
|
||||
(G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass();
|
||||
M0target2 = M0target * M0target;
|
||||
|
||||
if(MtestPart > M0target)
|
||||
{M0target=MtestPart;}
|
||||
else
|
||||
{
|
||||
if(std::abs(M0target - target->GetDefinition()->GetPDGMass()) < 140.*MeV)
|
||||
{M0target=MtestPart;}
|
||||
}
|
||||
|
||||
TargetDiffStateMinMass =M0target+220.*MeV; //220 MeV=m_pi+80 MeV;
|
||||
TargetNonDiffStateMinMass=M0target+220.*MeV; //220 MeV=m_pi+80 MeV;
|
||||
@@ -508,15 +544,6 @@ if(TestParticle)
|
||||
|
||||
NewProjCode = NewNucleonId(ProjQ1, ProjQ2, ProjQ3); // *****************************
|
||||
|
||||
//G4cout<<"ProjQ1, ProjQ2, ProjQ3 "<<ProjQ1<<" "<<ProjQ2<<" "<<ProjQ3<<" "<<NewProjCode<<G4endl;
|
||||
|
||||
//G4int TestParticleID=NewProjCode;
|
||||
//G4ParticleDefinition* TestParticle=0;
|
||||
//G4double TestParticleMass=DBL_MAX;
|
||||
|
||||
//TestParticle=G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode);
|
||||
//if(TestParticle) TestParticleMass=TestParticle->GetPDGMass();
|
||||
|
||||
if((ProjQ1==ProjQ2) && (ProjQ1==ProjQ3)) {NewProjCode +=2; ProjDeltaHasCreated=true;}
|
||||
else if(projectile->GetDefinition()->GetPDGiIsospin() == 3)// Projectile was Delta
|
||||
{ if(G4UniformRand() > DeltaProbAtQuarkExchange)
|
||||
@@ -575,9 +602,14 @@ if(ProjDeltaHasCreated) {ProbProjectileDiffraction=1.; ProbTargetDiffraction=0.;
|
||||
if(TargDeltaHasCreated) {ProbProjectileDiffraction=0.; ProbTargetDiffraction=1.;}
|
||||
if(ProjDeltaHasCreated)
|
||||
{
|
||||
M0projectile=
|
||||
G4double MtestPart= // 31.05.2012
|
||||
(G4ParticleTable::GetParticleTable()->FindParticle(NewProjCode))->GetPDGMass();
|
||||
M0projectile2 = M0projectile * M0projectile;
|
||||
|
||||
if(MtestPart >= M0projectile) // 31.05.2012
|
||||
{ // 31.05.2012
|
||||
M0projectile = MtestPart; // 31.05.2012
|
||||
M0projectile2 = M0projectile * M0projectile; // 31.05.2012
|
||||
} // 31.05.2012
|
||||
|
||||
ProjectileDiffStateMinMass =M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV
|
||||
ProjectileNonDiffStateMinMass=M0projectile+210.*MeV; //210 MeV=m_pi+70 MeV
|
||||
@@ -587,9 +619,14 @@ if(TargDeltaHasCreated) {ProbProjectileDiffraction=0.; ProbTargetDiffraction=1.;
|
||||
// (G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass())
|
||||
if(TargDeltaHasCreated)
|
||||
{
|
||||
M0target=
|
||||
G4double MtestPart= // 31.05.2012
|
||||
(G4ParticleTable::GetParticleTable()->FindParticle(NewTargCode))->GetPDGMass();
|
||||
M0target2 = M0target * M0target;
|
||||
|
||||
if(MtestPart >=M0target) // 31.05.2012
|
||||
{ // 31.05.2012
|
||||
M0target=MtestPart; // 31.05.2012
|
||||
M0target2 = M0target * M0target; // 31.05.2012
|
||||
} // 31.05.2012
|
||||
|
||||
TargetDiffStateMinMass =M0target+210.*MeV; //210 MeV=m_pi+70 MeV;
|
||||
TargetNonDiffStateMinMass=M0target+210.*MeV; //210 MeV=m_pi+70 MeV;
|
||||
@@ -642,6 +679,7 @@ if(TargDeltaHasCreated) {ProbProjectileDiffraction=0.; ProbTargetDiffraction=1.;
|
||||
target->Set4Momentum(Ptarget);
|
||||
|
||||
G4bool Result= theElastic->ElasticScattering (projectile,target,theParameters);
|
||||
//G4cout<<"Result of el. scatt "<<Result<<G4endl;
|
||||
return Result;
|
||||
} // end of if(Make elastic scattering for projectile meson?)
|
||||
} else
|
||||
@@ -677,7 +715,7 @@ G4cout<<"SqrtS "<<SqrtS<<G4endl;
|
||||
|
||||
G4cout<<"Prob ProjDiff TargDiff "<<ProbProjectileDiffraction<<" "<<ProbTargetDiffraction<<" "<<ProbOfDiffraction<<G4endl;
|
||||
G4cout<<"Pr Y "<<Pprojectile.rapidity()<<" Tr Y "<<Ptarget.rapidity()<<G4endl;
|
||||
G4int Uzhi; G4cin>>Uzhi;
|
||||
//G4int Uzhi; G4cin>>Uzhi;
|
||||
*/
|
||||
/*
|
||||
if(ProjectileNonDiffStateMinMass + TargetNonDiffStateMinMass > SqrtS) // 24.07.10
|
||||
@@ -726,7 +764,8 @@ G4int Uzhi; G4cin>>Uzhi;
|
||||
G4int whilecount=0;
|
||||
|
||||
// Choose a process ---------------------------
|
||||
|
||||
//ProbOfDiffraction=1.; // Uzhi Difr
|
||||
//ProbProjectileDiffraction=1.; // Uzhi
|
||||
if(G4UniformRand() < ProbOfDiffraction)
|
||||
{
|
||||
if(G4UniformRand() < ProbProjectileDiffraction)
|
||||
@@ -734,6 +773,11 @@ G4int Uzhi; G4cin>>Uzhi;
|
||||
//G4cout<<"projectile diffraction"<<G4endl;
|
||||
|
||||
do {
|
||||
/*
|
||||
Uzhi_projectilediffraction=1;
|
||||
Uzhi_targetdiffraction=0;
|
||||
Uzhi_Mx2=1.;
|
||||
*/
|
||||
// Generate pt
|
||||
// if (whilecount++ >= 500 && (whilecount%100)==0)
|
||||
// G4cout << "G4DiffractiveExcitation::ExciteParticipants possibly looping"
|
||||
@@ -802,12 +846,18 @@ G4int Uzhi; G4cin>>Uzhi;
|
||||
} while ((Pprojectile+Qmomentum).mag2() < ProjectileDiffStateMinMass2); //||
|
||||
//Repeat the sampling because there was not any excitation
|
||||
//((Ptarget -Qmomentum).mag2() < M0target2 )) );
|
||||
projectile->SetStatus(1*projectile->GetStatus()); // VU 10.04.2012
|
||||
}
|
||||
else
|
||||
{ // -------------- Target diffraction ----------------
|
||||
|
||||
//G4cout<<"Target diffraction"<<G4endl;
|
||||
do {
|
||||
/*
|
||||
Uzhi_projectilediffraction=0;
|
||||
Uzhi_targetdiffraction=1;
|
||||
Uzhi_Mx2=1.;
|
||||
*/
|
||||
// Generate pt
|
||||
// if (whilecount++ >= 500 && (whilecount%100)==0)
|
||||
// G4cout << "G4DiffractiveExcitation::ExciteParticipants possibly looping"
|
||||
@@ -890,6 +940,7 @@ G4cout<<Seco<<G4endl;
|
||||
// (((Pprojectile+Qmomentum).mag2() < M0projectile2 ) || //No without excitation
|
||||
// ((Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2)) );
|
||||
//G4cout<<"Go out"<<G4endl;
|
||||
target->SetStatus(1*target->GetStatus()); // VU 10.04.2012
|
||||
} // End of if(G4UniformRand() < ProbProjectileDiffraction)
|
||||
}
|
||||
else //----------- Non-diffraction process ------------
|
||||
@@ -897,6 +948,11 @@ G4cout<<Seco<<G4endl;
|
||||
|
||||
//G4cout<<"Non-diffraction process"<<G4endl;
|
||||
do {
|
||||
/*
|
||||
Uzhi_projectilediffraction=0;
|
||||
Uzhi_targetdiffraction=0;
|
||||
Uzhi_Mx2=1.;
|
||||
*/
|
||||
// Generate pt
|
||||
// if (whilecount++ >= 500 && (whilecount%100)==0)
|
||||
// G4cout << "G4DiffractiveExcitation::ExciteParticipants possibly looping"
|
||||
@@ -946,16 +1002,18 @@ G4cout<<Seco<<G4endl;
|
||||
PMinusMin=std::sqrt(ProjMassT2+PZcms2)-PZcms;
|
||||
PMinusMax=SqrtS-TargMassT;
|
||||
|
||||
// PMinusNew=ChooseP(PMinusMin, PMinusMax); // 12.06.11
|
||||
PMinusNew=(PMinusMax-PMinusMin)*G4UniformRand() + PMinusMin;
|
||||
if(G4UniformRand() < ProbLogDistr) // Uzhi 25.04.2012
|
||||
{ PMinusNew=ChooseP(PMinusMin, PMinusMax);} // 12.06.11
|
||||
else {PMinusNew=(PMinusMax-PMinusMin)*G4UniformRand() + PMinusMin;}
|
||||
Qminus=PMinusNew-Pprojectile.minus();
|
||||
|
||||
TPlusMin=std::sqrt(TargMassT2+PZcms2)-PZcms;
|
||||
// TPlusMax=SqrtS-PMinusNew;
|
||||
TPlusMax=SqrtS-ProjMassT;
|
||||
TPlusMax=SqrtS-PMinusNew; // Why is it closed???
|
||||
// TPlusMax=SqrtS-ProjMassT;
|
||||
|
||||
// TPlusNew=ChooseP(TPlusMin, TPlusMax); // 12.06.11
|
||||
TPlusNew=(TPlusMax-TPlusMin)*G4UniformRand() +TPlusMin;
|
||||
if(G4UniformRand() < 0.5) //ProbLogDistr) // Uzhi 29.05.2012 0.5)
|
||||
{ TPlusNew=ChooseP(TPlusMin, TPlusMax);} // 12.06.11
|
||||
else {TPlusNew=(TPlusMax-TPlusMin)*G4UniformRand() +TPlusMin;}
|
||||
|
||||
Qplus=-(TPlusNew-Ptarget.plus());
|
||||
|
||||
@@ -969,6 +1027,9 @@ G4int Uzhi; G4cin>>Uzhi;
|
||||
} while (
|
||||
((Pprojectile+Qmomentum).mag2() < ProjectileNonDiffStateMinMass2) || //No double Diffraction
|
||||
((Ptarget -Qmomentum).mag2() < TargetNonDiffStateMinMass2 ));
|
||||
|
||||
projectile->SetStatus(0*projectile->GetStatus()); // VU 10.04.2012
|
||||
target->SetStatus(0*target->GetStatus()); // VU 10.04.2012
|
||||
}
|
||||
|
||||
Pprojectile += Qmomentum;
|
||||
@@ -986,7 +1047,20 @@ G4int Uzhi; G4cin>>Uzhi;
|
||||
// Creation time and position of target nucleon were determined at
|
||||
// ReggeonCascade() of G4FTFModel
|
||||
// ------------------------------------------------------
|
||||
/*
|
||||
if(Uzhi_projectilediffraction != 0)
|
||||
{Uzhi_Mx2=Pprojectile.mag2(); Uzhi_modT=(target->Get4Momentum()-Ptarget).mag2();}
|
||||
|
||||
if(Uzhi_targetdiffraction != 0)
|
||||
{Uzhi_Mx2=Ptarget.mag2(); Uzhi_modT=(projectile->Get4Momentum()-Pprojectile).mag2();}
|
||||
|
||||
if(Uzhi_QE!= 0)
|
||||
{
|
||||
Uzhi_projectilediffraction=0;
|
||||
Uzhi_targetdiffraction =0;
|
||||
Uzhi_Mx2 =1.;
|
||||
}
|
||||
*/
|
||||
//G4cout<<"Mproj "<<Pprojectile.mag()<<G4endl;
|
||||
//G4cout<<"Mtarg "<<Ptarget.mag()<<G4endl;
|
||||
projectile->Set4Momentum(Pprojectile);
|
||||
@@ -1065,8 +1139,13 @@ G4cout<<"Defin "<<hadron->GetDefinition()->GetPDGEncoding()<<G4endl;
|
||||
//G4cout<<G4endl<<"Check for Kink!##############"<<G4endl<<G4endl;
|
||||
if(W > Wmin)
|
||||
{ // Kink is possible
|
||||
G4double Pt2kink=theParameters->GetPt2Kink();
|
||||
Pt = std::sqrt(Pt2kink*(std::pow(W2/16./Pt2kink+1.,G4UniformRand()) - 1.));
|
||||
if(hadron->GetStatus() == 0) // VU 10.04.2012
|
||||
{
|
||||
G4double Pt2kink=theParameters->GetPt2Kink(); // For non-diffractive
|
||||
Pt = std::sqrt(Pt2kink*(std::pow(W2/16./Pt2kink+1.,G4UniformRand()) - 1.));
|
||||
}
|
||||
else
|
||||
{Pt=0.;} // For diffractive
|
||||
|
||||
if(Pt > 500.*MeV)
|
||||
{
|
||||
@@ -1320,28 +1399,28 @@ if((start->GetDefinition()->GetParticleSubType() == "quark") &&
|
||||
tmp.set(0.,0.,1.);
|
||||
}
|
||||
|
||||
G4LorentzVector Pstart(tmp,0.);
|
||||
G4LorentzVector Pend(tmp,0.);
|
||||
G4LorentzVector Pstart1(tmp,0.);
|
||||
G4LorentzVector Pend1(tmp,0.);
|
||||
|
||||
if(isProjectile)
|
||||
{
|
||||
Pstart*=(-1.)*Minus/2.;
|
||||
Pend *=(+1.)*Plus /2.;
|
||||
Pstart1*=(-1.)*Minus/2.;
|
||||
Pend1 *=(+1.)*Plus /2.;
|
||||
}
|
||||
else
|
||||
{
|
||||
Pstart*=(+1.)*Plus/2.;
|
||||
Pend *=(-1.)*Minus/2.;
|
||||
Pstart1*=(+1.)*Plus/2.;
|
||||
Pend1 *=(-1.)*Minus/2.;
|
||||
}
|
||||
|
||||
Momentum=-Pstart.mag();
|
||||
Pstart.setT(Momentum); // It is assumed that quark has m=0.
|
||||
Momentum=-Pstart1.mag();
|
||||
Pstart1.setT(Momentum); // It is assumed that quark has m=0.
|
||||
|
||||
Momentum=-Pend.mag();
|
||||
Pend.setT(Momentum); // It is assumed that di-quark has m=0.
|
||||
Momentum=-Pend1.mag();
|
||||
Pend1.setT(Momentum); // It is assumed that di-quark has m=0.
|
||||
|
||||
start->Set4Momentum(Pstart);
|
||||
end->Set4Momentum(Pend);
|
||||
start->Set4Momentum(Pstart1);
|
||||
end->Set4Momentum(Pend1);
|
||||
SecondString=0;
|
||||
} // End of kink is impossible
|
||||
|
||||
|
||||
+1
-6
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4DiffractiveSplitableHadron.cc,v 1.10 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
|
||||
@@ -76,11 +76,6 @@ G4DiffractiveSplitableHadron::~G4DiffractiveSplitableHadron()
|
||||
// if(Parton[0] != NULL){delete Parton[0]; delete Parton[1];}
|
||||
}
|
||||
|
||||
const G4DiffractiveSplitableHadron & G4DiffractiveSplitableHadron::operator=(const G4DiffractiveSplitableHadron &)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4DiffractiveSplitableHadron::operator= meant to not be accessable");
|
||||
return *this;
|
||||
}
|
||||
|
||||
void G4DiffractiveSplitableHadron::SplitUp()
|
||||
{
|
||||
|
||||
+9
-8
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4ElasticHNScattering.cc,v 1.14 2009-12-16 17:51:13 gunter Exp $
|
||||
// $Id$
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class implemetation file
|
||||
//
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
|
||||
#include "G4ElasticHNScattering.hh"
|
||||
#include "G4LorentzRotation.hh"
|
||||
@@ -137,6 +138,7 @@ G4bool G4ElasticHNScattering::
|
||||
PZcms2=(S*S+Mprojectile2*Mprojectile2+Mtarget2*Mtarget2-
|
||||
2*S*Mprojectile2 - 2*S*Mtarget2 - 2*Mprojectile2*Mtarget2)
|
||||
/4./S;
|
||||
|
||||
if(PZcms2 < 0.){ return false;} // Non succesful attempt after the de-excitation
|
||||
}
|
||||
else // if(M0projectile > projectile->GetDefinition()->GetPDGMass())
|
||||
@@ -181,7 +183,6 @@ G4bool G4ElasticHNScattering::
|
||||
G4double TargMassT2; //, TargMassT;
|
||||
|
||||
G4LorentzVector Qmomentum;
|
||||
|
||||
Qmomentum=G4LorentzVector(GaussianPt(AveragePt2,maxPtSquare),0);
|
||||
|
||||
Pt2=G4ThreeVector(Qmomentum.vect()).mag2();
|
||||
@@ -262,19 +263,19 @@ G4ElasticHNScattering::~G4ElasticHNScattering()
|
||||
|
||||
const G4ElasticHNScattering & G4ElasticHNScattering::operator=(const G4ElasticHNScattering &)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering = operator meant to be called");
|
||||
return *this;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering = operator not meant to be called");
|
||||
//return *this; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
|
||||
int G4ElasticHNScattering::operator==(const G4ElasticHNScattering &) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering == operator meant to be called");
|
||||
return false;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering == operator not meant to be called");
|
||||
//return false; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
int G4ElasticHNScattering::operator!=(const G4ElasticHNScattering &) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering != operator meant to be called");
|
||||
return true;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4ElasticHNScattering != operator not meant to be called");
|
||||
//return true; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
+29
-27
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFAnnihilation.cc,v 1.1 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// ------------------------------------------------------------
|
||||
// GEANT 4 class implemetation file
|
||||
//
|
||||
@@ -45,6 +45,8 @@
|
||||
|
||||
#include "globals.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4DiffractiveSplitableHadron.hh"
|
||||
#include "G4DiffractiveExcitation.hh"
|
||||
@@ -189,43 +191,43 @@ G4bool G4FTFAnnihilation::
|
||||
|
||||
//G4cout<<"Annih X a b c d "<<X_a<<" "<<X_b<<" "<<X_c<<" "<<X_d<<G4endl;
|
||||
|
||||
if((ProjectilePDGcode == -2212)&&(TargetPDGcode == 2212))
|
||||
if((ProjectilePDGcode == -2212)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=5.; X_c*=5.; X_d*=6.;} // Pbar P
|
||||
else if((ProjectilePDGcode == -2212)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -2212)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=4.; X_c*=4.; X_d*=4.;} // Pbar N
|
||||
else if((ProjectilePDGcode == -2112)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -2112)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=4.; X_c*=4.; X_d*=4.;} // NeutrBar P
|
||||
else if((ProjectilePDGcode == -2112)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -2112)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=5.; X_c*=5.; X_d*=6.;} // NeutrBar N
|
||||
else if((ProjectilePDGcode == -3122)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3122)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=3.; X_c*=3.; X_d*=2.;} // LambdaBar P
|
||||
else if((ProjectilePDGcode == -3122)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3122)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=3.; X_c*=3.; X_d*=2.;} // LambdaBar N
|
||||
else if((ProjectilePDGcode == -3112)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3112)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=2.; X_c*=2.; X_d*=0.;} // Sigma-Bar P
|
||||
else if((ProjectilePDGcode == -3112)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3112)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=4.; X_c*=4.; X_d*=2.;} // Sigma-Bar N
|
||||
else if((ProjectilePDGcode == -3212)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3212)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=3.; X_c*=3.; X_d*=2.;} // Sigma0Bar P
|
||||
else if((ProjectilePDGcode == -3212)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3212)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=3.; X_c*=3.; X_d*=2.;} // Sigma0Bar N
|
||||
else if((ProjectilePDGcode == -3222)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3222)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=4.; X_c*=4.; X_d*=2.;} // Sigma+Bar P
|
||||
else if((ProjectilePDGcode == -3222)&&(TargetPDGcode == 2112))
|
||||
{X_b*=2.; X_c*=2.; X_d*=0.;} // Sigma+Bar P
|
||||
else if((ProjectilePDGcode == -3312)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3222)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=2.; X_c*=2.; X_d*=0.;} // Sigma+Bar N
|
||||
else if((ProjectilePDGcode == -3312)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=1.; X_c*=1.; X_d*=0.;} // Xi-Bar P
|
||||
else if((ProjectilePDGcode == -3312)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3312)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=2.; X_c*=2.; X_d*=0.;} // Xi-Bar N
|
||||
else if((ProjectilePDGcode == -3322)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3322)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=2.; X_c*=2.; X_d*=0.;} // Xi0Bar P
|
||||
else if((ProjectilePDGcode == -3322)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3322)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=1.; X_c*=1.; X_d*=0.;} // Xi0Bar N
|
||||
else if((ProjectilePDGcode == -3334)&&(TargetPDGcode == 2212))
|
||||
else if((ProjectilePDGcode == -3334)&&((TargetPDGcode == 2212)||(TargetPDGcode == 2214)))
|
||||
{X_b*=0.; X_c*=0.; X_d*=0.;} // Omega-Bar P
|
||||
else if((ProjectilePDGcode == -3334)&&(TargetPDGcode == 2112))
|
||||
else if((ProjectilePDGcode == -3334)&&((TargetPDGcode == 2112)||(TargetPDGcode == 2114)))
|
||||
{X_b*=0.; X_c*=0.; X_d*=0.;} // Omega-Bar N
|
||||
else {G4cout<<"Unknown anti-baryon for FTF annihilation"<<G4endl;}
|
||||
else {G4cout<<"Unknown anti-baryon for FTF annihilation: PDGcodes - "<<ProjectilePDGcode<<" "<<TargetPDGcode<<G4endl;}
|
||||
|
||||
//G4cout<<"Annih X a b c d "<<X_a<<" "<<X_b<<" "<<X_c<<" "<<X_d<<G4endl;
|
||||
//=========================================
|
||||
@@ -1111,19 +1113,19 @@ G4FTFAnnihilation::~G4FTFAnnihilation()
|
||||
|
||||
const G4FTFAnnihilation & G4FTFAnnihilation::operator=(const G4FTFAnnihilation &)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4FTFAnnihilation = operator meant to be called");
|
||||
return *this;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4FTFAnnihilation = operator not meant to be called");
|
||||
//return *this; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
|
||||
int G4FTFAnnihilation::operator==(const G4FTFAnnihilation &) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4FTFAnnihilation == operator meant to be called");
|
||||
return false;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4FTFAnnihilation == operator not meant to be called");
|
||||
//return false; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
int G4FTFAnnihilation::operator!=(const G4FTFAnnihilation &) const
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4DiffractiveExcitation != operator meant to be called");
|
||||
return true;
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4DiffractiveExcitation != operator not meant to be called");
|
||||
//return true; //A.R. 25-Jul-2012 : fix Coverity
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFModel.cc,v 1.38 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
|
||||
@@ -36,7 +36,12 @@
|
||||
// class implementing the excitation in the FTF Parton String Model
|
||||
// ------------------------------------------------------------
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "G4FTFModel.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4FTFParameters.hh"
|
||||
#include "G4FTFParticipants.hh"
|
||||
#include "G4DiffractiveSplitableHadron.hh"
|
||||
@@ -44,13 +49,12 @@
|
||||
#include "G4LorentzRotation.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4ios.hh"
|
||||
#include <utility>
|
||||
#include "G4IonTable.hh"
|
||||
|
||||
// Class G4FTFModel
|
||||
|
||||
G4FTFModel::G4FTFModel():theExcitation(new G4DiffractiveExcitation()),
|
||||
G4FTFModel::G4FTFModel(const G4String& modelName):G4VPartonStringModel(modelName),
|
||||
theExcitation(new G4DiffractiveExcitation()),
|
||||
theElastic(new G4ElasticHNScattering()),
|
||||
theAnnihilation(new G4FTFAnnihilation())
|
||||
{
|
||||
@@ -58,6 +62,7 @@ G4FTFModel::G4FTFModel():theExcitation(new G4DiffractiveExcitation()),
|
||||
theParameters=0;
|
||||
NumberOfInvolvedNucleon=0;
|
||||
NumberOfInvolvedNucleonOfProjectile=0;
|
||||
SetEnergyMomentumCheckLevels(2*perCent, 150*MeV);
|
||||
}
|
||||
|
||||
struct DeleteVSplitableHadron { void operator()(G4VSplitableHadron * aH){ delete aH;} };
|
||||
@@ -103,22 +108,6 @@ G4FTFModel::~G4FTFModel()
|
||||
*/
|
||||
}
|
||||
|
||||
const G4FTFModel & G4FTFModel::operator=(const G4FTFModel &)
|
||||
{
|
||||
throw G4HadronicException(__FILE__, __LINE__, "G4FTFModel::operator= is not meant to be accessed ");
|
||||
return *this;
|
||||
}
|
||||
|
||||
int G4FTFModel::operator==(const G4FTFModel &right) const
|
||||
{
|
||||
return this==&right;
|
||||
}
|
||||
|
||||
int G4FTFModel::operator!=(const G4FTFModel &right) const
|
||||
{
|
||||
return this!=&right;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------
|
||||
void G4FTFModel::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile)
|
||||
{
|
||||
@@ -220,7 +209,7 @@ G4ExcitedStringVector * G4FTFModel::GetStrings()
|
||||
|
||||
theParticipants.GetList(theProjectile,theParameters);
|
||||
// StoreInvolvedNucleon();
|
||||
//G4cout<<" GetList theProjectile.GetMomentum()"<<theProjectile.GetMomentum()<<G4endl;
|
||||
//G4cout<<" GetList theProjectile.GetMomentum() GetBaryonNumber() "<<theProjectile.GetMomentum()<<" "<<theProjectile.GetDefinition()->GetBaryonNumber()<<G4endl;
|
||||
G4bool Success(true);
|
||||
|
||||
if((std::abs(theProjectile.GetDefinition()->GetBaryonNumber()) <= 1) &&
|
||||
@@ -663,17 +652,17 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
|
||||
G4LorentzRotation toCms(-1*P_total.boostVector());
|
||||
|
||||
G4LorentzVector Ptmp=toCms*P_participants;
|
||||
G4LorentzVector Pcms=toCms*P_participants;
|
||||
//G4cout<<"Ppart in CMS "<<Ptmp<<G4endl;
|
||||
|
||||
if ( Ptmp.pz() <= 0. )
|
||||
if ( Pcms.pz() <= 0. )
|
||||
{ // "String" moving backwards in CMS, abort collision !!
|
||||
//G4cout << " abort ColliDeleteVSplitableHadronsion!! " << G4endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
toCms.rotateZ(-1*Ptmp.phi()); // Uzhi 5.12.09
|
||||
toCms.rotateY(-1*Ptmp.theta()); // Uzhi 5.12.09
|
||||
toCms.rotateZ(-1*Pcms.phi()); // Uzhi 5.12.09
|
||||
toCms.rotateY(-1*Pcms.theta()); // Uzhi 5.12.09
|
||||
|
||||
//G4cout<<"Mpa M res "<<ResidualMass<<" "<<MassOfParticipants<<" "<<SqrtS<<G4endl;
|
||||
G4LorentzRotation toLab(toCms.inverse());
|
||||
@@ -743,7 +732,7 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
G4VSplitableHadron * primary = theParticipants.GetInteraction().GetProjectile();
|
||||
G4LorentzVector Pprojectile=primary->Get4Momentum();
|
||||
|
||||
G4bool ProjectileIsAntiBaryon = primary->GetDefinition()->GetBaryonNumber() < 0;
|
||||
// 13.06.2012 G4bool ProjectileIsAntiBaryon = primary->GetDefinition()->GetBaryonNumber() < 0;
|
||||
|
||||
//G4cout<<"PutOnMass Pprojectile "<<Pprojectile<<G4endl;
|
||||
// To get original projectile particle
|
||||
@@ -757,16 +746,16 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
|
||||
G4double SumMasses = Mprojectile + 20.*MeV; // 13.12.09
|
||||
// Separation energy for projectile
|
||||
if(ProjectileIsAntiBaryon) {SumMasses = Mprojectile;}
|
||||
// if(ProjectileIsAntiBaryon) {SumMasses = Mprojectile;}
|
||||
//G4cout<<"SumMasses Pr "<<SumMasses<<G4endl;
|
||||
//--------------- Target nucleus ------------------------------
|
||||
G4V3DNucleus *theNucleus = GetWoundedNucleus();
|
||||
G4Nucleon * aNucleon;
|
||||
G4int ResidualMassNumber=theNucleus->GetMassNumber();
|
||||
G4int ResidualCharge =theNucleus->GetCharge();
|
||||
|
||||
ResidualExcitationEnergy=0.;
|
||||
G4LorentzVector Ptarget(0.,0.,0.,0.); // Uzhi 20 Sept.
|
||||
G4LorentzVector Ptarget(0.,0.,0.,0.);
|
||||
G4LorentzVector PnuclearResidual(0.,0.,0.,0.); // Uzhi 12.06.2012
|
||||
|
||||
G4double ExcitationEnergyPerWoundedNucleon=
|
||||
theParameters->GetExcitationEnergyPerWoundedNucleon();
|
||||
@@ -775,19 +764,21 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
|
||||
theNucleus->StartLoop();
|
||||
|
||||
while ((aNucleon = theNucleus->GetNextNucleon()))
|
||||
while (G4Nucleon * aNucleon = theNucleus->GetNextNucleon())
|
||||
{
|
||||
Ptarget+=aNucleon->Get4Momentum(); // Uzhi 20 Sept.
|
||||
Ptarget+=aNucleon->Get4Momentum();
|
||||
|
||||
if(aNucleon->AreYouHit())
|
||||
{ // Involved nucleons
|
||||
//G4cout<<"PutOn Tr "<<aNucleon->Get4Momentum()<<G4endl;
|
||||
// Psum += aNucleon->Get4Momentum(); // Uzhi 20 Sept.
|
||||
if(!ProjectileIsAntiBaryon)
|
||||
{
|
||||
SumMasses += aNucleon->GetDefinition()->GetPDGMass();
|
||||
// if(!ProjectileIsAntiBaryon) // Uzhi 13.06.2012
|
||||
// {
|
||||
SumMasses += std::sqrt(sqr(aNucleon->GetDefinition()->GetPDGMass()) //Uzhi 12.06.2012
|
||||
+ aNucleon->Get4Momentum().perp2()); //Uzhi 12.06.2012
|
||||
SumMasses += 20.*MeV; // 13.12.09 Separation energy for a nucleon
|
||||
ResidualExcitationEnergy+=ExcitationEnergyPerWoundedNucleon;
|
||||
/* //Uzhi 13.06.2012
|
||||
} else
|
||||
{
|
||||
SumMasses += aNucleon->Get4Momentum().mag(); // 4.12.2010
|
||||
@@ -795,33 +786,21 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
tmp.setE(aNucleon->Get4Momentum().mag()); // It is need to save mass 6.12.2011
|
||||
aNucleon->SetMomentum(tmp);
|
||||
}
|
||||
*/ //Uzhi 13.06.2012
|
||||
|
||||
//G4cout<<"SumMasses Tr "<<SumMasses<<G4endl;
|
||||
//if(SumMasses+ResidualExcitationEnergy > Psum.mag())
|
||||
//{
|
||||
// SetStatus ???
|
||||
// if(!ProjectileIsAntiBaryon)
|
||||
// {
|
||||
// SumMasses -= aNucleon->GetDefinition()->GetPDGMass();
|
||||
// SumMasses -= 20.*MeV;
|
||||
// ResidualExcitationEnergy-=ExcitationEnergyPerWoundedNucleon;
|
||||
// } else
|
||||
// {
|
||||
// SumMasses -= aNucleon->Get4Momentum().mag();
|
||||
// tmp ???
|
||||
// }
|
||||
//}
|
||||
ResidualMassNumber--;
|
||||
ResidualCharge-=(G4int) aNucleon->GetDefinition()->GetPDGCharge();
|
||||
}
|
||||
else
|
||||
{ // Spectator nucleons
|
||||
// PnuclearResidual += aNucleon->Get4Momentum(); // Uzhi 20 Sept.
|
||||
PnuclearResidual += aNucleon->Get4Momentum(); // Uzhi 12.06.2012
|
||||
} // end of if(!aNucleon->AreYouHit())
|
||||
} // end of while (theNucleus->GetNextNucleon())
|
||||
|
||||
Psum += Ptarget; // PnuclearResidual; // Uzhi 20 Sept.
|
||||
//G4cout<<"ResidualCharge ,ResidualMassNumber "<<ResidualCharge<<" "<<ResidualMassNumber<<" "<<Ptarget<<G4endl;
|
||||
Psum += Ptarget;
|
||||
PnuclearResidual.setPz(0.); PnuclearResidual.setE(0.); // Uzhi 12.06.2012
|
||||
//G4cout<<"ResidualCharge ,ResidualMassNumber "<<ResidualCharge<<" "<<ResidualMassNumber<<" "<<Ptarget<<" "<<PnuclearResidual<<G4endl;
|
||||
|
||||
G4double ResidualMass(0.);
|
||||
if(ResidualMassNumber == 0)
|
||||
{
|
||||
@@ -837,7 +816,7 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
|
||||
// ResidualMass +=ResidualExcitationEnergy; // Will be given after checks
|
||||
//G4cout<<"SumMasses And ResidualMass "<<SumMasses<<" "<<ResidualMass<<G4endl;
|
||||
SumMasses += ResidualMass;
|
||||
SumMasses += std::sqrt(sqr(ResidualMass)+PnuclearResidual.mag2()); // Uzhi 12.06.2012
|
||||
//G4cout<<"SumMasses + ResM "<<SumMasses<<G4endl;
|
||||
//G4cout<<"Psum "<<Psum<<G4endl;
|
||||
//-------------------------------------------------------------
|
||||
@@ -851,36 +830,59 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
// after putting nuclear nucleons
|
||||
// on mass-shell
|
||||
|
||||
if(SqrtS < SumMasses+ResidualExcitationEnergy) {ResidualExcitationEnergy=0.;}
|
||||
SumMasses -= std::sqrt(sqr(ResidualMass)+PnuclearResidual.mag2()); // Uzhi 12.06.2012
|
||||
SumMasses += std::sqrt(sqr(ResidualMass+ResidualExcitationEnergy)
|
||||
+PnuclearResidual.mag2()); // Uzhi 12.06.2012
|
||||
if(SqrtS < SumMasses) // Uzhi 12.06.2012
|
||||
{
|
||||
SumMasses -= std::sqrt(sqr(ResidualMass+ResidualExcitationEnergy)
|
||||
+PnuclearResidual.mag2()); // Uzhi 12.06.2012
|
||||
SumMasses += std::sqrt(sqr(ResidualMass)+PnuclearResidual.mag2());// Uzhi 12.06.2012
|
||||
ResidualExcitationEnergy=0.;
|
||||
}
|
||||
|
||||
ResidualMass +=ResidualExcitationEnergy;
|
||||
SumMasses +=ResidualExcitationEnergy;
|
||||
//G4cout<<"ResidualMass "<<ResidualMass<<" "<<SumMasses<<G4endl;
|
||||
// SumMasses +=ResidualExcitationEnergy; // Uzhi 12.06.2012
|
||||
//G4cout<<"ResidualMass SumMasses ResidualExcitationEnergy "<<ResidualMass<<" "<<SumMasses<<" "<<ResidualExcitationEnergy<<G4endl;
|
||||
//-------------------------------------------------------------
|
||||
// Sampling of nucleons what are transfered to delta-isobars --
|
||||
G4int MaxNumberOfDeltas = (int)((SqrtS - SumMasses)/(400.*MeV));
|
||||
G4int NumberOfDeltas(0);
|
||||
|
||||
//G4cout<<"MaxNumberOfDeltas "<<MaxNumberOfDeltas<<G4endl;
|
||||
if(theNucleus->GetMassNumber() != 1)
|
||||
{
|
||||
G4double ProbDeltaIsobar(0.); // 1. *** Can be set if it is needed
|
||||
//G4cout<<"NumberOfInvolvedNucleon "<<NumberOfInvolvedNucleon<<G4endl;
|
||||
G4double ProbDeltaIsobar(0.05); // Uzhi 6.07.2012
|
||||
for(G4int i=0; i < NumberOfInvolvedNucleon; i++ )
|
||||
{
|
||||
if((G4UniformRand() < ProbDeltaIsobar)&&(NumberOfDeltas < MaxNumberOfDeltas))
|
||||
{
|
||||
NumberOfDeltas++;
|
||||
G4VSplitableHadron * targetSplitable=TheInvolvedNucleon[i]->GetSplitableHadron();
|
||||
SumMasses-=targetSplitable->GetDefinition()->GetPDGMass();
|
||||
G4double MassDec=std::sqrt(sqr(targetSplitable->GetDefinition()->GetPDGMass())
|
||||
+ targetSplitable->Get4Momentum().perp2());
|
||||
|
||||
G4int PDGcode = targetSplitable->GetDefinition()->GetPDGEncoding();
|
||||
G4ParticleDefinition* Old_def = targetSplitable->GetDefinition();
|
||||
|
||||
G4int newPDGcode = PDGcode/10; newPDGcode=newPDGcode*10+4; // Delta
|
||||
G4ParticleDefinition* ptr =
|
||||
G4ParticleTable::GetParticleTable()->FindParticle(newPDGcode);
|
||||
targetSplitable->SetDefinition(ptr);
|
||||
SumMasses+=targetSplitable->GetDefinition()->GetPDGMass();
|
||||
G4double MassInc=std::sqrt(sqr(targetSplitable->GetDefinition()->GetPDGMass())
|
||||
+ targetSplitable->Get4Momentum().perp2());
|
||||
if(SqrtS < SumMasses + MassInc - MassDec) // Uzhi 12.06.2012
|
||||
{ // Change cannot be acsepted!
|
||||
targetSplitable->SetDefinition(Old_def);
|
||||
ProbDeltaIsobar = 0.;
|
||||
} else
|
||||
{ // Change is acsepted.
|
||||
SumMasses += (MassInc - MassDec);
|
||||
}
|
||||
}
|
||||
} // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ )
|
||||
} // end of if(theNucleus.GetMassNumber() != 1)
|
||||
|
||||
//-------------------------------------------------------------
|
||||
|
||||
G4LorentzRotation toCms(-1*Psum.boostVector());
|
||||
@@ -890,14 +892,10 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
//G4cout << " abort ColliDeleteVSplitableHadronsion!! " << G4endl;
|
||||
return false;
|
||||
}
|
||||
//G4cout<<"Yprojectile hadron "<<Ptmp.rapidity()<<G4endl;
|
||||
// toCms.rotateZ(-1*Ptmp.phi()); // Uzhi 5.12.09
|
||||
// toCms.rotateY(-1*Ptmp.theta()); // Uzhi 5.12.09
|
||||
|
||||
|
||||
G4LorentzRotation toLab(toCms.inverse());
|
||||
|
||||
// Ptmp=toCms*PnuclearResidual; // Uzhi 20 Sept.
|
||||
Ptmp=toCms*Ptarget; // Uzhi 20 Sept.
|
||||
Ptmp=toCms*Ptarget;
|
||||
G4double YtargetNucleus=Ptmp.rapidity();
|
||||
//G4cout<<"YtargetNucleus "<<YtargetNucleus<<G4endl;
|
||||
//-------------------------------------------------------------
|
||||
@@ -923,8 +921,7 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
{ // while (DecayMomentum < 0.)
|
||||
|
||||
NumberOfTries++;
|
||||
//G4cout<<"NumberOfTries "<<NumberOfTries<<G4endl;
|
||||
//{G4int Uzhi; G4cin>>Uzhi;}
|
||||
|
||||
if(NumberOfTries == 100*(NumberOfTries/100)) // 100
|
||||
{ // At large number of tries it would be better to reduce the values
|
||||
ScaleFactor/=2.;
|
||||
@@ -932,7 +929,7 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
AveragePt2 *=ScaleFactor;
|
||||
}
|
||||
|
||||
G4ThreeVector PtSum(0.,0.,0.), PtRes(0.,0.,0.);
|
||||
G4ThreeVector PtSum(0.,0.,0.);
|
||||
G4double XminusSum(0.);
|
||||
G4double Xminus(0.);
|
||||
G4bool InerSuccess=true;
|
||||
@@ -947,41 +944,34 @@ G4bool G4FTFModel::PutOnMassShell()
|
||||
for(G4int i=0; i < NumberOfInvolvedNucleon; i++ )
|
||||
{
|
||||
G4Nucleon * aNucleon = TheInvolvedNucleon[i];
|
||||
PtRes-=aNucleon->Get4Momentum().vect();
|
||||
|
||||
G4ThreeVector tmpPt = GaussianPt(AveragePt2, maxPtSquare);
|
||||
PtSum += tmpPt;
|
||||
//G4cout<<"Dcor at sampling "<<Dcor<<G4endl;
|
||||
|
||||
G4ThreeVector tmpX=GaussianPt(Dcor*Dcor, 1.);
|
||||
Xminus=tmpX.x();
|
||||
XminusSum+=Xminus;
|
||||
|
||||
// G4LorentzVector tmp(tmpPt.x(),tmpPt.y(),Xminus,0.); // 6 Dec.2010
|
||||
G4LorentzVector tmp(tmpPt.x(),tmpPt.y(),Xminus, // 6 Dec.2010
|
||||
aNucleon->Get4Momentum().e());// 6 Dec.2010
|
||||
aNucleon->Get4Momentum().e()); // 6 Dec.2010
|
||||
|
||||
//G4cout<<"Inv i mom "<<i<<" "<<tmp<<G4endl;
|
||||
aNucleon->SetMomentum(tmp);
|
||||
} // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ )
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
G4double DeltaX(PtSum.x()); //0.);
|
||||
G4double DeltaY(PtSum.y()); //0.);
|
||||
G4double DeltaX = (PtSum.x()-PnuclearResidual.x())/NumberOfInvolvedNucleon;
|
||||
G4double DeltaY = (PtSum.y()-PnuclearResidual.y())/NumberOfInvolvedNucleon;
|
||||
G4double DeltaXminus(0.);
|
||||
|
||||
//G4cout<<"ResidualMassNumber "<<ResidualMassNumber<<" "<<PtSum<<G4endl;
|
||||
DeltaX = (PtSum.x()-PtRes.x())/NumberOfInvolvedNucleon;
|
||||
DeltaY = (PtSum.y()-PtRes.y())/NumberOfInvolvedNucleon;
|
||||
if(ResidualMassNumber == 0)
|
||||
{
|
||||
// DeltaX = PtSum.x()/NumberOfInvolvedNucleon;
|
||||
// DeltaY = PtSum.y()/NumberOfInvolvedNucleon;
|
||||
DeltaXminus = (XminusSum-1.)/NumberOfInvolvedNucleon;
|
||||
}
|
||||
else
|
||||
{
|
||||
DeltaXminus = -1./theNucleus->GetMassNumber();
|
||||
}
|
||||
//G4cout<<"Dx y xmin "<<DeltaX<<" "<<DeltaY<<" "<<DeltaXminus<<G4endl;
|
||||
|
||||
XminusSum=1.;
|
||||
M2target =0.;
|
||||
|
||||
@@ -991,19 +981,19 @@ DeltaY = (PtSum.y()-PtRes.y())/NumberOfInvolvedNucleon;
|
||||
|
||||
Xminus = aNucleon->Get4Momentum().pz() - DeltaXminus;
|
||||
XminusSum-=Xminus;
|
||||
//G4cout<<" i X-sum "<<i<<" "<<Xminus<<" "<<XminusSum<<G4endl;
|
||||
if(ResidualMassNumber == 0) // Uzhi 5.07.10
|
||||
|
||||
if(ResidualMassNumber == 0)
|
||||
{
|
||||
if((Xminus <= 0.) || (Xminus > 1.)) {InerSuccess=false; break;}
|
||||
} else
|
||||
{
|
||||
if((Xminus <= 0.) || (Xminus > 1.) ||
|
||||
(XminusSum <=0.) || (XminusSum > 1.)) {InerSuccess=false; break;}
|
||||
} // Uzhi 5.07.10
|
||||
}
|
||||
|
||||
G4double Px=aNucleon->Get4Momentum().px() - DeltaX;
|
||||
G4double Py=aNucleon->Get4Momentum().py() - DeltaY;
|
||||
//G4cout<<" i Px Py "<<i<<" "<<Px<<" "<<Py<<G4endl;
|
||||
|
||||
// if(!ProjectileIsAntiBaryon) // 4.12.2010
|
||||
// {
|
||||
M2target +=(aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass()*
|
||||
@@ -1021,13 +1011,11 @@ DeltaY = (PtSum.y()-PtRes.y())/NumberOfInvolvedNucleon;
|
||||
aNucleon->SetMomentum(tmp);
|
||||
} // end of for(G4int i=0; i < NumberOfInvolvedNucleon; i++ )
|
||||
|
||||
//G4cout<<"Rescale O.K."<<G4endl;
|
||||
|
||||
if(InerSuccess && (ResidualMassNumber != 0))
|
||||
{
|
||||
M2target +=(ResidualMass*ResidualMass + PtRes.mag2())/XminusSum;//PtSum
|
||||
M2target +=(sqr(ResidualMass) + PnuclearResidual.mag2())/XminusSum;
|
||||
}
|
||||
//G4cout<<"InerSuccess "<<InerSuccess<<" "<<std::sqrt(M2target)<<G4endl;
|
||||
//G4cout<<"InerSuccess "<<InerSuccess<<" "<<SqrtS<<" "<<Mprojectile + std::sqrt(M2target)<<" "<<std::sqrt(M2target)<<G4endl;
|
||||
//G4int Uzhi;G4cin>>Uzhi;
|
||||
} while(!InerSuccess);
|
||||
} while (SqrtS < Mprojectile + std::sqrt(M2target));
|
||||
@@ -1056,14 +1044,13 @@ DeltaY = (PtSum.y()-PtRes.y())/NumberOfInvolvedNucleon;
|
||||
{
|
||||
G4Nucleon * aNucleon = TheInvolvedNucleon[i];
|
||||
G4LorentzVector tmp=aNucleon->Get4Momentum();
|
||||
//G4cout<<"Invol Nucl Mom "<<tmp<<G4endl;
|
||||
|
||||
G4double Mt2(0.);
|
||||
|
||||
// if(!ProjectileIsAntiBaryon) // 4.12.2010
|
||||
// {
|
||||
Mt2 = sqr(tmp.x())+sqr(tmp.y())+
|
||||
aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass()*
|
||||
aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass();
|
||||
sqr(aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass());
|
||||
/*
|
||||
} else
|
||||
{
|
||||
@@ -1078,26 +1065,6 @@ DeltaY = (PtSum.y()-PtRes.y())/NumberOfInvolvedNucleon;
|
||||
G4double YtargetNucleon=0.5*std::log((E+Pz)/(E-Pz)); // 1.07.11 //Uzhi 20 Sept.
|
||||
|
||||
//G4cout<<"YtargetNucleon "<<YtargetNucleon<<G4endl;
|
||||
|
||||
/*
|
||||
tmp.setPz(Pz);
|
||||
tmp.setE(E);
|
||||
G4LorentzVector TestPsum=TestPprojectile+tmp;
|
||||
G4LorentzRotation toCms(-1*TestPsum.boostVector());
|
||||
G4LorentzVector Ptmp=toCms*TestPprojectile;
|
||||
if ( Ptmp.pz() <= 0. )
|
||||
{
|
||||
// "String" moving backwards in CMS, abort collision !!
|
||||
OuterSuccess=false;
|
||||
break;
|
||||
}
|
||||
*/
|
||||
|
||||
//G4cout<<"Pz E "<<Pz<<" "<<E<<G4endl;
|
||||
//G4cout<<"Pz/E > Pzprojectile/Eprojectile "<<Pz/E <<" "<< Pzprojectile/Eprojectile<<G4endl;
|
||||
//G4cout<<"Pz+E > Pzprojectile+Eprojectile "<<Pz+E <<" "<< Pzprojectile+Eprojectile<<G4endl;
|
||||
// if( E+Pz > WplusProjectile ){OuterSuccess=false; break;} // 8.06.11
|
||||
// if( Pz/E > Pzprojectile/Eprojectile ){OuterSuccess=false; break;} // 8.06.11
|
||||
//G4cout<<"YtargetNucleon-YtargetNucleus "<<YtargetNucleon-YtargetNucleus<<G4endl;
|
||||
//G4cout<<"Yprojectile YtargetNucleon "<<Yprojectile<<" "<<YtargetNucleon<<G4endl;
|
||||
if((std::abs(YtargetNucleon-YtargetNucleus) > 2) ||
|
||||
@@ -1132,8 +1099,7 @@ if((std::abs(YtargetNucleon-YtargetNucleus) > 2) ||
|
||||
// if(!ProjectileIsAntiBaryon) // 4.12.2010
|
||||
// {
|
||||
Mt2 = sqr(tmp.x())+sqr(tmp.y())+
|
||||
aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass()*
|
||||
aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass();
|
||||
sqr(aNucleon->GetSplitableHadron()->GetDefinition()->GetPDGMass());
|
||||
/*
|
||||
} else
|
||||
{
|
||||
@@ -1196,7 +1162,7 @@ G4bool G4FTFModel::ExciteParticipants()
|
||||
G4int CurrentInteraction(0); // Uzhi Feb26
|
||||
|
||||
G4int MaxNumOfInelCollisions=G4int(theParameters->GetMaxNumberOfCollisions());
|
||||
|
||||
//G4cout<<"MaxNumOfInelCollisions "<<MaxNumOfInelCollisions<<G4endl;
|
||||
G4double NumberOfInel(0.);
|
||||
//
|
||||
if(MaxNumOfInelCollisions > 0)
|
||||
@@ -1205,6 +1171,7 @@ G4bool G4FTFModel::ExciteParticipants()
|
||||
MaxNumOfInelCollisions;
|
||||
if(G4UniformRand() < ProbMaxNumber) {MaxNumOfInelCollisions++;}
|
||||
NumberOfInel=MaxNumOfInelCollisions;
|
||||
//G4cout<<"Plab > Pbound MaxNumOfInelCollisions "<<MaxNumOfInelCollisions<<G4endl;
|
||||
} else
|
||||
{ // Plab < Pbound, Normal application of FTF is impossible,
|
||||
// low energy corrections applied.
|
||||
@@ -1216,6 +1183,7 @@ G4bool G4FTFModel::ExciteParticipants()
|
||||
{ // Special case for hadron-nucleon interactions
|
||||
NumberOfInel = 1.;
|
||||
MaxNumOfInelCollisions = 1;
|
||||
//G4cout<<"Plab < Pbound MaxNumOfInelCollisions "<<MaxNumOfInelCollisions<<G4endl;
|
||||
}
|
||||
} // end of if(MaxNumOfInelCollisions > 0)
|
||||
//
|
||||
@@ -1232,8 +1200,8 @@ G4bool G4FTFModel::ExciteParticipants()
|
||||
//G4cout<<"Ppr tr "<<projectile<<" "<<target<<G4endl;
|
||||
//G4cout<<"theInter Time "<<collision.GetInteractionTime()/fermi<<G4endl;
|
||||
//G4cout<<"Int Status "<<collision.GetStatus()<<" "<<CurrentInteraction<<G4endl;
|
||||
//G4cout<<"Proj M "<<projectile->Get4Momentum()<<G4endl;
|
||||
//G4cout<<"Targ M "<<target->Get4Momentum()<<G4endl;
|
||||
//G4cout<<"Proj M "<<projectile->Get4Momentum()<<" "<<projectile->Get4Momentum().mag()<<G4endl;
|
||||
//G4cout<<"Targ M "<<target->Get4Momentum()<<" "<<target->Get4Momentum().mag()<<G4endl;
|
||||
//G4cout<<"ProbabilityOfElasticScatt "<<theParameters->GetProbabilityOfElasticScatt()<<G4endl;
|
||||
//G4cout<<"ProbabilityOfAnnihilation "<<theParameters->GetProbabilityOfAnnihilation()<<G4endl;
|
||||
//G4cout<<"projectile->GetStatus target->GetStatus "<<projectile->GetStatus()<<" "<<target->GetStatus()<<G4endl;
|
||||
@@ -1254,49 +1222,43 @@ if(collision.GetStatus()) // Uzhi Feb26
|
||||
if(G4UniformRand()< theParameters->GetProbabilityOfElasticScatt())
|
||||
{ // Elastic scattering -------------------------
|
||||
//G4cout<<"Elastic FTF"<<G4endl;
|
||||
if(theElastic->ElasticScattering(projectile, target, theParameters))
|
||||
{
|
||||
//G4cout<<"Elastic FTF Successfull "<<target->GetStatus()<<G4endl;
|
||||
//G4cout<<"After pro "<<projectile->Get4Momentum()<<" "<<projectile->Get4Momentum().mag()<<G4endl;
|
||||
//G4cout<<"After tar "<<target->Get4Momentum()<<" "<<target->Get4Momentum().mag()<<G4endl;
|
||||
// Successfull = Successfull || true; //1.07.11
|
||||
} else
|
||||
{
|
||||
//G4cout<<"Elastic FTF Not Successfull "<<target->GetStatus()<<G4endl;
|
||||
// Successfull = Successfull || false;
|
||||
// Successfull = Successfull && false;
|
||||
Successfull = false; break; // 1.07.11
|
||||
if(NumberOfInvolvedTargetNucleon > 1)
|
||||
{
|
||||
NumberOfInvolvedTargetNucleon--;
|
||||
target->SetStatus(0); // 1->0 return nucleon to the target VU 18.02.11
|
||||
}
|
||||
}
|
||||
Successfull = theElastic->ElasticScattering(projectile, target, theParameters)
|
||||
|| Successfull; // 9.06.2012
|
||||
}
|
||||
else if(G4UniformRand() > theParameters->GetProbabilityOfAnnihilation())
|
||||
{ // Inelastic scattering ----------------------
|
||||
//G4cout<<"Inelastic FTF"<<G4endl;
|
||||
//G4cout<<"MaxNumOfInelCollisions MaxNumOfInelCollisions "<<MaxNumOfInelCollisions<<" "<<MaxNumOfInelCollisions<<G4endl;
|
||||
//G4cout<<"NumberOfInel MaxNumOfInelCollisions "<<NumberOfInel<<" "<<MaxNumOfInelCollisions<<G4endl;
|
||||
if(G4UniformRand()< NumberOfInel/MaxNumOfInelCollisions)
|
||||
{
|
||||
if(theExcitation->ExciteParticipants(projectile, target,
|
||||
theParameters, theElastic))
|
||||
{
|
||||
// Successfull = Successfull || true;
|
||||
NumberOfInel--;
|
||||
//G4cout<<"Excitation FTF Successfull "<<G4endl;
|
||||
//G4cout<<"After pro "<<projectile->Get4Momentum()<<" "<<projectile->Get4Momentum().mag()<<G4endl;
|
||||
//G4cout<<"After tar "<<target->Get4Momentum()<<" "<<target->Get4Momentum().mag()<<G4endl;
|
||||
} else
|
||||
{
|
||||
// Successfull = Successfull || false;
|
||||
// Successfull = Successfull && false;
|
||||
Successfull = false; break; // 1.07.11
|
||||
//G4cout<<"Excitation FTF Non Successfull -> Elastic scattering "<<Successfull<<G4endl;
|
||||
|
||||
Successfull = theElastic->ElasticScattering(projectile, target, theParameters)
|
||||
|| Successfull; // 9.06.2012
|
||||
|
||||
/*
|
||||
if(NumberOfInvolvedTargetNucleon > 1)
|
||||
{
|
||||
NumberOfInvolvedTargetNucleon--;
|
||||
target->SetStatus(0); // 1->0 return nucleon to the target VU 18.02.11
|
||||
target->SetStatus(0); // 1->0 return nucleon to the target VU 10.04.2012
|
||||
}
|
||||
*/
|
||||
}
|
||||
} else // If NumOfInel
|
||||
{
|
||||
//G4cout<<"Elastic at rejected inelastic scattering"<<G4endl;
|
||||
Successfull = theElastic->ElasticScattering(projectile, target, theParameters)
|
||||
|| Successfull; // 9.06.2012
|
||||
/*
|
||||
if(theElastic->ElasticScattering(projectile, target, theParameters))
|
||||
{
|
||||
// Successfull = Successfull || true;
|
||||
@@ -1305,12 +1267,14 @@ Successfull = false; break; // 1.07.11
|
||||
// Successfull = Successfull || false;
|
||||
//Successfull = Successfull && false;
|
||||
Successfull = false; break; // 1.07.11
|
||||
|
||||
if(NumberOfInvolvedTargetNucleon > 1)
|
||||
{
|
||||
NumberOfInvolvedTargetNucleon--;
|
||||
target->SetStatus(0); // 1->0 return nucleon to the target VU 18.02.11
|
||||
target->SetStatus(4); // 1->0 return nucleon to the target VU 10.04.2012
|
||||
}
|
||||
}
|
||||
*/
|
||||
} // end if NumOfInel
|
||||
}
|
||||
else // Annihilation
|
||||
@@ -1323,12 +1287,12 @@ Successfull = false; break; // 1.07.11
|
||||
{
|
||||
while (theParticipants.Next())
|
||||
{
|
||||
G4InteractionContent & collision=theParticipants.GetInteraction();//Uzhi Feb26
|
||||
G4InteractionContent & acollision=theParticipants.GetInteraction();//Uzhi Feb26
|
||||
|
||||
G4VSplitableHadron * NextProjectileNucleon=collision.GetProjectile(); // Uzhi Feb26
|
||||
G4VSplitableHadron * NextTargetNucleon =collision.GetTarget();
|
||||
G4VSplitableHadron * NextProjectileNucleon=acollision.GetProjectile(); // Uzhi Feb26
|
||||
G4VSplitableHadron * NextTargetNucleon =acollision.GetTarget();
|
||||
if((projectile == NextProjectileNucleon) ||
|
||||
(target == NextTargetNucleon )) collision.SetStatus(0);
|
||||
(target == NextTargetNucleon )) acollision.SetStatus(0);
|
||||
// if(target != NextTargetNucleon) NextTargetNucleon->SetStatus(0); // Uzhi Feb26
|
||||
}
|
||||
|
||||
@@ -1355,7 +1319,10 @@ Successfull = false; break; // 1.07.11
|
||||
|
||||
} else
|
||||
{
|
||||
Successfull = Successfull || false;
|
||||
//A.R. 25-Jul-2012 : commenting the next line to fix a Coverity
|
||||
// "logically dead code".
|
||||
//Successfull = Successfull || false;
|
||||
|
||||
// target->SetStatus(2);
|
||||
}
|
||||
}
|
||||
@@ -1508,8 +1475,13 @@ void G4FTFModel::AjustTargetNucleonForAnnihilation(G4VSplitableHadron *SelectedA
|
||||
SelectedTargetNucleon->Set4Momentum(Ptmp);
|
||||
//-----------
|
||||
|
||||
G4double DeltaExcitationEnergy=ResidualExcitationEnergy/((G4double) NumberOfHoles);
|
||||
|
||||
//A.R. 25-Jul-2012 : Fix to Covery "Division by zero"
|
||||
//G4double DeltaExcitationEnergy=ResidualExcitationEnergy/((G4double) NumberOfHoles);
|
||||
G4double DeltaExcitationEnergy = 0.0;
|
||||
if ( NumberOfHoles != 0 ) {
|
||||
DeltaExcitationEnergy = ResidualExcitationEnergy / ((G4double) NumberOfHoles);
|
||||
}
|
||||
|
||||
// Re-definition of the wounded nucleon momenta
|
||||
theNucleus->StartLoop();
|
||||
while ((aNucleon = theNucleus->GetNextNucleon()))
|
||||
@@ -1571,13 +1543,12 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings()
|
||||
} // Uzhi Feb26
|
||||
}
|
||||
|
||||
unsigned int ahadron;
|
||||
//G4cout<<G4endl<<"primaries.size() "<<primaries.size()<<G4endl;
|
||||
for ( ahadron=0; ahadron < primaries.size() ; ahadron++)
|
||||
for (unsigned int ahadron=0; ahadron < primaries.size() ; ahadron++)
|
||||
{
|
||||
G4bool isProjectile(0);
|
||||
|
||||
if(primaries[ahadron]->GetStatus() == 1) {isProjectile=true; }
|
||||
if(primaries[ahadron]->GetStatus() <= 1) {isProjectile=true; } // VU 10.04.2012
|
||||
// if(primaries[ahadron]->GetStatus() == 3) {isProjectile=false;}
|
||||
|
||||
FirstString=0; SecondString=0;
|
||||
@@ -1627,11 +1598,11 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings()
|
||||
//G4cout<<G4endl<<"theAdditionalString.size() "<<theAdditionalString.size()<<G4endl;
|
||||
if(theAdditionalString.size() != 0)
|
||||
{
|
||||
for ( ahadron=0; ahadron < theAdditionalString.size() ; ahadron++)
|
||||
for (unsigned int ahadron=0; ahadron < theAdditionalString.size() ; ahadron++)
|
||||
{
|
||||
G4bool isProjectile(0);
|
||||
|
||||
if(theAdditionalString[ahadron]->GetStatus() == 1) {isProjectile=true; }
|
||||
if(theAdditionalString[ahadron]->GetStatus() <= 1) {isProjectile=true; } // VU 10.04.2012
|
||||
// if(theAdditionalString[ahadron]->GetStatus() == 3) {isProjectile=false;}
|
||||
|
||||
FirstString=0; SecondString=0;
|
||||
@@ -1652,14 +1623,14 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings()
|
||||
for (G4int ahadron=0; ahadron < NumberOfInvolvedNucleon ; ahadron++)
|
||||
{
|
||||
//G4cout<<"Nucleon status & int# "<<ahadron<<" "<<TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus()<<" "<<TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetSoftCollisionCount()<<G4endl;
|
||||
if(TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() ==0)
|
||||
if(TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() ==4)
|
||||
{ // A nucleon is returned back to the nucleus after annihilation act for example
|
||||
//G4cout<<" Delete 0"<<G4endl;
|
||||
delete TheInvolvedNucleon[ahadron]->GetSplitableHadron();
|
||||
G4VSplitableHadron *aHit=0;
|
||||
TheInvolvedNucleon[ahadron]->Hit(aHit);
|
||||
}
|
||||
else if((TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() ==1) &&
|
||||
else if((TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() <=1) && // VU 10.04.2012
|
||||
(TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetSoftCollisionCount() ==0))
|
||||
{ // A nucleon is returned back to the nucleus after rejected interactions
|
||||
// due to an annihilation before
|
||||
@@ -1668,7 +1639,7 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings()
|
||||
G4VSplitableHadron *aHit=0;
|
||||
TheInvolvedNucleon[ahadron]->Hit(aHit);
|
||||
}
|
||||
else if((TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() ==1) &&
|
||||
else if((TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetStatus() <=1) && // VU 10.04.2012
|
||||
(TheInvolvedNucleon[ahadron]->GetSplitableHadron()->GetSoftCollisionCount() !=0))
|
||||
{ // Nucleon which participate in the interactions,
|
||||
//G4cout<<"Taken 1 !=0"<<G4endl;
|
||||
@@ -1770,3 +1741,8 @@ G4ThreeVector G4FTFModel::GaussianPt(G4double AveragePt2, G4double maxPtSquare)
|
||||
|
||||
return G4ThreeVector (Pt*std::cos(phi), Pt*std::sin(phi), 0.);
|
||||
}
|
||||
|
||||
void G4FTFModel::ModelDescription(std::ostream& desc) const
|
||||
{
|
||||
desc << "please add description here" << G4endl;
|
||||
}
|
||||
|
||||
+107
-58
@@ -24,16 +24,17 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFParameters.cc,v 1.16 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "G4FTFParameters.hh"
|
||||
|
||||
#include "G4ios.hh"
|
||||
#include <utility>
|
||||
#include "G4VComponentCrossSection.hh" // 31 May 2011
|
||||
#include "G4ComponentCHIPShadronNuclearXS.hh" // 31 May 2011
|
||||
#include "G4PhysicalConstants.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
|
||||
#include "G4ParticleDefinition.hh" // 31 May 2011
|
||||
|
||||
@@ -45,18 +46,39 @@
|
||||
#include "G4KaonPlus.hh" // 31 May 2011
|
||||
#include "G4KaonMinus.hh" // 31 May 2011
|
||||
|
||||
G4FTFParameters::G4FTFParameters()
|
||||
{FTFxsManager=0;}
|
||||
G4FTFParameters::G4FTFParameters() :
|
||||
//A.R. 14-Aug-2012 : Coverity fix.
|
||||
FTFhNcmsEnergy(0.0),
|
||||
FTFxsManager(0),
|
||||
FTFXtotal(0.0), FTFXelastic(0.0), FTFXinelastic(0.0), FTFXannihilation(0.0),
|
||||
ProbabilityOfAnnihilation(0.0), ProbabilityOfElasticScatt(0.0),
|
||||
RadiusOfHNinteractions2(0.0), FTFSlope(0.0),
|
||||
AvaragePt2ofElasticScattering(0.0), FTFGamma0(0.0),
|
||||
MagQuarkExchange(0.0), SlopeQuarkExchange(0.0), DeltaProbAtQuarkExchange(0.0),
|
||||
ProbOfSameQuarkExchange(0.0), ProjMinDiffMass(0.0), ProjMinNonDiffMass(0.0),
|
||||
ProbabilityOfProjDiff(0.0), TarMinDiffMass(0.0), TarMinNonDiffMass(0.0),
|
||||
ProbabilityOfTarDiff(0.0), AveragePt2(0.0), ProbLogDistr(0.0),
|
||||
Pt2kink(0.0),
|
||||
MaxNumberOfCollisions(0.0), ProbOfInelInteraction(0.0), CofNuclearDestruction(0.0),
|
||||
R2ofNuclearDestruction(0.0), ExcitationEnergyPerWoundedNucleon(0.0),
|
||||
DofNuclearDestruction(0.0), Pt2ofNuclearDestruction(0.0), MaxPt2ofNuclearDestruction(0.0)
|
||||
{}
|
||||
|
||||
|
||||
G4FTFParameters::~G4FTFParameters()
|
||||
{delete FTFxsManager;}
|
||||
{}
|
||||
//**********************************************************************************************
|
||||
G4FTFParameters::G4FTFParameters(const G4ParticleDefinition * particle,
|
||||
G4int theA,
|
||||
G4int theZ,
|
||||
G4double PlabPerParticle)
|
||||
{
|
||||
|
||||
//A.R. 25-Jul-2012 Coverity fix.
|
||||
FTFXannihilation = 0.0;
|
||||
FTFhNcmsEnergy = 0.0;
|
||||
ProbOfSameQuarkExchange = 0.0;
|
||||
|
||||
G4int ProjectilePDGcode = particle->GetPDGEncoding();
|
||||
G4int ProjectileabsPDGcode = std::abs(ProjectilePDGcode);
|
||||
G4double ProjectileMass = particle->GetPDGMass();
|
||||
@@ -88,7 +110,7 @@ G4FTFParameters::G4FTFParameters(const G4ParticleDefinition * particle,
|
||||
G4double Elab = std::sqrt(Plab*Plab+ProjectileMass2);
|
||||
G4double KineticEnergy = Elab-ProjectileMass; // 31 May 2011
|
||||
|
||||
G4double s=ProjectileMass2 + TargetMass2 + 2.*TargetMass*Elab;
|
||||
G4double S=ProjectileMass2 + TargetMass2 + 2.*TargetMass*Elab;
|
||||
|
||||
//G4cout<<"Proj Plab "<<ProjectilePDGcode<<" "<<Plab<<G4endl;
|
||||
//G4cout<<"Mass KinE "<<ProjectileMass<<" "<<KineticEnergy<<G4endl;
|
||||
@@ -99,15 +121,15 @@ G4FTFParameters::G4FTFParameters(const G4ParticleDefinition * particle,
|
||||
|
||||
Ylab=0.5*std::log((Elab+Plab)/(Elab-Plab));
|
||||
|
||||
G4double ECMSsqr=s/GeV/GeV;
|
||||
G4double SqrtS =std::sqrt(s)/GeV;
|
||||
G4double ECMSsqr=S/GeV/GeV;
|
||||
G4double SqrtS =std::sqrt(S)/GeV;
|
||||
//G4cout<<"Sqrt(s) "<<SqrtS<<G4endl;
|
||||
|
||||
TargetMass /=GeV; TargetMass2 /=(GeV*GeV);
|
||||
ProjectileMass /=GeV; ProjectileMass2 /=(GeV*GeV);
|
||||
|
||||
// ------------------- Cross section calculation from CHIPS -------------
|
||||
FTFxsManager = new G4ComponentCHIPShadronNuclearXS(); // 31 May 2011
|
||||
static G4ChipsComponentXS* _instance = new G4ChipsComponentXS(); // Witek Pokorski
|
||||
FTFxsManager = _instance;
|
||||
|
||||
Plab/=GeV;
|
||||
// G4double LogPlab = std::log( Plab );
|
||||
@@ -497,6 +519,7 @@ if(Xtotal-Xelastic != 0.)
|
||||
//G4cout<<"AvaragePt2ofElasticScattering "<<GetAvaragePt2ofElasticScattering()<<G4endl;
|
||||
//----------- Parameters of excitations ---------------------------------------------
|
||||
|
||||
G4double Xinel=Xtotal-Xelastic; // Uzhi 25.04.2012
|
||||
//G4cout<<"Param ProjectilePDGcode "<<ProjectilePDGcode<<G4endl;
|
||||
if( ProjectilePDGcode > 1000 ) //------Projectile is baryon --------
|
||||
{
|
||||
@@ -506,16 +529,19 @@ if(Xtotal-Xelastic != 0.)
|
||||
if(NumberOfTargetNucleons > 26) {SetProbOfSameQuarkExchange(1.);}
|
||||
else {SetProbOfSameQuarkExchange(0.);}
|
||||
|
||||
SetProjMinDiffMass(1.16); // GeV
|
||||
SetProjMinNonDiffMass(1.16); // GeV
|
||||
//G4cout<<"Param Get Min Dif "<<GetProjMinNonDiffMass()<<G4endl;
|
||||
SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5 0.805
|
||||
SetProjMinDiffMass(1.16); // GeV
|
||||
SetProjMinNonDiffMass(1.16); // GeV
|
||||
// SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab)); // Uzhi 21.05.2012
|
||||
SetProbabilityOfProjDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
|
||||
SetTarMinDiffMass(1.16); // GeV
|
||||
SetTarMinNonDiffMass(1.16); // GeV
|
||||
SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab));// 0.5
|
||||
SetTarMinDiffMass(1.16); // GeV
|
||||
SetTarMinNonDiffMass(1.16); // GeV
|
||||
// SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab)); // Uzhi 21.05.2012
|
||||
SetProbabilityOfTarDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
// SetAveragePt2(0.15); // 0.15 GeV^2
|
||||
SetAveragePt2(0.3); // 0.30 GeV^2 Uzhi 21.05.2012
|
||||
|
||||
SetAveragePt2(0.15); // 0.15 GeV^2
|
||||
SetProbLogDistr(0.5); // Uzhi 21.05.2012
|
||||
}
|
||||
else if( ProjectilePDGcode < -1000 ) //------Projectile is anti_baryon --------
|
||||
{
|
||||
@@ -524,36 +550,41 @@ if(Xtotal-Xelastic != 0.)
|
||||
SetDeltaProbAtQuarkExchange(0.);
|
||||
SetProbOfSameQuarkExchange(0.);
|
||||
|
||||
SetProjMinDiffMass(ProjectileMass+0.22); // GeV
|
||||
SetProjMinNonDiffMass(ProjectileMass+0.22); // GeV
|
||||
SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab));// 0.5
|
||||
//SetProbabilityOfProjDiff(0.5);
|
||||
//G4cout<<"PrDif "<<GetProbabilityOfProjDiff()<<" "<<1.-2.*GetProbabilityOfProjDiff()<<G4endl;
|
||||
//G4int Uzhi; G4cin>>Uzhi;
|
||||
SetProjMinDiffMass(ProjectileMass+0.22); // GeV
|
||||
SetProjMinNonDiffMass(ProjectileMass+0.22); // GeV
|
||||
// SetProbabilityOfProjDiff(0.805*std::exp(-0.35*Ylab)); // Uzhi 21.05.2012
|
||||
SetProbabilityOfProjDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
|
||||
SetTarMinDiffMass(TargetMass+0.22); // GeV
|
||||
SetTarMinNonDiffMass(TargetMass+0.22); // GeV
|
||||
SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab)); // 0.5
|
||||
//SetProbabilityOfTarDiff(0.5);
|
||||
SetAveragePt2(0.15); // 0.15 GeV^2
|
||||
// SetProbabilityOfTarDiff(0.805*std::exp(-0.35*Ylab)); // Uzhi 21.05.2012
|
||||
SetProbabilityOfTarDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
|
||||
SetAveragePt2(0.3); // 0.15 GeV^2 // Uzhi 21.05.2012
|
||||
|
||||
SetProbLogDistr(0.5); // Uzhi 21.05.2012
|
||||
}
|
||||
else if( ProjectileabsPDGcode == 211 ||
|
||||
ProjectilePDGcode == 111) //------Projectile is Pion -----------
|
||||
{
|
||||
SetMagQuarkExchange(240.);
|
||||
SetSlopeQuarkExchange(2.); // 2.
|
||||
SetSlopeQuarkExchange(2.);
|
||||
SetDeltaProbAtQuarkExchange(0.56); //(0.35);
|
||||
|
||||
SetProjMinDiffMass(0.5); // GeV
|
||||
SetProjMinNonDiffMass(0.5); // GeV 0.3
|
||||
SetProbabilityOfProjDiff(0.);//(0.*0.62*std::pow(s/GeV/GeV,-0.51)); // 40/32 X-dif/X-inel
|
||||
SetProjMinDiffMass(0.5); // GeV
|
||||
SetProjMinNonDiffMass(0.5); // GeV 0.3
|
||||
// SetProbabilityOfProjDiff(0.); // Uzhi 3.06.2012
|
||||
SetProbabilityOfProjDiff((6.2-3.7*std::exp(-sqr(SqrtS-7.)/16.))/Xinel*0.);
|
||||
|
||||
SetTarMinDiffMass(1.16); // GeV
|
||||
SetTarMinNonDiffMass(1.16); // GeV
|
||||
// SetProbabilityOfTarDiff(1.);//(2.*0.62*std::pow(s/GeV/GeV,-0.51));
|
||||
// SetProbabilityOfTarDiff(2.6*std::exp(-0.46*Ylab));
|
||||
SetProbabilityOfTarDiff(0.8*std::exp(-0.6*(Ylab-3.)));
|
||||
SetTarMinDiffMass(1.16); // GeV
|
||||
SetTarMinNonDiffMass(1.16); // GeV
|
||||
// SetProbabilityOfTarDiff(0.8*std::exp(-0.6*(Ylab-3.))); // Uzhi 3.06.2012
|
||||
SetProbabilityOfTarDiff((2.+22./ECMSsqr)/Xinel);
|
||||
|
||||
SetAveragePt2(0.15); // GeV^2 7 June 2011
|
||||
SetAveragePt2(0.3); // GeV^2 7 June 2011
|
||||
SetProbLogDistr(0.); // Uzhi 21.05.2012
|
||||
|
||||
SetProbLogDistr(1.);
|
||||
}
|
||||
else if( (ProjectileabsPDGcode == 321) ||
|
||||
(ProjectileabsPDGcode == 311) ||
|
||||
@@ -563,24 +594,23 @@ if(Xtotal-Xelastic != 0.)
|
||||
SetMagQuarkExchange(40.);
|
||||
SetSlopeQuarkExchange(2.25);
|
||||
SetDeltaProbAtQuarkExchange(0.6);
|
||||
//SetMagQuarkExchange(0.);
|
||||
//SetSlopeQuarkExchange(0.);
|
||||
//SetDeltaProbAtQuarkExchange(0.);
|
||||
|
||||
SetProjMinDiffMass(0.6); // GeV 0.7
|
||||
SetProjMinNonDiffMass(0.6); // GeV 0.7
|
||||
SetProbabilityOfProjDiff(0.85*std::pow(s/GeV/GeV,-0.5)); // 40/32 X-dif/X-inel
|
||||
SetProbabilityOfProjDiff(0.);
|
||||
SetProjMinDiffMass(0.6); // GeV 0.7 0.6
|
||||
SetProjMinNonDiffMass(0.6); // GeV 0.7 0.6
|
||||
// SetProbabilityOfProjDiff(0.85*std::pow(s/GeV/GeV,-0.5)); // 40/32 X-dif/X-inel
|
||||
SetProbabilityOfProjDiff(0.*4.7/Xinel); // Uzhi 5.06.2012
|
||||
|
||||
SetTarMinDiffMass(1.1); // GeV
|
||||
SetTarMinNonDiffMass(1.1); // GeV
|
||||
SetProbabilityOfTarDiff(0.45*std::pow(s/GeV/GeV,-0.5)); // 40/32 X-dif/X-inel
|
||||
|
||||
SetAveragePt2(0.15); // GeV^2 7 June 2011
|
||||
SetTarMinDiffMass(1.1); // GeV
|
||||
SetTarMinNonDiffMass(1.1); // GeV
|
||||
// SetProbabilityOfTarDiff(0.45*std::pow(s/GeV/GeV,-0.5));// 40/32 X-dif/X-inel
|
||||
SetProbabilityOfTarDiff(1.5/Xinel); // Uzhi 5.06.2012
|
||||
SetAveragePt2(0.3); // GeV^2 7 June 2011
|
||||
SetProbLogDistr(1.); // Uzhi 5.06.2012
|
||||
}
|
||||
else //------Projectile is undefined,
|
||||
//------Nucleon assumed
|
||||
{
|
||||
/* // Uzhi 6.06.2012
|
||||
SetMagQuarkExchange(1.85); // 7 June 2011
|
||||
SetSlopeQuarkExchange(0.7); // 7 June 2011
|
||||
SetDeltaProbAtQuarkExchange(0.); // 7 June 2011
|
||||
@@ -592,10 +622,29 @@ SetProbabilityOfProjDiff(0.);
|
||||
SetTarMinDiffMass(1.16); // GeV
|
||||
SetTarMinNonDiffMass(1.16); // GeV
|
||||
SetProbabilityOfTarDiff(0.805*std::pow(s/GeV/GeV,-0.35)); // 40/32 X-dif/X-inel
|
||||
*/
|
||||
|
||||
SetAveragePt2(0.15); // GeV^2
|
||||
SetMagQuarkExchange(0.);
|
||||
SetSlopeQuarkExchange(0.);
|
||||
SetDeltaProbAtQuarkExchange(0.);
|
||||
SetProbOfSameQuarkExchange(0.);
|
||||
|
||||
SetProjMinDiffMass(ProjectileMass+0.22); // GeV
|
||||
SetProjMinNonDiffMass(ProjectileMass+0.22); // GeV
|
||||
SetProbabilityOfProjDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
|
||||
SetTarMinDiffMass(TargetMass+0.22); // GeV
|
||||
SetTarMinNonDiffMass(TargetMass+0.22); // GeV
|
||||
SetProbabilityOfTarDiff(6./Xinel+1.5/ECMSsqr); // Uzhi 25.04.2012
|
||||
|
||||
SetAveragePt2(0.3); // 0.15 GeV^2 Uzhi 21.05.2012
|
||||
SetProbLogDistr(0.5); // Uzhi 21.05.2012
|
||||
}
|
||||
|
||||
// if(theA > 4) SetProbabilityOfProjDiff(0.); // Uzhi 6.07.2012 Closed
|
||||
|
||||
//G4cout<<"Param Get Min Dif "<<GetProjMinNonDiffMass()<<G4endl;
|
||||
|
||||
// ---------- Set parameters of a string kink -------------------------------
|
||||
SetPt2Kink(6.*GeV*GeV);
|
||||
G4double Puubar(1./3.), Pddbar(1./3.), Pssbar(1./3.); // SU(3) symmetry
|
||||
@@ -612,13 +661,13 @@ SetProbabilityOfProjDiff(0.);
|
||||
|
||||
SetR2ofNuclearDestruction(1.5*fermi*fermi);
|
||||
|
||||
SetDofNuclearDestruction(0.4);
|
||||
SetDofNuclearDestruction(0.3);
|
||||
SetPt2ofNuclearDestruction((0.035+0.04*std::exp(4.*(Ylab-2.5))/
|
||||
(1.+std::exp(4.*(Ylab-2.5))))*GeV*GeV); //0.09
|
||||
//G4cout<<"Parm Pt2 Y "<<(0.035+0.04*std::exp(4.*(Ylab-2.5))/(1.+std::exp(4.*(Ylab-2.5))))<<" "<<Ylab<<G4endl;
|
||||
SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV);
|
||||
|
||||
SetExcitationEnergyPerWoundedNucleon(75.*MeV);
|
||||
SetExcitationEnergyPerWoundedNucleon(100.*MeV);
|
||||
} else if( ProjectilePDGcode < -1000 ) // for anti-baryon projectile
|
||||
{
|
||||
//G4cout<<"Nucl destruct Anti Bar"<<G4endl;
|
||||
@@ -629,12 +678,12 @@ SetProbabilityOfProjDiff(0.);
|
||||
|
||||
SetR2ofNuclearDestruction(1.5*fermi*fermi);
|
||||
|
||||
SetDofNuclearDestruction(0.4);
|
||||
SetDofNuclearDestruction(0.3);
|
||||
SetPt2ofNuclearDestruction((0.035+0.04*std::exp(4.*(Ylab-2.5))/
|
||||
(1.+std::exp(4.*(Ylab-2.5))))*GeV*GeV); //0.09
|
||||
SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV);
|
||||
|
||||
SetExcitationEnergyPerWoundedNucleon(75.*MeV);
|
||||
SetExcitationEnergyPerWoundedNucleon(100.*MeV);
|
||||
|
||||
if(Plab < 2.) // 2 GeV/c
|
||||
{ // For slow anti-baryon we have to garanty putting on mass-shell
|
||||
@@ -653,12 +702,12 @@ SetProbabilityOfProjDiff(0.);
|
||||
|
||||
SetR2ofNuclearDestruction(1.5*fermi*fermi);
|
||||
|
||||
SetDofNuclearDestruction(0.4);
|
||||
SetDofNuclearDestruction(0.3);
|
||||
SetPt2ofNuclearDestruction((0.035+0.04*std::exp(4.*(Ylab-2.5))/
|
||||
(1.+std::exp(4.*(Ylab-2.5))))*GeV*GeV); //0.09
|
||||
SetMaxPt2ofNuclearDestruction(1.0*GeV*GeV);
|
||||
|
||||
SetExcitationEnergyPerWoundedNucleon(75.*MeV);
|
||||
SetExcitationEnergyPerWoundedNucleon(100.*MeV);
|
||||
}
|
||||
|
||||
//SetCofNuclearDestruction(0.47*std::exp(2.*(Ylab-2.5))/(1.+std::exp(2.*(Ylab-2.5))));
|
||||
|
||||
+22
-17
@@ -24,7 +24,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
//
|
||||
// $Id: G4FTFParticipants.cc,v 1.18 2010/12/07 10:42:40 vuzhinsk Exp $
|
||||
// $Id$
|
||||
// GEANT4 tag $Name: $
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
@@ -39,23 +39,26 @@
|
||||
// (February 2011)
|
||||
// ------------------------------------------------------------
|
||||
|
||||
#include "G4FTFParameters.hh" // Uzhi 29.03.08
|
||||
#include "G4FTFParticipants.hh"
|
||||
#include "G4DiffractiveSplitableHadron.hh"
|
||||
#include "G4VSplitableHadron.hh"
|
||||
#include "Randomize.hh"
|
||||
#include <utility> // Uzhi 29.03.08
|
||||
#include "G4ios.hh"
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
// Class G4FTFParticipants
|
||||
|
||||
G4FTFParticipants::G4FTFParticipants()
|
||||
#include "G4FTFParticipants.hh"
|
||||
#include "G4ios.hh"
|
||||
#include "Randomize.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4FTFParameters.hh" // Uzhi 29.03.08
|
||||
#include "G4DiffractiveSplitableHadron.hh"
|
||||
#include "G4VSplitableHadron.hh"
|
||||
|
||||
G4FTFParticipants::G4FTFParticipants() :
|
||||
theProjectileNucleus(0),
|
||||
currentInteraction(-1)
|
||||
{
|
||||
theProjectileNucleus=0;
|
||||
}
|
||||
|
||||
G4FTFParticipants::G4FTFParticipants(const G4FTFParticipants &): G4VParticipants()
|
||||
, theProjectileNucleus(0), currentInteraction(-1) //A.R. 14-Aug-2012 Coverity fix.
|
||||
{
|
||||
G4Exception("G4FTFParticipants::G4FTFParticipants()","HAD_FTF_001",
|
||||
FatalException," Must not use copy ctor()");
|
||||
@@ -110,10 +113,10 @@ void G4FTFParticipants::GetList(const G4ReactionProduct &thePrimary,
|
||||
//G4cout<<"Prim in Part "<<primarySplitable->Get4Momentum()<<G4endl;
|
||||
G4double xyradius;
|
||||
xyradius =theNucleus->GetOuterRadius() + deltaxy; // Impact parameter sampling
|
||||
|
||||
|
||||
// G4bool nucleusNeedsShift = true; // Uzhi 20 July 2009
|
||||
|
||||
while ( theInteractions.size() == 0 )
|
||||
do
|
||||
{
|
||||
std::pair<G4double, G4double> theImpactParameter;
|
||||
theImpactParameter = theNucleus->ChooseImpactXandY(xyradius);
|
||||
@@ -155,8 +158,10 @@ G4int TrN(0);
|
||||
theInteractions.push_back(aInteraction);
|
||||
}
|
||||
TrN++;
|
||||
}
|
||||
} // end of while ( theInteractions.size() == 0 )
|
||||
}
|
||||
} while ( theInteractions.size() == 0 );
|
||||
|
||||
//if ( theInteractions.size() == 0 ) delete primarySplitable; //A.R. 14-Aug-2012 Coverity fix
|
||||
|
||||
// G4cout << "Number of Hit nucleons " << theInteractions.size()
|
||||
// << "\t" << impactX/fermi << "\t"<<impactY/fermi
|
||||
@@ -181,7 +186,7 @@ TrN++;
|
||||
|
||||
G4double impactX(0.), impactY(0.);
|
||||
|
||||
while ( theInteractions.size() == 0 )
|
||||
do
|
||||
{
|
||||
//G4cout<<"New interaction list"<<G4endl;
|
||||
std::pair<G4double, G4double> theImpactParameter;
|
||||
@@ -259,7 +264,7 @@ TrNuclN++;
|
||||
} // End of while ( (TargetNucleon=theNucleus->GetNextNucleon()) )
|
||||
PrNuclN++;
|
||||
} // End of while ( (ProjectileNucleon=theProjectileNucleus->GetNextNucleon()) )
|
||||
} // end of while ( theInteractions.size() == 0 )
|
||||
} while ( theInteractions.size() == 0 ); // end of while ( theInteractions.size() == 0 )
|
||||
|
||||
//std::sort(theInteractions.begin(),theInteractions.end()); // ????
|
||||
|
||||
|
||||
Reference in New Issue
Block a user