CMS 3D CMS Logo

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

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