Skip to content
Snippets Groups Projects
Commit f12dd45c authored by matta's avatar matta
Browse files

* Fixing bug with Filling of Initial Condition in NPS

- The Beam info were filled but cleared too soon
- A flag telling whenever the info need to be cleared has been added
parent 00c1074f
No related branches found
No related tags found
No related merge requests found
...@@ -101,9 +101,9 @@ void TInitialConditions::Dump() const{ ...@@ -101,9 +101,9 @@ void TInitialConditions::Dump() const{
TVector3 TInitialConditions::GetBeamDirection() const{ TVector3 TInitialConditions::GetBeamDirection() const{
return TVector3( sin(fIC_Incident_Emittance_ThetaX), return TVector3( sin(fIC_Incident_Emittance_Theta*deg)*cos(fIC_Incident_Emittance_Phi*deg),
sin(fIC_Incident_Emittance_PhiY), sin(fIC_Incident_Emittance_Theta*deg)*sin(fIC_Incident_Emittance_Phi*deg),
cos(fIC_Incident_Emittance_ThetaX) + cos(fIC_Incident_Emittance_PhiY)); cos(fIC_Incident_Emittance_Theta*deg));
} }
TVector3 TInitialConditions::GetParticleDirection (const int &i) const { TVector3 TInitialConditions::GetParticleDirection (const int &i) const {
......
...@@ -69,6 +69,10 @@ private: ...@@ -69,6 +69,10 @@ private:
G4ParticleGun* m_particleGun; G4ParticleGun* m_particleGun;
// Host the Initial conditions TObject // Host the Initial conditions TObject
TInitialConditions* m_InitialConditions; TInitialConditions* m_InitialConditions;
// Needed to now if the IC has to be cleared or not
// true if the particle to be added is the first one
bool m_First;
private: // Private Member private: // Private Member
vector<Particle> m_ParticleStack; vector<Particle> m_ParticleStack;
......
...@@ -224,6 +224,7 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event*){ ...@@ -224,6 +224,7 @@ void EventGeneratorIsotropic::GenerateEvent(G4Event*){
Particle particle(m_particle, theta,particle_energy,G4ThreeVector(momentum_x, momentum_y, momentum_z),G4ThreeVector(m_x0, m_y0, m_z0)); Particle particle(m_particle, theta,particle_energy,G4ThreeVector(momentum_x, momentum_y, momentum_z),G4ThreeVector(m_x0, m_y0, m_z0));
m_ParticleStack->AddParticleToStack(particle); m_ParticleStack->AddParticleToStack(particle);
} }
......
...@@ -53,8 +53,13 @@ ParticleStack::ParticleStack(){ ...@@ -53,8 +53,13 @@ ParticleStack::ParticleStack(){
// Instantiate the TInitialConditions object and link it to the RootOutput tree // Instantiate the TInitialConditions object and link it to the RootOutput tree
m_InitialConditions = new TInitialConditions(); m_InitialConditions = new TInitialConditions();
RootOutput::getInstance()->GetTree()->Branch("InitialConditions","TInitialConditions",&m_InitialConditions);} RootOutput::getInstance()->GetTree()->Branch("InitialConditions","TInitialConditions",&m_InitialConditions);
m_First=true;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ParticleStack::~ParticleStack(){ ParticleStack::~ParticleStack(){
} }
...@@ -71,14 +76,23 @@ void ParticleStack::SetParticleStack(vector<Particle> particle_stack){ ...@@ -71,14 +76,23 @@ void ParticleStack::SetParticleStack(vector<Particle> particle_stack){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ParticleStack::AddParticleToStack(Particle& particle){ void ParticleStack::AddParticleToStack(Particle& particle){
// If the particle is the first one to be added, then the IC are cleared
if(m_First)
m_InitialConditions->Clear();
m_ParticleStack.push_back(particle); m_ParticleStack.push_back(particle);
m_First=false;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ParticleStack::AddBeamParticleToStack(Particle& particle){ void ParticleStack::AddBeamParticleToStack(Particle& particle){
// If the particle is the first one to be added, then the IC are cleared
if(m_First)
m_InitialConditions->Clear(); m_InitialConditions->Clear();
m_ParticleStack.push_back(particle);
m_ParticleStack.push_back(particle);
// Incident beam parameter // Incident beam parameter
m_InitialConditions-> SetIncidentParticleName (particle.GetParticleDefinition()->GetParticleName()); m_InitialConditions-> SetIncidentParticleName (particle.GetParticleDefinition()->GetParticleName());
m_InitialConditions-> SetIncidentInitialKineticEnergy (particle. GetParticleThetaCM()); m_InitialConditions-> SetIncidentInitialKineticEnergy (particle. GetParticleThetaCM());
...@@ -96,6 +110,8 @@ void ParticleStack::AddBeamParticleToStack(Particle& particle){ ...@@ -96,6 +110,8 @@ void ParticleStack::AddBeamParticleToStack(Particle& particle){
m_InitialConditions-> SetIncidentPositionX (particle. GetParticlePosition().x()); m_InitialConditions-> SetIncidentPositionX (particle. GetParticlePosition().x());
m_InitialConditions-> SetIncidentPositionY (particle. GetParticlePosition().y()); m_InitialConditions-> SetIncidentPositionY (particle. GetParticlePosition().y());
m_InitialConditions-> SetIncidentPositionZ (particle. GetParticlePosition().x()); m_InitialConditions-> SetIncidentPositionZ (particle. GetParticlePosition().x());
m_First=false;
} }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
...@@ -211,7 +227,6 @@ string ParticleStack::ChangeNameToG4Standard(string OriginalName){ ...@@ -211,7 +227,6 @@ string ParticleStack::ChangeNameToG4Standard(string OriginalName){
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ParticleStack::ShootAllParticle(G4Event* anEvent){ void ParticleStack::ShootAllParticle(G4Event* anEvent){
unsigned int size = m_ParticleStack.size(); unsigned int size = m_ParticleStack.size();
m_InitialConditions->Clear();
for(unsigned int i = 0 ; i < size ; i++){ for(unsigned int i = 0 ; i < size ; i++){
...@@ -232,4 +247,5 @@ void ParticleStack::ShootAllParticle(G4Event* anEvent){ ...@@ -232,4 +247,5 @@ void ParticleStack::ShootAllParticle(G4Event* anEvent){
} }
} }
m_ParticleStack.clear(); m_ParticleStack.clear();
m_First=true;
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment