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

Last change on this file since 455 was 455, checked in by garnier, 11 years ago

grosse modification pour intégrer les sections

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