diff --git a/NPLib/Physics/GEF.cxx b/NPLib/Physics/GEF.cxx index 91fe62db97e6fc50f6da7d2fb091cc5eaa605099..1d13bb44747dcf647146549d49903910eacc63f4 100644 --- a/NPLib/Physics/GEF.cxx +++ b/NPLib/Physics/GEF.cxx @@ -4786,7 +4786,7 @@ void GEF::FromCMtoLAB(void) Bcm_light = sqrt(1.-1./pow(Gcm_light,2)); Bcm_heavy = sqrt(1.-1./pow(Gcm_heavy,2)); - //cout << Ekinlight_sci << " " << Ekinheavy_sci << " " << Ekinlight_sci+ Ekinheavy_sci << endl; + //cout << Ekinlight_sci << " " << Ekinheavy_sci << " " << Ekinlight_sci+ Ekinheavy_sci << endl; KElab_light = KElab_heavy= 0; KElab_light = (Gfis*Gcm_light*M_light +Gfis*Bfis*Gcm_light*Bcm_light*M_light*cos(Thcm_light))-M_light; @@ -4801,7 +4801,7 @@ void GEF::FromCMtoLAB(void) Blab_heavy = sqrt(1.-1./pow(Glab_heavy,2)); vlab_light = Blab_light*29.9792458; vlab_heavy=Blab_heavy*29.9792458; - + //Note that I am not taking account the angle of the fissioning system Thlab_light = Thlab_heavy=0; if(Blab_light>0) diff --git a/NPLib/Physics/NPFissionDecay.cxx b/NPLib/Physics/NPFissionDecay.cxx index 10a2a7d8c00a93a31487ac08c8f115df6d57df08..e476e2292f2ae4a252b3fa5003363c3106d77221 100644 --- a/NPLib/Physics/NPFissionDecay.cxx +++ b/NPLib/Physics/NPFissionDecay.cxx @@ -51,17 +51,18 @@ void NPL::FissionDecay::ReadConfiguration(NPL::InputParser parser){ else HasFissionToken=1; std::vector<std::string> token = - {"CompoundNucleus","FissionModel","Shoot_FF","Shoot_neutron","Shoot_gamma"}; + {"CompoundNucleus","FissionModel","VamosChargeStates","Shoot_FF","Shoot_neutron","Shoot_gamma"}; unsigned int size = blocks.size(); for(unsigned int i = 0 ; i < size ; i++){ if(blocks[i]->HasTokenList(token)){ m_CompoundName = blocks[i]->GetString("CompoundNucleus"); m_FissionModelName = blocks[i]->GetString("FissionModel"); + m_VamosChargeStates = blocks[i]->GetInt("VamosChargeStates"); m_shoot_FF = blocks[i]->GetInt("Shoot_FF"); m_shoot_neutron = blocks[i]->GetInt("Shoot_neutron"); m_shoot_gamma = blocks[i]->GetInt("Shoot_gamma"); - + m_Compound = NPL::Particle(m_CompoundName); if(m_FissionModelName=="GEF") m_FissionModel = new GEF(m_Compound); } @@ -93,6 +94,7 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK Momentum.Unit(); double Theta = Momentum.Theta(); double Phi = Momentum.Phi(); + double Lfis = 0; m_Compound = NPL::Particle(CompoundName); m_Compound.SetExcitationEnergy(MEx); @@ -100,7 +102,7 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK if(m_FissionModelName=="GEF"){ if(m_FissionModel->IsValid(m_Compound.GetZ(), m_Compound.GetA())){ worked=true; - m_FissionModel->InitCompound(MEx,MEK); + m_FissionModel->InitCompound(MEx,MEK,Lfis,Theta,Phi); m_FissionModel->Treat(); int Ah = m_FissionModel->GetAffh(); @@ -110,12 +112,20 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK double KEl = m_FissionModel->GetKEffl(); double KEh = m_FissionModel->GetKEffh(); + double Brhol = m_FissionModel->GetBrhoffl(); + double Brhoh = m_FissionModel->GetBrhoffh(); NPL::Particle FFl = NPL::Particle(Zl,Al); NPL::Particle FFh = NPL::Particle(Zh,Ah); - FFl.SetKineticEnergy(KEl); - FFh.SetKineticEnergy(KEh); - + if(m_VamosChargeStates==1){ + // Include Charge states distribtuion from Baron et al. NIM 328 (1993) 177-182 + FFl.SetBrho(Brhol); + FFh.SetBrho(Brhoh); + } + else{ + FFl.SetKineticEnergy(KEl); + FFh.SetKineticEnergy(KEh); + } FissionFragments.push_back(FFl); FissionFragments.push_back(FFh); Ex.push_back(0); @@ -150,7 +160,7 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK DPy.push_back(Momentumh.Y()); DPz.push_back(Momentuml.Z()); DPz.push_back(Momentumh.Z()); - + TKE = m_FissionModel->GetTKE(); KE1 = m_FissionModel->GetKE1(); KE2 = m_FissionModel->GetKE2(); @@ -163,7 +173,7 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK //for(int i=0; i<51; i++) { // cout << "En= " << En1[i] << endl; //} - + Eg1 = m_FissionModel->GetGammaEnergyFrag1(); //cout << "----- Gamma energy: " << endl; //for(int i=0; i<101; i++){ diff --git a/NPLib/Physics/NPFissionDecay.h b/NPLib/Physics/NPFissionDecay.h index e11d1a901d686b5a9336491587ae2dbc7afcd56f..9be1dda30da6871030277d56482667541f817c1e 100644 --- a/NPLib/Physics/NPFissionDecay.h +++ b/NPLib/Physics/NPFissionDecay.h @@ -57,6 +57,7 @@ namespace NPL{ std::vector<NPL::Particle> m_FissionFragment; std::vector<double> m_FissionFragmentMasses; int HasFissionToken; + bool m_VamosChargeStates; bool m_shoot_FF; bool m_shoot_neutron; bool m_shoot_gamma; diff --git a/NPLib/Physics/NPParticle.cxx b/NPLib/Physics/NPParticle.cxx index 3a1e91d443fce1c312d78644ece022444d30a9df..66125ce2af4ed76602c43e7fc5e59900880fa170 100644 --- a/NPLib/Physics/NPParticle.cxx +++ b/NPLib/Physics/NPParticle.cxx @@ -464,8 +464,11 @@ void Particle::GetParticleName() { void Particle::EnergyToBrho(double Q){ if(Q==-1000) Q=GetZ(); - - fBrho = sqrt(pow(fKineticEnergy,2) + 2*fKineticEnergy*Mass()) * 1e6 * e_SI / (c_light*1e6) / (Q * e_SI); + + EnergyToBeta(); + BetaToGamma(); + //fBrho = sqrt(pow(fKineticEnergy,2) + 2*fKineticEnergy*Mass()) * 1e6 * e_SI / (c_light*1e6) / (Q * e_SI); + fBrho = 3.107*GetA()/Q*fBeta*fGamma; } diff --git a/NPSimulation/Process/FissionDecay.cc b/NPSimulation/Process/FissionDecay.cc index 55a4688d19c217b6298f7c5e4990d8ad50d8562c..5ecbeb96b4e2720f13d98fb167a096d9290a0d60 100644 --- a/NPSimulation/Process/FissionDecay.cc +++ b/NPSimulation/Process/FissionDecay.cc @@ -160,6 +160,7 @@ void FissionDecay::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep){ m_FissionConditions->SetA_CN(m_CompoundParticle.GetA()); m_FissionConditions->SetEx_CN(m_ExcitationEnergy); m_FissionConditions->SetELab_CN(energy); + m_FissionConditions->SetThetaLab_CN(pdirection.theta()*180./3.1415); // Fission Process m_FissionConditions->Set_TKE(TKE); diff --git a/Projects/PISTA/Analysis.cxx b/Projects/PISTA/Analysis.cxx index 44cb37e3a79721a43261472ef7e2f636bdeef32f..2f69bdf9438a7d8168bbf66ca63684ad50339a3d 100644 --- a/Projects/PISTA/Analysis.cxx +++ b/Projects/PISTA/Analysis.cxx @@ -58,10 +58,10 @@ void Analysis::Init(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::TreatEvent(){ ReInitValue(); - //OriginalThetaLab = ReactionConditions->GetTheta(0); - //OriginalElab = ReactionConditions->GetKineticEnergy(0); - //OriginalBeamEnergy = ReactionConditions->GetBeamEnergy(); - //OriginalEx = ReactionConditions->GetExcitation4(); + OriginalThetaLab = ReactionConditions->GetTheta(0); + OriginalElab = ReactionConditions->GetKineticEnergy(0); + OriginalBeamEnergy = ReactionConditions->GetBeamEnergy(); + OriginalEx = ReactionConditions->GetExcitation4(); int mult = InteractionCoordinates->GetDetectedMultiplicity(); if(mult>0){ @@ -85,6 +85,7 @@ void Analysis::TreatEvent(){ BeamEnergy = 1428.;//InitialConditions->GetIncidentInitialKineticEnergy(); BeamEnergy = U238C.Slow(BeamEnergy,TargetThickness*0.5,0); Transfer->SetBeamEnergy(BeamEnergy); + //Transfer->SetBeamEnergy(OriginalBeamEnergy); if(PISTA->EventMultiplicity==1){ for(unsigned int i = 0; i<PISTA->EventMultiplicity; i++){ double Energy = PISTA->DE[i] + PISTA->E[i];