source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/softwareTest.cc @ 472

Last change on this file since 472 was 472, checked in by garnier, 10 years ago

Modification pour remettre en marche le Run. Desormais Transport passe, mais aucun test ne permet de dire si c est bon

File size: 3.6 KB
Line 
1#include "softwareTest.h"
2#include "abstractElement.h"
3#include "dataManager.h"
4#include "mathematicalConstants.h"
5#include "PhysicalConstants.h"
6
7
8softwareTest::softwareTest() : abstractSoftware()
9{
10  nameOfSoftware_ = nomDeLogiciel("test");
11}
12
13
14
15
16softwareTest::softwareTest(string inputFileName,sectionToExecute* sect, dataManager* data) : abstractSoftware(inputFileName, sect,data)
17{
18  nameOfSoftware_ = nomDeLogiciel("test");
19}
20
21bool softwareTest::createInputFile( particleBeam* beamBefore, string workingDir)
22{
23    dataManager_->consoleMessage(" softwareTest::createInputFile  " );
24
25    beamToParin(workingDir, beamBefore );
26
27
28
29  return true;
30}
31
32bool  softwareTest::execute(string workingDir) {
33    dataManager_->consoleMessage(" softwareTest::execute  " );
34  return true;
35}
36
37bool  softwareTest::buildBeamAfterElements(string workingDir) {
38  dataManager_->consoleMessage(" softwareTest::buildBeamAfterElements  " );
39  bool result = true;
40  for ( unsigned int k=0; k < getSectionToExecute()->getElements().size() ; k++ ) {
41      particleBeam* newDiag = dataManager_->updateCurrentDiagnostic(true);
42  //      beams.push_back(particleBeam());
43      vector<double> centroid = vector<double>(6,0.0);
44      bareParticle refPart;
45      vector<bareParticle> particles;
46           
47 
48      if (!beamFromParin(workingDir,particles ) )
49        {
50          dataManager_->consoleMessage(" softwareTest::buildBeamAfterElements : reading parin  failed " );
51          result = false;
52          break;
53        }
54      else {
55        bareParticle refPart (particles.at(0));
56        newDiag->setWithParticles(centroid, refPart,particles); 
57      }
58    }
59  return result;
60}
61
62// sauvegarde d'un 'particleBeam' sur un fichier parmela, en guise d'INPUT
63// pour l'instant de nom standard 'parin.input0'
64bool softwareTest::beamToParin(string workingDir, particleBeam* beam ) {
65  if ( !beam->particleRepresentationOk() ) {
66    dataManager_->consoleMessage("softwareParmela::beamToParmela : beam not in particles form : not yet programmed");
67    cout << " softwareParmela::beamToParmela : beam not in particles form : not yet programmed " << endl;
68    return false;
69  }
70  ofstream outfile;
71  string name = workingDir + "parin.input0";
72  outfile.open(name.c_str(), ios::out);
73  if (!outfile) {
74    dataManager_->consoleMessage(" softwareTest::beamToParin : error opening in stream ");
75    cerr << " softwareParmela::beamToParmela : error opening output stream " << name << endl;
76    return false;
77  }
78
79  const vector<bareParticle>& partic = beam->getParticleVector();
80  unsigned k;
81  double weight = 1.0;
82  double xx,yy,zz;
83  double begamx, begamy, begamz;
84  for ( k=0; k < partic.size(); k++) {
85    partic.at(k).getPosition().getComponents(xx,yy,zz);
86    partic.at(k).getBetaGamma().getComponents(begamx, begamy, begamz);
87    outfile << xx << " " << begamx << " " <<  yy << " " << begamy << " " << zz << " " << begamz  << " " << weight << endl;
88  }
89  outfile.close();
90  return true;
91}
92
93bool softwareTest::beamFromParin(string workingDir, vector<bareParticle>& particles ) {
94  ifstream infile;
95  string name = workingDir + "parin.input0";
96  infile.open(name.c_str(), ios::in);
97  if (!infile) {
98    dataManager_->consoleMessage(" softwareParmela::beamToParmela : error opening output stream ");
99    cerr << " softwareParmela::beamToParmela : error opening output stream " << name << endl;
100    return false;
101  }
102
103  particles.clear();
104  double weight;
105  double xx,yy,zz;
106  double begamx, begamy, begamz;
107  TRIDVECTOR  pos;
108  TRIDVECTOR betagamma;
109  while ( infile >> xx >> begamx >>  yy >>  begamy >> zz >> begamz  >> weight) {
110    pos.setComponents(xx,yy,zz);
111    betagamma.setComponents(begamx, begamy, begamz);
112    particles.push_back(bareParticle(pos,betagamma));
113  }
114  infile.close();
115  return true;
116}
Note: See TracBrowser for help on using the repository browser.