Changeset 424 in PSPA for Interface_Web/trunk/pspaWT/sources/controler/src/elementRfgun.cc
- Timestamp:
- Sep 30, 2013, 5:03:21 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Interface_Web/trunk/pspaWT/sources/controler/src/elementRfgun.cc
r418 r424 1 1 #include "elementRfgun.h" 2 3 2 4 3 #include "mathematicalTools.h" … … 9 8 elementRfgun::elementRfgun() : abstractElement() 10 9 { 11 12 13 14 15 16 17 18 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); 19 18 } 20 19 21 20 void elementRfgun::setDefaultValues() 22 21 { 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 35 void 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 50 string* 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 66 void elementRfgun::setParametersString(string* param) 67 { 68 if ( param == NULL ) { 69 cerr << " elementRfgun::setParametersString parameters empty parameter set"; 70 return; 34 71 } 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; 49 77 } 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 } 94 89 95 90 // string elementRfgun::parmelaOutputFlow() const … … 131 126 // } 132 127 133 134 135 128 string 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 142 vector< pair<string, vector<string> > > elementRfgun::parametersToSoftware () const 143 { 150 144 vector< pair<string, vector<string> > > sortie; 151 145 sortie.push_back( pair<string, vector<string> >("labelsGenericSpecific", vector<string>() ) ); … … 179 173 } 180 174 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 } 175 string 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 198 void 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.