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

Last change on this file since 487 was 485, checked in by lemeur, 10 years ago

liste des logiciels compatibles dans les tooltip des elements

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_ = new nomDeLogiciel("test");
11}
12
13
14
15
16softwareTest::softwareTest(string inputFileName,sectionToExecute* sect, dataManager* data) : abstractSoftware(inputFileName, sect,data)
17{
18  nameOfSoftware_ = new 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.