Import Geant4 10.7.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2020-06-26 10:23:25 +02:00
parent c02c370437
commit 67ba86d073
1871 changed files with 174422 additions and 131884 deletions
@@ -56,8 +56,6 @@ class G4AlphaBuilder : public G4PhysicsBuilderInterface
G4AlphaInelasticProcess * theAlphaInelastic;
std::vector<G4VAlphaBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -64,7 +64,6 @@ class G4AntiBarionBuilder : public G4PhysicsBuilderInterface
std::vector<G4VAntiBarionBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -58,8 +58,6 @@ class G4DeuteronBuilder : public G4PhysicsBuilderInterface
G4DeuteronInelasticProcess * theDeuteronInelastic;
std::vector<G4VDeuteronBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -72,11 +72,6 @@ class G4FTFBinaryKaonBuilder : public G4VKaonBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
G4double theMax;
};
@@ -72,11 +72,6 @@ class G4FTFBinaryNeutronBuilder : public G4VNeutronBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
G4double theMax;
};
@@ -75,10 +75,6 @@ class G4FTFBinaryPiKBuilder : public G4VPiKBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
@@ -71,10 +71,6 @@ class G4FTFBinaryPionBuilder : public G4VPionBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
G4double theMax;
};
@@ -68,11 +68,6 @@ class G4FTFBinaryProtonBuilder : public G4VProtonBuilder
using G4VProtonBuilder::Build; //Prevent compiler warning
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
G4double theMax;
};
@@ -65,12 +65,7 @@ private:
G4FTFBuilder(G4FTFBuilder &);
G4FTFBuilder & operator=(const G4FTFBuilder &right);
G4FTFModel* fStringModel;
G4ExcitedStringDecay* fStringDecay;
G4PreCompoundModel* fPreCompound;
G4GeneratorPrecompoundInterface* fPrecoInterface;
G4LundStringFragmentation* fLund;
};
#endif
@@ -76,14 +76,7 @@ class G4FTFPAntiBarionBuilder : public G4VAntiBarionBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4VCrossSectionDataSet* theAntiNucleonData;
G4VComponentCrossSection * theAntiNucleonXS;
G4double theMin;
G4double theMax;
@@ -73,12 +73,6 @@ class G4FTFPKaonBuilder : public G4VKaonBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4double theMin;
G4double theMax;
@@ -73,12 +73,6 @@ class G4FTFPNeutronBuilder : public G4VNeutronBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4double theMin;
G4double theMax;
};
@@ -77,11 +77,6 @@ class G4FTFPPiKBuilder : public G4VPiKBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4double theMin;
G4double theMax;
};
@@ -71,11 +71,6 @@ class G4FTFPPionBuilder : public G4VPionBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4double theMin;
G4double theMax;
};
@@ -70,11 +70,6 @@ class G4FTFPProtonBuilder : public G4VProtonBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4LundStringFragmentation * theLund;
G4double theMin;
G4double theMax;
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// Geant4 header G4HadronicBuilder
//
// Author V.Ivanchenko 14.05.2020
//
// Build hadronic physics
//
#ifndef G4HadronicBuilder_h
#define G4HadronicBuilder_h 1
#include "globals.hh"
#include <vector>
class G4HadronicBuilder
{
public:
static void BuildFTFP_BERT(const std::vector<G4int>& particleList);
static void BuildQGSP_FTFP_BERT(const std::vector<G4int>& particleList, G4bool quasiElastic);
static void BuildHyperonsFTFP_BERT();
static void BuildHyperonsQGSP_FTFP_BERT(G4bool quasiElastic);
static void BuildKaonsFTFP_BERT();
static void BuildKaonsQGSP_FTFP_BERT(G4bool quasiElastic);
static void BuildBCHadronsFTFP_BERT();
static void BuildBCHadronsQGSP_FTFP_BERT(G4bool quasiElastic);
};
#endif
@@ -57,8 +57,6 @@ class G4He3Builder : public G4PhysicsBuilderInterface
G4He3InelasticProcess * theHe3Inelastic;
std::vector<G4VHe3Builder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -0,0 +1,79 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//---------------------------------------------------------------------------
// ClassName: G4HyperonBuilder
// Author: Alberto Ribon
// Date: May 2020
// Description: builder class that collects specific model builders for
// hyperons and anti-hyperons
// Modified:
//---------------------------------------------------------------------------
#ifndef G4HyperonBuilder_h
#define G4HyperonBuilder_h 1
#include "G4PhysicsBuilderInterface.hh"
#include "globals.hh"
#include "G4VHyperonBuilder.hh"
#include <vector>
class G4LambdaInelasticProcess;
class G4AntiLambdaInelasticProcess;
class G4SigmaMinusInelasticProcess;
class G4AntiSigmaMinusInelasticProcess;
class G4SigmaPlusInelasticProcess;
class G4AntiSigmaPlusInelasticProcess;
class G4XiMinusInelasticProcess;
class G4AntiXiMinusInelasticProcess;
class G4XiZeroInelasticProcess;
class G4AntiXiZeroInelasticProcess;
class G4OmegaMinusInelasticProcess;
class G4AntiOmegaMinusInelasticProcess;
class G4HyperonBuilder : public G4PhysicsBuilderInterface {
public:
G4HyperonBuilder();
virtual ~G4HyperonBuilder() {}
virtual void Build() final override;
virtual void RegisterMe( G4PhysicsBuilderInterface* aB ) final override;
private:
G4LambdaInelasticProcess* theLambdaInelastic;
G4AntiLambdaInelasticProcess* theAntiLambdaInelastic;
G4SigmaMinusInelasticProcess* theSigmaMinusInelastic;
G4AntiSigmaMinusInelasticProcess* theAntiSigmaMinusInelastic;
G4SigmaPlusInelasticProcess* theSigmaPlusInelastic;
G4AntiSigmaPlusInelasticProcess* theAntiSigmaPlusInelastic;
G4XiMinusInelasticProcess* theXiMinusInelastic;
G4AntiXiMinusInelasticProcess* theAntiXiMinusInelastic;
G4XiZeroInelasticProcess* theXiZeroInelastic;
G4AntiXiZeroInelasticProcess* theAntiXiZeroInelastic;
G4OmegaMinusInelasticProcess* theOmegaMinusInelastic;
G4AntiOmegaMinusInelasticProcess* theAntiOmegaMinusInelastic;
std::vector< G4VHyperonBuilder* > theModelCollections;
};
#endif
@@ -31,73 +31,56 @@
// Author: 2012 G.Folger
//
// Modified:
// 12.04.2017 A.Dotti move to new design with base class
// 06.05.2020 A.Ribon : introduced G4VHyperonBuilder
// 12.04.2017 A.Dotti : move to new design with base class
//
//----------------------------------------------------------------------------
//
#ifndef G4HyperonFTFPBuilder_h
#define G4HyperonFTFPBuilder_h 1
#include "G4PhysicsBuilderInterface.hh"
#include "G4VHyperonBuilder.hh"
#include "globals.hh"
#include "G4LambdaInelasticProcess.hh"
#include "G4AntiLambdaInelasticProcess.hh"
#include "G4SigmaPlusInelasticProcess.hh"
#include "G4SigmaMinusInelasticProcess.hh"
#include "G4AntiSigmaPlusInelasticProcess.hh"
#include "G4AntiSigmaMinusInelasticProcess.hh"
#include "G4XiZeroInelasticProcess.hh"
#include "G4XiMinusInelasticProcess.hh"
#include "G4AntiXiZeroInelasticProcess.hh"
#include "G4AntiXiMinusInelasticProcess.hh"
#include "G4OmegaMinusInelasticProcess.hh"
#include "G4AntiOmegaMinusInelasticProcess.hh"
#include "G4TheoFSGenerator.hh"
#include "G4GeneratorPrecompoundInterface.hh"
#include "G4FTFModel.hh"
#include "G4LundStringFragmentation.hh"
#include "G4ExcitedStringDecay.hh"
#include "G4CascadeInterface.hh"
class G4TheoFSGenerator;
class G4CascadeInterface;
class G4VCrossSectionDataSet;
class G4HyperonFTFPBuilder : public G4PhysicsBuilderInterface
{
class G4HyperonFTFPBuilder : public G4VHyperonBuilder {
public:
G4HyperonFTFPBuilder();
G4HyperonFTFPBuilder( G4bool quasiElastic = false );
virtual ~G4HyperonFTFPBuilder();
virtual void Build() final override;
virtual void Build( G4HadronElasticProcess* ) final override {}
virtual void Build( G4LambdaInelasticProcess* aP ) final override;
virtual void Build( G4AntiLambdaInelasticProcess* aP ) final override;
virtual void Build( G4SigmaMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiSigmaMinusInelasticProcess* aP ) final override;
virtual void Build( G4SigmaPlusInelasticProcess* aP ) final override;
virtual void Build( G4AntiSigmaPlusInelasticProcess* aP ) final override;
virtual void Build( G4XiMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiXiMinusInelasticProcess* aP ) final override;
virtual void Build( G4XiZeroInelasticProcess* aP ) final override;
virtual void Build( G4AntiXiZeroInelasticProcess* aP ) final override;
virtual void Build( G4OmegaMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiOmegaMinusInelasticProcess* aP ) final override;
private:
G4TheoFSGenerator * HyperonFTFP;
G4TheoFSGenerator * AntiHyperonFTFP;
G4GeneratorPrecompoundInterface * theCascade;
G4FTFModel * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4LundStringFragmentation * theLund;
G4CascadeInterface * theBertini;
G4LambdaInelasticProcess* theLambdaInelastic;
G4AntiLambdaInelasticProcess* theAntiLambdaInelastic;
G4SigmaMinusInelasticProcess* theSigmaMinusInelastic;
G4AntiSigmaMinusInelasticProcess* theAntiSigmaMinusInelastic;
G4SigmaPlusInelasticProcess* theSigmaPlusInelastic;
G4AntiSigmaPlusInelasticProcess* theAntiSigmaPlusInelastic;
G4XiZeroInelasticProcess* theXiZeroInelastic;
G4AntiXiZeroInelasticProcess* theAntiXiZeroInelastic;
G4XiMinusInelasticProcess* theXiMinusInelastic;
G4AntiXiMinusInelasticProcess* theAntiXiMinusInelastic;
G4OmegaMinusInelasticProcess* theOmegaMinusInelastic;
G4AntiOmegaMinusInelasticProcess* theAntiOmegaMinusInelastic;
// The energy limits refer to the string model FTF:
// - the max energy is the same for hyperons and hyperons;
// - the min energy is for hyperons only (0.0 is assumed for antihyperons)
virtual void SetMinEnergy( G4double val ) final override { theMin = val; }
virtual void SetMaxEnergy( G4double val ) final override { theMax = val; }
using G4VHyperonBuilder::Build; // Prevent compiler warning
private:
G4TheoFSGenerator* theHyperonFTFP;
G4TheoFSGenerator* theAntiHyperonFTFP;
G4CascadeInterface* theBertini;
G4VCrossSectionDataSet* theInelasticCrossSection;
G4bool wasActivated;
G4double theMin; // Min energy for FTF for hyperons only (0.0 is assumed for antihyperons)
G4double theMax; // Max energy for FTF for hyperons and antihyperons
};
#endif
@@ -0,0 +1,76 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//---------------------------------------------------------------------------
// ClassName: G4HyperonQGSPBuilder
// Author: Alberto Ribon
// Date: May 2020
// Description: builder class for hyperons and anti-hyperons using QGSP
// string model; recommended use above >~ 12 GeV .
// Modified:
//---------------------------------------------------------------------------
#ifndef G4HyperonQGSPBuilder_h
#define G4HyperonQGSPBuilder_h 1
#include "G4VHyperonBuilder.hh"
#include "globals.hh"
class G4TheoFSGenerator;
class G4VCrossSectionDataSet;
class G4HyperonQGSPBuilder : public G4VHyperonBuilder {
public:
G4HyperonQGSPBuilder( G4bool quasiElastic = false );
virtual ~G4HyperonQGSPBuilder();
virtual void Build( G4HadronElasticProcess* ) final override {}
virtual void Build( G4LambdaInelasticProcess* aP ) final override;
virtual void Build( G4AntiLambdaInelasticProcess* aP ) final override;
virtual void Build( G4SigmaMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiSigmaMinusInelasticProcess* aP ) final override;
virtual void Build( G4SigmaPlusInelasticProcess* aP ) final override;
virtual void Build( G4AntiSigmaPlusInelasticProcess* aP ) final override;
virtual void Build( G4XiMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiXiMinusInelasticProcess* aP ) final override;
virtual void Build( G4XiZeroInelasticProcess* aP ) final override;
virtual void Build( G4AntiXiZeroInelasticProcess* aP ) final override;
virtual void Build( G4OmegaMinusInelasticProcess* aP ) final override;
virtual void Build( G4AntiOmegaMinusInelasticProcess* aP ) final override;
virtual void SetMinEnergy( G4double val ) final override { theMin = val; }
virtual void SetMaxEnergy( G4double val ) final override { theMax = val; }
using G4VHyperonBuilder::Build; // Prevent compiler warning
private:
G4TheoFSGenerator* theHyperonQGSP;
G4VCrossSectionDataSet* theInelasticCrossSection;
G4double theMin;
G4double theMax;
};
#endif
@@ -64,8 +64,6 @@ class G4KaonBuilder : public G4PhysicsBuilderInterface
G4KaonZeroSInelasticProcess* theKaonZeroSInelastic;
std::vector<G4VKaonBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -66,8 +66,6 @@ class G4NeutronBuilder : public G4PhysicsBuilderInterface
std::vector<G4VNeutronBuilder *> theModelCollections;
G4bool wasActivated;
G4bool isFissionActivated;
};
#endif
@@ -46,7 +46,7 @@
class G4NeutronLENDBuilder : public G4VNeutronBuilder
{
public:
G4NeutronLENDBuilder(G4String eva="");
G4NeutronLENDBuilder(const G4String& eva="");
virtual ~G4NeutronLENDBuilder() {}
virtual void Build(G4HadronElasticProcess * aP) final override;
@@ -65,8 +65,6 @@ class G4PiKBuilder : public G4PhysicsBuilderInterface
G4KaonZeroSInelasticProcess* theKaonZeroSInelastic;
std::vector<G4VPiKBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -58,8 +58,6 @@ class G4PionBuilder : public G4PhysicsBuilderInterface
G4PionPlusInelasticProcess* thePionPlusInelastic;
G4PionMinusInelasticProcess* thePionMinusInelastic;
std::vector<G4VPionBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -62,7 +62,6 @@ class G4ProtonBuilder : public G4PhysicsBuilderInterface
std::vector<G4VProtonBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -66,8 +66,6 @@ public:
private:
G4double theMin;
G4double theMax;
G4ParticleHPInelastic* theParticlePHPModel;
};
#endif
@@ -73,10 +73,6 @@ class G4QGSBinaryKaonBuilder : public G4VKaonBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
@@ -72,11 +72,6 @@ class G4QGSBinaryNeutronBuilder : public G4VNeutronBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
@@ -76,10 +76,6 @@ class G4QGSBinaryPiKBuilder : public G4VPiKBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
@@ -71,12 +71,7 @@ class G4QGSBinaryPionBuilder : public G4VPionBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
#endif
@@ -69,10 +69,6 @@ class G4QGSBinaryProtonBuilder : public G4VProtonBuilder
private:
G4TheoFSGenerator * theModel;
G4BinaryCascade * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
};
@@ -39,13 +39,8 @@
#include "globals.hh"
#include "G4VHadronModelBuilder.hh"
#include "G4QGSModel.hh"
#include "G4QGSParticipants.hh"
class G4ExcitedStringDecay;
class G4QuasiElasticChannel;
class G4PreCompoundModel;
class G4QGSMFragmentation;
class G4QGSBuilder : public G4VHadronModelBuilder
{
@@ -67,16 +62,7 @@ private:
G4QGSBuilder(G4QGSBuilder &);
G4QGSBuilder & operator=(const G4QGSBuilder &right);
G4QGSModel< G4QGSParticipants > * theQGStringModel;
G4ExcitedStringDecay* theQGStringDecay;
G4QuasiElasticChannel* theQuasiElastic;
G4PreCompoundModel* thePreCompound;
G4QGSMFragmentation* theQGSM;
G4bool quasielFlag;
};
#endif
@@ -0,0 +1,75 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//--------------------------------------------------------------------------
// ClassName: G4QGSPAntiBarionBuilder
// Author: Alberto Ribon
// Date: May 2020
// Description: builder class that uses QGSP for anti_proton and
// anti_neutron, while, for the time being, delegates FTFP for
// the light anti-ions (anti_deuteron, anti_triton, anti_He3
// and anti_alpha).
// For safety, better to use this class above >~ 12 GeV.
// Modified:
//---------------------------------------------------------------------------
#ifndef G4QGSPAntiBarionBuilder_h
#define G4QGSPAntiBarionBuilder_h 1
#include "globals.hh"
#include "G4VAntiBarionBuilder.hh"
class G4HadronElasticProcess;
class G4VCrossSectionDataSet;
class G4TheoFSGenerator;
class G4QGSPAntiBarionBuilder : public G4VAntiBarionBuilder {
public:
G4QGSPAntiBarionBuilder( G4bool quasiElastic = false );
virtual ~G4QGSPAntiBarionBuilder() {};
virtual void Build( G4HadronElasticProcess* ) final override {}
virtual void Build( G4AntiProtonInelasticProcess* aP ) final override;
virtual void Build( G4AntiNeutronInelasticProcess* aP ) final override;
virtual void Build( G4AntiDeuteronInelasticProcess* ) final override;
virtual void Build( G4AntiTritonInelasticProcess* ) final override;
virtual void Build( G4AntiHe3InelasticProcess* ) final override;
virtual void Build( G4AntiAlphaInelasticProcess* ) final override;
virtual void SetMinEnergy( G4double val ) final override { theMin = val; }
virtual void SetMaxEnergy( G4double val ) final override { theMax = val; }
using G4VAntiBarionBuilder::Build; // Prevent compiler warning
private:
G4TheoFSGenerator* theQGSmodel;
G4TheoFSGenerator* theFTFmodel;
G4VCrossSectionDataSet* theAntiNucleonData;
G4double theMin;
G4double theMax;
};
#endif
@@ -72,13 +72,8 @@ class G4QGSPKaonBuilder : public G4VKaonBuilder
using G4VKaonBuilder::Build; //Prevent compiler warning
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4double theMin;
G4double theMax;
};
#endif
@@ -70,13 +70,7 @@ class G4QGSPLundStrFragmProtonBuilder : public G4VProtonBuilder
private:
G4TheoFSGenerator* theModel;
G4GeneratorPrecompoundInterface* theCascade;
G4QGSModel< G4QGSParticipants >* theStringModel;
G4ExcitedStringDecay* theStringDecay;
G4QuasiElasticChannel* theQuasiElastic;
G4LundStringFragmentation* theStrFragm;
G4double theMin;
};
#endif
@@ -73,15 +73,7 @@ class G4QGSPNeutronBuilder : public G4VNeutronBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4QGSMFragmentation * theQGSM;
G4double theMin;
};
#endif
@@ -76,11 +76,6 @@ class G4QGSPPiKBuilder : public G4VPiKBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4QGSMFragmentation * theQGSM;
G4double theMin;
};
@@ -72,13 +72,7 @@ class G4QGSPPionBuilder : public G4VPionBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4QGSMFragmentation * theQGSM;
G4double theMin;
};
#endif
@@ -62,8 +62,8 @@ class G4QGSPProtonBuilder : public G4VProtonBuilder
virtual ~G4QGSPProtonBuilder();
public:
virtual void Build(G4HadronElasticProcess *) final override {}
virtual void Build(G4ProtonInelasticProcess * aP) final override ;
virtual void Build(G4HadronElasticProcess *) override {}
virtual void Build(G4ProtonInelasticProcess * aP) override;
virtual void SetMinEnergy(G4double aM) final override {theMin = aM;}
@@ -71,13 +71,7 @@ class G4QGSPProtonBuilder : public G4VProtonBuilder
private:
G4TheoFSGenerator * theModel;
G4GeneratorPrecompoundInterface * theCascade;
G4QGSModel< G4QGSParticipants > * theStringModel;
G4ExcitedStringDecay * theStringDecay;
G4QuasiElasticChannel * theQuasiElastic;
G4QGSMFragmentation * theQGSM;
G4double theMin;
};
#endif
@@ -51,8 +51,8 @@ class G4TritonBuilder : public G4PhysicsBuilderInterface
G4TritonBuilder();
virtual ~G4TritonBuilder() {}
virtual void Build() final override;
virtual void RegisterMe(G4PhysicsBuilderInterface * aB) final override;
virtual void Build() final;
virtual void RegisterMe(G4PhysicsBuilderInterface * aB) final;
using G4PhysicsBuilderInterface::Build; //Prevent compiler warning
@@ -60,8 +60,6 @@ class G4TritonBuilder : public G4PhysicsBuilderInterface
G4TritonInelasticProcess * theTritonInelastic;
std::vector<G4VTritonBuilder *> theModelCollections;
G4bool wasActivated;
};
#endif
@@ -70,8 +70,6 @@ public:
private:
G4double theMin;
G4double theMax;
G4ParticleHPInelastic* theParticlePHPModel;
};
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//---------------------------------------------------------------------------
// ClassName: G4VHyperonBuilder
// Author: Alberto Ribon
// Date: May 2020
// Description: builder base class for hyperons and anti-hyperons
// Modified:
//---------------------------------------------------------------------------
#ifndef G4VHyperonBuilder_h
#define G4VHyperonBuilder_h
#include "G4PhysicsBuilderInterface.hh"
class G4HadronElasticProcess;
class G4LambdaInelasticProcess;
class G4AntiLambdaInelasticProcess;
class G4SigmaMinusInelasticProcess;
class G4AntiSigmaMinusInelasticProcess;
class G4SigmaPlusInelasticProcess;
class G4AntiSigmaPlusInelasticProcess;
class G4XiMinusInelasticProcess;
class G4AntiXiMinusInelasticProcess;
class G4XiZeroInelasticProcess;
class G4AntiXiZeroInelasticProcess;
class G4OmegaMinusInelasticProcess;
class G4AntiOmegaMinusInelasticProcess;
class G4VHyperonBuilder : public G4PhysicsBuilderInterface {
public:
G4VHyperonBuilder() = default;
virtual ~G4VHyperonBuilder() {}
virtual void Build( G4HadronElasticProcess* aP ) = 0;
virtual void Build( G4LambdaInelasticProcess* aP ) = 0;
virtual void Build( G4AntiLambdaInelasticProcess* aP ) = 0;
virtual void Build( G4SigmaMinusInelasticProcess* aP ) = 0;
virtual void Build( G4AntiSigmaMinusInelasticProcess* aP ) = 0;
virtual void Build( G4SigmaPlusInelasticProcess* aP ) = 0;
virtual void Build( G4AntiSigmaPlusInelasticProcess* aP ) = 0;
virtual void Build( G4XiMinusInelasticProcess* aP ) = 0;
virtual void Build( G4AntiXiMinusInelasticProcess* aP ) = 0;
virtual void Build( G4XiZeroInelasticProcess* aP ) = 0;
virtual void Build( G4AntiXiZeroInelasticProcess* aP ) = 0;
virtual void Build( G4OmegaMinusInelasticProcess* aP ) = 0;
virtual void Build( G4AntiOmegaMinusInelasticProcess* aP ) = 0;
using G4PhysicsBuilderInterface::Build; // Prevent compiler warning
};
#endif