/* * ElementsSimulationTest.cc * * Created on: 4 mai 2011 * Author: christian */ #include #include "exceptions.h" #include "CurvedElement.h" #include "Dipole.h" #include "FODO.h" #include "Quadrupole.h" #include "Vector3D.h" #include "Accelerator.h" #include using namespace std; using namespace vhc; Particle* standpart(Accelerator* acc){ Particle* sp = new Particle( acc->getElements().front()->getExitPosition(),//position, on le met à la fin des éléments constants::PROTON_MASS,//mass constants::E,//charge 2*constants::GeV,//energy Vector3D(1, 0,0));//direction return sp; }; // Ce fichier teste les simulations de chaque type différent d'Element existant. int main() { Dipole* d = new Dipole(Vector3D(0,0,0), Vector3D(1,0,0), 0.2, 0.2, Vector3D::Null, NULL); Accelerator* a1 = new Accelerator(); a1->add(*d); Quadrupole* fq = new Quadrupole(Vector3D(0,0,0), Vector3D(1, 0, 0), 0.1, 1.2); Accelerator* a2 = new Accelerator(); a2->add(*fq); FODO* fodo = new FODO(Vector3D(0,0,0), Vector3D(1, 0,0), 0.2, 0.2, 3); Accelerator* a3 = new Accelerator(); a3->add(*fodo); vector < Accelerator* > va; va.push_back(a1); va.push_back(a2); va.push_back(a3); // on va mettre dans chaque accélérateur une particule d'attributs standards, // mais toutes situées à l'entrée de chaque accélérateur. for(unsigned int i(0); iadd(*p); va[i]->enableLinear(true); va[i]->close(); //nbr d'iterations de la simulation int it(14); //etat initial cout<<*va[i]<step(10E-11); if(!(va[i]->getParticles()->empty())){ cout<<"after "<getParticles()->front()->toString())<