source: trunk/source/physics_lists/lists/src/HadronPhysicsQGSP_FTFP_BERT.cc @ 1206

Last change on this file since 1206 was 1206, checked in by garnier, 15 years ago

CVS update

File size: 6.2 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: HadronPhysicsQGSP_FTFP_BERT.cc,v 1.1 2009/04/23 19:04:18 japost Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-03 $
28//
29//---------------------------------------------------------------------------
30//
31// ClassName:   HadronPhysicsQGSP_FTFP_BERT
32//
33// Authors: 2 Apr 2009 J.Apostolakis/V.Ivantchenko: created starting from QGSP_BERT
34//
35// Modified:
36//----------------------------------------------------------------------------
37//
38#include "HadronPhysicsQGSP_FTFP_BERT.hh"
39
40#include "globals.hh"
41#include "G4ios.hh"
42#include <iomanip>  
43#include "G4ParticleDefinition.hh"
44#include "G4ParticleTable.hh"
45
46#include "G4MesonConstructor.hh"
47#include "G4BaryonConstructor.hh"
48#include "G4ShortLivedConstructor.hh"
49
50HadronPhysicsQGSP_FTFP_BERT::HadronPhysicsQGSP_FTFP_BERT(const G4String& name, G4bool quasiElastic)
51                    :  G4VPhysicsConstructor(name) , QuasiElastic(quasiElastic)
52{
53   ProjectileDiffraction=false;
54}
55
56void HadronPhysicsQGSP_FTFP_BERT::CreateModels()
57{
58  // First transition, between BERT and FTF/P
59  G4double minFTFP= 6.0 * GeV;     // Was 9.5 for LEP   (in FTFP_BERT 6.0 * GeV);
60  G4double maxBERT= 8.0 * GeV;     // Was 9.9 for LEP   (in FTFP_BERT 8.0 * GeV);
61  // Second transition, between FTF/P and QGS/P
62  G4double minQGSP= 12.0 * GeV;
63  G4double maxFTFP= 25.0 * GeV; 
64
65  G4bool   quasiElasFTF= false;   // Use built-in quasi-elastic (not add-on)
66  G4bool   quasiElasQGS= true;    // For QGS, it must use it.
67
68  G4cout << " New QGSP_FTFP_BERT physics list, replaces LEP with FTF/P for p/n/pi (/K?)";
69  G4cout << "  Thresholds: " << G4endl;
70  G4cout << "    1) between BERT  and FTF/P over the interval " 
71         << minFTFP/GeV << " to " << maxBERT/GeV << " GeV. " << G4endl;
72  G4cout << "    2) between FTF/P and QGS/P over the interval " 
73         << minQGSP/GeV << " to " << maxFTFP/GeV << " GeV. " << G4endl;
74  G4cout << "  -- quasiElastic was asked to be " << QuasiElastic << G4endl
75         << "     Changed to " << quasiElasQGS << " for QGS "
76         << " and to " << quasiElasFTF << " (must be false) for FTF" << G4endl;
77
78  theNeutrons=new G4NeutronBuilder;
79  theNeutrons->RegisterMe(theQGSPNeutron=new G4QGSPNeutronBuilder(quasiElasQGS, ProjectileDiffraction));
80  theQGSPNeutron->SetMinEnergy(minQGSP);   
81  theNeutrons->RegisterMe(theFTFPNeutron=new G4FTFPNeutronBuilder(quasiElasFTF));
82  theFTFPNeutron->SetMinEnergy(minFTFP);   // was (9.5*GeV);
83  theFTFPNeutron->SetMaxEnergy(maxFTFP);   // was (25*GeV); 
84  // Exclude LEP only from Inelastic
85  //  -- Register it for other processes: Capture, Elastic
86  theNeutrons->RegisterMe(theLEPNeutron=new G4LEPNeutronBuilder);
87  theLEPNeutron->SetMinInelasticEnergy(0.0*GeV);
88  theLEPNeutron->SetMaxInelasticEnergy(0.0*GeV);
89
90  theNeutrons->RegisterMe(theBertiniNeutron=new G4BertiniNeutronBuilder);
91  theBertiniNeutron->SetMinEnergy(0.0*GeV);
92  theBertiniNeutron->SetMaxEnergy(maxBERT);         // was (9.9*GeV);
93
94  thePro=new G4ProtonBuilder;
95  thePro->RegisterMe(theQGSPPro=new G4QGSPProtonBuilder(quasiElasQGS, ProjectileDiffraction));
96  theQGSPPro->SetMinEnergy(minQGSP);   
97  thePro->RegisterMe(theFTFPPro=new G4FTFPProtonBuilder(quasiElasFTF));
98  theFTFPPro->SetMinEnergy(minFTFP);   // was (9.5*GeV);
99  theFTFPPro->SetMaxEnergy(maxFTFP);   // was (25*GeV);
100
101  thePro->RegisterMe(theBertiniPro=new G4BertiniProtonBuilder);
102  theBertiniPro->SetMaxEnergy(maxBERT);  //  was (9.9*GeV);
103 
104  thePiK=new G4PiKBuilder;
105  thePiK->RegisterMe(theQGSPPiK=new G4QGSPPiKBuilder(quasiElasQGS));
106  theQGSPPiK->SetMinEnergy(minQGSP);   
107  thePiK->RegisterMe(theFTFPPiK=new G4FTFPPiKBuilder(quasiElasFTF));
108  theFTFPPiK->SetMaxEnergy(maxFTFP);   // was (25*GeV);
109  theFTFPPiK->SetMinEnergy(minFTFP);   // was (9.5*GeV);
110
111  thePiK->RegisterMe(theBertiniPiK=new G4BertiniPiKBuilder);
112  theBertiniPiK->SetMaxEnergy(maxBERT);  //  was (9.9*GeV);
113 
114  theMiscLHEP=new G4MiscLHEPBuilder;
115}
116
117HadronPhysicsQGSP_FTFP_BERT::~HadronPhysicsQGSP_FTFP_BERT()
118{
119   delete theMiscLHEP;
120   delete theQGSPNeutron;
121   delete theFTFPNeutron;
122   delete theBertiniNeutron;
123   delete theQGSPPro;
124   delete theFTFPPro;
125   delete thePro;
126   delete theBertiniPro;
127   delete theQGSPPiK;
128   delete theFTFPPiK;
129   delete theBertiniPiK;
130   delete thePiK;
131}
132
133void HadronPhysicsQGSP_FTFP_BERT::ConstructParticle()
134{
135  G4MesonConstructor pMesonConstructor;
136  pMesonConstructor.ConstructParticle();
137
138  G4BaryonConstructor pBaryonConstructor;
139  pBaryonConstructor.ConstructParticle();
140
141  G4ShortLivedConstructor pShortLivedConstructor;
142  pShortLivedConstructor.ConstructParticle(); 
143}
144
145#include "G4ProcessManager.hh"
146void HadronPhysicsQGSP_FTFP_BERT::ConstructProcess()
147{
148  CreateModels();
149  theNeutrons->Build();
150  thePro->Build();
151  thePiK->Build();
152  theMiscLHEP->Build();
153}
154
Note: See TracBrowser for help on using the repository browser.