Message: HP_neutron_capture Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question HP_neutron_capture 

Keywords: Capture Process
Forum: Hadronic Processes
Date: 24 May, 2006
From: Enrico <billi@bo.infn.it>

I want to analize neutron capture process with a target of Au using this class:

nTOFPhysListHadron::nTOFPhysListHadron(const G4String& name) : G4VPhysicsConstructor(name) { }

nTOFPhysListHadron::~nTOFPhysListHadron() { }

void nTOFPhysListHadron::ConstructProcess()
{
  G4ProcessManager * pManager = 0;

  // all models for treatment of thermal nucleus
  G4Evaporation * theEvaporation = new G4Evaporation;
  G4PhotonEvaporation * thePhotonEvaporation = new G4PhotonEvaporation;
  G4FermiBreakUp * theFermiBreakUp = new G4FermiBreakUp;
  G4StatMF * theMF = new G4StatMF;
  // Evaporation logic
  G4ExcitationHandler * theHandler = new G4ExcitationHandler;
  theHandler->SetPhotonEvaporation(thePhotonEvaporation);
  theHandler->SetEvaporation(theEvaporation);

  theHandler->SetFermiModel(theFermiBreakUp);
  theHandler->SetMultiFragmentation(theMF);
  theHandler->SetMaxAandZForFermiBreakUp(12, 6);
  theHandler->SetMinEForMultiFrag(5*MeV);
  // Pre equilibrium stage
  G4PreCompoundModel * thePreEquilib = new G4PreCompoundModel(theHandler);

  // a no-cascade generator-precompound interaface
  G4GeneratorPrecompoundInterface * theCascade = new G4GeneratorPrecompoundInterface;
  theCascade->SetDeExcitation(thePreEquilib);

  // Elastic Process
  theElasticProcess.RegisterMe(new G4LElastic());

  // ---------------------------------------------------------------------------
  // Hadron elastic process
  // for all particles except neutrons

  theParticleIterator->reset();
  while((*theParticleIterator)())
  {
    G4ParticleDefinition* particle = theParticleIterator->value();
    G4String particleName = particle->GetParticleName();
    if (particleName != "neutron")
    {
      G4ProcessManager* pManager = particle->GetProcessManager();
      if (particle->GetPDGMass() > 110.*MeV && theElasticProcess.IsApplicable(*particle) && !particle->IsShortLived())
      {
	pManager->AddDiscreteProcess(&theElasticProcess);
	G4cout << "### Elastic model are registered for " << particle->GetParticleName() << G4endl;
      }
    }
  }

  ////////////
  // PROTON //
  ////////////

  //inelastic processes
  pManager = G4Proton::Proton()->GetProcessManager();
  // now the cross-sections.
  G4ProtonInelasticCrossSection * theProtonData = new G4ProtonInelasticCrossSection;
  theProtonInelastic.AddDataSet(theProtonData);
  pManager->AddDiscreteProcess(&theProtonInelastic);

  /////////////
  // NEUTRON //
  /////////////

  // elastic and inelastic processes
  pManager = G4Neutron::Neutron()->GetProcessManager();
  // elastic scattering
  theNeutronElasticProcess     = new G4HadronElasticProcess();
  G4LElastic* theElasticModel1 = new G4LElastic;
  G4NeutronHPElastic * theElasticNeutron = new G4NeutronHPElastic;
  theNeutronElasticProcess->RegisterMe(theElasticModel1);
  theElasticModel1->SetMinEnergy(19.*MeV);
  theNeutronElasticProcess->RegisterMe(theElasticNeutron);
  theElasticNeutron->SetMaxEnergy(20.*MeV);
  G4NeutronHPElasticData * theNeutronData = new G4NeutronHPElasticData;
  theNeutronElasticProcess->AddDataSet(theNeutronData);
  pManager->AddDiscreteProcess(theNeutronElasticProcess);
  // inelastic scattering
  G4NeutronHPInelastic * theHPNeutronInelasticModel = new G4NeutronHPInelastic;
  theHPNeutronInelasticModel->SetMaxEnergy(20.*MeV);
  theNeutronInelastic.RegisterMe(theHPNeutronInelasticModel);
  G4NeutronHPInelasticData * theNeutronData1 = new G4NeutronHPInelasticData;
  theNeutronInelastic.AddDataSet(theNeutronData1);
  // now the cross-sections.
//  G4NeutronInelasticCrossSection * theNeutronData2 = new G4NeutronInelasticCrossSection;
//  theNeutronInelastic.AddDataSet(theNeutronData2);
//  pManager->AddDiscreteProcess(&theNeutronInelastic);
  // fission processes
  theFissionProcess = new G4HadronFissionProcess;
  G4LFission* theFissionModel = new G4LFission;
  theFissionProcess->RegisterMe(theFissionModel);
  pManager->AddDiscreteProcess(theFissionProcess);
  //capture processes
  theCaptureProcess = new G4HadronCaptureProcess;
//  G4LCapture* theCaptureModel = new G4LCapture;
//  theCaptureProcess->RegisterMe(theCaptureModel);
//  theCaptureModel->SetMinEnergy(19.*MeV);
  G4NeutronHPCapture * theHPNeutronCaptureModel = new G4NeutronHPCapture;
  theCaptureProcess->RegisterMe(theHPNeutronCaptureModel);
  G4NeutronHPCaptureData * theNeutronData3 = new G4NeutronHPCaptureData;
  theCaptureProcess->AddDataSet(theNeutronData3);
  pManager->AddDiscreteProcess(theCaptureProcess);

  // now light ions reactions
  G4BinaryLightIonReaction * theIonBC= new G4BinaryLightIonReaction;
  theIonBC->SetMinEnergy(1*MeV);
  theIonBC->SetMaxEnergy(20*GeV);
  G4TripathiCrossSection * TripathiCrossSection= new G4TripathiCrossSection;
  G4IonsShenCrossSection * aShen = new G4IonsShenCrossSection;

  // deuteron
  pManager = G4Deuteron::Deuteron()->GetProcessManager();
  theDeuteronInelasticProcess = new G4DeuteronInelasticProcess("inelastic");
  G4LEDeuteronInelastic* theDeuteronInelasticModel = new G4LEDeuteronInelastic;
  theDeuteronInelasticModel->SetMaxEnergy(100*MeV);
  theDeuteronInelasticProcess->AddDataSet(TripathiCrossSection);
  theDeuteronInelasticProcess->AddDataSet(aShen);
  theDeuteronInelasticProcess->RegisterMe(theDeuteronInelasticModel);
  theDeuteronInelasticProcess->RegisterMe(theIonBC);
  pManager->AddDiscreteProcess(theDeuteronInelasticProcess);
  // triton
  pManager = G4Triton::Triton()->GetProcessManager();
  theTritonInelasticProcess =  new G4TritonInelasticProcess("inelastic");
  G4LETritonInelastic* theTritonInelasticModel = new G4LETritonInelastic;
  theTritonInelasticModel->SetMaxEnergy(100*MeV);
  theTritonInelasticProcess->AddDataSet(TripathiCrossSection);
  theTritonInelasticProcess->AddDataSet(aShen);
  theTritonInelasticProcess->RegisterMe(theTritonInelasticModel);
  theTritonInelasticProcess->RegisterMe(theIonBC);
  pManager->AddDiscreteProcess(theTritonInelasticProcess);
  // alpha
  pManager = G4Alpha::Alpha()->GetProcessManager();
  theAlphaInelasticProcess = new G4AlphaInelasticProcess("inelastic");
  G4LEAlphaInelastic* theAlphaInelasticModel = new G4LEAlphaInelastic;
  theAlphaInelasticModel->SetMaxEnergy(100*MeV);
  theAlphaInelasticProcess->AddDataSet(TripathiCrossSection);
  theAlphaInelasticProcess->AddDataSet(aShen);
  theAlphaInelasticProcess->RegisterMe(theAlphaInelasticModel);
  theAlphaInelasticProcess->RegisterMe(theIonBC);
  pManager->AddDiscreteProcess(theAlphaInelasticProcess);

  // GenericIon
  pManager = G4GenericIon::GenericIon()->GetProcessManager();
  // need to add the elastic explicitly
  pManager->AddDiscreteProcess(&theElasticProcess);
  theIonInelasticProcess = new G4IonInelasticProcess();
  theIonInelasticProcess->AddDataSet(TripathiCrossSection);
  theIonInelasticProcess->AddDataSet(aShen);
  G4BinaryLightIonReaction * theGenIonBC= new G4BinaryLightIonReaction;
  theGenIonBC->SetMinEnergy(0*MeV);
  theGenIonBC->SetMaxEnergy(20*GeV);
  theIonInelasticProcess->RegisterMe(theIonBC);
  pManager->AddDiscreteProcess(theIonInelasticProcess);

}

UNLUCKY often total energy of gamma cascade exceed the neutron binding energy 6.5MeV, sometimes over 20MeV!?!?! Where is the problem? Should i set cuts?

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

 Add Message Add Message
to: "HP_neutron_capture"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]