From 0a24e7eb9abce8a105cdc23a0e42f6a040130661 Mon Sep 17 00:00:00 2001
From: adrien matta <matta@lpccaen.in2p3.fr>
Date: Wed, 18 Jul 2018 10:27:56 +0200
Subject: [PATCH] * Fixing issue in beam reaction after merge         - The
 active flag was reset to 0 preventing reaction from           occuring

---
 NPSimulation/Core/Target.cc          |  2 +-
 NPSimulation/Process/BeamReaction.cc | 24 +++++++++++++++++-------
 NPSimulation/Process/BeamReaction.hh |  6 +++---
 NPSimulation/Process/PhysicsList.cc  |  4 ++--
 4 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/NPSimulation/Core/Target.cc b/NPSimulation/Core/Target.cc
index 77b8fc23b..80455597b 100644
--- a/NPSimulation/Core/Target.cc
+++ b/NPSimulation/Core/Target.cc
@@ -74,7 +74,7 @@ Target::Target(){
   m_TargetNbLayers     = 5;   // Number of steps by default
   // Set the global pointer
   TargetInstance = this;
-  m_ReactionRegion=0;
+  m_ReactionRegion=NULL;
 
   m_TargetDensity = 0 ;
   m_FrontDeformation = 0 ;
diff --git a/NPSimulation/Process/BeamReaction.cc b/NPSimulation/Process/BeamReaction.cc
index d38dae754..3c8ef1805 100644
--- a/NPSimulation/Process/BeamReaction.cc
+++ b/NPSimulation/Process/BeamReaction.cc
@@ -37,7 +37,7 @@ NPS::BeamReaction::BeamReaction(G4String modelName,G4Region* envelope) :
   ReadConfiguration();
   m_PreviousEnergy=0 ;
   m_PreviousLength=0 ;
-  m_active = 0;
+  m_active = true;
   }
 
 
@@ -55,13 +55,22 @@ void NPS::BeamReaction::ReadConfiguration(){
  NPL::InputParser input(NPOptionManager::getInstance()->GetReactionFile());
  m_Reaction.ReadConfigurationFile(input);
  m_BeamName=NPL::ChangeNameToG4Standard(m_Reaction.GetNucleus1().GetName());
- if(m_Reaction.GetNucleus3().GetName()!="")
+ if(m_Reaction.GetNucleus3().GetName()!=""){
    m_active = true;
+    }
+ else{
+   m_active = false;
+   
+   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 G4bool NPS::BeamReaction::IsApplicable( const G4ParticleDefinition& particleType) {
-  std::string particleName = particleType.GetParticleName();
+  if(!m_active)
+    return false;
+
+  static std::string particleName;
+  particleName = particleType.GetParticleName();
   if (particleName.find(m_BeamName)!=std::string::npos) {
     return true;
   }
@@ -70,9 +79,6 @@ G4bool NPS::BeamReaction::IsApplicable( const G4ParticleDefinition& particleType
 
 ////////////////////////////////////////////////////////////////////////////////
 G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) {
-  if(!m_active)
-    return false;
-
   static bool shoot = false;
   static double rand = 0;
   const G4Track* PrimaryTrack = fastTrack.GetPrimaryTrack();   
@@ -83,7 +89,11 @@ G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) {
   double in = solid->DistanceToOut(P,V);
   double out = solid->DistanceToOut(P,-V);
   double ratio  = in / (out+in) ; 
-    // Generate a random for this event
+  
+  if(ratio!=ratio)
+    ratio =1;
+
+  // Generate a random for this event
   if(!shoot){
     rand =  G4RandFlat::shoot();
     shoot = true;
diff --git a/NPSimulation/Process/BeamReaction.hh b/NPSimulation/Process/BeamReaction.hh
index aa42d4423..0ddd7b0de 100644
--- a/NPSimulation/Process/BeamReaction.hh
+++ b/NPSimulation/Process/BeamReaction.hh
@@ -37,9 +37,9 @@ namespace NPS{
 
     public:
       void ReadConfiguration();
-      virtual G4bool IsApplicable(const G4ParticleDefinition&);
-      virtual G4bool ModelTrigger(const G4FastTrack &);
-      virtual void DoIt(const G4FastTrack&, G4FastStep&);
+      G4bool IsApplicable(const G4ParticleDefinition&);
+      G4bool ModelTrigger(const G4FastTrack &);
+      void DoIt(const G4FastTrack&, G4FastStep&);
  
     private:
       NPL::Reaction m_Reaction;
diff --git a/NPSimulation/Process/PhysicsList.cc b/NPSimulation/Process/PhysicsList.cc
index 29bf7065a..130db3d84 100644
--- a/NPSimulation/Process/PhysicsList.cc
+++ b/NPSimulation/Process/PhysicsList.cc
@@ -293,7 +293,7 @@ void PhysicsList::AddStepMax(){
 /////////////////////////////////////////////////////////////////////////////
 void PhysicsList::AddParametrisation(){
   G4FastSimulationManagerProcess* BeamReaction =
-			new G4FastSimulationManagerProcess("NPSProcess");
+			new G4FastSimulationManagerProcess("NPSimulationProcess");
 
 // For 10.3 and higher
 #ifndef theParticleIterator  
@@ -305,7 +305,7 @@ void PhysicsList::AddParametrisation(){
 		  G4ParticleDefinition* particle = theParticleIterator->value();
       G4ProcessManager* pmanager = particle->GetProcessManager();
       std::string name = particle->GetParticleName();
-       pmanager->AddDiscreteProcess(BeamReaction);
+      pmanager->AddDiscreteProcess(BeamReaction);
       // Add a Step limiter to the beam particle. 
       // This will be used to limit the step of the beam in the target
       pmanager->AddProcess(new G4StepLimiter,-1,-1,5);
-- 
GitLab