// $Id$ // Category: physics // // Author: I. Hrivnacova // // Class TG4PhysicsConstructorHadron // --------------------------------- // Constructor of hadron physics. // According to ExN04HadronPhysics.hh, GEANT4 tag Name: geant4-03-02 #ifndef TG4_PHYSICS_CONSTRUCTOR_HADRON_H #define TG4_PHYSICS_CONSTRUCTOR_HADRON_H #include "TG4VPhysicsConstructor.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Low-energy Models #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // High-energy Models #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Stopping processes #include #include #ifdef TRIUMF_STOP_PIMINUS #include #else #include #endif #ifdef TRIUMF_STOP_KMINUS #include #else #include #endif class TG4PhysicsConstructorHadron: public TG4VPhysicsConstructor { typedef G4std::vector ProcessVector; public: TG4PhysicsConstructorHadron(const G4String& name = "Hadron"); TG4PhysicsConstructorHadron(G4int verboseLevel, G4bool setEM, G4bool setHadron, const G4String& name = "Hadron"); // --> protected // TG4PhysicsConstructorHadron(const TG4PhysicsConstructorHadron& right); virtual ~TG4PhysicsConstructorHadron(); protected: TG4PhysicsConstructorHadron(const TG4PhysicsConstructorHadron& right); // operators TG4PhysicsConstructorHadron& operator=( const TG4PhysicsConstructorHadron& right); // methods // construct particle and physics virtual void ConstructParticle(); virtual void ConstructProcess(); // data members // Elastic Process G4HadronElasticProcess fElasticProcess; //hadron elastic process G4LElastic* fElasticModel; //elastic model // Pi + G4PionPlusInelasticProcess fPionPlusInelastic; //pi+ inel process G4LEPionPlusInelastic* fLEPionPlusModel; //pi+ LE inel model G4HEPionPlusInelastic* fHEPionPlusModel; //pi+ HE inel model G4MultipleScattering fPionPlusMult; //pi+ msc G4hIonisation fPionPlusIonisation; //pi+ ionisation // Pi - G4PionMinusInelasticProcess fPionMinusInelastic; //pi- inel process G4LEPionMinusInelastic* fLEPionMinusModel; //pi- LE inel model G4HEPionMinusInelastic* fHEPionMinusModel; //pi- HE inel model G4MultipleScattering fPionMinusMult; //pi- msc G4hIonisation fPionMinusIonisation; //pi- ionisation #ifdef TRIUMF_STOP_PIMINUS G4PionMinusAbsorptionAtRest fPionMinusAbsorption; //pi- absorption #else G4PiMinusAbsorptionAtRest fPionMinusAbsorption; //pi- absorption #endif // K + G4KaonPlusInelasticProcess fKaonPlusInelastic; //kaon+ inel process G4LEKaonPlusInelastic* fLEKaonPlusModel; //kaon+ LE inel model G4HEKaonPlusInelastic* fHEKaonPlusModel; //kaon+ HE inel model G4MultipleScattering fKaonPlusMult; //kaon+ msc G4hIonisation fKaonPlusIonisation; //kaon+ ionisation // K - G4KaonMinusInelasticProcess fKaonMinusInelastic; //kaon- inel process G4LEKaonMinusInelastic* fLEKaonMinusModel; //kaon- LE inel model G4HEKaonMinusInelastic* fHEKaonMinusModel; //kaon- HE inel model G4MultipleScattering fKaonMinusMult; //kaon- msc G4hIonisation fKaonMinusIonisation; //kaon- ionisation #ifdef TRIUMF_STOP_KMINUS G4KaonMinusAbsorption fKaonMinusAbsorption; //kaon- absorption #else G4PiMinusAbsorptionAtRest fKaonMinusAbsorption; //kaon- absorption #endif // K0L G4KaonZeroLInelasticProcess fKaonZeroLInelastic; //kaon0 inel process G4LEKaonZeroLInelastic* fLEKaonZeroLModel; //kaon0 LE inel model G4HEKaonZeroInelastic* fHEKaonZeroLModel; //kaon0 HE inel model // K0S G4KaonZeroSInelasticProcess fKaonZeroSInelastic; //kaon0S inel process G4LEKaonZeroSInelastic* fLEKaonZeroSModel; //kaon0S LE inel model G4HEKaonZeroInelastic* fHEKaonZeroSModel; //kaon0S HE inel mode // Proton G4ProtonInelasticProcess fProtonInelastic; //p inel process G4LEProtonInelastic* fLEProtonModel; //p LE inel model G4HEProtonInelastic* fHEProtonModel; //p HE inel model G4MultipleScattering fProtonMult; //p msc G4hIonisation fProtonIonisation; //p ionisation // anti-proton G4AntiProtonInelasticProcess fAntiProtonInelastic; //p_bar inel process G4LEAntiProtonInelastic* fLEAntiProtonModel; //p_bar LE inel model G4HEAntiProtonInelastic* fHEAntiProtonModel; //p_bar HE inel model G4MultipleScattering fAntiProtonMult; //p_bar msc G4hIonisation fAntiProtonIonisation;//p_bar ionisation G4AntiProtonAnnihilationAtRest fAntiProtonAnnihilation;//p_bar annihilation // neutron G4NeutronInelasticProcess fNeutronInelastic; //n inel process G4LENeutronInelastic* fLENeutronModel; //n LE inel model G4HENeutronInelastic* fHENeutronModel; //n HE inel model G4HadronFissionProcess fNeutronFission; //n fission G4LFission* fNeutronFissionModel; //n fission model G4HadronCaptureProcess fNeutronCapture; //n capture G4LCapture* fNeutronCaptureModel; //n capture model // anti-neutron G4AntiNeutronInelasticProcess fAntiNeutronInelastic;//n_bar inel process G4LEAntiNeutronInelastic* fLEAntiNeutronModel; //n_bar LE inel model G4HEAntiNeutronInelastic* fHEAntiNeutronModel; //n_bar HE inel model G4AntiNeutronAnnihilationAtRest fAntiNeutronAnnihilation;//n_bar ionisation // Lambda G4LambdaInelasticProcess fLambdaInelastic; //lambda inel process G4LELambdaInelastic* fLELambdaModel; //lambda LE inel model G4HELambdaInelastic* fHELambdaModel; //lambda HE inel model // AntiLambda G4AntiLambdaInelasticProcess fAntiLambdaInelastic; //lambda_bar inel process G4LEAntiLambdaInelastic* fLEAntiLambdaModel; //lambda_bar LE inel model G4HEAntiLambdaInelastic* fHEAntiLambdaModel; //lambda_bar HE inel model // SigmaMinus G4SigmaMinusInelasticProcess fSigmaMinusInelastic; //sigma- inel process G4LESigmaMinusInelastic* fLESigmaMinusModel; //sigma- LE inel model G4HESigmaMinusInelastic* fHESigmaMinusModel; //sigma- HE inel model G4MultipleScattering fSigmaMinusMult; //sigma- msc G4hIonisation fSigmaMinusIonisation;//sigma- ionisation // AntiSigmaMinus G4AntiSigmaMinusInelasticProcess fAntiSigmaMinusInelastic; //sigma-_bar inel process G4LEAntiSigmaMinusInelastic* fLEAntiSigmaMinusModel; //sigma-_bar LE inel model G4HEAntiSigmaMinusInelastic* fHEAntiSigmaMinusModel; //sigma-_bar HE inel model G4MultipleScattering fAntiSigmaMinusMult; //sigma-_bar msc G4hIonisation fAntiSigmaMinusIonisation;//sigma-_bar ionisation // SigmaPlus G4SigmaPlusInelasticProcess fSigmaPlusInelastic; //sigma+ inel process G4LESigmaPlusInelastic* fLESigmaPlusModel; //sigma+ LE inel model G4HESigmaPlusInelastic* fHESigmaPlusModel; //sigma+ HE inel model G4MultipleScattering fSigmaPlusMult; //sigma+ msc G4hIonisation fSigmaPlusIonisation; //sigma+ ionisation // AntiSigmaPlus G4AntiSigmaPlusInelasticProcess fAntiSigmaPlusInelastic; //sigma+_bar inel process G4LEAntiSigmaPlusInelastic* fLEAntiSigmaPlusModel; //sigma+_bar LE inel model G4HEAntiSigmaPlusInelastic* fHEAntiSigmaPlusModel; //sigma+_bar HE inel model G4MultipleScattering fAntiSigmaPlusMult; //sigma+_bar msc G4hIonisation fAntiSigmaPlusIonisation; //sigma+_bar ionisation // XiZero G4XiZeroInelasticProcess fXiZeroInelastic; //xi0 inel process G4LEXiZeroInelastic* fLEXiZeroModel; //xi0 LE inel model G4HEXiZeroInelastic* fHEXiZeroModel; //xi0 HE inel model // AntiXiZero G4AntiXiZeroInelasticProcess fAntiXiZeroInelastic;//xi0_bar inel process G4LEAntiXiZeroInelastic* fLEAntiXiZeroModel; //xi0_bar LE inel model G4HEAntiXiZeroInelastic* fHEAntiXiZeroModel; //xi0_bar HE inel model // XiMinus G4XiMinusInelasticProcess fXiMinusInelastic; //xi- inel process G4LEXiMinusInelastic* fLEXiMinusModel; //xi- LE inel model G4HEXiMinusInelastic* fHEXiMinusModel; //xi- HE inel model G4MultipleScattering fXiMinusMult; //xi- msc G4hIonisation fXiMinusIonisation; //xi- ionisation // AntiXiMinus G4AntiXiMinusInelasticProcess fAntiXiMinusInelastic; //xi-_bar inel process G4LEAntiXiMinusInelastic* fLEAntiXiMinusModel; //xi-_bar LE inel model G4HEAntiXiMinusInelastic* fHEAntiXiMinusModel; //xi-_bar HE inel model G4MultipleScattering fAntiXiMinusMult; //xi-_bar msc G4hIonisation fAntiXiMinusIonisation;//xi-_bar ionisation // OmegaMinus G4OmegaMinusInelasticProcess fOmegaMinusInelastic; //omega- inel process G4LEOmegaMinusInelastic* fLEOmegaMinusModel; //omega- LE inel model G4HEOmegaMinusInelastic* fHEOmegaMinusModel; //omega- HE inel model G4MultipleScattering fOmegaMinusMult; //omega- msc G4hIonisation fOmegaMinusIonisation; //omega- ionisation // AntiOmegaMinus G4AntiOmegaMinusInelasticProcess fAntiOmegaMinusInelastic; //omega-_bar inel process G4LEAntiOmegaMinusInelastic* fLEAntiOmegaMinusModel; //omega-_bar LE inel model G4HEAntiOmegaMinusInelastic* fHEAntiOmegaMinusModel; //omega-_bar HE inel model G4MultipleScattering fAntiOmegaMinusMult; //omega-_bar msc G4hIonisation fAntiOmegaMinusIonisation;//omega-_bar ionisation // Other ProcessVector fOtherProcesses; //other process private: // methods // EM processes void ConstructEMProcessForPionPlus(); void ConstructEMProcessForPionMinus(); void ConstructEMProcessForKaonPlus(); void ConstructEMProcessForKaonMinus(); void ConstructEMProcessForProton(); void ConstructEMProcessForAntiProton(); void ConstructEMProcessForSigmaMinus(); void ConstructEMProcessForAntiSigmaMinus(); void ConstructEMProcessForSigmaPlus(); void ConstructEMProcessForAntiSigmaPlus(); void ConstructEMProcessForXiMinus(); void ConstructEMProcessForAntiXiMinus(); void ConstructEMProcessForOmegaMinus(); void ConstructEMProcessForAntiOmegaMinus(); void ConstructEMProcessForOther(); // hadron processes void ConstructHadProcessForPionPlus(); void ConstructHadProcessForPionMinus(); void ConstructHadProcessForKaonPlus(); void ConstructHadProcessForKaonMinus(); void ConstructHadProcessForKaonZeroLong(); void ConstructHadProcessForKaonZeroShort(); void ConstructHadProcessForProton(); void ConstructHadProcessForAntiProton(); void ConstructHadProcessForNeutron(); void ConstructHadProcessForAntiNeutron(); void ConstructHadProcessForLambda(); void ConstructHadProcessForAntiLambda(); void ConstructHadProcessForSigmaMinus(); void ConstructHadProcessForAntiSigmaMinus(); void ConstructHadProcessForSigmaPlus(); void ConstructHadProcessForAntiSigmaPlus(); void ConstructHadProcessForXiMinus(); void ConstructHadProcessForAntiXiMinus(); void ConstructHadProcessForXiZero(); void ConstructHadProcessForAntiXiZero(); void ConstructHadProcessForOmegaMinus(); void ConstructHadProcessForAntiOmegaMinus(); void ConstructHadProcessForOther(); // data members G4bool fSetEM; //if true - EM processes are constructed G4bool fSetHadron;//if true - hadron processes are constructed }; #endif //TG4_PHYSICS_CONSTRUCTOR_HADRON_H