#include <G4QGSBuilder.hh>
Inheritance diagram for G4QGSBuilder:
Public Member Functions | |
G4QGSBuilder (const G4String &name="", G4PreCompoundModel *p=0, G4bool quasiElastic=true, G4bool projectileDiffraction=false) | |
virtual | ~G4QGSBuilder () |
Protected Member Functions | |
virtual G4HadronicInteraction * | BuildModel () |
Definition at line 52 of file G4QGSBuilder.hh.
G4QGSBuilder::G4QGSBuilder | ( | const G4String & | name = "" , |
|
G4PreCompoundModel * | p = 0 , |
|||
G4bool | quasiElastic = true , |
|||
G4bool | projectileDiffraction = false | |||
) |
Definition at line 53 of file G4QGSBuilder.cc.
00055 : G4VHadronModelBuilder(aName), 00056 theQGStringModel(0), theQGStringDecay(0), theQuasiElastic(0), 00057 theProjectileDiffraction(0),thePreCompound(p),theQGSM(0), 00058 quasielFlag(quasiel), diffFlag(diff) 00059 {}
G4QGSBuilder::~G4QGSBuilder | ( | ) | [virtual] |
Definition at line 61 of file G4QGSBuilder.cc.
00062 { 00063 delete theProjectileDiffraction; 00064 delete theQuasiElastic; 00065 delete theQGStringDecay; 00066 delete theQGStringModel; 00067 delete theQGSM; 00068 }
G4HadronicInteraction * G4QGSBuilder::BuildModel | ( | ) | [protected, virtual] |
Implements G4VHadronModelBuilder.
Definition at line 70 of file G4QGSBuilder.cc.
References G4VHadronModelBuilder::GetName(), G4VIntraNuclearTransportModel::SetDeExcitation(), G4VPartonStringModel::SetFragmentationModel(), G4TheoFSGenerator::SetHighEnergyGenerator(), G4TheoFSGenerator::SetProjectileDiffraction(), G4TheoFSGenerator::SetQuasiElasticChannel(), and G4TheoFSGenerator::SetTransport().
00071 { 00072 G4TheoFSGenerator* theQGSModel = new G4TheoFSGenerator(GetName()); 00073 theQGStringModel = new G4QGSModel< G4QGSParticipants >; 00074 theQGSM = new G4QGSMFragmentation(); 00075 theQGStringDecay = new G4ExcitedStringDecay(theQGSM); 00076 theQGStringModel->SetFragmentationModel(theQGStringDecay); 00077 theQGSModel->SetHighEnergyGenerator(theQGStringModel); 00078 00079 if(quasielFlag) { 00080 theQuasiElastic = new G4QuasiElasticChannel(); 00081 theQGSModel->SetQuasiElasticChannel(theQuasiElastic); 00082 } 00083 if ( diffFlag ) { 00084 theProjectileDiffraction = new G4ProjectileDiffractiveChannel(); 00085 theQGSModel->SetProjectileDiffraction(theProjectileDiffraction); 00086 } 00087 00088 if(!thePreCompound) { 00089 thePreCompound = new G4PreCompoundModel(new G4ExcitationHandler()); 00090 } 00091 00092 if(GetName() == "QGSC") { 00093 theQGSModel->SetTransport(new G4QStringChipsParticleLevelInterface()); 00094 00095 } else if(GetName() == "QGSB") { 00096 G4BinaryCascade* bic = new G4BinaryCascade(); 00097 bic->SetDeExcitation(thePreCompound); 00098 theQGSModel->SetTransport(bic); 00099 00100 } else { 00101 G4GeneratorPrecompoundInterface* pint = new G4GeneratorPrecompoundInterface(); 00102 pint->SetDeExcitation(thePreCompound); 00103 theQGSModel->SetTransport(pint); 00104 } 00105 00106 return theQGSModel; 00107 }