CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/GeneratorInterface/PomwigInterface/plugins/PomwigProducer.cc

Go to the documentation of this file.
00001 /*
00002  *  Based on Herwig6Interface (author: Fabian Stoeckli) 
00003  * 
00004  *  Modified for PomwigProducer: Antonio.Vilela.Pereira@cern.ch
00005  */
00006 
00007 #include "PomwigProducer.h"
00008 #include "Dummies.h"
00009 #include "HWRGEN.h"
00010 
00011 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00012 #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
00013 #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
00014 
00015 #include "FWCore/Framework/interface/Event.h"
00016 #include "FWCore/ServiceRegistry/interface/Service.h"
00017 #include "FWCore/Utilities/interface/RandomNumberGenerator.h"
00018 #include "CLHEP/Random/JamesRandom.h"
00019 #include "CLHEP/Random/RandFlat.h"
00020 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00021 #include "FWCore/Framework/interface/Run.h"
00022 
00023 #include "FWCore/Framework/interface/MakerMacros.h"
00024 
00025 #include <iostream>
00026 #include "time.h"
00027 #include <ctype.h>
00028 
00029 using namespace edm;
00030 using namespace std;
00031 
00032 #include "HepMC/HerwigWrapper.h"
00033 #include "HepMC/IO_HERWIG.h"
00034 #include "HepMC/HEPEVT_Wrapper.h"
00035 
00036 // INCLUDE JIMMY,HERWIG,LHAPDF,POMWIG COMMON BLOCKS AND FUNTIONS
00037 #include "herwig.h"
00038 
00039 extern"C" {
00040   void setpdfpath_(char*,int*);
00041   void mysetpdfpath_(char*);
00042   void setlhaparm_(char*);
00043   void setherwpdf_(void);
00044   // function to chatch 'STOP' in original HWWARN
00045   void cmsending_(int*);
00046 }
00047 
00048 #define setpdfpath setpdfpath_
00049 #define mysetpdfpath mysetpdfpath_
00050 #define setlhaparm setlhaparm_
00051 #define setherwpdf setherwpdf_
00052 #define cmsending cmsending_
00053 
00054 // -----------------  Source Code -----------------------------------------
00055 PomwigProducer::PomwigProducer( const ParameterSet & pset) :
00056   EDProducer(), evt(0), 
00057   herwigVerbosity_ (pset.getUntrackedParameter<int>("herwigVerbosity",0)),
00058   herwigHepMCVerbosity_ (pset.getUntrackedParameter<bool>("herwigHepMCVerbosity",false)),
00059   herwigLhapdfVerbosity_ (pset.getUntrackedParameter<int>("herwigLhapdfVerbosity",0)),
00060   maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",0)),
00061   comEnergy_(pset.getParameter<double>("comEnergy")),
00062   printCards_(pset.getUntrackedParameter<bool>("printCards",false)),
00063   extCrossSect_(pset.getUntrackedParameter<double>("crossSection", -1.)),
00064   extFilterEff_(pset.getUntrackedParameter<double>("filterEfficiency", -1.)),
00065   survivalProbability_(pset.getParameter<double>("survivalProbability")),
00066   diffTopology_(pset.getParameter<int>("diffTopology")),
00067   h1fit_(pset.getParameter<int>("h1fit")),
00068   enableForcedDecays_(pset.getUntrackedParameter<bool>("enableForcedDecays",false)),
00069   eventNumber_(0)
00070 {
00071   useJimmy_ = false;
00072   numTrials_ = 100;
00073   doMPInteraction_ = false;
00074 
00075   std::ostringstream header_str;
00076 
00077   header_str << "----------------------------------------------\n";
00078   header_str << "Initializing PomwigProducer\n";
00079   header_str << "----------------------------------------------\n";
00080 
00081   
00082   /* herwigVerbosity Level IPRINT
00083      valid argumets are: 0: print title only
00084                          1: + print selected input parameters
00085                          2: + print table of particle codes and properties
00086                          3: + tables of Sudakov form factors  
00087               *** NOT IMPLEMENTED ***
00088       LHA vebosity:      0=silent 
00089                          1=lowkey (default) 
00090                          2=all 
00091   */
00092 
00093   header_str << "   Herwig verbosity level         = " << herwigVerbosity_ << "\n";
00094   header_str << "   LHAPDF verbosity level         = " << herwigLhapdfVerbosity_ << "\n";
00095   header_str << "   HepMC verbosity                = " << herwigHepMCVerbosity_ << "\n";
00096   header_str << "   Number of events to be printed = " << maxEventsToPrint_ << "\n";
00097 
00098 
00099   if(useJimmy_) {
00100     header_str << "   HERWIG will be using JIMMY for UE/MI." << "\n";
00101     if(doMPInteraction_) 
00102       header_str << "   JIMMY trying to generate multiple interactions." << "\n";
00103   }
00104 
00105   // setting up lhapdf path name from environment varaible (***)
00106   char* lhaPdfs = NULL;
00107   header_str <<"   Trying to find LHAPATH in environment ...";
00108   lhaPdfs = getenv("LHAPATH");
00109   std::string lhapdfSetPath = std::string(lhaPdfs);
00110   if(lhaPdfs != NULL) {
00111     header_str << " done.\n";
00112     header_str << "  Using "<< lhapdfSetPath << "\n";   
00113   }
00114   else{
00115     throw edm::Exception(edm::errors::Configuration,"PomwigError")
00116           << " Could not find LHAPATH";
00117   }
00118 
00119   // Call hwudat to set up HERWIG block data
00120   hwudat();
00121   
00122   // Setting basic parameters ...
00123   hwproc.PBEAM1 = comEnergy_/2.;
00124   hwproc.PBEAM2 = comEnergy_/2.;
00125   // Choose beam particles for POMWIG depending on topology
00126   switch (diffTopology_){
00127         case 0: //DPE
00128                 hwbmch.PART1[0]  = 'E';
00129                 hwbmch.PART1[1]  = '-';
00130                 hwbmch.PART2[0]  = 'E';
00131                 hwbmch.PART2[1]  = '-';
00132                 break;
00133         case 1: //SD survive PART1
00134                 hwbmch.PART1[0]  = 'E';
00135                 hwbmch.PART1[1]  = '-';
00136                 hwbmch.PART2[0]  = 'P';
00137                 hwbmch.PART2[1]  = ' ';
00138                 break;
00139         case 2: //SD survive PART2
00140                 hwbmch.PART1[0]  = 'P';
00141                 hwbmch.PART1[1]  = ' ';
00142                 hwbmch.PART2[0]  = 'E';
00143                 hwbmch.PART2[1]  = '-';
00144                 break;
00145         case 3: //Non diffractive
00146                 hwbmch.PART1[0]  = 'P';
00147                 hwbmch.PART1[1]  = ' ';
00148                 hwbmch.PART2[0]  = 'P';
00149                 hwbmch.PART2[1]  = ' ';
00150                 break;
00151         default:
00152                 throw edm::Exception(edm::errors::Configuration,"PomwigError")
00153           <<" Invalid Diff. Topology. Must be DPE(diffTopology = 0), SD particle 1 (diffTopology = 1), SD particle 2 (diffTopology = 2) and Non diffractive (diffTopology = 3)";
00154                 break;
00155   }
00156   for(int i=2;i<8;++i){
00157     hwbmch.PART1[i]  = ' ';
00158     hwbmch.PART2[i]  = ' ';}
00159 
00160   if(useJimmy_) jmparm.MSFLAG = 1;
00161 
00162   // initialize other common blocks ...
00163   hwigin();
00164 
00165   hwevnt.MAXER = 100000000;     // O(inf)
00166   hwpram.LWSUD = 0;             // don't write Sudakov form factors
00167   hwdspn.LWDEC = 0;             // don't write three/four body decays
00168                                 // (no fort.77 and fort.88 ...)
00169 
00170   header_str << "   MAXER set to " << hwevnt.MAXER << "\n";
00171 
00172   if(useJimmy_) jimmin();
00173   
00174   // set some 'non-herwig' defaults
00175   hwevnt.MAXPR =  maxEventsToPrint_;           // no printing out of events
00176   hwpram.IPRINT = herwigVerbosity_;            // HERWIG print out mode
00177 
00178   // Set HERWIG parameters in a single ParameterSet
00179   ParameterSet herwig_params = 
00180     pset.getParameter<ParameterSet>("HerwigParameters") ;
00181   
00182   // The parameter sets to be read (default, min bias, user ...) in the proper order.
00183   vector<string> setNames = 
00184     herwig_params.getParameter<vector<string> >("parameterSets");  
00185   
00186   // Loop over the sets
00187   for ( unsigned i=0; i<setNames.size(); ++i ) {    
00188     string mySet = setNames[i];
00189     vector<string> pars = 
00190       herwig_params.getParameter<vector<string> >(mySet);
00191     
00192     header_str << "----------------------------------------------" << "\n";
00193     header_str << "Read HERWIG parameter set " << mySet << "\n";
00194     header_str << "----------------------------------------------" << "\n";
00195     
00196     // Loop over all parameters and stop in case of mistake
00197     for(const std::string &par : pars) {
00198       constexpr char const *sRandomValueSetting1 = "NRN(1)";
00199       constexpr char const *sRandomValueSetting2 = "NRN(2)";
00200       if( (0 == strcmp(par.c_str(), sRandomValueSetting1) )||(0 == strcmp(par.c_str(), sRandomValueSetting2))) {
00201         throw edm::Exception(edm::errors::Configuration,"HerwigError")
00202           <<" attempted to set random number using pythia command 'NRN(.)'. This is not allowed.\n  Please use the RandomNumberGeneratorService to set the random number seed.";
00203       }
00204       
00205       if( ! hwgive(par) ) {
00206         throw edm::Exception(edm::errors::Configuration,"HerwigError") 
00207           <<" herwig did not accept the following \""<< par <<"\"";
00208       }
00209       else if(printCards_)
00210         header_str << "   " << par << "\n";
00211     }
00212   }
00213 
00214   // setting up herwgi RNG seeds NRN(.)
00215   header_str << "----------------------------------------------" << "\n";
00216   header_str << "Setting Herwig random number generator seeds" << "\n";
00217   header_str << "----------------------------------------------" << "\n";
00218   edm::Service<RandomNumberGenerator> rng;
00219   int wwseed = rng->mySeed();
00220   randomEngine = fRandomEngine = &(rng->getEngine());
00221   bool rngok = setRngSeeds(wwseed);
00222   if(!rngok)
00223     throw edm::Exception(edm::errors::Configuration,"HerwigError")
00224       <<" Impossible error in setting 'NRN(.)'.";
00225   header_str << "   NRN(1) = " << hwevnt.NRN[0] << "\n";
00226   header_str << "   NRN(2) = " << hwevnt.NRN[1] << "\n";
00227 
00228   // set the LHAPDF grid directory and path
00229   setherwpdf();
00230   char pdfpath[232];
00231   int pathlen = lhapdfSetPath.length();
00232   for(int i=0; i<pathlen; ++i) 
00233   pdfpath[i]=lhapdfSetPath.at(i);
00234   for(int i=pathlen; i<232; ++i) 
00235   pdfpath[i]=' ';
00236   mysetpdfpath(pdfpath);
00237 
00238   // HERWIG preparations ...
00239   hwuinc();
00240 
00241   // Function for force QQ decay is hwmodk
00242 
00243   /*
00244   C-----------------------------------------------------------------------
00245         SUBROUTINE HWMODK(IDKTMP,BRTMP,IMETMP,
00246        & IATMP,IBTMP,ICTMP,IDTMP,IETMP)
00247   C-----------------------------------------------------------------------
00248   C     Takes the decay, IDKTMP -> I-(A+B+C+D+E)-TMP, and simply stores it
00249   C     if internal pointers not set up (.NOT.DKPSET) else if pre-existing
00250   C     mode updates branching ratio BRTMP and matrix element code IMETMP,
00251   C     if -ve leaves as is. If a new mode adds to table and if consistent
00252   C     adjusts pointers,  sets CMMOM (for two-body mode) and resets RSTAB
00253   C     if necessary.  The branching ratios of any other IDKTMP decays are
00254   C     scaled by (1.-BRTMP)/(1.-BR_OLD)
00255   C-----------------------------------------------------------------------
00256   */
00257 
00258   // Initialization
00259 
00260   if(enableForcedDecays_){
00261     header_str << "\n----------------------------------------------" << "\n";
00262     header_str << "HWMODK will be called to force decays" << "\n";
00263     header_str << "----------------------------------------------" << "\n";
00264     // Get ParameterSet with settings for forcing decays
00265     ParameterSet fdecays_pset = pset.getParameter<ParameterSet>("ForcedDecaysParameters") ; 
00266     vector<int> defidktmp ;
00267     defidktmp.push_back(0) ;
00268     std::vector<int> idktmp = fdecays_pset.getUntrackedParameter< vector<int> >("Idktmp", defidktmp);
00269     vector<double> defbrtmp ;
00270     defbrtmp.push_back(0) ;
00271     std::vector<double> brtmp = fdecays_pset.getUntrackedParameter< vector<double> >("Brtmp",defbrtmp);
00272     vector<int> defimetmp ;
00273     defimetmp.push_back(0) ;
00274     std::vector<int> imetmp = fdecays_pset.getUntrackedParameter< vector<int> >("Imetmp",defimetmp);
00275     vector<int> defiatmp ;
00276     defiatmp.push_back(0) ;
00277     std::vector<int> iatmp = fdecays_pset.getUntrackedParameter< vector<int> >("Iatmp",defiatmp);
00278     vector<int> defibtmp ;
00279     defibtmp.push_back(0) ;
00280     std::vector<int> ibtmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ibtmp",defibtmp);
00281     vector<int> defictmp ;
00282     defictmp.push_back(0) ;
00283     std::vector<int> ictmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ictmp",defictmp);
00284     vector<int> defidtmp ;
00285     defidtmp.push_back(0) ;
00286     std::vector<int> idtmp = fdecays_pset.getUntrackedParameter< vector<int> >("Idtmp",defidtmp);
00287     vector<int> defietmp ;
00288     defietmp.push_back(0) ;
00289     std::vector<int> ietmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ietmp",defietmp);
00290 
00291     for (unsigned int i = 0; i < idktmp.size(); i++){
00292         int idktmp1 = idktmp[i];
00293         double brtmp1 = brtmp[i];
00294         int imetmp1 = imetmp[i];
00295         int iatmp1 = iatmp[i];
00296         int ibtmp1 = ibtmp[i];
00297         int ictmp1 = ictmp[i];
00298         int idtmp1 = idtmp[i];
00299         int ietmp1 = ietmp[i];
00300         // Call Herwig function HWMODK
00301         header_str << "   Forcing decay " << idktmp1 << "->" << iatmp1 << "+" 
00302                                                              << ibtmp1 << "+" 
00303                                                              << ictmp1 << "+"
00304                                                              << idtmp1 << "+"
00305                                                              << ietmp1 << "  with BR " << brtmp1 << "\n";
00306         hwmodk(idktmp1, brtmp1, imetmp1, iatmp1, ibtmp1, ictmp1, idtmp1, ietmp1);
00307     }
00308   }   
00309 
00310   hwusta("PI0     ",1);
00311 
00312   // Initialize H1 pomeron/reggeon
00313   if(diffTopology_ != 3){
00314         int nstru = hwpram.NSTRU;
00315         int ifit = h1fit_;
00316         if(nstru == 9){
00317                 if((ifit <= 0)||(ifit >= 7)){
00318                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00319                         <<" Attempted to set non existant H1 1997 fit index. Has to be 1...6";
00320                 }
00321                 cout << "   H1 1997 pomeron pdf's" << endl;
00322                 cout << "   IFIT = "<< ifit << endl;
00323                 double xp = 0.1;
00324                 double Q2 = 75.0;
00325                 double xpq[13];
00326                 qcd_1994(xp,Q2,xpq,ifit);
00327         } else if(nstru == 10){
00328                 if((ifit <= 0)||(ifit >= 7)){
00329                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00330                         <<" Attempted to set non existant H1 1997 fit index. Has to be 1...6";
00331                 }
00332                 cout << "   H1 1997 reggeon pdf's" << endl;
00333                 cout << "   IFIT = "<< ifit << endl;
00334                 double xp = 0.1;
00335                 double Q2 = 75.0;
00336                 double xpq[13];
00337                 qcd_1994(xp,Q2,xpq,ifit);
00338 
00339         } else if(nstru == 12){
00340                 /*if(ifit != 1){
00341                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00342                         <<" Attempted to set non existant H1 2006 A fit index. Only IFIT=1";
00343                 }*/
00344                 ifit = 1;
00345                 cout << "   H1 2006 A pomeron pdf's" << endl;
00346                 cout << "   IFIT = "<< ifit <<endl;
00347                 double xp = 0.1;
00348                 double Q2 = 75.0;
00349                 double xpq[13];
00350                 double f2[2];
00351                 double fl[2];
00352                 double c2[2];
00353                 double cl[2];
00354                 qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
00355         } else if(nstru == 13){
00356                 /*if(ifit != 1){
00357                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00358                         <<" Attempted to set non existant H1 2006 A fit index. Only IFIT=1";
00359                 }*/
00360                 ifit = 1;
00361                 cout << "   H1 2006 A reggeon pdf's" << endl;
00362                 cout << "   IFIT = "<< ifit <<endl;
00363                 double xp = 0.1;
00364                 double Q2 = 75.0;
00365                 double xpq[13];
00366                 double f2[2];
00367                 double fl[2];
00368                 double c2[2];
00369                 double cl[2];
00370                 qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
00371         } else if(nstru == 14){
00372                 /*if(ifit != 2){
00373                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00374                         <<" Attempted to set non existant H1 2006 B fit index. Only IFIT=2";
00375                 }*/
00376                 ifit = 2;
00377                 cout << "   H1 2006 B pomeron pdf's" << endl;
00378                 cout << "   IFIT = "<< ifit <<endl;
00379                 double xp = 0.1;
00380                 double Q2 = 75.0;
00381                 double xpq[13];
00382                 double f2[2];
00383                 double fl[2];
00384                 double c2[2];
00385                 double cl[2];
00386                 qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
00387         } else if(nstru == 15){
00388                 /*if(ifit != 2){
00389                         throw edm::Exception(edm::errors::Configuration,"PomwigError")
00390                         <<" Attempted to set non existant H1 2006 B fit index. Only IFIT=2";
00391                 }*/
00392                 ifit = 2;
00393                 cout << "   H1 2006 B reggeon pdf's" << endl;
00394                 cout << "   IFIT = "<< ifit <<endl;
00395                 double xp = 0.1;
00396                 double Q2 = 75.0;
00397                 double xpq[13];
00398                 double f2[2];
00399                 double fl[2];
00400                 double c2[2];
00401                 double cl[2];
00402                 qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
00403         } else{
00404                 throw edm::Exception(edm::errors::Configuration,"PomwigError")
00405                 <<" Only running Pomeron H1 1997 (NSTRU=9), H1 2006 fit A (NSTRU=12) and H1 2006 fit B (NSTRU=14) or Reggeon H1 1997 (NSTRU=10), H1 2006 fit A (NSTRU=13) and H1 2006 fit B (NSTRU=15)";
00406         }
00407   }
00408 
00409   hweini();
00410   if(useJimmy_) jminit();
00411 
00412   produces<HepMCProduct>();
00413   produces<GenEventInfoProduct>();
00414   produces<GenRunInfoProduct, edm::InRun>();
00415 
00416   header_str << "\n----------------------------------------------" << "\n";
00417   header_str << "Starting event generation" << "\n";
00418   header_str << "----------------------------------------------" << "\n";
00419 
00420   edm::LogInfo("")<<header_str.str(); 
00421 
00422 
00423 }
00424 
00425 
00426 PomwigProducer::~PomwigProducer(){
00427 
00428   std::ostringstream footer_str;
00429 
00430   footer_str << "----------------------------------------------" << "\n";
00431   footer_str << "Event generation done" << "\n";
00432   footer_str << "----------------------------------------------" << "\n";
00433 
00434   LogInfo("") << footer_str.str();
00435 
00436   clear();
00437 }
00438 
00439 void PomwigProducer::clear() {
00440   // teminate elementary process
00441   hwefin();
00442   if(useJimmy_) jmefin();
00443 }
00444 
00445 
00446 void PomwigProducer::produce(Event & e, const EventSetup& es) {
00447 
00448   int counter = 0;
00449   double mpiok = 1.0;
00450 
00451   while(mpiok > 0.5 && counter < numTrials_) {
00452 
00453     // call herwig routines to create HEPEVT
00454     hwuine();
00455     hwepro();
00456     hwbgen();  
00457 
00458     // call jimmy ... only if event is not killed yet by HERWIG
00459     if(useJimmy_ && doMPInteraction_ && hwevnt.IERROR==0)
00460       mpiok = hwmsct_dummy(1.1);
00461     else mpiok = 0.0;
00462     counter++;
00463   }
00464   
00465   // event after numTrials MP is not ok -> skip event
00466   if(mpiok > 0.5) {
00467     LogWarning("") <<"   JIMMY could not produce MI in "<<numTrials_<<" trials.\n"<<"   Event will be skipped to prevent from deadlock.\n";
00468 
00469 // Throw an exception if generation fails.  Use the EventCorruption
00470 // exception since it maps onto SkipEvent which is what we want to do here.
00471 
00472     std::ostringstream sstr;
00473     sstr << "PomwigProducer: JIMMY could not produce MI in " << numTrials_ << " trials.\n";
00474     edm::Exception except(edm::errors::EventCorruption, sstr.str());
00475     throw except;
00476   }  
00477   
00478   hwdhob();
00479   hwcfor();
00480   hwcdec();
00481   hwdhad();
00482   hwdhvy();
00483   hwmevt();
00484   hwufne();
00485   
00486   // if event was killed by HERWIG; skip 
00487   if(hwevnt.IERROR!=0) {
00488     std::ostringstream sstr;
00489     sstr << "PomwigProducer: HERWIG indicates a failure. Abandon the event.\n";
00490     edm::Exception except(edm::errors::EventCorruption, sstr.str());
00491     throw except;
00492   }
00493 
00494   // -----------------  HepMC converter --------------------
00495   //HepMC::IO_HERWIG conv;
00496 
00497   // HEPEVT is ok, create new HepMC event
00498   evt = new HepMC::GenEvent();
00499   bool ok = conv.fill_next_event( evt );
00500   // if conversion failed; throw excpetion and stop processing
00501   if(!ok) throw cms::Exception("HerwigError")
00502     <<" Conversion problems in event nr."<< eventNumber_ << ".";  
00503 
00504   // set process id and event number
00505   evt->set_signal_process_id(hwproc.IPROC);  
00506   evt->set_event_number(eventNumber_);
00507   
00508   if (herwigHepMCVerbosity_) {
00509     LogWarning("") << "Event process = " << evt->signal_process_id() << "\n----------------------\n";
00510     evt->print();
00511   }
00512   
00513   // dummy if: event MUST be there
00514   if(evt)  {
00515     auto_ptr<HepMCProduct> bare_product(new HepMCProduct());  
00516     bare_product->addHepMCData(evt );
00517     e.put(bare_product);
00518   }
00519 
00520   std::auto_ptr<GenEventInfoProduct> genEventInfo(new GenEventInfoProduct(evt));
00521   e.put(genEventInfo);
00522   
00523   return;
00524 }
00525 
00526 // -------------------------------------------------------------------------------------------------
00527 // function to pass parameters to common blocks
00528 bool PomwigProducer::hwgive(const std::string& ParameterString) {
00529   bool accepted = 1;
00530 
00531   if(!strncmp(ParameterString.c_str(),"IPROC",5)) {
00532     hwproc.IPROC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00533     if(hwproc.IPROC<0) {
00534       throw cms::Exception("HerwigError")
00535         <<" Attempted to set IPROC to a negative value. This is not allowed.\n Please use the McatnloProducer to cope with negative valued IPROCs.";
00536     }
00537   }
00538   else if(!strncmp(ParameterString.c_str(),"AUTPDF(",7)){
00539     LogWarning("") <<"   WARNING: AUTPDF parameter *not* suported. HERWIG will use LHAPDF."<<"\n";
00540   }
00541   else if(!strncmp(ParameterString.c_str(),"TAUDEC",6)){
00542     int tostart=0;
00543     while(ParameterString.c_str()[tostart]!='=') tostart++;
00544     tostart++;
00545     while(ParameterString.c_str()[tostart]==' ') tostart++;
00546     int todo = 0;
00547     while(ParameterString.c_str()[todo+tostart]!='\0') {
00548       hwdspn.TAUDEC[todo]=ParameterString.c_str()[todo+tostart];
00549       todo++;
00550     }
00551     if(todo != 6) {
00552       throw cms::Exception("HerwigError")
00553         <<" Attempted to set TAUDEC to "<<hwdspn.TAUDEC<<". This is not allowed.\n Options for TAUDEC are HERWIG and TAUOLA.";
00554     }
00555   }
00556   else if(!strncmp(ParameterString.c_str(),"BDECAY",6)){
00557     LogWarning("")<<"   WARNING: BDECAY parameter *not* suported. HERWIG will use default b decay."<<"\n";
00558   }
00559   else if(!strncmp(ParameterString.c_str(),"QCDLAM",6))
00560     hwpram.QCDLAM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00561   else if(!strncmp(ParameterString.c_str(),"VQCUT",5))
00562     hwpram.VQCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00563   else if(!strncmp(ParameterString.c_str(),"VGCUT",5))
00564     hwpram.VGCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00565   else if(!strncmp(ParameterString.c_str(),"VPCUT",5))
00566     hwpram.VPCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00567   else if(!strncmp(ParameterString.c_str(),"CLMAX",5))
00568     hwpram.CLMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00569   else if(!strncmp(ParameterString.c_str(),"CLPOW",5))
00570     hwpram.CLPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00571   else if(!strncmp(ParameterString.c_str(),"PSPLT(1)",8))
00572     hwpram.PSPLT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00573   else if(!strncmp(ParameterString.c_str(),"PSPLT(2)",8))
00574     hwpram.PSPLT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00575   else if(!strncmp(ParameterString.c_str(),"QDIQK",5))
00576     hwpram.QDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00577   else if(!strncmp(ParameterString.c_str(),"PDIQK",5))
00578     hwpram.PDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00579   else if(!strncmp(ParameterString.c_str(),"QSPAC",5))
00580     hwpram.QSPAC = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00581   else if(!strncmp(ParameterString.c_str(),"PTRMS",5))
00582     hwpram.PTRMS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00583   else if(!strncmp(ParameterString.c_str(),"IPRINT",6))
00584     hwpram.IPRINT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00585   else if(!strncmp(ParameterString.c_str(),"PRVTX",5))
00586     hwpram.PRVTX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00587   else if(!strncmp(ParameterString.c_str(),"NPRFMT",6))
00588     hwpram.NPRFMT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00589   else if(!strncmp(ParameterString.c_str(),"PRNDEC",6))
00590     hwpram.PRNDEC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00591   else if(!strncmp(ParameterString.c_str(),"PRNDEF",6))
00592     hwpram.PRNDEF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00593   else if(!strncmp(ParameterString.c_str(),"PRNTEX",6))
00594     hwpram.PRNTEX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00595   else if(!strncmp(ParameterString.c_str(),"PRNWEB",6))
00596     hwpram.PRNWEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00597   else if(!strncmp(ParameterString.c_str(),"MAXPR",5))
00598     hwevnt.MAXPR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00599   else if(!strncmp(ParameterString.c_str(),"MAXER",5))
00600     hwevnt.MAXER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00601   else if(!strncmp(ParameterString.c_str(),"LWEVT",5))
00602     hwevnt.LWEVT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00603   else if(!strncmp(ParameterString.c_str(),"LRSUD",5))
00604     hwpram.LRSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00605   else if(!strncmp(ParameterString.c_str(),"LWSUD",5))
00606     hwpram.LWSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00607   else if(!strncmp(ParameterString.c_str(),"NRN(1)",6))
00608     hwevnt.NRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00609   else if(!strncmp(ParameterString.c_str(),"NRN(2)",6))
00610     hwevnt.NRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00611   else if(!strncmp(ParameterString.c_str(),"WGTMAX",6))
00612     hwevnt.WGTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00613   else if(!strncmp(ParameterString.c_str(),"NOWGT",5))
00614     hwevnt.NOWGT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00615   else if(!strncmp(ParameterString.c_str(),"AVWGT",5))
00616     hwevnt.AVWGT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00617   else if(!strncmp(ParameterString.c_str(),"AZSOFT",6))
00618     hwpram.AZSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00619   else if(!strncmp(ParameterString.c_str(),"AZSPIN",6))
00620     hwpram.AZSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00621   else if(!strncmp(ParameterString.c_str(),"HARDME",6))
00622     hwpram.HARDME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00623   else if(!strncmp(ParameterString.c_str(),"SOFTME",6))
00624     hwpram.SOFTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00625   else if(!strncmp(ParameterString.c_str(),"GCUTME",6))
00626     hwpram.GCUTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00627   else if(!strncmp(ParameterString.c_str(),"NCOLO",5))
00628     hwpram.NCOLO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00629   else if(!strncmp(ParameterString.c_str(),"NFLAV",5))
00630     hwpram.NFLAV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00631   else if(!strncmp(ParameterString.c_str(),"MODPDF(1)",9))
00632     hwpram.MODPDF[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00633   else if(!strncmp(ParameterString.c_str(),"MODPDF(2)",9))
00634     hwpram.MODPDF[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
00635   else if(!strncmp(ParameterString.c_str(),"NSTRU",5))
00636     hwpram.NSTRU = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00637   else if(!strncmp(ParameterString.c_str(),"PRSOF",5))
00638     hwpram.PRSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00639   else if(!strncmp(ParameterString.c_str(),"ENSOF",5))
00640     hwpram.ENSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00641   else if(!strncmp(ParameterString.c_str(),"IOPREM",6))
00642     hwpram.IOPREM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00643   else if(!strncmp(ParameterString.c_str(),"BTCLM",5))
00644     hwpram.BTCLM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00645   else if(!strncmp(ParameterString.c_str(),"ETAMIX",6))
00646     hwpram.ETAMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00647   else if(!strncmp(ParameterString.c_str(),"PHIMIX",6))
00648     hwpram.PHIMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00649   else if(!strncmp(ParameterString.c_str(),"H1MIX",5))
00650     hwpram.H1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00651   else if(!strncmp(ParameterString.c_str(),"F0MIX",5))
00652     hwpram.F0MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00653   else if(!strncmp(ParameterString.c_str(),"F1MIX",5))
00654     hwpram.F1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00655   else if(!strncmp(ParameterString.c_str(),"F2MIX",5))
00656     hwpram.F2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00657   else if(!strncmp(ParameterString.c_str(),"ET2MIX",6))
00658     hwpram.ET2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00659   else if(!strncmp(ParameterString.c_str(),"OMHMIX",6))
00660     hwpram.OMHMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00661   else if(!strncmp(ParameterString.c_str(),"PH3MIX",6))
00662     hwpram.PH3MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00663   else if(!strncmp(ParameterString.c_str(),"B1LIM",5))
00664     hwpram.B1LIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00665   else if(!strncmp(ParameterString.c_str(),"CLDIR(1)",8))
00666     hwpram.CLDIR[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00667   else if(!strncmp(ParameterString.c_str(),"CLDIR(2)",8))
00668     hwpram.CLDIR[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);   
00669   else if(!strncmp(ParameterString.c_str(),"CLSMR(1)",8))
00670     hwpram.CLSMR[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00671   else if(!strncmp(ParameterString.c_str(),"CLSMR(2)",8))
00672     hwpram.CLSMR[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00673   else if(!strncmp(ParameterString.c_str(),"RMASS(1)",8))
00674     hwprop.RMASS[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00675   else if(!strncmp(ParameterString.c_str(),"RMASS(2)",8))
00676     hwprop.RMASS[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00677   else if(!strncmp(ParameterString.c_str(),"RMASS(3)",8))
00678     hwprop.RMASS[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00679   else if(!strncmp(ParameterString.c_str(),"RMASS(4)",8))
00680     hwprop.RMASS[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00681   else if(!strncmp(ParameterString.c_str(),"RMASS(5)",8))
00682     hwprop.RMASS[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00683   else if(!strncmp(ParameterString.c_str(),"RMASS(6)",8))
00684     hwprop.RMASS[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00685   else if(!strncmp(ParameterString.c_str(),"RMASS(13)",9))
00686     hwprop.RMASS[13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00687   else if(!strncmp(ParameterString.c_str(),"SUDORD",6))
00688     hwusud.SUDORD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00689   else if(!strncmp(ParameterString.c_str(),"INTER",5))
00690     hwusud.INTER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00691   else if(!strncmp(ParameterString.c_str(),"NEGWTS",6))
00692     hw6203.NEGWTS = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00693   else if(!strncmp(ParameterString.c_str(),"PMBN1",5))
00694     hwminb.PMBN1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00695   else if(!strncmp(ParameterString.c_str(),"PMBN2",5))
00696     hwminb.PMBN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00697   else if(!strncmp(ParameterString.c_str(),"PMBN3",5))
00698     hwminb.PMBN3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00699   else if(!strncmp(ParameterString.c_str(),"PMBK1",5))
00700     hwminb.PMBK1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00701   else if(!strncmp(ParameterString.c_str(),"PMBK2",5))
00702     hwminb.PMBK2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00703   else if(!strncmp(ParameterString.c_str(),"PMBM1",5))
00704     hwminb.PMBM1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00705   else if(!strncmp(ParameterString.c_str(),"PMBM2",5))
00706     hwminb.PMBM2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00707   else if(!strncmp(ParameterString.c_str(),"PMBP1",5))
00708     hwminb.PMBP1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00709   else if(!strncmp(ParameterString.c_str(),"PMBP2",5))
00710     hwminb.PMBP2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00711   else if(!strncmp(ParameterString.c_str(),"PMBP3",5))
00712     hwminb.PMBP3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00713   else if(!strncmp(ParameterString.c_str(),"VMIN2",5))
00714     hwdist.VMIN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00715   else if(!strncmp(ParameterString.c_str(),"EXAG",4))
00716     hwdist.EXAG = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00717   else if(!strncmp(ParameterString.c_str(),"PRECO",5))
00718     hwuclu.PRECO = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00719   else if(!strncmp(ParameterString.c_str(),"CLRECO",6))
00720     hwuclu.CLRECO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00721   else if(!strncmp(ParameterString.c_str(),"PWT(1)",6))
00722     hwuwts.PWT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00723   else if(!strncmp(ParameterString.c_str(),"PWT(2)",6))
00724     hwuwts.PWT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00725   else if(!strncmp(ParameterString.c_str(),"PWT(3)",6))
00726     hwuwts.PWT[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00727   else if(!strncmp(ParameterString.c_str(),"PWT(4)",6))
00728     hwuwts.PWT[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00729   else if(!strncmp(ParameterString.c_str(),"PWT(5)",6))
00730     hwuwts.PWT[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00731   else if(!strncmp(ParameterString.c_str(),"PWT(6)",6))
00732     hwuwts.PWT[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00733   else if(!strncmp(ParameterString.c_str(),"PWT(7)",6))
00734     hwuwts.PWT[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00735   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,0)",12))
00736     hwuwts.REPWT[0][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00737   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,1)",12))
00738     hwuwts.REPWT[1][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00739   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,2)",12))
00740     hwuwts.REPWT[2][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00741   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,3)",12))
00742     hwuwts.REPWT[3][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00743   else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,4)",12))
00744     hwuwts.REPWT[4][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00745   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,0)",12))
00746     hwuwts.REPWT[0][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00747   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,1)",12))
00748     hwuwts.REPWT[1][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00749   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,2)",12))
00750     hwuwts.REPWT[2][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00751   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,3)",12))
00752     hwuwts.REPWT[3][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00753   else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,4)",12))
00754     hwuwts.REPWT[4][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00755   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,0)",12))
00756     hwuwts.REPWT[0][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00757   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,1)",12))
00758     hwuwts.REPWT[1][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00759   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,2)",12))
00760     hwuwts.REPWT[2][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00761   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,3)",12))
00762     hwuwts.REPWT[3][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00763   else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,4)",12))
00764     hwuwts.REPWT[4][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00765   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,0)",12))
00766     hwuwts.REPWT[0][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00767   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,1)",12))
00768     hwuwts.REPWT[1][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00769   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,2)",12))
00770     hwuwts.REPWT[2][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00771   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,3)",12))
00772     hwuwts.REPWT[3][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00773   else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,4)",12))
00774     hwuwts.REPWT[4][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00775   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,0)",12))
00776     hwuwts.REPWT[0][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00777   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,1)",12))
00778     hwuwts.REPWT[1][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00779   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,2)",12))
00780     hwuwts.REPWT[2][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00781   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,3)",12))
00782     hwuwts.REPWT[3][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00783   else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,4)",12))
00784     hwuwts.REPWT[4][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00785   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,0)",12))
00786     hwuwts.REPWT[0][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00787   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,1)",12))
00788     hwuwts.REPWT[1][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00789   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,2)",12))
00790     hwuwts.REPWT[2][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00791   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,3)",12))
00792     hwuwts.REPWT[3][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00793   else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,4)",12))
00794     hwuwts.REPWT[4][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00795   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,0)",12))
00796     hwuwts.REPWT[0][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00797   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,1)",12))
00798     hwuwts.REPWT[1][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00799   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,2)",12))
00800     hwuwts.REPWT[2][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00801   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,3)",12))
00802     hwuwts.REPWT[3][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00803   else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,4)",12))
00804     hwuwts.REPWT[4][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00805   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,0)",12))
00806     hwuwts.REPWT[0][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00807   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,1)",12))
00808     hwuwts.REPWT[1][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00809   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,2)",12))
00810     hwuwts.REPWT[2][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00811   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,3)",12))
00812     hwuwts.REPWT[3][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00813   else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,4)",12))
00814     hwuwts.REPWT[4][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00815   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,0)",12))
00816     hwuwts.REPWT[0][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00817   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,1)",12))
00818     hwuwts.REPWT[1][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00819   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,2)",12))
00820     hwuwts.REPWT[2][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00821   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,3)",12))
00822     hwuwts.REPWT[3][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00823   else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,4)",12))
00824     hwuwts.REPWT[4][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00825   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,0)",12))
00826     hwuwts.REPWT[0][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00827   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,1)",12))
00828     hwuwts.REPWT[1][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00829   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,2)",12))
00830     hwuwts.REPWT[2][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00831   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,3)",12))
00832     hwuwts.REPWT[3][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00833   else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,4)",12))
00834     hwuwts.REPWT[4][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00835   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,0)",12))
00836     hwuwts.REPWT[0][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00837   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,1)",12))
00838     hwuwts.REPWT[1][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00839   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,2)",12))
00840     hwuwts.REPWT[2][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00841   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,3)",12))
00842     hwuwts.REPWT[3][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00843   else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,4)",12))
00844     hwuwts.REPWT[4][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00845   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,0)",12))
00846     hwuwts.REPWT[0][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00847   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,1)",12))
00848     hwuwts.REPWT[1][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00849   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,2)",12))
00850     hwuwts.REPWT[2][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00851   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,3)",12))
00852     hwuwts.REPWT[3][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00853   else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,4)",12))
00854     hwuwts.REPWT[4][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00855   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,0)",12))
00856     hwuwts.REPWT[0][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00857   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,1)",12))
00858     hwuwts.REPWT[1][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00859   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,2)",12))
00860     hwuwts.REPWT[2][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00861   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,3)",12))
00862     hwuwts.REPWT[3][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00863   else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,4)",12))
00864     hwuwts.REPWT[4][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00865   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,0)",12))
00866     hwuwts.REPWT[0][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00867   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,1)",12))
00868     hwuwts.REPWT[1][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00869   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,2)",12))
00870     hwuwts.REPWT[2][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00871   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,3)",12))
00872     hwuwts.REPWT[3][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00873   else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,4)",12))
00874     hwuwts.REPWT[4][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00875   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,0)",12))
00876     hwuwts.REPWT[0][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00877   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,1)",12))
00878     hwuwts.REPWT[1][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00879   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,2)",12))
00880     hwuwts.REPWT[2][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00881   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,3)",12))
00882     hwuwts.REPWT[3][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00883   else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,4)",12))
00884     hwuwts.REPWT[4][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00885   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,0)",12))
00886     hwuwts.REPWT[0][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00887   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,1)",12))
00888     hwuwts.REPWT[1][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00889   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,2)",12))
00890     hwuwts.REPWT[2][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00891   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,3)",12))
00892     hwuwts.REPWT[3][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00893   else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,4)",12))
00894     hwuwts.REPWT[4][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00895   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,0)",12))
00896     hwuwts.REPWT[0][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00897   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,1)",12))
00898     hwuwts.REPWT[1][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00899   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,2)",12))
00900     hwuwts.REPWT[2][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00901   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,3)",12))
00902     hwuwts.REPWT[3][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00903   else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,4)",12))
00904     hwuwts.REPWT[4][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00905   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,0)",12))
00906     hwuwts.REPWT[0][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00907   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,1)",12))
00908     hwuwts.REPWT[1][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00909   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,2)",12))
00910     hwuwts.REPWT[2][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00911   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,3)",12))
00912     hwuwts.REPWT[3][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00913   else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,4)",12))
00914     hwuwts.REPWT[4][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00915   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,0)",12))
00916     hwuwts.REPWT[0][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00917   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,1)",12))
00918     hwuwts.REPWT[1][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00919   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,2)",12))
00920     hwuwts.REPWT[2][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00921   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,3)",12))
00922     hwuwts.REPWT[3][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00923   else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,4)",12))
00924     hwuwts.REPWT[4][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00925   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,0)",12))
00926     hwuwts.REPWT[0][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00927   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,1)",12))
00928     hwuwts.REPWT[1][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00929   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,2)",12))
00930     hwuwts.REPWT[2][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00931   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,3)",12))
00932     hwuwts.REPWT[3][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00933   else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,4)",12))
00934     hwuwts.REPWT[4][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00935   else if(!strncmp(ParameterString.c_str(),"SNGWT",5))
00936     hwuwts.SNGWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00937   else if(!strncmp(ParameterString.c_str(),"DECWT",5))
00938     hwuwts.DECWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00939   else if(!strncmp(ParameterString.c_str(),"PLTCUT",6))
00940     hwdist.PLTCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00941   else if(!strncmp(ParameterString.c_str(),"VTOCDK(",7)){
00942     // we find the index ...
00943     int ind = atoi(&ParameterString[7]);  
00944     hwprop.VTOCDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
00945   else if(!strncmp(ParameterString.c_str(),"VTORDK(",7)){
00946     // we find the index ...
00947     int ind = atoi(&ParameterString[7]);  
00948     hwprop.VTORDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
00949   else if(!strncmp(ParameterString.c_str(),"PIPSMR",6))
00950     hwdist.PIPSMR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00951   else if(!strncmp(ParameterString.c_str(),"VIPWID(1)",9))
00952     hw6202.VIPWID[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00953   else if(!strncmp(ParameterString.c_str(),"VIPWID(2)",9))
00954     hw6202.VIPWID[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00955   else if(!strncmp(ParameterString.c_str(),"VIPWID(3)",9))
00956     hw6202.VIPWID[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00957   else if(!strncmp(ParameterString.c_str(),"MAXDKL",6))
00958     hwdist.MAXDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00959   else if(!strncmp(ParameterString.c_str(),"IOPDKL",6))
00960     hwdist.IOPDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00961   else if(!strncmp(ParameterString.c_str(),"DXRCYL",6))
00962     hw6202.DXRCYL = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00963   else if(!strncmp(ParameterString.c_str(),"DXZMAX",6))
00964     hw6202.DXZMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00965   else if(!strncmp(ParameterString.c_str(),"DXRSPH",6))
00966     hw6202.DXRSPH = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00967   //  else if(!strncmp(ParameterString.c_str(),"BDECAY",6))
00968   //    hwprch.BDECAY = ParameterString[strcspn(ParameterString.c_str(),"=")+1];  
00969   else if(!strncmp(ParameterString.c_str(),"MIXING",6))
00970     hwdist.MIXING = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00971   else if(!strncmp(ParameterString.c_str(),"XMIX(1)",7))
00972     hwdist.XMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00973   else if(!strncmp(ParameterString.c_str(),"XMIX(2)",7))
00974     hwdist.XMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00975   else if(!strncmp(ParameterString.c_str(),"YMIX(1)",7))
00976     hwdist.YMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00977   else if(!strncmp(ParameterString.c_str(),"YMIX(2)",7))
00978     hwdist.YMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);  
00979   else if(!strncmp(ParameterString.c_str(),"RMASS(198)",10))
00980     hwprop.RMASS[198] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00981   else if(!strncmp(ParameterString.c_str(),"RMASS(199)",10))
00982     hwprop.RMASS[199] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00983   else if(!strncmp(ParameterString.c_str(),"GAMW",4))
00984     hwpram.GAMW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00985   else if(!strncmp(ParameterString.c_str(),"GAMZ",4))
00986     hwpram.GAMZ = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);      
00987   else if(!strncmp(ParameterString.c_str(),"RMASS(200)",10))
00988     hwprop.RMASS[200] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00989   else if(!strncmp(ParameterString.c_str(),"WZRFR",5))
00990     hw6202.WZRFR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00991   else if(!strncmp(ParameterString.c_str(),"MODBOS(",7)) {
00992     int ind = atoi(&ParameterString[7]);
00993     hwbosc.MODBOS[ind-1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
00994   else if(!strncmp(ParameterString.c_str(),"RMASS(201)",10))
00995     hwprop.RMASS[201] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00996   else if(!strncmp(ParameterString.c_str(),"IOPHIG",6))
00997     hwbosc.IOPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
00998   else if(!strncmp(ParameterString.c_str(),"GAMMAX",6))
00999     hwbosc.GAMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01000   else if(!strncmp(ParameterString.c_str(),"ENHANC(",7)) {
01001     int ind = atoi(&ParameterString[7]);
01002     hwbosc.ENHANC[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01003   else if(!strncmp(ParameterString.c_str(),"RMASS(209)",10))
01004     hwprop.RMASS[209] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01005   else if(!strncmp(ParameterString.c_str(),"RMASS(215)",10))
01006     hwprop.RMASS[215] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01007   else if(!strncmp(ParameterString.c_str(),"ALPHEM",6))
01008     hwpram.ALPHEM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01009   else if(!strncmp(ParameterString.c_str(),"SWEIN",5))
01010     hwpram.SWEIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01011   else if(!strncmp(ParameterString.c_str(),"QFCH(",5)){
01012     int ind = atoi(&ParameterString[5]);
01013     hwpram.QFCH[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01014   else if(!strncmp(ParameterString.c_str(),"AFCH(1,",7)){
01015     int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
01016     hwpram.AFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01017   else if(!strncmp(ParameterString.c_str(),"AFCH(2,",7)){
01018     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01019     hwpram.AFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01020   else if(!strncmp(ParameterString.c_str(),"AFCH(3,",7)){
01021     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01022     hwpram.AFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01023   else if(!strncmp(ParameterString.c_str(),"AFCH(4,",7)){
01024     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01025     hwpram.AFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01026   else if(!strncmp(ParameterString.c_str(),"AFCH(5,",7)){
01027     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01028     hwpram.AFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01029   else if(!strncmp(ParameterString.c_str(),"AFCH(6,",7)){
01030     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01031     hwpram.AFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01032   else if(!strncmp(ParameterString.c_str(),"AFCH(7,",7)){
01033     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01034     hwpram.AFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01035   else if(!strncmp(ParameterString.c_str(),"AFCH(8,",7)){
01036     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01037     hwpram.AFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01038   else if(!strncmp(ParameterString.c_str(),"AFCH(9,",7)){
01039     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01040     hwpram.AFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01041   else if(!strncmp(ParameterString.c_str(),"AFCH(10,",8)){
01042     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01043     hwpram.AFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01044   else if(!strncmp(ParameterString.c_str(),"AFCH(11,",8)){
01045     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01046     hwpram.AFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01047   else if(!strncmp(ParameterString.c_str(),"AFCH(12,",8)){
01048     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01049     hwpram.AFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01050   else if(!strncmp(ParameterString.c_str(),"AFCH(13,",8)){
01051     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01052     hwpram.AFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01053   else if(!strncmp(ParameterString.c_str(),"AFCH(14,",8)){
01054     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01055     hwpram.AFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01056   else if(!strncmp(ParameterString.c_str(),"AFCH(15,",8)){
01057     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01058     hwpram.AFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01059   else if(!strncmp(ParameterString.c_str(),"AFCH(16,",8)){
01060     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01061     hwpram.AFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01062   else if(!strncmp(ParameterString.c_str(),"VFCH(1,",7)){
01063     int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
01064     hwpram.VFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01065   else if(!strncmp(ParameterString.c_str(),"VFCH(2,",7)){
01066     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01067     hwpram.VFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01068   else if(!strncmp(ParameterString.c_str(),"VFCH(3,",7)){
01069     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01070     hwpram.VFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01071   else if(!strncmp(ParameterString.c_str(),"VFCH(4,",7)){
01072     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01073     hwpram.VFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01074   else if(!strncmp(ParameterString.c_str(),"VFCH(5,",7)){
01075     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01076     hwpram.VFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01077   else if(!strncmp(ParameterString.c_str(),"VFCH(6,",7)){
01078     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01079     hwpram.VFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01080   else if(!strncmp(ParameterString.c_str(),"VFCH(7,",7)){
01081     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01082     hwpram.VFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01083   else if(!strncmp(ParameterString.c_str(),"VFCH(8,",7)){
01084     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01085     hwpram.VFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01086   else if(!strncmp(ParameterString.c_str(),"VFCH(9,",7)){
01087     int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
01088     hwpram.VFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01089   else if(!strncmp(ParameterString.c_str(),"VFCH(10,",8)){
01090     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01091     hwpram.VFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01092   else if(!strncmp(ParameterString.c_str(),"VFCH(11,",8)){
01093     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01094     hwpram.VFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01095   else if(!strncmp(ParameterString.c_str(),"VFCH(12,",8)){
01096     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01097     hwpram.VFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01098   else if(!strncmp(ParameterString.c_str(),"VFCH(13,",8)){
01099     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01100     hwpram.VFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01101   else if(!strncmp(ParameterString.c_str(),"VFCH(14,",8)){
01102     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01103     hwpram.VFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01104   else if(!strncmp(ParameterString.c_str(),"VFCH(15,",8)){
01105     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01106     hwpram.VFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01107   else if(!strncmp(ParameterString.c_str(),"VFCH(16,",8)){
01108     int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
01109     hwpram.VFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01110   else if(!strncmp(ParameterString.c_str(),"ZPRIME",6))
01111     hwpram.ZPRIME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01112   else if(!strncmp(ParameterString.c_str(),"RMASS(202)",10))
01113     hwprop.RMASS[202] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01114   else if(!strncmp(ParameterString.c_str(),"GAMZP",5))
01115     hwpram.GAMZP = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01116   else if(!strncmp(ParameterString.c_str(),"VCKM(",5)) {
01117     int ind1 = atoi(&ParameterString[5]);
01118     if(ind1<1||ind1>3) return 0;
01119     int ind2 = atoi(&ParameterString[7]);
01120     if(ind2<1||ind2>3) return 0;
01121     hwpram.VCKM[ind2][ind1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01122   else if(!strncmp(ParameterString.c_str(),"SCABI",5))
01123     hwpram.SCABI = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01124   else if(!strncmp(ParameterString.c_str(),"EPOLN(",6)) {
01125     int ind = atoi(&ParameterString[6]);
01126     if(ind<1||ind>3) return 0;
01127     hwhard.EPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01128   else if(!strncmp(ParameterString.c_str(),"PPOLN(",6)) {
01129     int ind = atoi(&ParameterString[6]);
01130     if(ind<1||ind>3) return 0;
01131     hwhard.PPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
01132   else if(!strncmp(ParameterString.c_str(),"QLIM",4))
01133     hwhard.QLIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01134   else if(!strncmp(ParameterString.c_str(),"THMAX",5))
01135     hwhard.THMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01136   else if(!strncmp(ParameterString.c_str(),"Y4JT",4))
01137     hwhard.Y4JT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01138   else if(!strncmp(ParameterString.c_str(),"DURHAM",6))
01139     hwhard.DURHAM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01140   else if(!strncmp(ParameterString.c_str(),"IOP4JT(1)",9))
01141     hwpram.IOP4JT[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01142   else if(!strncmp(ParameterString.c_str(),"IOP4JT(2)",9))
01143     hwpram.IOP4JT[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01144   else if(!strncmp(ParameterString.c_str(),"BGSHAT",6))
01145     hwhard.BGSHAT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01146   else if(!strncmp(ParameterString.c_str(),"BREIT",5))
01147     hwbrch.BREIT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01148   else if(!strncmp(ParameterString.c_str(),"USECMF",6))
01149     hwbrch.USECMF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01150   else if(!strncmp(ParameterString.c_str(),"NOSPAC",6))
01151     hwpram.NOSPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01152   else if(!strncmp(ParameterString.c_str(),"ISPAC",5))
01153     hwpram.ISPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01154   else if(!strncmp(ParameterString.c_str(),"TMNISR",6))
01155     hwhard.TMNISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01156   else if(!strncmp(ParameterString.c_str(),"ZMXISR",6))
01157     hwhard.ZMXISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01158   else if(!strncmp(ParameterString.c_str(),"ASFIXD",6))
01159     hwhard.ASFIXD = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01160   else if(!strncmp(ParameterString.c_str(),"OMEGA0",6))
01161     hwhard.OMEGA0 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01162   else if(!strncmp(ParameterString.c_str(),"IAPHIG",6))
01163     hwhard.IAPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01164   else if(!strncmp(ParameterString.c_str(),"PHOMAS",6))
01165     hwhard.PHOMAS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);         
01166   else if(!strncmp(ParameterString.c_str(),"PRESPL",6))
01167     hw6500.PRESPL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);            
01168   else if(!strncmp(ParameterString.c_str(),"PTMIN",5))
01169     hwhard.PTMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01170   else if(!strncmp(ParameterString.c_str(),"PTMAX",5))
01171     hwhard.PTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01172   else if(!strncmp(ParameterString.c_str(),"PTPOW",5))
01173     hwhard.PTPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01174   else if(!strncmp(ParameterString.c_str(),"YJMIN",5))
01175     hwhard.YJMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01176   else if(!strncmp(ParameterString.c_str(),"YJMAX",5))
01177     hwhard.YJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01178   else if(!strncmp(ParameterString.c_str(),"EMMIN",5))
01179     hwhard.EMMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01180   else if(!strncmp(ParameterString.c_str(),"EMMAX",5))
01181     hwhard.EMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01182   else if(!strncmp(ParameterString.c_str(),"EMPOW",5))
01183     hwhard.EMPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01184   else if(!strncmp(ParameterString.c_str(),"Q2MIN",5))
01185     hwhard.Q2MIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01186   else if(!strncmp(ParameterString.c_str(),"Q2MAX",5))
01187     hwhard.Q2MAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01188   else if(!strncmp(ParameterString.c_str(),"Q2POW",5))
01189     hwhard.Q2POW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01190   else if(!strncmp(ParameterString.c_str(),"YBMIN",5))
01191     hwhard.YBMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01192   else if(!strncmp(ParameterString.c_str(),"YBMAX",5))
01193     hwhard.YBMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01194   else if(!strncmp(ParameterString.c_str(),"WHMIN",5))
01195     hwhard.WHMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01196   else if(!strncmp(ParameterString.c_str(),"ZJMAX",5))
01197     hwhard.ZJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01198   else if(!strncmp(ParameterString.c_str(),"Q2WWMN",6))
01199     hwhard.Q2WWMN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01200   else if(!strncmp(ParameterString.c_str(),"Q2WWMX",6))
01201     hwhard.Q2WWMX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01202   else if(!strncmp(ParameterString.c_str(),"YWWMIN",6))
01203     hwhard.YWWMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01204   else if(!strncmp(ParameterString.c_str(),"YWWMAX",6))
01205     hwhard.YWWMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01206   else if(!strncmp(ParameterString.c_str(),"CSPEED",6))
01207     hwpram.CSPEED = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01208   else if(!strncmp(ParameterString.c_str(),"GEV2NB",6))
01209     hwpram.GEV2NB = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01210   else if(!strncmp(ParameterString.c_str(),"IBSH",4))
01211     hwhard.IBSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01212   else if(!strncmp(ParameterString.c_str(),"IBRN(1)",7))
01213     hwhard.IBRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01214   else if(!strncmp(ParameterString.c_str(),"IBRN(2)",7))
01215     hwhard.IBRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01216   else if(!strncmp(ParameterString.c_str(),"NQEV",4))
01217     hwusud.NQEV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01218   else if(!strncmp(ParameterString.c_str(),"ZBINM",5))
01219     hwpram.ZBINM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01220   else if(!strncmp(ParameterString.c_str(),"NZBIN",5))
01221     hwpram.NZBIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01222   else if(!strncmp(ParameterString.c_str(),"NBTRY",5))
01223     hwpram.NBTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01224   else if(!strncmp(ParameterString.c_str(),"NCTRY",5))
01225     hwpram.NCTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01226   else if(!strncmp(ParameterString.c_str(),"NETRY",5))
01227     hwpram.NETRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01228   else if(!strncmp(ParameterString.c_str(),"NSTRY",5))
01229     hwpram.NSTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01230   else if(!strncmp(ParameterString.c_str(),"ACCUR",5))
01231     hwusud.ACCUR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01232   else if(!strncmp(ParameterString.c_str(),"RPARTY",6))
01233     hwrpar.RPARTY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01234   else if(!strncmp(ParameterString.c_str(),"SUSYIN",6))
01235     hwsusy.SUSYIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01236   else if(!strncmp(ParameterString.c_str(),"LRSUSY",6))
01237     hw6202.LRSUSY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01238   else if(!strncmp(ParameterString.c_str(),"SYSPIN",6))
01239     hwdspn.SYSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01240   else if(!strncmp(ParameterString.c_str(),"THREEB",6))
01241     hwdspn.THREEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01242   else if(!strncmp(ParameterString.c_str(),"FOURB",5))
01243     hwdspn.FOURB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01244   else if(!strncmp(ParameterString.c_str(),"LHSOFT",6))
01245     hwgupr.LHSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01246   else if(!strncmp(ParameterString.c_str(),"LHGLSF",6))
01247     hwgupr.LHGLSF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01248   else if(!strncmp(ParameterString.c_str(),"OPTM",4))
01249     hw6300.OPTM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01250   else if(!strncmp(ParameterString.c_str(),"IOPSTP",6))
01251     hw6300.IOPSTP = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01252   else if(!strncmp(ParameterString.c_str(),"IOPSH",5))
01253     hw6300.IOPSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01254   else if(!strncmp(ParameterString.c_str(),"JMUEO",5))
01255     jmparm.JMUEO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01256   else if(!strncmp(ParameterString.c_str(),"PTJIM",5))
01257     jmparm.PTJIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01258   else if(!strncmp(ParameterString.c_str(),"JMRAD(73)",9))
01259     jmparm.JMRAD[72] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); 
01260 
01261   else accepted = 0;
01262 
01263   return accepted;
01264 }
01265 
01266 
01267 #ifdef NEVER
01268 //-------------------------------------------------------------------------------
01269 // dummy hwaend (to be REMOVED from herwig)
01270 #define hwaend hwaend_
01271 
01272 extern "C" {
01273   void hwaend(){/*dummy*/}
01274 }
01275 //-------------------------------------------------------------------------------
01276 #endif
01277 
01278 bool PomwigProducer::setRngSeeds(int mseed)
01279 {
01280   double temx[5];
01281   for (int i=0; i<5; i++) {
01282     mseed = mseed * 29943829 - 1;
01283     temx[i] = mseed * (1./(65536.*65536.));
01284   }
01285   long double c;
01286   c = (long double)2111111111.0 * temx[3] +
01287     1492.0 * temx[2] +
01288     1776.0 * temx[1] +
01289     5115.0 * temx[0] +
01290     temx[4];
01291   temx[3] = temx[2];
01292   temx[2] = temx[1];
01293   temx[1] = temx[0];
01294   temx[4] = floorl(c);
01295   temx[0] = c - temx[4];
01296   temx[4] = temx[4] * (1./(65536.*65536.));
01297   hwevnt.NRN[0]=int(temx[0]*99999);
01298   c = (long double)2111111111.0 * temx[3] +
01299     1492.0 * temx[2] +
01300     1776.0 * temx[1] +
01301     5115.0 * temx[0] +
01302     temx[4];
01303   temx[3] = temx[2];
01304   temx[2] = temx[1];
01305   temx[1] = temx[0];
01306   temx[4] = floorl(c);
01307   temx[0] = c - temx[4];
01308   hwevnt.NRN[1]=int(temx[0]*99999);
01309 
01310   return true;
01311 }
01312 
01313 void PomwigProducer::endRun(Run & run) {
01314  
01315  double intCrossSect = 1000.0*survivalProbability_*hwevnt.AVWGT;
01316 
01317  auto_ptr<GenRunInfoProduct> genRunInfoProd (new GenRunInfoProduct());
01318  genRunInfoProd->setInternalXSec(intCrossSect);
01319  genRunInfoProd->setFilterEfficiency(extFilterEff_);
01320  genRunInfoProd->setExternalXSecLO(extCrossSect_);
01321  genRunInfoProd->setExternalXSecNLO(-1.);   
01322 
01323  run.put(genRunInfoProd);
01324 }
01325 
01326 #ifdef NEVER
01327 extern "C" {
01328   void cmsending_(int* ecode) {
01329     LogError("")<<"   ERROR: Herwig stoped run after recieving error code "<<*ecode<<".\n";
01330     throw cms::Exception("HerwigError") <<" Herwig stoped run with error code "<<*ecode<<".";
01331   }
01332 }
01333 #endif
01334 
01335 DEFINE_FWK_MODULE(PomwigProducer);