summaryrefslogtreecommitdiff
path: root/src/main/CircularBeam.cc
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2011-05-19 08:33:16 +0000
committerJakob Odersky <jodersky@gmail.com>2011-05-19 08:33:16 +0000
commit2c8bb59d4ccca47c5342ee030f31e13c0cb2674b (patch)
treedb127642457cd6bccf32f0d8a5dea3c83f8d67db /src/main/CircularBeam.cc
parentb88deff7c45593bb6ad0780b70ce929346056aae (diff)
downloadvhc-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.cc23
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);
+}
+
}