Geant4  10.00.p01
G4HadronicAbsorptionFritiof.cc
Go to the documentation of this file.
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 //---------------------------------------------------------------------------
27 //
28 // ClassName: G4HadronicAbsorptionFritiof
29 //
30 // Author: Alberto Ribon
31 //
32 // Date: 27 July 2012
33 //
34 // Modified:
35 //
36 // Class Description:
37 //
38 // Intermediate class for hadronic absorption at rest using FTF/Preco.
39 // Physics lists should reference the concrete subclasses for:
40 // anti_proton, anti_sigma+, and all anti-nuclei.
41 //
42 //---------------------------------------------------------------------------
43 
44 #include <iostream>
45 
46 #include "G4SystemOfUnits.hh"
48 #include "G4PreCompoundModel.hh"
50 #include "G4FTFModel.hh"
52 #include "G4ExcitedStringDecay.hh"
53 #include "G4TheoFSGenerator.hh"
54 #include "G4ParticleDefinition.hh"
55 #include "G4ParticleTypes.hh"
57 
58 // Constructor
61  : G4HadronStoppingProcess( "hFritiofCaptureAtRest" ),
62  pdefApplicable( pdef ) {
63 
64  G4TheoFSGenerator * theModel = new G4TheoFSGenerator( "FTFP" );
65  G4FTFModel * theStringModel = new G4FTFModel;
68  theStringModel->SetFragmentationModel( theStringDecay );
69 
70  // Not a cascade - goes straight to Preco
73  G4VPreCompoundModel * thePreEquilib = static_cast<G4VPreCompoundModel*>(p);
74  if(! thePreEquilib) { thePreEquilib = new G4PreCompoundModel; }
75 
76  G4GeneratorPrecompoundInterface * theCascade =
77  new G4GeneratorPrecompoundInterface( thePreEquilib );
78 
79  theModel->SetHighEnergyGenerator( theStringModel );
80  theModel->SetTransport( theCascade );
81 
82  G4double theMin = 0.0*GeV;
83  G4double theMax = 100.0*TeV;
84  theModel->SetMinEnergy( theMin );
85  theModel->SetMaxEnergy( theMax );
86 
87  RegisterMe( theModel );
88 }
89 
90 
92  delete theLund;
93  delete theStringDecay;
94 }
95 
96 
97 // Applies to constructor-specified particle, or to all known cases
99 IsApplicable( const G4ParticleDefinition& particle ) {
100  return ( ( 0 == pdefApplicable &&
101  ( &particle == G4AntiProton::Definition() ||
102  &particle == G4AntiSigmaPlus::Definition() ||
103  particle.GetBaryonNumber() < -1 ) ) // Anti-nuclei
104  || ( &particle == pdefApplicable ) );
105 }
106 
107 
108 // Documentation of purpose
110 ProcessDescription( std::ostream& os ) const {
111  os << "Stopping and absorption of anti_protons, anti_sigma+, and \n"
112  << "all anti-nuclei using Fritiof (FTF) string model.\n"
113  << "Geant4 PreCompound model is used for nuclear de-excitation."
114  << std::endl;
115 }
G4bool IsApplicable(const G4ParticleDefinition &)
void SetFragmentationModel(G4VStringFragmentation *aModel)
G4HadronicAbsorptionFritiof(G4ParticleDefinition *pdef=0)
void SetHighEnergyGenerator(G4VHighEnergyGenerator *const value)
void RegisterMe(G4HadronicInteraction *a)
void ProcessDescription(std::ostream &outFile) const
void SetMinEnergy(G4double anEnergy)
bool G4bool
Definition: G4Types.hh:79
static G4AntiProton * Definition()
Definition: G4AntiProton.cc:51
G4LundStringFragmentation * theLund
static const double GeV
Definition: G4SIunits.hh:196
static G4AntiSigmaPlus * Definition()
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
void SetMaxEnergy(const G4double anEnergy)
void SetTransport(G4VIntraNuclearTransportModel *const value)
static const double TeV
Definition: G4SIunits.hh:197
double G4double
Definition: G4Types.hh:76