Ignore:
Timestamp:
Sep 30, 2013, 5:03:21 PM (11 years ago)
Author:
touze
Message:

sauvgarde de la configuration sur fichier format AML

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Interface_Web/trunk/pspaWT/sources/controler/src/elementRfgun.cc

    r418 r424  
    11#include "elementRfgun.h"
    2 
    32
    43#include "mathematicalTools.h"
     
    98elementRfgun::elementRfgun() : abstractElement()
    109{
    11     setDefaultValues();
    12     setDefaults();
    13     elementName_ = nomdElements("rfgun");
    14     nbParam_ = elementName_.getElementNbParameters();
    15     parametersString_ = new string[nbParam_+1];
    16     //      parmelaOk_ = true;
    17     // registerAcceptableSoftware(nomDeLogiciel::parmela, TBoolOk);
    18     // registerAcceptableSoftware(nomDeLogiciel::generator, TBoolOk);
     10  setDefaultValues();
     11  setDefaults();
     12  elementName_ = nomdElements("rfgun");
     13  nbParam_ = elementName_.getElementNbParameters();
     14  parametersString_ = new string[nbParam_+1];
     15  //      parmelaOk_ = true;
     16  // registerAcceptableSoftware(nomDeLogiciel::parmela, TBoolOk);
     17  // registerAcceptableSoftware(nomDeLogiciel::generator, TBoolOk);
    1918}
    2019
    2120void elementRfgun::setDefaultValues()
    2221{
    23     defaultSpecificName_ = "rfgun";
    24     defaultPhaseStep_ = 1.0;
    25     defaultNmacrop_ = 0;
    26     defaultSigma_t_ = 0.0;
    27     defaultSigma_r_ = 0.0;
    28     defaultEmit_x_ = 0.0;
    29     defaultEmit_y_ = 0.0;
    30     defaultE_cin_ = 0.0;
    31     defaultSigma_E_ = 0.0;
    32     //    defaultNb_true_particles_ = 1.0;
    33     defaultTotalCharge_ = 0.0;
     22  defaultSpecificName_ = "rfgun";
     23  defaultPhaseStep_ = 1.0;
     24  defaultNmacrop_ = 0;
     25  defaultSigma_t_ = 0.0;
     26  defaultSigma_r_ = 0.0;
     27  defaultEmit_x_ = 0.0;
     28  defaultEmit_y_ = 0.0;
     29  defaultE_cin_ = 0.0;
     30  defaultSigma_E_ = 0.0;
     31  //    defaultNb_true_particles_ = 1.0;
     32  defaultTotalCharge_ = 0.0;
     33}
     34
     35void elementRfgun::setDefaults()
     36{
     37  specificName_ = defaultSpecificName_;
     38  phaseStep_ = defaultPhaseStep_;
     39  nmacrop_ = defaultNmacrop_;
     40  sigma_t_ = defaultSigma_t_;
     41  sigma_r_ = defaultSigma_r_ ;
     42  emit_x_ = defaultEmit_x_;
     43  emit_y_ = defaultEmit_y_;
     44  E_cin_ = defaultE_cin_;
     45  sigma_E_ = defaultSigma_E_;
     46  //    nb_true_particles_ = defaultNb_true_particles_ ;
     47  totalCharge_ = defaultTotalCharge_;
     48}
     49
     50string* elementRfgun::getParametersString() const
     51{
     52  int compteur = -1;
     53  parametersString_[++compteur] = mixedTools::intToString(nbParam_);
     54  parametersString_[++compteur] = specificName_;
     55  parametersString_[++compteur] = mixedTools::intToString(nmacrop_);
     56  parametersString_[++compteur] = mixedTools::doubleToString(sigma_t_);
     57  parametersString_[++compteur] = mixedTools::doubleToString(sigma_r_);
     58  parametersString_[++compteur] = mixedTools::doubleToString(emit_x_);
     59  parametersString_[++compteur] = mixedTools::doubleToString(emit_y_);
     60  parametersString_[++compteur] = mixedTools::doubleToString(E_cin_);
     61  parametersString_[++compteur] = mixedTools::doubleToString(sigma_E_);
     62  parametersString_[++compteur] = mixedTools::doubleToString(totalCharge_);
     63  return parametersString_;
     64}
     65
     66void elementRfgun::setParametersString(string* param)
     67{
     68  if ( param == NULL ) {
     69    cerr << "  elementRfgun::setParametersString parameters empty parameter set";
     70    return;
    3471  }
    35 
    36   void elementRfgun::setDefaults()
    37   {
    38     specificName_ = defaultSpecificName_;
    39     phaseStep_ = defaultPhaseStep_;
    40     nmacrop_ = defaultNmacrop_;
    41     sigma_t_ = defaultSigma_t_;
    42     sigma_r_ = defaultSigma_r_ ;
    43     emit_x_ = defaultEmit_x_;
    44     emit_y_ = defaultEmit_y_;
    45     E_cin_ = defaultE_cin_;
    46     sigma_E_ = defaultSigma_E_;
    47     //    nb_true_particles_ = defaultNb_true_particles_ ;
    48     totalCharge_ = defaultTotalCharge_;
     72  int compteur = -1;
     73  int nbparam = atoi(param[++compteur].c_str());
     74  if ( nbparam != nbParam_ ) {
     75    cerr << "  elementRfgun::setParametersString parameters do not match for a DRIFT";
     76    return;
    4977  }
    50 
    51 
    52 string* elementRfgun::getParametersString() const
    53   {
    54    int compteur = -1;
    55     parametersString_[++compteur] = mixedTools::intToString(nbParam_);
    56   parametersString_[++compteur] = specificName_;
    57     parametersString_[++compteur] = mixedTools::intToString(nmacrop_);
    58     parametersString_[++compteur] = mixedTools::doubleToString(sigma_t_);
    59     parametersString_[++compteur] = mixedTools::doubleToString(sigma_r_);
    60     parametersString_[++compteur] = mixedTools::doubleToString(emit_x_);
    61     parametersString_[++compteur] = mixedTools::doubleToString(emit_y_);
    62     parametersString_[++compteur] = mixedTools::doubleToString(E_cin_);
    63     parametersString_[++compteur] = mixedTools::doubleToString(sigma_E_);
    64     parametersString_[++compteur] = mixedTools::doubleToString(totalCharge_);
    65     return parametersString_;
    66   }
    67 
    68   void elementRfgun::setParametersString(string* param)
    69   {
    70     if ( param == NULL )
    71       {
    72         cerr << "  elementRfgun::setParametersString parameters empty parameter set";
    73         return;
    74       }
    75    int compteur = -1;
    76     int nbparam = atoi(param[++compteur].c_str());
    77     if ( nbparam != nbParam_ )
    78       {
    79         cerr << "  elementRfgun::setParametersString parameters do not match for a DRIFT";
    80         return;
    81       }
    82 
    83     specificName_ = param[++compteur];
    84     nmacrop_ = atoi(param[++compteur].c_str());
    85     sigma_t_ = atof(param[++compteur].c_str());
    86     sigma_r_ = atof(param[++compteur].c_str());
    87     emit_x_ = atof(param[++compteur].c_str());
    88     emit_y_ = atof(param[++compteur].c_str());
    89     E_cin_ = atof(param[++compteur].c_str());
    90     sigma_E_ = atof(param[++compteur].c_str());
    91     totalCharge_ = atof(param[++compteur].c_str());
    92 
    93   }
     78 
     79  specificName_ = param[++compteur];
     80  nmacrop_ = atoi(param[++compteur].c_str());
     81  sigma_t_ = atof(param[++compteur].c_str());
     82  sigma_r_ = atof(param[++compteur].c_str());
     83  emit_x_ = atof(param[++compteur].c_str());
     84  emit_y_ = atof(param[++compteur].c_str());
     85  E_cin_ = atof(param[++compteur].c_str());
     86  sigma_E_ = atof(param[++compteur].c_str());
     87  totalCharge_ = atof(param[++compteur].c_str()); 
     88}
    9489
    9590// string elementRfgun::parmelaOutputFlow() const
     
    131126// }
    132127
    133 
    134 
    135128string elementRfgun::FileOutputFlow() const
    136   {
    137     ostringstream sortie;
    138     // on prend les troncatures tmax et rmax à 3 sigmas
    139     //    sortie << elementName_.getElementType() << endl;
    140     sortie << elementName_.getGenericLabel() << endl;
    141     sortie  << specificName_ << endl;
    142     sortie <<  nmacrop_ << "  " << sigma_t_ << "  " << sigma_r_ << endl;
    143     sortie << emit_x_ << "  " << emit_y_ << endl;
    144     sortie << E_cin_ << " " << sigma_E_ << endl;
    145     sortie << phaseStep_ << "  "  << totalCharge_ << endl;
    146     return sortie.str();
    147   }
    148 
    149 vector< pair<string, vector<string> > > elementRfgun::parametersToSoftware () const {
     129{
     130  ostringstream sortie;
     131  // on prend les troncatures tmax et rmax à 3 sigmas
     132  //    sortie << elementName_.getElementType() << endl;
     133  sortie << elementName_.getGenericLabel() << endl;
     134  sortie  << specificName_ << endl;
     135  sortie <<  nmacrop_ << "  " << sigma_t_ << "  " << sigma_r_ << endl;
     136  sortie << emit_x_ << "  " << emit_y_ << endl;
     137  sortie << E_cin_ << " " << sigma_E_ << endl;
     138  sortie << phaseStep_ << "  "  << totalCharge_ << endl;
     139  return sortie.str();
     140}
     141
     142vector< pair<string, vector<string> > > elementRfgun::parametersToSoftware () const
     143{
    150144  vector< pair<string, vector<string> > >  sortie;
    151145  sortie.push_back( pair<string, vector<string> >("labelsGenericSpecific",  vector<string>() ) );
     
    179173}
    180174
    181 
    182 string elementRfgun::print() {
    183     string txt = "";
    184    
    185     txt += specificName_;
    186     txt += "\ntotal charge : ";
    187     txt += mixedTools::doubleToString(totalCharge_);
    188     txt += "\nsigma_t (ps) : ";
    189     txt += mixedTools::doubleToString(sigma_t_);
    190     txt += "\nsigma_r (cm) : ";
    191     txt += mixedTools::doubleToString(sigma_r_);
    192     txt += "\nemittance x (pi.mm.mrad) : ";
    193     txt += mixedTools::doubleToString(emit_x_);
    194     txt += "\nemittance y (pi.mm.mrad) : ";
    195     txt += mixedTools::doubleToString(emit_y_);
    196     txt += "\ninitial kinetic energy (MeV) : ";
    197     txt += mixedTools::doubleToString(E_cin_);
    198     txt += "\nsigma_Ecin (MeV) : ";
    199     txt += mixedTools::doubleToString(sigma_E_);
    200     txt += "\ntrue number of part. in beam : ";
    201     txt += mixedTools::boolToString(nmacrop_);
    202    
    203     return txt;
    204 }
     175string elementRfgun::print()
     176{
     177  string txt = "";
     178  txt += specificName_;
     179  txt += "\ntotal charge : ";
     180  txt += mixedTools::doubleToString(totalCharge_);
     181  txt += "\nsigma_t (ps) : ";
     182  txt += mixedTools::doubleToString(sigma_t_);
     183  txt += "\nsigma_r (cm) : ";
     184  txt += mixedTools::doubleToString(sigma_r_);
     185  txt += "\nemittance x (pi.mm.mrad) : ";
     186  txt += mixedTools::doubleToString(emit_x_);
     187  txt += "\nemittance y (pi.mm.mrad) : ";
     188  txt += mixedTools::doubleToString(emit_y_);
     189  txt += "\ninitial kinetic energy (MeV) : ";
     190  txt += mixedTools::doubleToString(E_cin_);
     191  txt += "\nsigma_Ecin (MeV) : ";
     192  txt += mixedTools::doubleToString(sigma_E_);
     193  txt += "\ntrue number of part. in beam : ";
     194  txt += mixedTools::boolToString(nmacrop_);
     195  return txt;
     196}
     197
     198void elementRfgun::InputRep(UAPNode* root)
     199{
     200  UAPNode* ele = root->addChild("element");
     201  ele->addAttribute("name",specificName_);
     202
     203  UAPNode* node = ele->addChild("comment");
     204  node->addAttribute("type","RFgun");
     205  node->addAttribute("text","to simulate emission from a photocathode");
     206
     207  node = ele->addChild("beam");
     208  node->addChild("particle")->addAttribute("type","ELECTRON");
     209  string txt = "";
     210  txt = mixedTools::intToString(nmacrop_);
     211  node->addChild("n_particles")->addAttribute("design",txt);
     212  txt = mixedTools::doubleToString(sigma_t_);
     213  node->addChild("sig_t")->addAttribute("design",txt);
     214  txt = mixedTools::doubleToString(emit_x_);
     215  node->addChild("emittance_a")->addAttribute("design",txt);
     216  txt = mixedTools::doubleToString(emit_y_);
     217  node->addChild("emittance_b")->addAttribute("design",txt);
     218  txt = mixedTools::doubleToString(E_cin_);
     219  txt = mixedTools::doubleToString(E_cin_);
     220  node->addChild("total_energy")->addAttribute("design",txt);
     221  txt = mixedTools::doubleToString(sigma_E_);
     222  node->addChild("sig_e")->addAttribute("design",txt);
     223  txt = mixedTools::doubleToString(totalCharge_);
     224  node->addChild("particle_charge")->addAttribute("design",txt);
     225
     226  // gaussian radial profile
     227  txt = mixedTools::doubleToString(sigma_r_);
     228  ele->addChild("sigma_r")->addAttribute("value",txt);
     229  // integration step size (specific to Parmela)
     230  txt = mixedTools::doubleToString(phaseStep_);
     231  ele->addChild("phaseStep")->addAttribute("value",txt);
     232}
     233
Note: See TracChangeset for help on using the changeset viewer.