[155] | 1 | #include "elementRfgun.h" |
---|
| 2 | |
---|
| 3 | |
---|
| 4 | #include "mathematicalTools.h" |
---|
| 5 | #include "mixedTools.h" |
---|
| 6 | |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | elementRfgun::elementRfgun() : abstractElement() |
---|
| 10 | { |
---|
| 11 | setDefaultValues(); |
---|
| 12 | setDefaults(); |
---|
| 13 | elementName_ = nomdElements("rfgun"); |
---|
[181] | 14 | nbParam_ = elementName_.getElementNbParameters(); |
---|
[155] | 15 | parametersString_ = new string[nbParam_+1]; |
---|
[243] | 16 | // parmelaOk_ = true; |
---|
[155] | 17 | } |
---|
| 18 | |
---|
| 19 | void elementRfgun::setDefaultValues() |
---|
| 20 | { |
---|
| 21 | defaultPhaseStep_ = 1.0; |
---|
| 22 | defaultNmacrop_ = 0; |
---|
| 23 | defaultSigma_t_ = 0.0; |
---|
| 24 | defaultSigma_r_ = 0.0; |
---|
| 25 | defaultE_cin_ = 0.0; |
---|
| 26 | defaultSigma_E_ = 0.0; |
---|
| 27 | defaultNb_true_particles_ = 1.0; |
---|
| 28 | } |
---|
| 29 | |
---|
| 30 | void elementRfgun::setDefaults() |
---|
| 31 | { |
---|
| 32 | phaseStep_ = defaultPhaseStep_; |
---|
| 33 | nmacrop_ = defaultNmacrop_; |
---|
| 34 | sigma_t_ = defaultSigma_t_; |
---|
| 35 | sigma_r_ = defaultSigma_r_ ; |
---|
| 36 | E_cin_ = defaultE_cin_; |
---|
| 37 | sigma_E_ = defaultSigma_E_; |
---|
| 38 | nb_true_particles_ = defaultNb_true_particles_ ; |
---|
| 39 | } |
---|
| 40 | |
---|
[243] | 41 | trivaluedBool elementRfgun::is_accepted_by_software(nomDeLogiciel soft) const { |
---|
| 42 | cout << " elementRfgun : c'est le bon is_accepted_by_software " << endl; |
---|
| 43 | if ( soft == nomDeLogiciel::parmela ) return ok; |
---|
| 44 | else return error; |
---|
| 45 | } |
---|
| 46 | |
---|
[155] | 47 | string* elementRfgun::getParametersString() const |
---|
| 48 | { |
---|
[225] | 49 | int compteur = -1; |
---|
| 50 | parametersString_[++compteur] = mixedTools::intToString(nbParam_); |
---|
| 51 | parametersString_[++compteur] = label_; |
---|
| 52 | parametersString_[++compteur] = mixedTools::intToString(nmacrop_); |
---|
| 53 | parametersString_[++compteur] = mixedTools::doubleToString(sigma_t_); |
---|
| 54 | parametersString_[++compteur] = mixedTools::doubleToString(sigma_r_); |
---|
| 55 | parametersString_[++compteur] = mixedTools::doubleToString(E_cin_); |
---|
| 56 | parametersString_[++compteur] = mixedTools::doubleToString(sigma_E_); |
---|
| 57 | parametersString_[++compteur] = mixedTools::doubleToString(nb_true_particles_); |
---|
[155] | 58 | return parametersString_; |
---|
| 59 | } |
---|
| 60 | |
---|
| 61 | void elementRfgun::setParametersString(string* param) |
---|
| 62 | { |
---|
| 63 | if ( param == NULL ) |
---|
| 64 | { |
---|
| 65 | cerr << " elementRfgun::setParametersString parameters empty parameter set"; |
---|
| 66 | return; |
---|
| 67 | } |
---|
[225] | 68 | int compteur = -1; |
---|
| 69 | int nbparam = atoi(param[++compteur].c_str()); |
---|
[155] | 70 | if ( nbparam != nbParam_ ) |
---|
| 71 | { |
---|
| 72 | cerr << " elementRfgun::setParametersString parameters do not match for a DRIFT"; |
---|
| 73 | return; |
---|
| 74 | } |
---|
| 75 | |
---|
[225] | 76 | label_ = param[++compteur]; |
---|
| 77 | nmacrop_ = atoi(param[++compteur].c_str()); |
---|
| 78 | sigma_t_ = atof(param[++compteur].c_str()); |
---|
| 79 | sigma_r_ = atof(param[++compteur].c_str()); |
---|
| 80 | E_cin_ = atof(param[++compteur].c_str()); |
---|
| 81 | sigma_E_ = atof(param[++compteur].c_str()); |
---|
| 82 | nb_true_particles_ = atof(param[++compteur].c_str()); |
---|
[155] | 83 | |
---|
| 84 | } |
---|
| 85 | |
---|
| 86 | string elementRfgun::parmelaOutputFlow() const |
---|
| 87 | { |
---|
| 88 | ostringstream sortie; |
---|
| 89 | // on prend les troncatures tmax et rmax à 3 sigmas |
---|
| 90 | sortie << "INPUT 10 /np=" << nmacrop_ << " /sigt=" << sigma_t_ << endl; |
---|
| 91 | sortie << " /tmax=" << 3.3*sigma_t_ << " /sigr=" << sigma_r_ << endl; |
---|
| 92 | sortie << " /rmax=" << 3.0*sigma_r_ << " /W0=" << E_cin_ << " /dw0=" << sigma_E_ << endl; |
---|
| 93 | sortie << " /dwt=" << phaseStep_ << " /ran=2" << endl; |
---|
| 94 | |
---|
| 95 | sortie << "SCHEFF /beami=" << -nb_true_particles_ << " /nprog=2 /point=-1.7"; |
---|
| 96 | |
---|
| 97 | return sortie.str(); |
---|
| 98 | } |
---|
| 99 | |
---|
| 100 | string elementRfgun::FileOutputFlow() const |
---|
| 101 | { |
---|
| 102 | ostringstream sortie; |
---|
| 103 | // on prend les troncatures tmax et rmax à 3 sigmas |
---|
[181] | 104 | // sortie << elementName_.getElementType() << endl; |
---|
| 105 | sortie << elementName_.getElementLabel() << endl; |
---|
[155] | 106 | sortie << label_ << endl; |
---|
| 107 | sortie << nmacrop_ << " " << sigma_t_ << " " << sigma_r_ << endl; |
---|
| 108 | sortie << E_cin_ << " " << sigma_E_ << endl; |
---|
| 109 | sortie << phaseStep_ << " " << nb_true_particles_ << endl; |
---|
| 110 | return sortie.str(); |
---|
| 111 | } |
---|
| 112 | |
---|
| 113 | void elementRfgun::FileInput(ifstream& ifs) |
---|
| 114 | { |
---|
| 115 | ifs >> label_; |
---|
| 116 | ifs >> nmacrop_ >> sigma_t_ >> sigma_r_; |
---|
| 117 | ifs >> E_cin_ >> sigma_E_; |
---|
| 118 | ifs >> phaseStep_ >> nb_true_particles_; |
---|
| 119 | } |
---|