CMS 3D CMS Logo

CMSHadronPhysicsFTFP_BERT.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------
2 // Author: Vladimir Ivanchenko
3 // Date: March 2018
4 //
5 // Hadron physics for the new CMS physics list FTFP_BERT_EMM_TRK.
6 // The hadron physics of FTFP_BERT has the transition between Bertini
7 // (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the
8 // energy region [4, 5] GeV (instead of the default for Geant4 10.4).
9 //---------------------------------------------------------------------------
10 //
11 #ifndef SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT_h
12 #define SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT_h
13 
14 #include "globals.hh"
15 #include "G4ios.hh"
16 
17 #include "G4VPhysicsConstructor.hh"
18 
19 #include "G4Cache.hh"
20 
21 class G4ComponentGGHadronNucleusXsc;
22 class G4VCrossSectionDataSet;
23 
24 class CMSHadronPhysicsFTFP_BERT : public G4VPhysicsConstructor {
25 public:
26  explicit CMSHadronPhysicsFTFP_BERT(G4int verbose = 1);
27  ~CMSHadronPhysicsFTFP_BERT() override;
28 
29  void ConstructParticle() override;
30  //This will call in order:
31  // DumpBanner (for master)
32  // CreateModels
33  // ExtraConfiguation
34  void ConstructProcess() override;
35 
36  void TerminateWorker() override;
37 
38 protected:
39  G4bool QuasiElastic;
40  //This calls the specific ones for the different particles in order
41  virtual void CreateModels();
42  virtual void Neutron();
43  virtual void Proton();
44  virtual void Pion();
45  virtual void Kaon();
46  virtual void Others();
47  virtual void DumpBanner();
48  //This contains extra configurataion specific to this PL
49  virtual void ExtraConfiguration();
50 
51  G4double minFTFP_pion;
52  G4double maxBERT_pion;
53  G4double minFTFP_kaon;
54  G4double maxBERT_kaon;
55  G4double minFTFP_proton;
56  G4double maxBERT_proton;
57  G4double minFTFP_neutron;
58  G4double maxBERT_neutron;
59 
60  //Thread-private data write them here to delete them
61  G4VectorCache<G4VCrossSectionDataSet*> xs_ds;
62  G4Cache<G4ComponentGGHadronNucleusXsc*> xs_k;
63 };
64 
65 #endif
G4Cache< G4ComponentGGHadronNucleusXsc * > xs_k
G4VectorCache< G4VCrossSectionDataSet * > xs_ds