diff options
author | Jakob Odersky <jodersky@gmail.com> | 2011-05-19 08:33:16 +0000 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2011-05-19 08:33:16 +0000 |
commit | 2c8bb59d4ccca47c5342ee030f31e13c0cb2674b (patch) | |
tree | db127642457cd6bccf32f0d8a5dea3c83f8d67db /src/main/CircularBeam.cc | |
parent | b88deff7c45593bb6ad0780b70ce929346056aae (diff) | |
download | vhc-2c8bb59d4ccca47c5342ee030f31e13c0cb2674b.tar.gz vhc-2c8bb59d4ccca47c5342ee030f31e13c0cb2674b.tar.bz2 vhc-2c8bb59d4ccca47c5342ee030f31e13c0cb2674b.zip |
Migration des particules vers les faisceau.
Il reste une subtilite a gerer: pour des raisons de compatibilite, un accelerateur contient toujours une methode getParticles(). Celle-ci renvoi une concatenation de tous les particules de tous les faisceaux de l'accelerateur.
Or il y a un probleme d'allocation de la memoire avec cette methode (temporairement repare dans cette revision mais degeu!). Je vois deux solutions:
1) changer tous les test qui appellent la methode getParticles()
2) essayer de reparer le probleme d'allocation (difficile et je ne sais pas si c'est possible)
Diffstat (limited to 'src/main/CircularBeam.cc')
-rw-r--r-- | src/main/CircularBeam.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/CircularBeam.cc b/src/main/CircularBeam.cc index ee2fa9d..fefc3f9 100644 --- a/src/main/CircularBeam.cc +++ b/src/main/CircularBeam.cc @@ -6,6 +6,8 @@ */ #include "CircularBeam.h" +#include "Particle.h" +#include "Element.h" namespace vhc { @@ -15,7 +17,26 @@ CircularBeam::CircularBeam(const Particle& referenceParticle, int quantity, int CircularBeam::~CircularBeam() {} -CircularBeam::init(const Particle& referenceParticle, int quantity, int lambda) { +void CircularBeam::initializeParticles() { + Element* element = referenceParticle.getElement(); + + for (int i = 0; i < quantity / lambda; ++i) { + + particles.push_back(new Particle( + element->getEntryPosition(), + referenceParticle.getMass() * lambda, + referenceParticle.getCharge() * lambda, + referenceParticle.getEnergy(), + element->getDiagonal() + )); + + element = element->getNext(); + } } + +CircularBeam* CircularBeam::clone() const { + return new CircularBeam(referenceParticle, quantity, lambda); +} + } |