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
static G4ThreadLocal ThreadPrivate * tpdata