From 2c8bb59d4ccca47c5342ee030f31e13c0cb2674b Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Thu, 19 May 2011 08:33:16 +0000 Subject: 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) --- src/main/CircularBeam.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/main/CircularBeam.cc') 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); +} + } -- cgit v1.2.3