Ignore:
Timestamp:
May 27, 2010, 10:22:31 AM (14 years ago)
Author:
garnier
Message:

cvs update phys-lists-V09-03-03

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc

    r1228 r1273  
    2424// ********************************************************************
    2525//
    26 // $Id: G4HadronInelasticQBBC.cc,v 1.24 2009/11/25 18:55:56 vnivanch Exp $
    27 // GEANT4 tag $Name: geant4-09-03 $
     26// $Id: G4HadronInelasticQBBC.cc,v 1.26 2010/05/19 18:14:16 vnivanch Exp $
     27// GEANT4 tag $Name: phys-lists-V09-03-03 $
    2828//
    2929//---------------------------------------------------------------------------
     
    5252#include "G4NeutronCaptureXS.hh"
    5353
     54#include "G4QInelastic.hh"
     55#include "G4HadronicProcessStore.hh"
     56
    5457#include "G4ProtonInelasticCrossSection.hh"
    5558#include "G4NeutronInelasticCrossSection.hh"
     
    6568#include "G4NeutronRadCapture.hh"
    6669
     70#include "G4PreCompoundModel.hh"
     71#include "G4ExcitationHandler.hh"
     72#include "G4Evaporation.hh"
     73
    6774enum QBBCType
    6875{
     
    7784{
    7885  htype = name;
     86  theHandler = 0;
     87  theEvaporation = 0;
    7988}
    8089
    8190G4HadronInelasticQBBC::~G4HadronInelasticQBBC()
    82 {}
     91{
     92  delete theHandler;
     93  delete theEvaporation;
     94}
    8395
    8496void G4HadronInelasticQBBC::ConstructProcess()
     
    97109  }
    98110
     111  // PreCompound and Evaporation models
     112  theEvaporation = new G4Evaporation();
     113  theEvaporation->SetCombinedChannel();
     114  theHandler = new G4ExcitationHandler();
     115  theHandler->SetEvaporation(theEvaporation);
     116  theHandler->SetMinEForMultiFrag(3.0*GeV);
     117  theHandler->SetMaxAandZForFermiBreakUp(17,9);
     118  G4PreCompoundModel* thePreCompound = new G4PreCompoundModel(theHandler);
     119
    99120  // configure models
    100121  G4HadronicInteraction* theQGSP =
    101     BuildModel(new G4QGSBuilder("QGSP",true,false),9.5*GeV,100.*TeV);
     122    BuildModel(new G4QGSBuilder("QGSP",thePreCompound,true,false),12.5*GeV,100.*TeV);
    102123  G4HadronicInteraction* theFTFP =
    103     BuildModel(new G4FTFBuilder("FTFP"),4.5*GeV,25.*GeV);
     124    BuildModel(new G4FTFBuilder("FTFP",thePreCompound),4.0*GeV,25.*GeV);
    104125  G4HadronicInteraction* theFTFP1 =
    105     BuildModel(new G4FTFBuilder("FTFP"),4.5*GeV,100.*TeV);
     126    BuildModel(new G4FTFBuilder("FTFP",thePreCompound),4.0*GeV,100.*TeV);
     127
    106128  G4HadronicInteraction* theBERT =
    107     NewModel(new G4CascadeInterface(),0.0,6.5*GeV);
    108   //G4HadronicInteraction* theBERT1 =
    109   //  NewModel(new G4CascadeInterface(),2.5*GeV,6.5*GeV);
    110   //G4HadronicInteraction* theBIC =
    111   //  NewModel(new G4BinaryCascade(),0.0,3.5*GeV);
    112   G4HadronicInteraction* theCHIPS =
    113     NewModel(new G4QStringChipsParticleLevelInterface(),0.0,7.5*GeV);
     129    NewModel(new G4CascadeInterface(),1.0*GeV,5.0*GeV);
     130  G4HadronicInteraction* theBERT1 =
     131    NewModel(new G4CascadeInterface(),0.0*GeV,5.0*GeV);
     132
     133  G4BinaryCascade* bic = new G4BinaryCascade();
     134  bic->SetDeExcitation(thePreCompound);
     135  G4HadronicInteraction* theBIC = NewModel(bic,0.0,1.5*GeV);
     136
     137  //  G4HadronicInteraction* theCHIPS =
     138  //  NewModel(new G4QStringChipsParticleLevelInterface(),0.0,7.5*GeV);
     139
     140  G4QInelastic* theCHIPS = new G4QInelastic();
     141  G4HadronicProcessStore* store = G4HadronicProcessStore::Instance();
     142  store->RegisterExtraProcess(theCHIPS);
    114143
    115144  // loop over particles
     
    118147    G4ParticleDefinition* particle = theParticleIterator->value();
    119148    G4String pname = particle->GetParticleName();
     149    G4ProcessManager* pmanager = particle->GetProcessManager();
    120150    if(verbose > 1) { G4cout << "### HadronInelasticQBBC:  " << pname << G4endl; }
    121     if(pname == "anti_lambda"  ||
    122        pname == "anti_neutron" ||
    123        pname == "anti_omega-"  ||
    124        pname == "anti_proton"  ||
    125        pname == "anti_sigma-"  ||
    126        pname == "anti_sigma+"  ||
    127        pname == "anti_xi-"  ||
    128        pname == "anti_xi0"  ||
    129        pname == "kaon-"     ||
    130        pname == "kaon+"     ||
    131        pname == "kaon0S"    ||
    132        pname == "kaon0L"    ||
    133        pname == "lambda"    ||
    134        pname == "neutron"   ||
    135        pname == "omega-"    ||
    136        pname == "pi-"       ||
    137        pname == "pi+"       ||
    138        pname == "proton"    ||
    139        pname == "sigma-"    ||
    140        pname == "sigma+"    ||
    141        pname == "sigma0"    ||
    142        pname == "xi-"       ||
    143        pname == "xi0") {
    144      
    145       // common for all particles
    146       G4HadronicProcess* hp = FindInelasticProcess(particle);
    147       if(!hp) { continue; }
    148       G4ProcessManager* pmanager = particle->GetProcessManager();
    149       pmanager->AddDiscreteProcess(hp);
    150 
    151       // model and X-section configuration
    152       if(pname == "proton") {
    153         if(fType == fQBBC) {
    154           hp->AddDataSet(new G4ProtonInelasticCrossSection());
    155         } else {
    156           hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
    157         }
    158         hp->RegisterMe(theQGSP);
    159         hp->RegisterMe(theFTFP);
    160         hp->RegisterMe(theBERT);
    161         //      hp->RegisterMe(theBERT1);
    162         //      hp->RegisterMe(theBIC);
    163 
    164       } else if(pname == "neutron") {
    165         if(fType == fQBBC) {
    166           hp->AddDataSet(new G4NeutronInelasticCrossSection());
    167         } else if(fType == fQBBC_XGG) {
    168           hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
    169         } else {
    170           hp->AddDataSet(new G4NeutronInelasticXS());
    171         }
    172 
    173         hp->RegisterMe(theQGSP);
    174         hp->RegisterMe(theFTFP);
    175         //      hp->RegisterMe(theBERT1);
     151
     152    //
     153    // model and X-section configuration per particle type
     154    //
     155    if(pname == "proton") {
     156      G4HadronicProcess* hp = FindInelasticProcess(particle);
     157      if(fType == fQBBC) {
     158        hp->AddDataSet(new G4ProtonInelasticCrossSection());
     159      } else {
     160        hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
     161      }
     162      hp->RegisterMe(theQGSP);
     163      hp->RegisterMe(theFTFP);
     164      hp->RegisterMe(theBERT);
     165      hp->RegisterMe(theBIC);
     166
     167    } else if(pname == "neutron") {
     168      G4HadronicProcess* hp = FindInelasticProcess(particle);
     169      if(fType == fQBBC) {
     170        hp->AddDataSet(new G4NeutronInelasticCrossSection());
     171      } else if(fType == fQBBC_XGG) {
     172        hp->AddDataSet(new G4BGGNucleonInelasticXS(particle));
     173      } else {
     174        hp->AddDataSet(new G4NeutronInelasticXS());
     175      }
     176
     177      hp->RegisterMe(theQGSP);
     178      hp->RegisterMe(theFTFP);
    176179       
    177         G4HadronicProcess* capture = FindCaptureProcess();
    178         pmanager->AddDiscreteProcess(capture);
    179 
    180         hp->RegisterMe(theBERT);
    181         //hp->RegisterMe(theBIC);
    182         capture->RegisterMe(new G4NeutronRadCapture());
    183         //capture->RegisterMe(new G4LCapture());
    184         if(fType == fQBBC_XGGSN) {
    185           capture->AddDataSet(new G4NeutronCaptureXS());
    186         }
    187 
    188       } else if(pname == "pi-" || pname == "pi+") {
    189         if(fType == fQBBC) {
    190           hp->AddDataSet(new G4PiNuclearCrossSection());
    191         } else {
    192           hp->AddDataSet(new G4BGGPionInelasticXS(particle));
    193         }
    194         hp->RegisterMe(theQGSP);
    195         hp->RegisterMe(theFTFP);
    196         hp->RegisterMe(theBERT);
    197 
    198       } else if(pname == "kaon-"     ||
    199                 pname == "kaon+"     ||
    200                 pname == "kaon0S"    ||
    201                 pname == "kaon0L"    ||
    202                 pname == "lambda"    ||
    203                 pname == "sigma-"    ||
    204                 pname == "sigma+"    ||
    205                 pname == "sigma0"    ||
    206                 pname == "xi-"       ||
    207                 pname == "xi0") {
    208         hp->RegisterMe(theFTFP1);
    209         hp->RegisterMe(theBERT);
    210 
     180      G4HadronicProcess* capture = FindCaptureProcess();
     181
     182      hp->RegisterMe(theBERT);
     183      hp->RegisterMe(theBIC);
     184      capture->RegisterMe(new G4NeutronRadCapture());
     185      //capture->RegisterMe(new G4LCapture());
     186      if(fType == fQBBC_XGGSN) {
     187        capture->AddDataSet(new G4NeutronCaptureXS());
     188      }
     189
     190    } else if(pname == "pi-" || pname == "pi+") {
     191      G4HadronicProcess* hp = FindInelasticProcess(particle);
     192      if(fType == fQBBC) {
     193        hp->AddDataSet(new G4PiNuclearCrossSection());
    211194      } else {
    212         hp->RegisterMe(theFTFP1);
    213         hp->RegisterMe(theCHIPS);
    214 
    215       }
    216 
    217       if(verbose > 1) {
    218         G4cout << "### HadronInelasticQBBC: " << hp->GetProcessName()
    219                << " added for " << pname << G4endl;
    220       }
    221     }
     195        hp->AddDataSet(new G4BGGPionInelasticXS(particle));
     196      }
     197      hp->RegisterMe(theQGSP);
     198      hp->RegisterMe(theFTFP);
     199      hp->RegisterMe(theBERT1);
     200
     201    } else if(pname == "kaon-"     ||
     202              pname == "kaon+"     ||
     203              pname == "kaon0S"    ||
     204              pname == "kaon0L"    ||
     205              pname == "lambda"    ||
     206              pname == "sigma-"    ||
     207              pname == "sigma+"    ||
     208              pname == "sigma0"    ||
     209              pname == "xi-"       ||
     210              pname == "xi0") {
     211      G4HadronicProcess* hp = FindInelasticProcess(particle);
     212      hp->RegisterMe(theFTFP1);
     213      hp->RegisterMe(theBERT1);
     214
     215    } else if(pname == "anti_lambda"  ||
     216              pname == "anti_neutron" ||
     217              pname == "anti_omega-"  ||
     218              pname == "anti_proton"  ||
     219              pname == "anti_sigma-"  ||
     220              pname == "anti_sigma+"  ||
     221              pname == "anti_xi-"  ||
     222              pname == "anti_xi0"  ||
     223              pname == "omega-") {
     224      //G4HadronicProcess* hp = FindInelasticProcess(particle);
     225      //hp->RegisterMe(theFTFP1);
     226      //hp->RegisterMe(theCHIPS);
     227      pmanager->AddDiscreteProcess(theCHIPS);
     228      store->RegisterParticleForExtraProcess(theCHIPS,particle);
     229    }
    222230  }
    223231}
Note: See TracChangeset for help on using the changeset viewer.