CMS 3D CMS Logo

CMSHadronPhysicsFTFP_BERT_ATL.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 // Author: Alberto Ribon
3 // Date: April 2016
4 //
5 // Hadron physics for the new physics list FTFP_BERT_ATL.
6 // This is a modified version of the FTFP_BERT hadron physics for ATLAS.
7 // The hadron physics of FTFP_BERT_ATL has the transition between Bertini
8 // (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the
9 // energy region [9, 12] GeV (instead of [4, 5] GeV as in FTFP_BERT).
10 //---------------------------------------------------------------------------
11 //
12 #ifndef SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT_ATL_h
13 #define SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT_ATL_h
14 
15 #include "globals.hh"
16 #include "G4ios.hh"
17 
18 #include "G4VPhysicsConstructor.hh"
19 
20 #include "G4PiKBuilder.hh"
21 #include "G4BertiniPiKBuilder.hh"
22 #include "G4FTFPPiKBuilder.hh"
23 
24 #include "G4ProtonBuilder.hh"
25 #include "G4BertiniProtonBuilder.hh"
26 #include "G4FTFPNeutronBuilder.hh"
27 #include "G4FTFPProtonBuilder.hh"
28 
29 #include "G4NeutronBuilder.hh"
30 #include "G4BertiniNeutronBuilder.hh"
31 #include "G4FTFPNeutronBuilder.hh"
32 
33 #include "G4HyperonFTFPBuilder.hh"
34 #include "G4AntiBarionBuilder.hh"
35 #include "G4FTFPAntiBarionBuilder.hh"
36 
37 class G4ComponentGGHadronNucleusXsc;
38 
39 class CMSHadronPhysicsFTFP_BERT_ATL : public G4VPhysicsConstructor {
40 public:
43 
44  void ConstructParticle() override;
45  void ConstructProcess() override;
46 
47 private:
48  void CreateModels();
49  G4bool QuasiElastic;
50 
51  // Simplify handling of TLS data, encapsulate everyhing in a structure
52  struct ThreadPrivate {
53  G4NeutronBuilder* theNeutrons;
54  G4BertiniNeutronBuilder* theBertiniNeutron;
55  G4FTFPNeutronBuilder* theFTFPNeutron;
56 
57  G4PiKBuilder* thePiK;
58  G4BertiniPiKBuilder* theBertiniPiK;
59  G4FTFPPiKBuilder* theFTFPPiK;
60 
61  G4ProtonBuilder* thePro;
62  G4BertiniProtonBuilder* theBertiniPro;
63  G4FTFPProtonBuilder* theFTFPPro;
64 
65  G4HyperonFTFPBuilder* theHyperon;
66 
67  G4AntiBarionBuilder* theAntiBaryon;
68  G4FTFPAntiBarionBuilder* theFTFPAntiBaryon;
69 
70  G4ComponentGGHadronNucleusXsc* xsKaon;
71  G4VCrossSectionDataSet* xsNeutronInelasticXS;
72  G4VCrossSectionDataSet* xsNeutronCaptureXS;
73  };
74  static G4ThreadLocal ThreadPrivate* tpdata;
75 };
76 
77 #endif
CMSHadronPhysicsFTFP_BERT_ATL::QuasiElastic
G4bool QuasiElastic
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:49
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theFTFPPiK
G4FTFPPiKBuilder * theFTFPPiK
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:59
CMSHadronPhysicsFTFP_BERT_ATL::ConstructProcess
void ConstructProcess() override
Definition: CMSHadronPhysicsFTFP_BERT_ATL.cc:113
CMSHadronPhysicsFTFP_BERT_ATL::tpdata
static G4ThreadLocal ThreadPrivate * tpdata
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:74
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:52
CMSHadronPhysicsFTFP_BERT_ATL::CMSHadronPhysicsFTFP_BERT_ATL
CMSHadronPhysicsFTFP_BERT_ATL(G4int verbose=1)
Definition: CMSHadronPhysicsFTFP_BERT_ATL.cc:39
CMSHadronPhysicsFTFP_BERT_ATL::ConstructParticle
void ConstructParticle() override
Definition: CMSHadronPhysicsFTFP_BERT_ATL.cc:101
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::xsKaon
G4ComponentGGHadronNucleusXsc * xsKaon
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:70
verbose
static constexpr int verbose
Definition: HLTExoticaSubAnalysis.cc:25
CMSHadronPhysicsFTFP_BERT_ATL::CreateModels
void CreateModels()
Definition: CMSHadronPhysicsFTFP_BERT_ATL.cc:42
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::xsNeutronInelasticXS
G4VCrossSectionDataSet * xsNeutronInelasticXS
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:71
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::xsNeutronCaptureXS
G4VCrossSectionDataSet * xsNeutronCaptureXS
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:72
CMSHadronPhysicsFTFP_BERT_ATL
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:39
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theBertiniPiK
G4BertiniPiKBuilder * theBertiniPiK
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:58
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::thePro
G4ProtonBuilder * thePro
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:61
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theAntiBaryon
G4AntiBarionBuilder * theAntiBaryon
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:67
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theHyperon
G4HyperonFTFPBuilder * theHyperon
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:65
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theFTFPPro
G4FTFPProtonBuilder * theFTFPPro
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:63
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theFTFPNeutron
G4FTFPNeutronBuilder * theFTFPNeutron
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:55
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theBertiniNeutron
G4BertiniNeutronBuilder * theBertiniNeutron
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:54
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::thePiK
G4PiKBuilder * thePiK
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:57
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theFTFPAntiBaryon
G4FTFPAntiBarionBuilder * theFTFPAntiBaryon
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:68
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theBertiniPro
G4BertiniProtonBuilder * theBertiniPro
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:62
CMSHadronPhysicsFTFP_BERT_ATL::~CMSHadronPhysicsFTFP_BERT_ATL
~CMSHadronPhysicsFTFP_BERT_ATL() override
Definition: CMSHadronPhysicsFTFP_BERT_ATL.cc:74
CMSHadronPhysicsFTFP_BERT_ATL::ThreadPrivate::theNeutrons
G4NeutronBuilder * theNeutrons
Definition: CMSHadronPhysicsFTFP_BERT_ATL.h:53