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

None neutron interaction  

Forum: Hadronic Processes
Date: 06 Sep, 2010
From: Davinder Siwal <Davinder Siwal>

Hiii geant4 users

I am trying to calculate the efficiency of a neutron detector BC501 so i did use bothe the modular physics(QGSP_BIC_HP) list and the normal physics list with high precision model i am facing some problem and looking for solution

with modular physics list the neutron is interaction with detector when it is placed in both air or in vacuum as

runManager->SetUserInitialization(new QGSP_BIC_HP);

so thats fine

but with the high precision model which i used in normal way i use the following physics list

#include "NdetPhysicsList.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4ios.hh"
//#include "G4StepLimiter.hh"

#include "HadronPhysicsLHEP.hh"
#include "HadronPhysicsQGSP.hh"
#include "G4EmStandardPhysics72.hh"

NdetPhysicsList::NdetPhysicsList() {

 defaultCutValue = 1.*mm;
 cutForGamma     = defaultCutValue;
 cutForElectron  = defaultCutValue;
 cutForPositron  = defaultCutValue;

}

NdetPhysicsList::~NdetPhysicsList() {}

void NdetPhysicsList::ConstructParticle()
{
  ConstructBosons();
  ConstructBaryons();
  ConstructLeptons();
  ConstructMesons();
  G4IonConstructor pConstructor;
  pConstructor.ConstructParticle();

}

void NdetPhysicsList::ConstructBosons()
{
  G4Gamma::GammaDefinition();
}

void NdetPhysicsList::ConstructBaryons()
{
  G4Proton::ProtonDefinition();
  G4AntiProton::AntiProtonDefinition();
  G4Neutron::NeutronDefinition();
  G4AntiNeutron::AntiNeutronDefinition();
}

void NdetPhysicsList::ConstructLeptons()
{
  G4Electron::ElectronDefinition();
  G4Positron::PositronDefinition();
}

void NdetPhysicsList::ConstructMesons()
{
 //  mesons
  G4PionPlus::PionPlusDefinition();
  G4PionMinus::PionMinusDefinition();
  G4PionZero::PionZeroDefinition();
  G4Eta::EtaDefinition();
  G4EtaPrime::EtaPrimeDefinition();
  G4KaonPlus::KaonPlusDefinition();
  G4KaonMinus::KaonMinusDefinition();
  G4KaonZero::KaonZeroDefinition();
  G4AntiKaonZero::AntiKaonZeroDefinition();
  G4KaonZeroLong::KaonZeroLongDefinition();
  G4KaonZeroShort::KaonZeroShortDefinition();
}

void NdetPhysicsList::ConstructProcess()
{
  AddTransportation();

   ConstructAllInteractionProcesses(); 
}

/////////////// Gamma Header Files /////////////////////////

#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4RegionStore.hh"

#include "G4ProcessManager.hh"
#include "G4MultipleScattering.hh"

#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"

#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//////////////////////////////////////////////////////////////

////////////////// Neutron Header Files///////////////////////

#include "G4HadronElasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"

// High Precision Model

#include "G4NeutronHPElastic.hh"
#include "G4NeutronHPElasticData.hh"
#include "G4NeutronHPInelastic.hh"
#include "G4NeutronHPInelasticData.hh"
#include "G4NeutronHPCapture.hh"
#include "G4NeutronHPCaptureData.hh"
#include "G4NeutronHPFission.hh"
#include "G4NeutronHPFissionData.hh"

///////////////////////////////////////////////////////////////

void NdetPhysicsList::ConstructAllInteractionProcesses() {

   G4ProcessManager* pManager =0;// particle->GetProcessManager();

   G4cout<<"REGISTER PARTICLES ARE :-"<<G4endl;     
   // gamma
   pManager = G4Gamma::Gamma()->GetProcessManager();
   G4cout<<"Gamma"<<G4endl;
   pManager->AddDiscreteProcess(new G4PhotoElectricEffect);
   pManager->AddDiscreteProcess(new G4ComptonScattering);
  // pManager->AddDiscreteProcess(new G4GammaConversion);

   //electron
   pManager = G4Electron::Electron()->GetProcessManager();
   G4cout<<"Electron"<<G4endl;
   G4VProcess* theeminusMultipleScattering = new G4MultipleScattering();
   G4VProcess* theeminusIonisation         = new G4eIonisation();
   G4VProcess* theeminusBremsstrahlung     = new G4eBremsstrahlung();//"eBrem", 10*GeV);

   //  add process
   pManager->AddProcess(theeminusMultipleScattering);//, -1,1,1);
   pManager->AddProcess(theeminusIonisation);//, -1,2,2);
   pManager->AddProcess(theeminusBremsstrahlung);//, -1,3,3);

   // set ordering for AlongStepDoIt

   pManager->SetProcessOrdering(theeminusMultipleScattering, idxAlongStep,1);
   pManager->SetProcessOrdering(theeminusIonisation,         idxAlongStep,2);
   pManager->SetProcessOrdering(theeminusBremsstrahlung,     idxAlongStep,3);

   // set ordering for PostStepDoIt
   pManager->SetProcessOrdering(theeminusMultipleScattering, idxPostStep,1);
   pManager->SetProcessOrdering(theeminusIonisation,         idxPostStep,2);
   pManager->SetProcessOrdering(theeminusBremsstrahlung,     idxPostStep,3);

   //positron
   pManager = G4Positron::Positron()->GetProcessManager();

   G4cout<<"Positron"<<G4endl;

   G4VProcess* theeplusMultipleScattering = new G4MultipleScattering();
   G4VProcess* theeplusIonisation         = new G4eIonisation();
   G4VProcess* theeplusBremsstrahlung     = new G4eBremsstrahlung("eBrem", 10*GeV);
   G4VProcess* theeplusAnnihilation       = new G4eplusAnnihilation();

   pManager->AddProcess(theeplusMultipleScattering,-1,1,1);
   pManager->AddProcess(theeplusIonisation, -1,2,2);
   pManager->AddProcess(theeplusBremsstrahlung ,-1,3,3);
   pManager->AddProcess(theeplusAnnihilation,0,-1,4);

   pManager = G4Neutron::Neutron()->GetProcessManager();

   G4cout<<"Neutron"<<G4endl;
   G4cout<<G4endl;
   // add neutron  process

   //Elastic High Pricision Model
   G4HadronElasticProcess* neutronElasticProcess = new G4HadronElasticProcess();
   G4NeutronHPElastic* theHPElasticModel = new G4NeutronHPElastic();
   G4NeutronHPElasticData* theHPElasticData = new G4NeutronHPElasticData();
   neutronElasticProcess->RegisterMe(theHPElasticModel);
   neutronElasticProcess->AddDataSet(theHPElasticData);

   //Inelastic High Precision Model

   G4NeutronInelasticProcess* neutronInelasticProcess = new G4NeutronInelasticProcess("inelastic-neutron");
   G4NeutronHPInelastic* theHPInelasticModel = new G4NeutronHPInelastic();
   G4NeutronHPInelasticData* neutronHPInelasticCrossSection =new G4NeutronHPInelasticData();
   neutronInelasticProcess->RegisterMe(theHPInelasticModel);
   neutronInelasticProcess->AddDataSet(neutronHPInelasticCrossSection);

   //Fission High Precision Model
   G4HadronFissionProcess* neutronFissionProcess = new G4HadronFissionProcess("fission-neutron");
   G4NeutronHPFission* neutronHPFissionModel = new G4NeutronHPFission();
   G4NeutronHPFissionData* neutronHPFissionCrossSection = new G4NeutronHPFissionData();
   neutronFissionProcess->RegisterMe(neutronHPFissionModel);
   neutronFissionProcess->AddDataSet(neutronHPFissionCrossSection);

   // Capture High Precision Model
   G4HadronCaptureProcess* neutronCaptureProcess = new G4HadronCaptureProcess("capture-neutron");
   G4NeutronHPCapture* neutronHPCaptureModel = new G4NeutronHPCapture();
   G4NeutronHPCaptureData* neutronHPCaptureCrossSection = new G4NeutronHPCaptureData();
   neutronCaptureProcess->RegisterMe(neutronHPCaptureModel);
   neutronCaptureProcess->AddDataSet(neutronHPCaptureCrossSection);

   pManager->AddDiscreteProcess(neutronElasticProcess);
   pManager->AddDiscreteProcess(neutronInelasticProcess);
   pManager->AddDiscreteProcess(neutronCaptureProcess);
   pManager->AddDiscreteProcess(neutronFissionProcess);
   pManager->DumpInfo();

}

void NdetPhysicsList::SetCuts() {

    G4cout << "PhysicsList::SetCuts:";
    G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;

    SetCutValue(cutForGamma, "gamma");
    SetCutValue(cutForElectron, "e-");
    SetCutValue(cutForPositron, "e+");

}

but in this case neutron is not showing any interaction with the scintillation material when detector is placed in vacuum but in air it interact with air only

now the thing is that i am interesting in production of optical photons in the scintillation crystal for that i need to add the scintillation process in physics list ,if i go with the modular physics list then i don't know how to add the optical process on the other hand with the normal way i can use ProcessManager to register this process but in later case neutron is not interacting with the material

Can anybody help me to solve this problem.

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

1 None: Re: neutron interaction   (Randolph Moellenberg - 08 Sep, 2010)
 Add Message Add Message
to: "neutron interaction "

 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 ]