CMS 3D CMS Logo

Herwig6Source.cc

Go to the documentation of this file.
00001 /*
00002  *  Original Author: Fabian Stoeckli 
00003  *  26/09/06
00004  * 
00005  */
00006 
00007 #include "GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h"
00008 #include "GeneratorInterface/Herwig6Interface/interface/Dummies.h"
00009 #include "GeneratorInterface/Herwig6Interface/interface/HWRGEN.h"
00010 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00011 
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
00014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00015 #include "SimDataFormats/HepMCProduct/interface/GenInfoProduct.h"
00016 #include "FWCore/Framework/interface/Run.h"
00017 
00018 #include <iostream>
00019 #include "time.h"
00020 #include <ctype.h>
00021 
00022 using namespace edm;
00023 using namespace std;
00024 
00025 #include "HepMC/HerwigWrapper6_4.h"
00026 #include "HepMC/IO_HERWIG.h"
00027 
00028 // INCLUDE JIMMY,HERWIG,LHAPDF COMMON BLOCKS AND FUNTIONS
00029 #include "herwig.h"
00030 
00031 
00032 extern"C" {
00033   void setpdfpath_(char*,int*);
00034   void mysetpdfpath_(char*);
00035   void setlhaparm_(char*);
00036   void setherwpdf_(void);
00037   // function to chatch 'STOP' in original HWWARN
00038 //void cmsending_(int*);
00039 }
00040 
00041 #define setpdfpath setpdfpath_
00042 #define mysetpdfpath mysetpdfpath_
00043 #define setlhaparm setlhaparm_
00044 #define setherwpdf setherwpdf_
00045 
00046 // -----------------  Source Code -----------------------------------------
00047 Herwig6Source::Herwig6Source( const ParameterSet & pset, 
00048                             InputSourceDescription const& desc ) :
00049   GeneratedInputSource(pset, desc), evt(0), 
00050   herwigVerbosity_ (pset.getUntrackedParameter<int>("herwigVerbosity",0)),
00051   herwigHepMCVerbosity_ (pset.getUntrackedParameter<bool>("herwigHepMCVerbosity",false)),
00052   herwigLhapdfVerbosity_ (pset.getUntrackedParameter<int>("herwigLhapdfVerbosity",0)),
00053   maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",0)),
00054   comenergy(pset.getUntrackedParameter<double>("comEnergy",14000.)),
00055   lhapdfSetPath_(pset.getUntrackedParameter<string>("lhapdfSetPath","")),
00056   useJimmy_(pset.getUntrackedParameter<bool>("useJimmy",true)),
00057   doMPInteraction_(pset.getUntrackedParameter<bool>("doMPInteraction",true)),
00058   printCards_(pset.getUntrackedParameter<bool>("printCards",false)),
00059   numTrials_(pset.getUntrackedParameter<int>("numTrialsMPI",100)),
00060   extCrossSect(pset.getUntrackedParameter<double>("crossSection", -1.)),
00061   extFilterEff(pset.getUntrackedParameter<double>("filterEfficiency", -1.))
00062 {
00063 
00064   std::ostringstream header_str;
00065 
00066   header_str << "----------------------------------------------\n";
00067   header_str << "Initializing Herwig6Source\n";
00068   header_str << "----------------------------------------------\n";
00069 
00070   
00071   /* herwigVerbosity Level IPRINT
00072      valid argumets are: 0: print title only
00073                          1: + print selected input parameters
00074                          2: + print table of particle codes and properties
00075                          3: + tables of Sudakov form factors  
00076               *** NOT IMPLEMENTED ***
00077       LHA vebosity:      0=silent 
00078                          1=lowkey (default) 
00079                          2=all 
00080   */
00081 
00082   header_str << "   Herwig verbosity level         = " << herwigVerbosity_ << "\n";
00083   header_str << "   LHAPDF verbosity level         = " << herwigLhapdfVerbosity_ << "\n";
00084   header_str << "   HepMC verbosity                = " << herwigHepMCVerbosity_ << "\n";
00085   header_str << "   Number of events to be printed = " << maxEventsToPrint_ << "\n";
00086 
00087 
00088   if(useJimmy_) {
00089     header_str << "   HERWIG will be using JIMMY for UE/MI." << "\n";
00090     if(doMPInteraction_) 
00091       header_str << "   JIMMY trying to generate multiple interactions." << "\n";
00092   }
00093 
00094   // setting up lhapdf path name from environment varaible (***)
00095   char* lhaPdfs = NULL;
00096   header_str<<"   Trying to find LHAPATH in environment ...";
00097   lhaPdfs = getenv("LHAPATH");
00098   if(lhaPdfs != NULL) {
00099     header_str<<" done.\n";
00100     lhapdfSetPath_=std::string(lhaPdfs);
00101   }
00102   else
00103     header_str<<" failed.\n";
00104 
00105 
00106   // Call hwudat to set up HERWIG block data
00107   hwudat();
00108   
00109 
00110   // Setting basic parameters ...
00111   hwproc.PBEAM1 = comenergy/2.;
00112   hwproc.PBEAM2 = comenergy/2.;
00113   hwbmch.PART1[0]  = 'P';
00114   hwbmch.PART2[0]  = 'P';
00115   for(int i=1;i<8;++i){
00116     hwbmch.PART1[i]  = ' ';
00117     hwbmch.PART2[i]  = ' ';}
00118   int numEvents = maxEvents();  
00119   if(useJimmy_) jmparm.MSFLAG = 1;
00120 
00121   // initialize other common blocks ...
00122   hwigin();
00123 
00124   hwevnt.MAXER = int(numEvents/10);
00125   if(hwevnt.MAXER<100) hwevnt.MAXER = 100;
00126 
00127   if(useJimmy_) jimmin();
00128   
00129   // set some 'non-herwig' defaults
00130   hwevnt.MAXPR =  maxEventsToPrint_;           // no printing out of events
00131   hwpram.IPRINT = herwigVerbosity_;            // HERWIG print out mode
00132   hwprop.RMASS[6] = 175.0;
00133 
00134   // Set HERWIG parameters in a single ParameterSet
00135   ParameterSet herwig_params = 
00136     pset.getParameter<ParameterSet>("HerwigParameters") ;
00137   
00138   // The parameter sets to be read (default, min bias, user ...) in the proper order.
00139   vector<string> setNames = 
00140     herwig_params.getParameter<vector<string> >("parameterSets");  
00141   
00142   // Loop over the sets
00143   for ( unsigned i=0; i<setNames.size(); ++i ) {    
00144     string mySet = setNames[i];
00145     vector<string> pars = 
00146       herwig_params.getParameter<vector<string> >(mySet);
00147     
00148     header_str << "----------------------------------------------" << "\n";
00149     header_str << "Read HERWIG parameter set " << mySet << "\n";
00150     header_str << "----------------------------------------------" << "\n";
00151     
00152     // Loop over all parameters and stop in case of mistake
00153     for( vector<string>::const_iterator  
00154            itPar = pars.begin(); itPar != pars.end(); ++itPar ) {
00155       static string sRandomValueSetting1("NRN(1)");
00156       static string sRandomValueSetting2("NRN(2)");
00157       if( (0 == itPar->compare(0,sRandomValueSetting1.size(),sRandomValueSetting1) )||(0 == itPar->compare(0,sRandomValueSetting2.size(),sRandomValueSetting2) )) {
00158         throw edm::Exception(edm::errors::Configuration,"HerwigError")
00159           <<" attempted to set random number using pythia command 'NRN(.)'. This is not allowed.\n  Please use the RandomNumberGeneratorService to set the random number seed.";
00160       }
00161       
00162       if( ! hwgive(*itPar) ) {
00163         throw edm::Exception(edm::errors::Configuration,"HerwigError") 
00164           <<" herwig did not accept the following \""<<*itPar<<"\"";
00165       }
00166       else if(printCards_)
00167         header_str << "   " << *itPar << "\n";
00168     }
00169   }
00170 
00171   // setting up herwgi RNG seeds NRN(.)
00172   header_str << "----------------------------------------------" << "\n";
00173   header_str << "Setting Herwig random number generator seeds" << "\n";
00174   header_str << "----------------------------------------------" << "\n";
00175   edm::Service<RandomNumberGenerator> rng;
00176   fRandomEngine = &(rng->getEngine());
00177   randomEngine = fRandomEngine;
00178   int wwseed = rng->mySeed();
00179   bool rngok = setRngSeeds(wwseed);
00180   if(!rngok)
00181     throw edm::Exception(edm::errors::Configuration,"HerwigError")
00182       <<" Impossible error in setting 'NRN(.)'.";
00183   header_str << "   NRN(1) = "<<hwevnt.NRN[0]<<"\n";
00184   header_str << "   NRN(2) = "<<hwevnt.NRN[1]<<"\n";
00185 
00186   // set the LHAPDF grid directory and path
00187   setherwpdf();
00188   char pdfpath[232];
00189   int pathlen = lhapdfSetPath_.length();
00190   for(int i=0; i<pathlen; ++i) 
00191   pdfpath[i]=lhapdfSetPath_.at(i);
00192   for(int i=pathlen; i<232; ++i) 
00193   pdfpath[i]=' ';
00194   mysetpdfpath(pdfpath);
00195 
00196   // HERWIG preparations ...
00197   hwuinc();
00198   hwusta("PI0     ",1);
00199   hweini();
00200   if(useJimmy_) jminit();
00201 
00202   produces<HepMCProduct>();
00203   produces<GenInfoProduct, edm::InRun>();
00204 
00205   header_str << "\n----------------------------------------------" << "\n";
00206   header_str << "Starting event generation" << "\n";
00207   header_str << "----------------------------------------------" << "\n";
00208 
00209   edm::LogInfo("")<<header_str.str(); 
00210 
00211 
00212 }
00213 
00214 
00215 Herwig6Source::~Herwig6Source(){
00216 
00217   std::ostringstream footer_str;
00218 
00219   footer_str << "----------------------------------------------" << "\n";
00220   footer_str << "Event generation done" << "\n";
00221   footer_str << "----------------------------------------------" << "\n";
00222 
00223   LogInfo("") << footer_str.str();
00224 
00225   clear();
00226 }
00227 
00228 void Herwig6Source::clear() {
00229   // teminate elementary process
00230   hwefin();
00231   if(useJimmy_) jmefin();
00232 }
00233 
00234 
00235 bool Herwig6Source::produce(Event & e) {
00236 
00237   int counter = 0;
00238   double mpiok = 1.0;
00239 
00240   while(mpiok > 0.5 && counter < numTrials_) {
00241 
00242     // call herwig routines to create HEPEVT
00243     hwuine();
00244     hwepro();
00245     hwbgen();  
00246 
00247     // call jimmy ... only if event is not killed yet by HERWIG
00248     if(useJimmy_ && doMPInteraction_ && hwevnt.IERROR==0)
00249       mpiok = hwmsct_dummy(1.1);
00250     else mpiok = 0.0;
00251     counter++;
00252   }
00253   
00254   // event after numTrials MP is not ok -> skip event
00255   if(mpiok > 0.5) {
00256     LogWarning("") <<"   JIMMY could not produce MI in "<<numTrials_<<" trials.\n"<<"   Event will be skipped to prevent from deadlock.\n";
00257     return true;
00258   }  
00259   
00260   hwdhob();
00261   hwcfor();
00262   hwcdec();
00263   hwdhad();
00264   hwdhvy();
00265   hwmevt();
00266   hwufne();
00267   
00268   // if event was killed by HERWIG; skip 
00269   if(hwevnt.IERROR!=0) return true;
00270 
00271   // -----------------  HepMC converter --------------------
00272   HepMC::IO_HERWIG conv;
00273 
00274   // HEPEVT is ok, create new HepMC event
00275   evt = new HepMC::GenEvent();
00276   bool ok = conv.fill_next_event( evt );
00277   // if conversion failed; throw excpetion and stop processing
00278   if(!ok) throw cms::Exception("HerwigError")
00279     <<" Conversion problems in event nr."<<numberEventsInRun() - remainingEvents() - 1<<".";  
00280 
00281   // set process id and event number
00282   evt->set_signal_process_id(hwproc.IPROC);  
00283   evt->set_event_number(numberEventsInRun() - remainingEvents() - 1);
00284   
00285   if (herwigHepMCVerbosity_) {
00286     LogWarning("") << "Event process = " << evt->signal_process_id() << "\n----------------------\n";
00287     evt->print();
00288   }
00289   
00290   // dummy if: event MUST be there
00291   if(evt)  {
00292     auto_ptr<HepMCProduct> bare_product(new HepMCProduct());  
00293     bare_product->addHepMCData(evt );
00294     e.put(bare_product);
00295   }
00296   
00297   return true;
00298 }
00299 
00300 // -------------------------------------------------------------------------------------------------
00301 // function to pass parameters to common blocks
00302 bool Herwig6Source::hwgive(const std::string& ParameterString) {
00303   bool accepted = 1;
00304 
00305  
00306   if(!strncmp(ParameterString.c_str(),"IPROC",5)) {
00307     hwproc.IPROC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00308     if(hwproc.IPROC<0) {
00309       throw cms::Exception("HerwigError")
00310         <<" Attempted to set IPROC to a negative value. This is not allowed.\n Please use the McatnloInterface to cope with negative valued IPROCs.";
00311     }
00312   }
00313   else if(!strncmp(ParameterString.c_str(),"AUTPDF(",7)){
00314     LogWarning("") <<"   WARNING: AUTPDF parameter *not* suported. HERWIG will use LHAPDF."<<"\n";
00315   }
00316   else if(!strncmp(ParameterString.c_str(),"TAUDEC",6)){
00317     int tostart=0;
00318     while(ParameterString.c_str()[tostart]!='=') tostart++;
00319     tostart++;
00320     while(ParameterString.c_str()[tostart]==' ') tostart++;
00321     int todo = 0;
00322     while(ParameterString.c_str()[todo+tostart]!='\0') {
00323       hwdspn.TAUDEC[todo]=ParameterString.c_str()[todo+tostart];
00324       todo++;
00325     }
00326     if(todo != 6) {
00327       throw cms::Exception("HerwigError")
00328         <<" Attempted to set TAUDEC to "<<hwdspn.TAUDEC<<". This is not allowed.\n Options for TAUDEC are HERWIG and TAUOLA.";
00329     }
00330   }
00331   else if(!strncmp(ParameterString.c_str(),"BDECAY",6)){
00332     LogWarning("")<<"   WARNING: BDECAY parameter *not* suported. HERWIG will use default b decay."<<"\n";
00333   }
00334   else if(!strncmp(ParameterString.c_str(),"QCDLAM",6))
00335     hwpram.QCDLAM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00336   else if(!strncmp(ParameterString.c_str(),"VQCUT",5))
00337     hwpram.VQCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00338   else if(!strncmp(ParameterString.c_str(),"VGCUT",5))
00339     hwpram.VGCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00340   else if(!strncmp(ParameterString.c_str(),"VPCUT",5))
00341     hwpram.VPCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00342   else if(!strncmp(ParameterString.c_str(),"CLMAX",5))
00343     hwpram.CLMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00344   else if(!strncmp(ParameterString.c_str(),"CLPOW",5))
00345     hwpram.CLPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00346   else if(!strncmp(ParameterString.c_str(),"PSPLT(1)",8))
00347     hwpram.PSPLT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00348   else if(!strncmp(ParameterString.c_str(),"PSPLT(2)",8))
00349     hwpram.PSPLT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00350   else if(!strncmp(ParameterString.c_str(),"QDIQK",5))
00351     hwpram.QDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00352   else if(!strncmp(ParameterString.c_str(),"PDIQK",5))
00353     hwpram.PDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00354   else if(!strncmp(ParameterString.c_str(),"QSPAC",5))
00355     hwpram.QSPAC = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00356   else if(!strncmp(ParameterString.c_str(),"PTRMS",5))
00357     hwpram.PTRMS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00358   else if(!strncmp(ParameterString.c_str(),"IPRINT",6))
00359     hwpram.IPRINT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00360   else if(!strncmp(ParameterString.c_str(),"PRVTX",5))
00361     hwpram.PRVTX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00362   else if(!strncmp(ParameterString.c_str(),"NPRFMT",6))
00363     hwpram.NPRFMT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00364   else if(!strncmp(ParameterString.c_str(),"PRNDEC",6))
00365     hwpram.PRNDEC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00366   else if(!strncmp(ParameterString.c_str(),"PRNDEF",6))
00367     hwpram.PRNDEF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00368   else if(!strncmp(ParameterString.c_str(),"PRNTEX",6))
00369     hwpram.PRNTEX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00370   else if(!strncmp(ParameterString.c_str(),"PRNWEB",6))
00371     hwpram.PRNWEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00372   else if(!strncmp(ParameterString.c_str(),"MAXPR",5))
00373     hwevnt.MAXPR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00374   else if(!strncmp(ParameterString.c_str(),"MAXER",5))
00375     hwevnt.MAXER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00376   else if(!strncmp(ParameterString.c_str(),"LWEVT",5))
00377     hwevnt.LWEVT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00378   else if(!strncmp(ParameterString.c_str(),"LRSUD",5))
00379     hwpram.LRSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00380   else if(!strncmp(ParameterString.c_str(),"LWSUD",5))
00381     hwpram.LWSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00382   else if(!strncmp(ParameterString.c_str(),"NRN(1)",6))
00383     hwevnt.NRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00384   else if(!strncmp(ParameterString.c_str(),"NRN(2)",6))
00385     hwevnt.NRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00386   else if(!strncmp(ParameterString.c_str(),"WGTMAX",6))
00387     hwevnt.WGTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00388   else if(!strncmp(ParameterString.c_str(),"NOWGT",5))
00389     hwevnt.NOWGT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00390   else if(!strncmp(ParameterString.c_str(),"AVWGT",5))
00391     hwevnt.AVWGT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00392   else if(!strncmp(ParameterString.c_str(),"AZSOFT",6))
00393     hwpram.AZSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00394   else if(!strncmp(ParameterString.c_str(),"AZSPIN",6))
00395     hwpram.AZSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00396   else if(!strncmp(ParameterString.c_str(),"HARDME",6))
00397     hwpram.HARDME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00398   else if(!strncmp(ParameterString.c_str(),"SOFTME",6))
00399     hwpram.SOFTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00400   else if(!strncmp(ParameterString.c_str(),"GCUTME",6))
00401     hwpram.GCUTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00402   else if(!strncmp(ParameterString.c_str(),"NCOLO",5))
00403     hwpram.NCOLO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00404   else if(!strncmp(ParameterString.c_str(),"NFLAV",5))
00405     hwpram.NFLAV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00406   else if(!strncmp(ParameterString.c_str(),"MODPDF(1)",9))
00407     hwpram.MODPDF[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00408   else if(!strncmp(ParameterString.c_str(),"MODPDF(2)",9))
00409     hwpram.MODPDF[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00410   else if(!strncmp(ParameterString.c_str(),"NSTRU",5))
00411     hwpram.NSTRU = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00412   else if(!strncmp(ParameterString.c_str(),"PRSOF",5))
00413     hwpram.PRSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00414   else if(!strncmp(ParameterString.c_str(),"ENSOF",5))
00415     hwpram.ENSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00416   else if(!strncmp(ParameterString.c_str(),"IOPREM",6))
00417     hwpram.IOPREM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00418   else if(!strncmp(ParameterString.c_str(),"BTCLM",5))
00419     hwpram.BTCLM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00420   else if(!strncmp(ParameterString.c_str(),"ETAMIX",6))
00421     hwpram.ETAMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00422   else if(!strncmp(ParameterString.c_str(),"PHIMIX",6))
00423     hwpram.PHIMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00424   else if(!strncmp(ParameterString.c_str(),"H1MIX",5))
00425     hwpram.H1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00426   else if(!strncmp(ParameterString.c_str(),"F0MIX",5))
00427     hwpram.F0MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00428   else if(!strncmp(ParameterString.c_str(),"F1MIX",5))
00429     hwpram.F1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00430   else if(!strncmp(ParameterString.c_str(),"F2MIX",5))
00431     hwpram.F2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00432   else if(!strncmp(ParameterString.c_str(),"ET2MIX",6))
00433     hwpram.ET2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00434   else if(!strncmp(ParameterString.c_str(),"OMHMIX",6))
00435     hwpram.OMHMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00436   else if(!strncmp(ParameterString.c_str(),"PH3MIX",6))
00437     hwpram.PH3MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00438   else if(!strncmp(ParameterString.c_str(),"B1LIM",5))
00439     hwpram.B1LIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00440   else if(!strncmp(ParameterString.c_str(),"CLDIR(1)",8))
00441     hwpram.CLDIR[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00442   else if(!strncmp(ParameterString.c_str(),"CLDIR(2)",8))
00443     hwpram.CLDIR[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00444   else if(!strncmp(ParameterString.c_str(),"CLSMR(1)",8))
00445     hwpram.CLSMR[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00446   else if(!strncmp(ParameterString.c_str(),"CLSMR(2)",8))
00447     hwpram.CLSMR[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00448   else if(!strncmp(ParameterString.c_str(),"RMASS(1)",8))
00449     hwprop.RMASS[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00450   else if(!strncmp(ParameterString.c_str(),"RMASS(2)",8))
00451     hwprop.RMASS[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00452   else if(!strncmp(ParameterString.c_str(),"RMASS(3)",8))
00453     hwprop.RMASS[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00454   else if(!strncmp(ParameterString.c_str(),"RMASS(4)",8))
00455     hwprop.RMASS[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00456   else if(!strncmp(ParameterString.c_str(),"RMASS(5)",8))
00457     hwprop.RMASS[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00458   else if(!strncmp(ParameterString.c_str(),"RMASS(6)",8))
00459     hwprop.RMASS[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00460   else if(!strncmp(ParameterString.c_str(),"RMASS(13)",9))
00461     hwprop.RMASS[13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00462   else if(!strncmp(ParameterString.c_str(),"SUDORD",6))
00463     hwusud.SUDORD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00464   else if(!strncmp(ParameterString.c_str(),"INTER",5))
00465     hwusud.INTER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00466   else if(!strncmp(ParameterString.c_str(),"NEGWTS",6))
00467     hw6203.NEGWTS = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00468   else if(!strncmp(ParameterString.c_str(),"PMBN1",5))
00469     hwminb.PMBN1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00470   else if(!strncmp(ParameterString.c_str(),"PMBN2",5))
00471     hwminb.PMBN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00472   else if(!strncmp(ParameterString.c_str(),"PMBN3",5))
00473     hwminb.PMBN3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00474   else if(!strncmp(ParameterString.c_str(),"PMBK1",5))
00475     hwminb.PMBK1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00476   else if(!strncmp(ParameterString.c_str(),"PMBK2",5))
00477     hwminb.PMBK2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00478   else if(!strncmp(ParameterString.c_str(),"PMBM1",5))
00479     hwminb.PMBM1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00480   else if(!strncmp(ParameterString.c_str(),"PMBM2",5))
00481     hwminb.PMBM2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00482   else if(!strncmp(ParameterString.c_str(),"PMBP1",5))
00483     hwminb.PMBP1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00484   else if(!strncmp(ParameterString.c_str(),"PMBP2",5))
00485     hwminb.PMBP2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00486   else if(!strncmp(ParameterString.c_str(),"PMBP3",5))
00487     hwminb.PMBP3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00488   else if(!strncmp(ParameterString.c_str(),"VMIN2",5))
00489     hwdist.VMIN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00490   else if(!strncmp(ParameterString.c_str(),"EXAG",4))
00491     hwdist.EXAG = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00492   else if(!strncmp(ParameterString.c_str(),"PRECO",5))
00493     hwuclu.PRECO = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00494   else if(!strncmp(ParameterString.c_str(),"CLRECO",6))
00495     hwuclu.CLRECO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00496   else if(!strncmp(ParameterString.c_str(),"PWT(1)",6))
00497     hwuwts.PWT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00498   else if(!strncmp(ParameterString.c_str(),"PWT(2)",6))
00499     hwuwts.PWT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00500   else if(!strncmp(ParameterString.c_str(),"PWT(3)",6))
00501     hwuwts.PWT[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00502   else if(!strncmp(ParameterString.c_str(),"PWT(4)",6))
00503     hwuwts.PWT[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00504   else if(!strncmp(ParameterString.c_str(),"PWT(5)",6))
00505     hwuwts.PWT[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00506   else if(!strncmp(ParameterString.c_str(),"PWT(6)",6))
00507     hwuwts.PWT[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00508   else if(!strncmp(ParameterString.c_str(),"PWT(7)",6))
00509     hwuwts.PWT[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00510   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,0)",12))
00511     hwuwts.REPWT[0][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00512   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,1)",12))
00513     hwuwts.REPWT[0][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00514   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,2)",12))
00515     hwuwts.REPWT[0][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00516   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,3)",12))
00517     hwuwts.REPWT[0][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00518   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,4)",12))
00519     hwuwts.REPWT[0][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00520   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,0)",12))
00521     hwuwts.REPWT[0][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00522   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,1)",12))
00523     hwuwts.REPWT[0][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00524   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,2)",12))
00525     hwuwts.REPWT[0][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00526   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,3)",12))
00527     hwuwts.REPWT[0][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00528   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,4)",12))
00529     hwuwts.REPWT[0][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00530   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,0)",12))
00531     hwuwts.REPWT[0][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00532   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,1)",12))
00533     hwuwts.REPWT[0][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00534   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,2)",12))
00535     hwuwts.REPWT[0][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00536   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,3)",12))
00537     hwuwts.REPWT[0][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00538   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,4)",12))
00539     hwuwts.REPWT[0][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00540   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,0)",12))
00541     hwuwts.REPWT[0][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00542   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,1)",12))
00543     hwuwts.REPWT[0][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00544   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,2)",12))
00545     hwuwts.REPWT[0][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00546   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,3)",12))
00547     hwuwts.REPWT[0][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00548   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,4)",12))
00549     hwuwts.REPWT[0][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00550   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,0)",12))
00551     hwuwts.REPWT[0][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00552   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,1)",12))
00553     hwuwts.REPWT[0][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00554   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,2)",12))
00555     hwuwts.REPWT[0][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00556   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,3)",12))
00557     hwuwts.REPWT[0][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00558   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,4)",12))
00559     hwuwts.REPWT[0][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00560   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,0)",12))
00561     hwuwts.REPWT[1][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00562   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,1)",12))
00563     hwuwts.REPWT[1][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00564   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,2)",12))
00565     hwuwts.REPWT[1][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00566   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,3)",12))
00567     hwuwts.REPWT[1][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00568   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,4)",12))
00569     hwuwts.REPWT[1][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00570   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,0)",12))
00571     hwuwts.REPWT[1][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00572   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,1)",12))
00573     hwuwts.REPWT[1][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00574   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,2)",12))
00575     hwuwts.REPWT[1][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00576   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,3)",12))
00577     hwuwts.REPWT[1][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00578   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,4)",12))
00579     hwuwts.REPWT[1][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00580   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,0)",12))
00581     hwuwts.REPWT[1][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00582   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,1)",12))
00583     hwuwts.REPWT[1][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00584   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,2)",12))
00585     hwuwts.REPWT[1][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00586   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,3)",12))
00587     hwuwts.REPWT[1][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00588   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,4)",12))
00589     hwuwts.REPWT[1][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00590   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,0)",12))
00591     hwuwts.REPWT[1][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00592   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,1)",12))
00593     hwuwts.REPWT[1][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00594   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,2)",12))
00595     hwuwts.REPWT[1][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00596   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,3)",12))
00597     hwuwts.REPWT[1][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00598   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,4)",12))
00599     hwuwts.REPWT[1][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00600   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,0)",12))
00601     hwuwts.REPWT[1][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00602   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,1)",12))
00603     hwuwts.REPWT[1][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00604   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,2)",12))
00605     hwuwts.REPWT[1][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00606   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,3)",12))
00607     hwuwts.REPWT[1][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00608   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,4)",12))
00609     hwuwts.REPWT[1][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00610   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,0)",12))
00611     hwuwts.REPWT[2][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00612   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,1)",12))
00613     hwuwts.REPWT[2][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00614   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,2)",12))
00615     hwuwts.REPWT[2][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00616   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,3)",12))
00617     hwuwts.REPWT[2][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00618   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,4)",12))
00619     hwuwts.REPWT[2][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00620   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,0)",12))
00621     hwuwts.REPWT[2][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00622   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,1)",12))
00623     hwuwts.REPWT[2][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00624   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,2)",12))
00625     hwuwts.REPWT[2][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00626   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,3)",12))
00627     hwuwts.REPWT[2][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00628   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,4)",12))
00629     hwuwts.REPWT[2][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00630   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,0)",12))
00631     hwuwts.REPWT[2][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00632   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,1)",12))
00633     hwuwts.REPWT[2][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00634   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,2)",12))
00635     hwuwts.REPWT[2][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00636   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,3)",12))
00637     hwuwts.REPWT[2][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00638   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,4)",12))
00639     hwuwts.REPWT[2][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00640   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,0)",12))
00641     hwuwts.REPWT[2][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00642   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,1)",12))
00643     hwuwts.REPWT[2][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00644   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,2)",12))
00645     hwuwts.REPWT[2][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00646   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,3)",12))
00647     hwuwts.REPWT[2][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00648   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,4)",12))
00649     hwuwts.REPWT[2][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00650   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,0)",12))
00651     hwuwts.REPWT[2][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00652   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,1)",12))
00653     hwuwts.REPWT[2][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00654   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,2)",12))
00655     hwuwts.REPWT[2][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00656   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,3)",12))
00657     hwuwts.REPWT[2][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00658   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,4)",12))
00659     hwuwts.REPWT[2][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00660   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,0)",12))
00661     hwuwts.REPWT[3][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00662   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,1)",12))
00663     hwuwts.REPWT[3][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00664   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,2)",12))
00665     hwuwts.REPWT[3][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00666   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,3)",12))
00667     hwuwts.REPWT[3][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00668   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,4)",12))
00669     hwuwts.REPWT[3][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00670   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,0)",12))
00671     hwuwts.REPWT[3][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00672   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,1)",12))
00673     hwuwts.REPWT[3][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00674   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,2)",12))
00675     hwuwts.REPWT[3][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00676   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,3)",12))
00677     hwuwts.REPWT[3][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00678   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,4)",12))
00679     hwuwts.REPWT[3][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00680   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,0)",12))
00681     hwuwts.REPWT[3][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00682   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,1)",12))
00683     hwuwts.REPWT[3][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00684   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,2)",12))
00685     hwuwts.REPWT[3][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00686   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,3)",12))
00687     hwuwts.REPWT[3][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00688   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,4)",12))
00689     hwuwts.REPWT[3][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00690   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,0)",12))
00691     hwuwts.REPWT[3][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00692   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,1)",12))
00693     hwuwts.REPWT[3][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00694   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,2)",12))
00695     hwuwts.REPWT[3][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00696   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,3)",12))
00697     hwuwts.REPWT[3][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00698   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,4)",12))
00699     hwuwts.REPWT[3][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00700   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,0)",12))
00701     hwuwts.REPWT[3][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00702   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,1)",12))
00703     hwuwts.REPWT[3][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00704   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,2)",12))
00705     hwuwts.REPWT[3][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00706   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,3)",12))
00707     hwuwts.REPWT[3][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00708   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,4)",12))
00709     hwuwts.REPWT[3][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00710   else if(!strncmp(ParameterString.c_str(),"SNGWT",5))
00711     hwuwts.SNGWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00712   else if(!strncmp(ParameterString.c_str(),"DECWT",5))
00713     hwuwts.DECWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00714   else if(!strncmp(ParameterString.c_str(),"PLTCUT",6))
00715     hwdist.PLTCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00716   else if(!strncmp(ParameterString.c_str(),"VTOCDK(",7)){
00717     // we find the index ...
00718     int ind = atoi(&ParameterString[7]);  
00719     hwprop.VTOCDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
00720   else if(!strncmp(ParameterString.c_str(),"VTORDK(",7)){
00721     // we find the index ...
00722     int ind = atoi(&ParameterString[7]);  
00723     hwprop.VTORDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
00724   else if(!strncmp(ParameterString.c_str(),"PIPSMR",6))
00725     hwdist.PIPSMR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00726   else if(!strncmp(ParameterString.c_str(),"VIPWID(1)",9))
00727     hw6202.VIPWID[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00728   else if(!strncmp(ParameterString.c_str(),"VIPWID(2)",9))
00729     hw6202.VIPWID[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00730   else if(!strncmp(ParameterString.c_str(),"VIPWID(3)",9))
00731     hw6202.VIPWID[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00732   else if(!strncmp(ParameterString.c_str(),"MAXDKL",6))
00733     hwdist.MAXDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00734   else if(!strncmp(ParameterString.c_str(),"IOPDKL",6))
00735     hwdist.IOPDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00736   else if(!strncmp(ParameterString.c_str(),"DXRCYL",6))
00737     hw6202.DXRCYL = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00738   else if(!strncmp(ParameterString.c_str(),"DXZMAX",6))
00739     hw6202.DXZMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00740   else if(!strncmp(ParameterString.c_str(),"DXRSPH",6))
00741     hw6202.DXRSPH = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00742   //  else if(!strncmp(ParameterString.c_str(),"BDECAY",6))
00743   //    hwprch.BDECAY = ParameterString[strcspn(ParameterString.c_str(),"=")+1];  
00744   else if(!strncmp(ParameterString.c_str(),"MIXING",6))
00745     hwdist.MIXING = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00746   else if(!strncmp(ParameterString.c_str(),"XMIX(1)",7))
00747     hwdist.XMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00748   else if(!strncmp(ParameterString.c_str(),"XMIX(2)",7))
00749     hwdist.XMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00750   else if(!strncmp(ParameterString.c_str(),"YMIX(1)",7))
00751     hwdist.YMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00752   else if(!strncmp(ParameterString.c_str(),"YMIX(2)",7))
00753     hwdist.YMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00754   else if(!strncmp(ParameterString.c_str(),"RMASS(198)",10))
00755     hwprop.RMASS[198] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00756   else if(!strncmp(ParameterString.c_str(),"RMASS(199)",10))
00757     hwprop.RMASS[199] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00758   else if(!strncmp(ParameterString.c_str(),"GAMW",4))
00759     hwpram.GAMW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00760   else if(!strncmp(ParameterString.c_str(),"GAMZ",4))
00761     hwpram.GAMZ = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00762   else if(!strncmp(ParameterString.c_str(),"RMASS(200)",10))
00763     hwprop.RMASS[200] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00764   else if(!strncmp(ParameterString.c_str(),"WZRFR",5))
00765     hw6202.WZRFR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00766   else if(!strncmp(ParameterString.c_str(),"MODBOS(",7)) {
00767     int ind = atoi(&ParameterString[7]);
00768     hwbosc.MODBOS[ind-1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00769   else if(!strncmp(ParameterString.c_str(),"RMASS(201)",10))
00770     hwprop.RMASS[201] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00771   else if(!strncmp(ParameterString.c_str(),"IOPHIG",6))
00772     hwbosc.IOPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00773   else if(!strncmp(ParameterString.c_str(),"GAMMAX",6))
00774     hwbosc.GAMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00775   else if(!strncmp(ParameterString.c_str(),"ENHANC(",7)) {
00776     int ind = atoi(&ParameterString[7]);
00777     hwbosc.ENHANC[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00778   else if(!strncmp(ParameterString.c_str(),"RMASS(209)",10))
00779     hwprop.RMASS[209] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00780   else if(!strncmp(ParameterString.c_str(),"RMASS(215)",10))
00781     hwprop.RMASS[215] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00782   else if(!strncmp(ParameterString.c_str(),"ALPHEM",6))
00783     hwpram.ALPHEM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00784   else if(!strncmp(ParameterString.c_str(),"SWEIN",5))
00785     hwpram.SWEIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00786   else if(!strncmp(ParameterString.c_str(),"QFCH(",5)){
00787     int ind = atoi(&ParameterString[5]);
00788     hwpram.QFCH[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00789   else if(!strncmp(ParameterString.c_str(),"AFCH(1,",7)){
00790     int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
00791     hwpram.AFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00792   else if(!strncmp(ParameterString.c_str(),"AFCH(2,",7)){
00793     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00794     hwpram.AFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00795   else if(!strncmp(ParameterString.c_str(),"AFCH(3,",7)){
00796     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00797     hwpram.AFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00798   else if(!strncmp(ParameterString.c_str(),"AFCH(4,",7)){
00799     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00800     hwpram.AFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00801   else if(!strncmp(ParameterString.c_str(),"AFCH(5,",7)){
00802     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00803     hwpram.AFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00804   else if(!strncmp(ParameterString.c_str(),"AFCH(6,",7)){
00805     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00806     hwpram.AFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00807   else if(!strncmp(ParameterString.c_str(),"AFCH(7,",7)){
00808     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00809     hwpram.AFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00810   else if(!strncmp(ParameterString.c_str(),"AFCH(8,",7)){
00811     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00812     hwpram.AFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00813   else if(!strncmp(ParameterString.c_str(),"AFCH(9,",7)){
00814     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00815     hwpram.AFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00816   else if(!strncmp(ParameterString.c_str(),"AFCH(10,",8)){
00817     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00818     hwpram.AFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00819   else if(!strncmp(ParameterString.c_str(),"AFCH(11,",8)){
00820     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00821     hwpram.AFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00822   else if(!strncmp(ParameterString.c_str(),"AFCH(12,",8)){
00823     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00824     hwpram.AFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00825   else if(!strncmp(ParameterString.c_str(),"AFCH(13,",8)){
00826     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00827     hwpram.AFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00828   else if(!strncmp(ParameterString.c_str(),"AFCH(14,",8)){
00829     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00830     hwpram.AFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00831   else if(!strncmp(ParameterString.c_str(),"AFCH(15,",8)){
00832     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00833     hwpram.AFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00834   else if(!strncmp(ParameterString.c_str(),"AFCH(16,",8)){
00835     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00836     hwpram.AFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00837   else if(!strncmp(ParameterString.c_str(),"VFCH(1,",7)){
00838     int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
00839     hwpram.VFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00840   else if(!strncmp(ParameterString.c_str(),"VFCH(2,",7)){
00841     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00842     hwpram.VFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00843   else if(!strncmp(ParameterString.c_str(),"VFCH(3,",7)){
00844     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00845     hwpram.VFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00846   else if(!strncmp(ParameterString.c_str(),"VFCH(4,",7)){
00847     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00848     hwpram.VFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00849   else if(!strncmp(ParameterString.c_str(),"VFCH(5,",7)){
00850     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00851     hwpram.VFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00852   else if(!strncmp(ParameterString.c_str(),"VFCH(6,",7)){
00853     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00854     hwpram.VFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00855   else if(!strncmp(ParameterString.c_str(),"VFCH(7,",7)){
00856     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00857     hwpram.VFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00858   else if(!strncmp(ParameterString.c_str(),"VFCH(8,",7)){
00859     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00860     hwpram.VFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00861   else if(!strncmp(ParameterString.c_str(),"VFCH(9,",7)){
00862     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
00863     hwpram.VFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00864   else if(!strncmp(ParameterString.c_str(),"VFCH(10,",8)){
00865     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00866     hwpram.VFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00867   else if(!strncmp(ParameterString.c_str(),"VFCH(11,",8)){
00868     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00869     hwpram.VFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00870   else if(!strncmp(ParameterString.c_str(),"VFCH(12,",8)){
00871     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00872     hwpram.VFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00873   else if(!strncmp(ParameterString.c_str(),"VFCH(13,",8)){
00874     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00875     hwpram.VFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00876   else if(!strncmp(ParameterString.c_str(),"VFCH(14,",8)){
00877     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00878     hwpram.VFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00879   else if(!strncmp(ParameterString.c_str(),"VFCH(15,",8)){
00880     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00881     hwpram.VFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00882   else if(!strncmp(ParameterString.c_str(),"VFCH(16,",8)){
00883     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
00884     hwpram.VFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00885   else if(!strncmp(ParameterString.c_str(),"ZPRIME",6))
00886     hwpram.ZPRIME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00887   else if(!strncmp(ParameterString.c_str(),"RMASS(202)",10))
00888     hwprop.RMASS[202] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00889   else if(!strncmp(ParameterString.c_str(),"GAMZP",5))
00890     hwpram.GAMZP = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00891   else if(!strncmp(ParameterString.c_str(),"VCKM(",5)) {
00892     int ind1 = atoi(&ParameterString[5]);
00893     if(ind1<1||ind1>3) return 0;
00894     int ind2 = atoi(&ParameterString[7]);
00895     if(ind2<1||ind2>3) return 0;
00896     hwpram.VCKM[ind2][ind1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00897   else if(!strncmp(ParameterString.c_str(),"SCABI",5))
00898     hwpram.SCABI = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00899   else if(!strncmp(ParameterString.c_str(),"EPOLN(",6)) {
00900     int ind = atoi(&ParameterString[6]);
00901     if(ind<1||ind>3) return 0;
00902     hwhard.EPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00903   else if(!strncmp(ParameterString.c_str(),"PPOLN(",6)) {
00904     int ind = atoi(&ParameterString[6]);
00905     if(ind<1||ind>3) return 0;
00906     hwhard.PPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00907   else if(!strncmp(ParameterString.c_str(),"QLIM",4))
00908     hwhard.QLIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00909   else if(!strncmp(ParameterString.c_str(),"THMAX",5))
00910     hwhard.THMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00911   else if(!strncmp(ParameterString.c_str(),"Y4JT",4))
00912     hwhard.Y4JT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00913   else if(!strncmp(ParameterString.c_str(),"DURHAM",6))
00914     hwhard.DURHAM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00915   else if(!strncmp(ParameterString.c_str(),"IOP4JT(1)",9))
00916     hwpram.IOP4JT[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00917   else if(!strncmp(ParameterString.c_str(),"IOP4JT(2)",9))
00918     hwpram.IOP4JT[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00919   else if(!strncmp(ParameterString.c_str(),"BGSHAT",6))
00920     hwhard.BGSHAT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00921   else if(!strncmp(ParameterString.c_str(),"BREIT",5))
00922     hwbrch.BREIT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00923   else if(!strncmp(ParameterString.c_str(),"USECMF",6))
00924     hwbrch.USECMF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00925   else if(!strncmp(ParameterString.c_str(),"NOSPAC",6))
00926     hwpram.NOSPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00927   else if(!strncmp(ParameterString.c_str(),"ISPAC",5))
00928     hwpram.ISPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00929   else if(!strncmp(ParameterString.c_str(),"TMNISR",6))
00930     hwhard.TMNISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00931   else if(!strncmp(ParameterString.c_str(),"ZMXISR",6))
00932     hwhard.ZMXISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00933   else if(!strncmp(ParameterString.c_str(),"ASFIXD",6))
00934     hwhard.ASFIXD = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00935   else if(!strncmp(ParameterString.c_str(),"OMEGA0",6))
00936     hwhard.OMEGA0 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00937   else if(!strncmp(ParameterString.c_str(),"IAPHIG",6))
00938     hwhard.IAPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00939   else if(!strncmp(ParameterString.c_str(),"PHOMAS",6))
00940     hwhard.PHOMAS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
00941   else if(!strncmp(ParameterString.c_str(),"PRESPL",6))
00942     hw6500.PRESPL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);            
00943   else if(!strncmp(ParameterString.c_str(),"PTMIN",5))
00944     hwhard.PTMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00945   else if(!strncmp(ParameterString.c_str(),"PTMAX",5))
00946     hwhard.PTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00947   else if(!strncmp(ParameterString.c_str(),"PTPOW",5))
00948     hwhard.PTPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00949   else if(!strncmp(ParameterString.c_str(),"YJMIN",5))
00950     hwhard.YJMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00951   else if(!strncmp(ParameterString.c_str(),"YJMAX",5))
00952     hwhard.YJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00953   else if(!strncmp(ParameterString.c_str(),"EMMIN",5))
00954     hwhard.EMMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00955   else if(!strncmp(ParameterString.c_str(),"EMMAX",5))
00956     hwhard.EMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00957   else if(!strncmp(ParameterString.c_str(),"EMPOW",5))
00958     hwhard.EMPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00959   else if(!strncmp(ParameterString.c_str(),"Q2MIN",5))
00960     hwhard.Q2MIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00961   else if(!strncmp(ParameterString.c_str(),"Q2MAX",5))
00962     hwhard.Q2MAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00963   else if(!strncmp(ParameterString.c_str(),"Q2POW",5))
00964     hwhard.Q2POW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00965   else if(!strncmp(ParameterString.c_str(),"YBMIN",5))
00966     hwhard.YBMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00967   else if(!strncmp(ParameterString.c_str(),"YBMAX",5))
00968     hwhard.YBMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00969   else if(!strncmp(ParameterString.c_str(),"WHMIN",5))
00970     hwhard.WHMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00971   else if(!strncmp(ParameterString.c_str(),"ZJMAX",5))
00972     hwhard.ZJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00973   else if(!strncmp(ParameterString.c_str(),"Q2WWMN",6))
00974     hwhard.Q2WWMN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00975   else if(!strncmp(ParameterString.c_str(),"Q2WWMX",6))
00976     hwhard.Q2WWMX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00977   else if(!strncmp(ParameterString.c_str(),"YWWMIN",6))
00978     hwhard.YWWMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00979   else if(!strncmp(ParameterString.c_str(),"YWWMAX",6))
00980     hwhard.YWWMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00981   else if(!strncmp(ParameterString.c_str(),"CSPEED",6))
00982     hwpram.CSPEED = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00983   else if(!strncmp(ParameterString.c_str(),"GEV2NB",6))
00984     hwpram.GEV2NB = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00985   else if(!strncmp(ParameterString.c_str(),"IBSH",4))
00986     hwhard.IBSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00987   else if(!strncmp(ParameterString.c_str(),"IBRN(1)",7))
00988     hwhard.IBRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00989   else if(!strncmp(ParameterString.c_str(),"IBRN(2)",7))
00990     hwhard.IBRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00991   else if(!strncmp(ParameterString.c_str(),"NQEV",4))
00992     hwusud.NQEV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00993   else if(!strncmp(ParameterString.c_str(),"ZBINM",5))
00994     hwpram.ZBINM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00995   else if(!strncmp(ParameterString.c_str(),"NZBIN",5))
00996     hwpram.NZBIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00997   else if(!strncmp(ParameterString.c_str(),"NBTRY",5))
00998     hwpram.NBTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00999   else if(!strncmp(ParameterString.c_str(),"NCTRY",5))
01000     hwpram.NCTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01001   else if(!strncmp(ParameterString.c_str(),"NETRY",5))
01002     hwpram.NETRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01003   else if(!strncmp(ParameterString.c_str(),"NSTRY",5))
01004     hwpram.NSTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01005   else if(!strncmp(ParameterString.c_str(),"ACCUR",5))
01006     hwusud.ACCUR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01007   else if(!strncmp(ParameterString.c_str(),"RPARTY",6))
01008     hwrpar.RPARTY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01009   else if(!strncmp(ParameterString.c_str(),"SUSYIN",6))
01010     hwsusy.SUSYIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01011   else if(!strncmp(ParameterString.c_str(),"LRSUSY",6))
01012     hw6202.LRSUSY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01013   else if(!strncmp(ParameterString.c_str(),"SYSPIN",6))
01014     hwdspn.SYSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01015   else if(!strncmp(ParameterString.c_str(),"THREEB",6))
01016     hwdspn.THREEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01017   else if(!strncmp(ParameterString.c_str(),"FOURB",5))
01018     hwdspn.FOURB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01019   else if(!strncmp(ParameterString.c_str(),"LHSOFT",6))
01020     hwgupr.LHSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01021   else if(!strncmp(ParameterString.c_str(),"LHGLSF",6))
01022     hwgupr.LHGLSF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01023   else if(!strncmp(ParameterString.c_str(),"OPTM",4))
01024     hw6300.OPTM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01025   else if(!strncmp(ParameterString.c_str(),"IOPSTP",6))
01026     hw6300.IOPSTP = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01027   else if(!strncmp(ParameterString.c_str(),"IOPSH",5))
01028     hw6300.IOPSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01029   else if(!strncmp(ParameterString.c_str(),"JMUEO",5))
01030     jmparm.JMUEO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01031   else if(!strncmp(ParameterString.c_str(),"PTJIM",5))
01032     jmparm.PTJIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01033   else if(!strncmp(ParameterString.c_str(),"JMRAD(73)",9))
01034     jmparm.JMRAD[72] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01035 
01036   else accepted = 0;
01037 
01038   return accepted;
01039 }
01040 
01041 
01042 #ifdef NEVER
01043 //-------------------------------------------------------------------------------
01044 // dummy hwaend (to be REMOVED from herwig)
01045 
01046 extern "C" {
01047   void hwaend_(){/*dummy*/}
01048 }
01049 //-------------------------------------------------------------------------------
01050 #endif
01051 
01052 bool Herwig6Source::setRngSeeds(int mseed)
01053 {
01054   double temx[5];
01055   for (int i=0; i<5; i++) {
01056     mseed = mseed * 29943829 - 1;
01057     temx[i] = mseed * (1./(65536.*65536.));
01058   }
01059   long double c;
01060   c = (long double)2111111111.0 * temx[3] +
01061     1492.0 * (temx[3] = temx[2]) +
01062     1776.0 * (temx[2] = temx[1]) +
01063     5115.0 * (temx[1] = temx[0]) +
01064     temx[4];
01065   temx[4] = floorl(c);
01066   temx[0] = c - temx[4];
01067   temx[4] = temx[4] * (1./(65536.*65536.));
01068   hwevnt.NRN[0]=int(temx[0]*99999);
01069   c = (long double)2111111111.0 * temx[3] +
01070     1492.0 * (temx[3] = temx[2]) +
01071     1776.0 * (temx[2] = temx[1]) +
01072     5115.0 * (temx[1] = temx[0]) +
01073     temx[4];
01074   temx[4] = floorl(c);
01075   temx[0] = c - temx[4];
01076   hwevnt.NRN[1]=int(temx[0]*99999);
01077 
01078   return true;
01079 }
01080 
01081 void Herwig6Source::endRun(Run & r) {
01082  
01083  auto_ptr<GenInfoProduct> giprod (new GenInfoProduct());
01084 
01085  //-----------------------------------------------
01086  // compute cross-section (internal HERWIG style)
01087  double RNWGT=1./hwevnt.NWGTS;
01088  double AVWGT=hwevnt.WGTSUM*RNWGT;
01089 
01090  intCrossSect=1000.*AVWGT;
01091  //-----------------------------------------------
01092 
01093  giprod->set_cross_section(intCrossSect);
01094  giprod->set_external_cross_section(extCrossSect);
01095  giprod->set_filter_efficiency(extFilterEff);
01096  r.put(giprod);
01097 
01098 }
01099 
01100 
01101 
01102 
01103 #ifdef NEVER
01104 extern "C" {
01105   inline void cmsending_(int* ecode) {
01106     LogError("")<<"   ERROR: Herwig stoped run after receiving error code "<<*ecode<<".\n";
01107     throw cms::Exception("Herwig6Error") <<" Herwig stoped run with error code "<<*ecode<<".";
01108   }
01109 }
01110 #endif

Generated on Tue Jun 9 17:36:57 2009 for CMSSW by  doxygen 1.5.4