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