From 61a8a74fe86bc16fc282ea3462ac714593359494 Mon Sep 17 00:00:00 2001
From: matta <matta@npt>
Date: Thu, 31 Jan 2013 10:45:52 +0000
Subject: [PATCH] * Updating Initial Condition and correcting a bug in
 NPReaction read configuration  - Renaming of private member of Initial
 Condition  - Beam energy was not set in Read Configuration

---
 Inputs/EventGenerator/10He.reaction           |  8 ++--
 .../InitialConditions/TInitialConditions.cxx  | 37 +++++++-------
 NPLib/InitialConditions/TInitialConditions.h  | 48 +++++++++++--------
 NPLib/Physics/NPBeam.cxx                      | 19 ++++++++
 NPLib/Physics/NPBeam.h                        |  8 ++--
 NPLib/Physics/NPReaction.cxx                  |  7 +--
 NPSimulation/src/ParticleStack.cc             | 16 ++++---
 7 files changed, 86 insertions(+), 57 deletions(-)

diff --git a/Inputs/EventGenerator/10He.reaction b/Inputs/EventGenerator/10He.reaction
index 4c7444abc..3a8f91df4 100644
--- a/Inputs/EventGenerator/10He.reaction
+++ b/Inputs/EventGenerator/10He.reaction
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%% Reaction file for 11Li(d,3He)10He reaction %%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Isotropic
+%Isotropic
   EnergyLow= 100
   EnergyHigh= 100
   HalfOpenAngleMin= 0
@@ -12,7 +12,7 @@ Isotropic
   Particle= 10He
   ExcitationEnergy= 1.4
 
-%Beam
+Beam
   Particle= 11Li
   Energy= 550
 	SigmaEnergy= 0
@@ -30,7 +30,7 @@ Isotropic
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%TwoBodyReaction
+TwoBodyReaction
 	Beam= 11Li
 	Target= 2H
 	Light= 3He
@@ -43,7 +43,7 @@ Isotropic
   
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
-ParticleDecay 10He
+%ParticleDecay 10He
   Daughter= 9He n
   ExcitationEnergy= 0 0
   DifferentialCrossSection= flat.txt
diff --git a/NPLib/InitialConditions/TInitialConditions.cxx b/NPLib/InitialConditions/TInitialConditions.cxx
index 1c39613f8..75c985097 100644
--- a/NPLib/InitialConditions/TInitialConditions.cxx
+++ b/NPLib/InitialConditions/TInitialConditions.cxx
@@ -40,16 +40,16 @@ TInitialConditions::~TInitialConditions(){
 
 void TInitialConditions::Clear(){
   // Incident beam parameter
-  fIC_Incident_Particle_Name="";
-  fIC_Incident_Emittance_Phi=-1;
-  fIC_Incident_Emittance_Theta=-1;
-  fIC_Incident_Kinetic_Energy=-1;
-  
-  // Beam status at the initial interaction point
-  fIC_Interaction_Kinetic_Energy=-1;
-  fIC_Interaction_Position_X=-1;
-  fIC_Interaction_Position_Y=-1;
-  fIC_Interaction_Position_Z=-1;
+  fIC_Incident_Particle_Name = "";
+  fIC_Incident_Emittance_ThetaX = -1;
+  fIC_Incident_Emittance_PhiY = -1;
+  fIC_Incident_Emittance_Theta = -1;
+  fIC_Incident_Emittance_Phi = -1;
+  fIC_Incident_Initial_Kinetic_Energy = -1;
+  fIC_Incident_Final_Kinetic_Energy = -1;
+  fIC_Incident_Position_X = -1;
+  fIC_Incident_Position_Y = -1;
+  fIC_Incident_Position_Z = -1;
   
   // emmitted particle
   fIC_Particle_Name.clear();
@@ -66,19 +66,20 @@ void TInitialConditions::Dump() const{
   // Incident beam parameter
   cout << "\t ---- Incident Beam ---- " << endl;
   cout << "\t Particle Name:  " << fIC_Incident_Particle_Name << endl;
-  cout << "\t Energy: " << fIC_Incident_Kinetic_Energy << endl;
-  cout << "\t Theta_X: " << fIC_Incident_Emittance_Theta << endl;
-  cout << "\t Phi_Y: " << fIC_Incident_Emittance_Phi << endl;
-  
+  cout << "\t Energy: " << fIC_Incident_Initial_Kinetic_Energy << endl;
+  cout << "\t Theta_X: " << fIC_Incident_Emittance_ThetaX << endl;
+  cout << "\t Phi_Y: " << fIC_Incident_Emittance_PhiY << endl;
+  cout << "\t Theta: " << fIC_Incident_Emittance_Theta << endl;
+  cout << "\t Phi: " << fIC_Incident_Emittance_Phi << endl;
   
   
   // Beam status at the initial interaction point
   cout << "\t ---- Interaction Point ---- " << endl;
-  cout << "\t Energy: " << fIC_Interaction_Kinetic_Energy << endl;
+  cout << "\t Energy: " << fIC_Incident_Final_Kinetic_Energy << endl;
   cout << "\t Position: ( "
-  << fIC_Interaction_Position_X << " ; "
-  << fIC_Interaction_Position_Y << " ; "
-  << fIC_Interaction_Position_Z << ")" << endl;
+  << fIC_Incident_Position_X << " ; "
+  << fIC_Incident_Position_Y << " ; "
+  << fIC_Incident_Position_Z << ")" << endl;
   
   
   // emmitted particle
diff --git a/NPLib/InitialConditions/TInitialConditions.h b/NPLib/InitialConditions/TInitialConditions.h
index b41dde71d..00277daa6 100644
--- a/NPLib/InitialConditions/TInitialConditions.h
+++ b/NPLib/InitialConditions/TInitialConditions.h
@@ -40,15 +40,15 @@ private:
   
   // Incident beam parameter
   string fIC_Incident_Particle_Name;
-  double fIC_Incident_Emittance_Phi;
+  double fIC_Incident_Emittance_ThetaX;
+  double fIC_Incident_Emittance_PhiY;
   double fIC_Incident_Emittance_Theta;
-  double fIC_Incident_Kinetic_Energy;
-  
-  // Beam status at the initial interaction point
-  double fIC_Interaction_Kinetic_Energy;
-  double fIC_Interaction_Position_X;
-  double fIC_Interaction_Position_Y;
-  double fIC_Interaction_Position_Z;
+  double fIC_Incident_Emittance_Phi;
+  double fIC_Incident_Initial_Kinetic_Energy;
+  double fIC_Incident_Final_Kinetic_Energy;
+  double fIC_Incident_Position_X;
+  double fIC_Incident_Position_Y;
+  double fIC_Incident_Position_Z;
   
   // emmitted particle
   vector<string> fIC_Particle_Name;
@@ -68,16 +68,21 @@ public:
   
   /////////////////////           GetTERS           ////////////////////////
   // Incident beam parameter
-  void SetIncidentParticleName   (string Incident_Particle_Name)   {fIC_Incident_Particle_Name   = Incident_Particle_Name;}
-  void SetIncidentKineticEnergy  (double Incident_Kinetic_Energy)  {fIC_Incident_Kinetic_Energy  = Incident_Kinetic_Energy;}
+  void SetIncidentParticleName   (string Incident_Particle_Name)   {fIC_Incident_Particle_Name = Incident_Particle_Name;}
+  void SetIncidentInitialKineticEnergy  (double Incident_Initial_Kinetic_Energy)
+    {fIC_Incident_Initial_Kinetic_Energy  = Incident_Initial_Kinetic_Energy;}
+  void SetIncidentFinalKineticEnergy  (double Incident_Final_Kinetic_Energy)
+    {fIC_Incident_Final_Kinetic_Energy  = Incident_Final_Kinetic_Energy;}
+
   void SetIncidentEmittanceTheta (double Incident_Emittance_Theta) {fIC_Incident_Emittance_Theta = Incident_Emittance_Theta;}
   void SetIncidentEmittancePhi   (double Incident_Emittance_Phi)   {fIC_Incident_Emittance_Phi   = Incident_Emittance_Phi;}
+  void SetIncidentEmittanceThetaX (double Incident_Emittance_ThetaX) {fIC_Incident_Emittance_ThetaX = Incident_Emittance_ThetaX;}
+  void SetIncidentEmittancePhiY   (double Incident_Emittance_PhiY)   {fIC_Incident_Emittance_PhiY   = Incident_Emittance_PhiY;}
   
   // Beam status at the initial interaction point
-  void SetInteractionKineticEnergy (double Interaction_Kinetic_Energy)  {fIC_Interaction_Kinetic_Energy = Interaction_Kinetic_Energy;}
-  void SetInteractionPositionX     (double Interaction_Position_X)      {fIC_Interaction_Position_X     = Interaction_Position_X;}
-  void SetInteractionPositionY     (double Interaction_Position_Y)      {fIC_Interaction_Position_Y     = Interaction_Position_Y;}
-  void SetInteractionPositionZ     (double Interaction_Position_Z)      {fIC_Interaction_Position_Z     = Interaction_Position_Z;}
+  void SetIncidentPositionX     (double Incident_Position_X)      {fIC_Incident_Position_X     = Incident_Position_X;}
+  void SetIncidentPositionY     (double Incident_Position_Y)      {fIC_Incident_Position_Y     = Incident_Position_Y;}
+  void SetIncidentPositionZ     (double Incident_Position_Z)      {fIC_Incident_Position_Z     = Incident_Position_Z;}
   
   // emmitted particle
   void SetParticleName       (string Particle_Name)         {fIC_Particle_Name.push_back(Particle_Name);}
@@ -86,18 +91,19 @@ public:
   void SetMomentumDirectionX (double Momentum_Direction_X)  {fIC_Momentum_Direction_X.push_back(Momentum_Direction_X);}
   void SetMomentumDirectionY (double Momentum_Direction_Y)  {fIC_Momentum_Direction_Y.push_back(Momentum_Direction_Y);}
   void SetMomentumDirectionZ (double Momentum_Direction_Z)  {fIC_Momentum_Direction_Z.push_back(Momentum_Direction_Z);}
+  
   /////////////////////           GETTERS           ////////////////////////
   // Incident beam parameter
   string GetIncidentParticleName   () const  {return fIC_Incident_Particle_Name   ;}
-  double GetIncidentKineticEnergy  () const  {return fIC_Incident_Kinetic_Energy  ;}
+  double GetIncidentInitialKineticEnergy  () const  {return fIC_Incident_Initial_Kinetic_Energy  ;}
+  double GetIncidentFinalKineticEnergy () const {return fIC_Incident_Final_Kinetic_Energy ;}
   double GetIncidentEmittanceTheta () const  {return fIC_Incident_Emittance_Theta ;}
   double GetIncidentEmittancePhi   () const  {return fIC_Incident_Emittance_Phi   ;}
   
-  // Beam status at the initial interaction point
-  double GetInteractionKineticEnergy () const {return fIC_Interaction_Kinetic_Energy ;}
-  double GetInteractionPositionX     () const {return fIC_Interaction_Position_X     ;}
-  double GetInteractionPositionY     () const {return fIC_Interaction_Position_Y     ;}
-  double GetInteractionPositionZ     () const {return fIC_Interaction_Position_Z     ;}
+  // Beam status at the initial Incident point
+  double GetIncidentPositionX     () const {return fIC_Incident_Position_X     ;}
+  double GetIncidentPositionY     () const {return fIC_Incident_Position_Y     ;}
+  double GetIncidentPositionZ     () const {return fIC_Incident_Position_Z     ;}
   
   // emmitted particle
   string GetParticleName        (int i) const {return fIC_Particle_Name[i];}
@@ -107,7 +113,7 @@ public:
   double GetMomentumDirectionY  (int i) const {return fIC_Momentum_Direction_Y[i];}
   double GetMomentumDirectionZ  (int i) const {return fIC_Momentum_Direction_Z[i];}
   
-  unsigned int GetMult() const {return fIC_Particle_Name.size();}
+  unsigned int GetEmittedMult() const {return fIC_Particle_Name.size();}
   
   ClassDef(TInitialConditions, 1) // InitialConditions structure
 };
diff --git a/NPLib/Physics/NPBeam.cxx b/NPLib/Physics/NPBeam.cxx
index b4d8380f3..23df5d87c 100644
--- a/NPLib/Physics/NPBeam.cxx
+++ b/NPLib/Physics/NPBeam.cxx
@@ -301,3 +301,22 @@ void Beam::Print() const {
   
   
 }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void Beam::SetTargetSize(double TargetSize){
+  fTargetSize = TargetSize;
+  fEffectiveTargetSize = fTargetSize*cos(fTargetAngle);
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void Beam::SetTargetThickness(double TargetThickness){
+  fTargetThickness = TargetThickness;
+  fEffectiveTargetThickness = fTargetThickness/cos(fTargetAngle);
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void Beam::SetTargetAngle(double TargetAngle){
+  fTargetAngle = TargetAngle;
+  fEffectiveTargetSize = fTargetSize*cos(fTargetAngle);
+  fEffectiveTargetThickness = fTargetThickness/cos(fTargetAngle);
+}
diff --git a/NPLib/Physics/NPBeam.h b/NPLib/Physics/NPBeam.h
index 63f4c4f4f..db6b991dc 100755
--- a/NPLib/Physics/NPBeam.h
+++ b/NPLib/Physics/NPBeam.h
@@ -117,10 +117,10 @@ namespace NPL{
     
   public: // Event Generation
     void GenerateRandomEvent(double& E, double& X, double& Y, double& Z, double& ThetaX, double& PhiY );
-    void SetTargetSize(double TargetSize)             {fTargetSize = TargetSize; fEffectiveTargetSize = fTargetSize*cos(fTargetAngle);}
-    void SetTargetThickness(double TargetThickness)   {fTargetThickness = TargetThickness; fEffectiveTargetThickness = fTargetThickness/cos(fTargetAngle);}
-    void SetTargetAngle(double TargetAngle)           {fTargetAngle = TargetAngle; fEffectiveTargetSize = fTargetSize*cos(fTargetAngle);}
-    void SetTargetZ(double TargetZ)                   {fTargetZ = TargetZ;}
+    void SetTargetSize(double TargetSize);
+    void SetTargetThickness(double TargetThickness);
+    void SetTargetAngle(double TargetAngle);
+    void SetTargetZ(double TargetZ) {fTargetZ = TargetZ;}
 
   public: // Print private paremeter
     void Print() const;
diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx
index d2ff229a6..7991e3a66 100644
--- a/NPLib/Physics/NPReaction.cxx
+++ b/NPLib/Physics/NPReaction.cxx
@@ -359,10 +359,11 @@ void Reaction::ReadConfigurationFile(string Path){
   NPL::Beam* localBeam= new NPL::Beam();
   localBeam->SetVerboseLevel(0);
   localBeam->ReadConfigurationFile(Path);
-  
-  // Modifiy the CS to shoot only within ]HalfOpenAngleMin,HalfOpenAngleMax[ 
-  SetCSAngle(CSHalfOpenAngleMin,CSHalfOpenAngleMax);
+  fBeamEnergy= localBeam->GetEnergy();
   delete localBeam;
+
+  // Modifiy the CS to shoot only within ]HalfOpenAngleMin,HalfOpenAngleMax[
+  SetCSAngle(CSHalfOpenAngleMin,CSHalfOpenAngleMax);
   ReactionFile.close();
   initializePrecomputeVariable();
 }
diff --git a/NPSimulation/src/ParticleStack.cc b/NPSimulation/src/ParticleStack.cc
index 67d3363a5..69c1e4622 100644
--- a/NPSimulation/src/ParticleStack.cc
+++ b/NPSimulation/src/ParticleStack.cc
@@ -81,19 +81,21 @@ void ParticleStack::AddBeamParticleToStack(Particle& particle){
   
   // Incident beam parameter
   m_InitialConditions-> SetIncidentParticleName   (particle.GetParticleDefinition()->GetParticleName());
-  m_InitialConditions-> SetIncidentKineticEnergy  (particle. GetParticleThetaCM());
+  m_InitialConditions-> SetIncidentInitialKineticEnergy  (particle. GetParticleThetaCM());
   
   G4ThreeVector U(1,0,0);
   G4ThreeVector V(0,1,0);
   
-  m_InitialConditions-> SetIncidentEmittanceTheta (particle.GetParticleMomentumDirection().angle(U)/deg);
-  m_InitialConditions-> SetIncidentEmittancePhi   (particle.GetParticleMomentumDirection().angle(V)/deg);
+  m_InitialConditions-> SetIncidentEmittanceThetaX (particle.GetParticleMomentumDirection().angle(U)/deg);
+  m_InitialConditions-> SetIncidentEmittancePhiY   (particle.GetParticleMomentumDirection().angle(V)/deg);
+  m_InitialConditions-> SetIncidentEmittanceTheta (particle.GetParticleMomentumDirection().theta()/deg);
+  m_InitialConditions-> SetIncidentEmittancePhi  (particle.GetParticleMomentumDirection().phi()/deg);
   
   // Beam status at the initial interaction point
-  m_InitialConditions-> SetInteractionKineticEnergy (particle. GetParticleKineticEnergy());
-  m_InitialConditions-> SetInteractionPositionX     (particle. GetParticlePosition().x());
-  m_InitialConditions-> SetInteractionPositionY     (particle. GetParticlePosition().y());
-  m_InitialConditions-> SetInteractionPositionZ     (particle. GetParticlePosition().x());
+  m_InitialConditions-> SetIncidentFinalKineticEnergy (particle. GetParticleKineticEnergy());
+  m_InitialConditions-> SetIncidentPositionX     (particle. GetParticlePosition().x());
+  m_InitialConditions-> SetIncidentPositionY     (particle. GetParticlePosition().y());
+  m_InitialConditions-> SetIncidentPositionZ     (particle. GetParticlePosition().x());
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-- 
GitLab