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 {
41  public:
44 
45  void ConstructParticle() override;
46  void ConstructProcess() override;
47 
48  private:
49  void CreateModels();
50  G4bool QuasiElastic;
51 
52  // Simplify handling of TLS data, encapsulate everyhing in a structure
53  struct ThreadPrivate {
54  G4NeutronBuilder * theNeutrons;
55  G4BertiniNeutronBuilder * theBertiniNeutron;
56  G4FTFPNeutronBuilder * theFTFPNeutron;
57 
58  G4PiKBuilder * thePiK;
59  G4BertiniPiKBuilder * theBertiniPiK;
60  G4FTFPPiKBuilder * theFTFPPiK;
61 
62  G4ProtonBuilder * thePro;
63  G4BertiniProtonBuilder * theBertiniPro;
64  G4FTFPProtonBuilder * theFTFPPro;
65 
66  G4HyperonFTFPBuilder * theHyperon;
67 
68  G4AntiBarionBuilder * theAntiBaryon;
69  G4FTFPAntiBarionBuilder * theFTFPAntiBaryon;
70 
71  G4ComponentGGHadronNucleusXsc * xsKaon;
72  G4VCrossSectionDataSet * xsNeutronInelasticXS;
73  G4VCrossSectionDataSet * xsNeutronCaptureXS;
74  };
75  static G4ThreadLocal ThreadPrivate* tpdata;
76 };
77 
78 #endif
79 
static G4ThreadLocal ThreadPrivate * tpdata