CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::PomwigProducer Class Reference

#include <PomwigProducer.h>

Inheritance diagram for edm::PomwigProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

void endRun (Run &r)
 
 PomwigProducer (const ParameterSet &)
 
virtual ~PomwigProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

void clear ()
 
bool hwgive (const std::string &iParm)
 
virtual void produce (Event &e, const EventSetup &es)
 
bool setRngSeeds (int)
 

Private Attributes

double comEnergy_
 
HepMC::IO_HERWIG conv
 
int diffTopology_
 
bool doMPInteraction_
 
bool enableForcedDecays_
 
int eventNumber_
 
HepMC::GenEvent * evt
 
double extCrossSect_
 
double extFilterEff_
 
CLHEP::HepRandomEngine * fRandomEngine
 
int h1fit_
 
bool herwigHepMCVerbosity_
 
int herwigLhapdfVerbosity_
 
int herwigVerbosity_
 
int maxEventsToPrint_
 
int numTrials_
 
bool printCards_
 
double survivalProbability_
 
bool useJimmy_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Detailed Description

Definition at line 24 of file PomwigProducer.h.

Constructor & Destructor Documentation

PomwigProducer::PomwigProducer ( const ParameterSet pset)

Definition at line 55 of file PomwigProducer.cc.

References cl, comEnergy_, edm::errors::Configuration, gather_cfg::cout, diffTopology_, doMPInteraction_, enableForcedDecays_, edm::hlt::Exception, python.connectstrParser::f2, fRandomEngine, edm::RandomNumberGenerator::getEngine(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), h1fit_, herwigHepMCVerbosity_, herwigLhapdfVerbosity_, herwigVerbosity_, hwdspn, hwgive(), hwmodk, i, jimmin, jminit, jmparm, maxEventsToPrint_, edm::RandomNumberGenerator::mySeed(), mysetpdfpath, NULL, numTrials_, pdfpath, printCards_, qcd_1994, qcd_2006, randomEngine, setherwpdf, setRngSeeds(), and useJimmy_.

55  :
56  EDProducer(), evt(0),
57  herwigVerbosity_ (pset.getUntrackedParameter<int>("herwigVerbosity",0)),
58  herwigHepMCVerbosity_ (pset.getUntrackedParameter<bool>("herwigHepMCVerbosity",false)),
59  herwigLhapdfVerbosity_ (pset.getUntrackedParameter<int>("herwigLhapdfVerbosity",0)),
60  maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",0)),
61  comEnergy_(pset.getParameter<double>("comEnergy")),
62  printCards_(pset.getUntrackedParameter<bool>("printCards",false)),
63  extCrossSect_(pset.getUntrackedParameter<double>("crossSection", -1.)),
64  extFilterEff_(pset.getUntrackedParameter<double>("filterEfficiency", -1.)),
65  survivalProbability_(pset.getParameter<double>("survivalProbability")),
66  diffTopology_(pset.getParameter<int>("diffTopology")),
67  h1fit_(pset.getParameter<int>("h1fit")),
68  enableForcedDecays_(pset.getUntrackedParameter<bool>("enableForcedDecays",false)),
69  eventNumber_(0)
70 {
71  useJimmy_ = false;
72  numTrials_ = 100;
73  doMPInteraction_ = false;
74 
75  std::ostringstream header_str;
76 
77  header_str << "----------------------------------------------\n";
78  header_str << "Initializing PomwigProducer\n";
79  header_str << "----------------------------------------------\n";
80 
81 
82  /* herwigVerbosity Level IPRINT
83  valid argumets are: 0: print title only
84  1: + print selected input parameters
85  2: + print table of particle codes and properties
86  3: + tables of Sudakov form factors
87  *** NOT IMPLEMENTED ***
88  LHA vebosity: 0=silent
89  1=lowkey (default)
90  2=all
91  */
92 
93  header_str << " Herwig verbosity level = " << herwigVerbosity_ << "\n";
94  header_str << " LHAPDF verbosity level = " << herwigLhapdfVerbosity_ << "\n";
95  header_str << " HepMC verbosity = " << herwigHepMCVerbosity_ << "\n";
96  header_str << " Number of events to be printed = " << maxEventsToPrint_ << "\n";
97 
98 
99  if(useJimmy_) {
100  header_str << " HERWIG will be using JIMMY for UE/MI." << "\n";
101  if(doMPInteraction_)
102  header_str << " JIMMY trying to generate multiple interactions." << "\n";
103  }
104 
105  // setting up lhapdf path name from environment varaible (***)
106  char* lhaPdfs = NULL;
107  header_str <<" Trying to find LHAPATH in environment ...";
108  lhaPdfs = getenv("LHAPATH");
109  std::string lhapdfSetPath = std::string(lhaPdfs);
110  if(lhaPdfs != NULL) {
111  header_str << " done.\n";
112  header_str << " Using "<< lhapdfSetPath << "\n";
113  }
114  else{
115  throw edm::Exception(edm::errors::Configuration,"PomwigError")
116  << " Could not find LHAPATH";
117  }
118 
119  // Call hwudat to set up HERWIG block data
120  hwudat();
121 
122  // Setting basic parameters ...
123  hwproc.PBEAM1 = comEnergy_/2.;
124  hwproc.PBEAM2 = comEnergy_/2.;
125  // Choose beam particles for POMWIG depending on topology
126  switch (diffTopology_){
127  case 0: //DPE
128  hwbmch.PART1[0] = 'E';
129  hwbmch.PART1[1] = '-';
130  hwbmch.PART2[0] = 'E';
131  hwbmch.PART2[1] = '-';
132  break;
133  case 1: //SD survive PART1
134  hwbmch.PART1[0] = 'E';
135  hwbmch.PART1[1] = '-';
136  hwbmch.PART2[0] = 'P';
137  hwbmch.PART2[1] = ' ';
138  break;
139  case 2: //SD survive PART2
140  hwbmch.PART1[0] = 'P';
141  hwbmch.PART1[1] = ' ';
142  hwbmch.PART2[0] = 'E';
143  hwbmch.PART2[1] = '-';
144  break;
145  case 3: //Non diffractive
146  hwbmch.PART1[0] = 'P';
147  hwbmch.PART1[1] = ' ';
148  hwbmch.PART2[0] = 'P';
149  hwbmch.PART2[1] = ' ';
150  break;
151  default:
152  throw edm::Exception(edm::errors::Configuration,"PomwigError")
153  <<" Invalid Diff. Topology. Must be DPE(diffTopology = 0), SD particle 1 (diffTopology = 1), SD particle 2 (diffTopology = 2) and Non diffractive (diffTopology = 3)";
154  break;
155  }
156  for(int i=2;i<8;++i){
157  hwbmch.PART1[i] = ' ';
158  hwbmch.PART2[i] = ' ';}
159 
160  if(useJimmy_) jmparm.MSFLAG = 1;
161 
162  // initialize other common blocks ...
163  hwigin();
164 
165  hwevnt.MAXER = 100000000; // O(inf)
166  hwpram.LWSUD = 0; // don't write Sudakov form factors
167  hwdspn.LWDEC = 0; // don't write three/four body decays
168  // (no fort.77 and fort.88 ...)
169 
170  header_str << " MAXER set to " << hwevnt.MAXER << "\n";
171 
172  if(useJimmy_) jimmin();
173 
174  // set some 'non-herwig' defaults
175  hwevnt.MAXPR = maxEventsToPrint_; // no printing out of events
176  hwpram.IPRINT = herwigVerbosity_; // HERWIG print out mode
177 
178  // Set HERWIG parameters in a single ParameterSet
179  ParameterSet herwig_params =
180  pset.getParameter<ParameterSet>("HerwigParameters") ;
181 
182  // The parameter sets to be read (default, min bias, user ...) in the proper order.
183  vector<string> setNames =
184  herwig_params.getParameter<vector<string> >("parameterSets");
185 
186  // Loop over the sets
187  for ( unsigned i=0; i<setNames.size(); ++i ) {
188  string mySet = setNames[i];
189  vector<string> pars =
190  herwig_params.getParameter<vector<string> >(mySet);
191 
192  header_str << "----------------------------------------------" << "\n";
193  header_str << "Read HERWIG parameter set " << mySet << "\n";
194  header_str << "----------------------------------------------" << "\n";
195 
196  // Loop over all parameters and stop in case of mistake
197  for( vector<string>::const_iterator
198  itPar = pars.begin(); itPar != pars.end(); ++itPar ) {
199  static string sRandomValueSetting1("NRN(1)");
200  static string sRandomValueSetting2("NRN(2)");
201  if( (0 == itPar->compare(0,sRandomValueSetting1.size(),sRandomValueSetting1) )||(0 == itPar->compare(0,sRandomValueSetting2.size(),sRandomValueSetting2) )) {
202  throw edm::Exception(edm::errors::Configuration,"HerwigError")
203  <<" attempted to set random number using pythia command 'NRN(.)'. This is not allowed.\n Please use the RandomNumberGeneratorService to set the random number seed.";
204  }
205 
206  if( ! hwgive(*itPar) ) {
207  throw edm::Exception(edm::errors::Configuration,"HerwigError")
208  <<" herwig did not accept the following \""<<*itPar<<"\"";
209  }
210  else if(printCards_)
211  header_str << " " << *itPar << "\n";
212  }
213  }
214 
215  // setting up herwgi RNG seeds NRN(.)
216  header_str << "----------------------------------------------" << "\n";
217  header_str << "Setting Herwig random number generator seeds" << "\n";
218  header_str << "----------------------------------------------" << "\n";
220  int wwseed = rng->mySeed();
221  randomEngine = fRandomEngine = &(rng->getEngine());
222  bool rngok = setRngSeeds(wwseed);
223  if(!rngok)
224  throw edm::Exception(edm::errors::Configuration,"HerwigError")
225  <<" Impossible error in setting 'NRN(.)'.";
226  header_str << " NRN(1) = " << hwevnt.NRN[0] << "\n";
227  header_str << " NRN(2) = " << hwevnt.NRN[1] << "\n";
228 
229  // set the LHAPDF grid directory and path
230  setherwpdf();
231  char pdfpath[232];
232  int pathlen = lhapdfSetPath.length();
233  for(int i=0; i<pathlen; ++i)
234  pdfpath[i]=lhapdfSetPath.at(i);
235  for(int i=pathlen; i<232; ++i)
236  pdfpath[i]=' ';
237  mysetpdfpath(pdfpath);
238 
239  // HERWIG preparations ...
240  hwuinc();
241 
242  // Function for force QQ decay is hwmodk
243 
244  /*
245  C-----------------------------------------------------------------------
246  SUBROUTINE HWMODK(IDKTMP,BRTMP,IMETMP,
247  & IATMP,IBTMP,ICTMP,IDTMP,IETMP)
248  C-----------------------------------------------------------------------
249  C Takes the decay, IDKTMP -> I-(A+B+C+D+E)-TMP, and simply stores it
250  C if internal pointers not set up (.NOT.DKPSET) else if pre-existing
251  C mode updates branching ratio BRTMP and matrix element code IMETMP,
252  C if -ve leaves as is. If a new mode adds to table and if consistent
253  C adjusts pointers, sets CMMOM (for two-body mode) and resets RSTAB
254  C if necessary. The branching ratios of any other IDKTMP decays are
255  C scaled by (1.-BRTMP)/(1.-BR_OLD)
256  C-----------------------------------------------------------------------
257  */
258 
259  // Initialization
260 
262  header_str << "\n----------------------------------------------" << "\n";
263  header_str << "HWMODK will be called to force decays" << "\n";
264  header_str << "----------------------------------------------" << "\n";
265  // Get ParameterSet with settings for forcing decays
266  ParameterSet fdecays_pset = pset.getParameter<ParameterSet>("ForcedDecaysParameters") ;
267  vector<int> defidktmp ;
268  defidktmp.push_back(0) ;
269  std::vector<int> idktmp = fdecays_pset.getUntrackedParameter< vector<int> >("Idktmp", defidktmp);
270  vector<double> defbrtmp ;
271  defbrtmp.push_back(0) ;
272  std::vector<double> brtmp = fdecays_pset.getUntrackedParameter< vector<double> >("Brtmp",defbrtmp);
273  vector<int> defimetmp ;
274  defimetmp.push_back(0) ;
275  std::vector<int> imetmp = fdecays_pset.getUntrackedParameter< vector<int> >("Imetmp",defimetmp);
276  vector<int> defiatmp ;
277  defiatmp.push_back(0) ;
278  std::vector<int> iatmp = fdecays_pset.getUntrackedParameter< vector<int> >("Iatmp",defiatmp);
279  vector<int> defibtmp ;
280  defibtmp.push_back(0) ;
281  std::vector<int> ibtmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ibtmp",defibtmp);
282  vector<int> defictmp ;
283  defictmp.push_back(0) ;
284  std::vector<int> ictmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ictmp",defictmp);
285  vector<int> defidtmp ;
286  defidtmp.push_back(0) ;
287  std::vector<int> idtmp = fdecays_pset.getUntrackedParameter< vector<int> >("Idtmp",defidtmp);
288  vector<int> defietmp ;
289  defietmp.push_back(0) ;
290  std::vector<int> ietmp = fdecays_pset.getUntrackedParameter< vector<int> >("Ietmp",defietmp);
291 
292  for (unsigned int i = 0; i < idktmp.size(); i++){
293  int idktmp1 = idktmp[i];
294  double brtmp1 = brtmp[i];
295  int imetmp1 = imetmp[i];
296  int iatmp1 = iatmp[i];
297  int ibtmp1 = ibtmp[i];
298  int ictmp1 = ictmp[i];
299  int idtmp1 = idtmp[i];
300  int ietmp1 = ietmp[i];
301  // Call Herwig function HWMODK
302  header_str << " Forcing decay " << idktmp1 << "->" << iatmp1 << "+"
303  << ibtmp1 << "+"
304  << ictmp1 << "+"
305  << idtmp1 << "+"
306  << ietmp1 << " with BR " << brtmp1 << "\n";
307  hwmodk(idktmp1, brtmp1, imetmp1, iatmp1, ibtmp1, ictmp1, idtmp1, ietmp1);
308  }
309  }
310 
311  hwusta("PI0 ",1);
312 
313  // Initialize H1 pomeron/reggeon
314  if(diffTopology_ != 3){
315  int nstru = hwpram.NSTRU;
316  int ifit = h1fit_;
317  if(nstru == 9){
318  if((ifit <= 0)||(ifit >= 7)){
319  throw edm::Exception(edm::errors::Configuration,"PomwigError")
320  <<" Attempted to set non existant H1 1997 fit index. Has to be 1...6";
321  }
322  cout << " H1 1997 pomeron pdf's" << endl;
323  cout << " IFIT = "<< ifit << endl;
324  double xp = 0.1;
325  double Q2 = 75.0;
326  double xpq[13];
327  qcd_1994(xp,Q2,xpq,ifit);
328  } else if(nstru == 10){
329  if((ifit <= 0)||(ifit >= 7)){
330  throw edm::Exception(edm::errors::Configuration,"PomwigError")
331  <<" Attempted to set non existant H1 1997 fit index. Has to be 1...6";
332  }
333  cout << " H1 1997 reggeon pdf's" << endl;
334  cout << " IFIT = "<< ifit << endl;
335  double xp = 0.1;
336  double Q2 = 75.0;
337  double xpq[13];
338  qcd_1994(xp,Q2,xpq,ifit);
339 
340  } else if(nstru == 12){
341  /*if(ifit != 1){
342  throw edm::Exception(edm::errors::Configuration,"PomwigError")
343  <<" Attempted to set non existant H1 2006 A fit index. Only IFIT=1";
344  }*/
345  ifit = 1;
346  cout << " H1 2006 A pomeron pdf's" << endl;
347  cout << " IFIT = "<< ifit <<endl;
348  double xp = 0.1;
349  double Q2 = 75.0;
350  double xpq[13];
351  double f2[2];
352  double fl[2];
353  double c2[2];
354  double cl[2];
355  qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
356  } else if(nstru == 13){
357  /*if(ifit != 1){
358  throw edm::Exception(edm::errors::Configuration,"PomwigError")
359  <<" Attempted to set non existant H1 2006 A fit index. Only IFIT=1";
360  }*/
361  ifit = 1;
362  cout << " H1 2006 A reggeon pdf's" << endl;
363  cout << " IFIT = "<< ifit <<endl;
364  double xp = 0.1;
365  double Q2 = 75.0;
366  double xpq[13];
367  double f2[2];
368  double fl[2];
369  double c2[2];
370  double cl[2];
371  qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
372  } else if(nstru == 14){
373  /*if(ifit != 2){
374  throw edm::Exception(edm::errors::Configuration,"PomwigError")
375  <<" Attempted to set non existant H1 2006 B fit index. Only IFIT=2";
376  }*/
377  ifit = 2;
378  cout << " H1 2006 B pomeron pdf's" << endl;
379  cout << " IFIT = "<< ifit <<endl;
380  double xp = 0.1;
381  double Q2 = 75.0;
382  double xpq[13];
383  double f2[2];
384  double fl[2];
385  double c2[2];
386  double cl[2];
387  qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
388  } else if(nstru == 15){
389  /*if(ifit != 2){
390  throw edm::Exception(edm::errors::Configuration,"PomwigError")
391  <<" Attempted to set non existant H1 2006 B fit index. Only IFIT=2";
392  }*/
393  ifit = 2;
394  cout << " H1 2006 B reggeon pdf's" << endl;
395  cout << " IFIT = "<< ifit <<endl;
396  double xp = 0.1;
397  double Q2 = 75.0;
398  double xpq[13];
399  double f2[2];
400  double fl[2];
401  double c2[2];
402  double cl[2];
403  qcd_2006(xp,Q2,ifit,xpq,f2,fl,c2,cl);
404  } else{
405  throw edm::Exception(edm::errors::Configuration,"PomwigError")
406  <<" 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)";
407  }
408  }
409 
410  hweini();
411  if(useJimmy_) jminit();
412 
413  produces<HepMCProduct>();
414  produces<GenEventInfoProduct>();
415  produces<GenRunInfoProduct, edm::InRun>();
416 
417  header_str << "\n----------------------------------------------" << "\n";
418  header_str << "Starting event generation" << "\n";
419  header_str << "----------------------------------------------" << "\n";
420 
421  edm::LogInfo("")<<header_str.str();
422 
423 
424 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
bool hwgive(const std::string &iParm)
CLHEP::HepRandomEngine * randomEngine
Definition: PYR.cc:4
#define qcd_1994
Definition: herwig.h:330
#define hwdspn
Definition: herwig.h:223
#define jminit
Definition: herwig.h:320
#define hwmodk
Definition: herwig.h:341
#define NULL
Definition: scimark2.h:8
CLHEP::HepRandomEngine * fRandomEngine
#define mysetpdfpath
#define jmparm
Definition: herwig.h:301
#define qcd_2006
Definition: herwig.h:335
virtual CLHEP::HepRandomEngine & getEngine() const =0
Use this to get the random number engine, this is the only function most users should call...
float cl
Definition: Combine.cc:71
char pdfpath[512]
HepMC::GenEvent * evt
tuple cout
Definition: gather_cfg.py:121
#define setherwpdf
#define jimmin
Definition: herwig.h:319
virtual uint32_t mySeed() const =0
Exists for backward compatibility.
PomwigProducer::~PomwigProducer ( )
virtual

Definition at line 427 of file PomwigProducer.cc.

References clear().

427  {
428 
429  std::ostringstream footer_str;
430 
431  footer_str << "----------------------------------------------" << "\n";
432  footer_str << "Event generation done" << "\n";
433  footer_str << "----------------------------------------------" << "\n";
434 
435  LogInfo("") << footer_str.str();
436 
437  clear();
438 }

Member Function Documentation

void PomwigProducer::clear ( void  )
private

Definition at line 440 of file PomwigProducer.cc.

References jmefin, and useJimmy_.

Referenced by ~PomwigProducer().

440  {
441  // teminate elementary process
442  hwefin();
443  if(useJimmy_) jmefin();
444 }
#define jmefin
Definition: herwig.h:322
void PomwigProducer::endRun ( Run r)

Definition at line 1314 of file PomwigProducer.cc.

References extCrossSect_, extFilterEff_, edm::Run::put(), and survivalProbability_.

1314  {
1315 
1316  double intCrossSect = 1000.0*survivalProbability_*hwevnt.AVWGT;
1317 
1318  auto_ptr<GenRunInfoProduct> genRunInfoProd (new GenRunInfoProduct());
1319  genRunInfoProd->setInternalXSec(intCrossSect);
1320  genRunInfoProd->setFilterEfficiency(extFilterEff_);
1321  genRunInfoProd->setExternalXSecLO(extCrossSect_);
1322  genRunInfoProd->setExternalXSecNLO(-1.);
1323 
1324  run.put(genRunInfoProd);
1325 }
bool PomwigProducer::hwgive ( const std::string &  iParm)
private

Definition at line 529 of file PomwigProducer.cc.

References edm::hlt::Exception, hw6202, hw6203, hw6300, hw6500, hwbosc, hwbrch, hwdist, hwdspn, hwgupr, hwhard, hwminb, hwprop, hwrpar, hwsusy, hwuclu, hwusud, hwuwts, and jmparm.

Referenced by PomwigProducer().

529  {
530  bool accepted = 1;
531 
532  if(!strncmp(ParameterString.c_str(),"IPROC",5)) {
533  hwproc.IPROC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
534  if(hwproc.IPROC<0) {
535  throw cms::Exception("HerwigError")
536  <<" Attempted to set IPROC to a negative value. This is not allowed.\n Please use the McatnloProducer to cope with negative valued IPROCs.";
537  }
538  }
539  else if(!strncmp(ParameterString.c_str(),"AUTPDF(",7)){
540  LogWarning("") <<" WARNING: AUTPDF parameter *not* suported. HERWIG will use LHAPDF."<<"\n";
541  }
542  else if(!strncmp(ParameterString.c_str(),"TAUDEC",6)){
543  int tostart=0;
544  while(ParameterString.c_str()[tostart]!='=') tostart++;
545  tostart++;
546  while(ParameterString.c_str()[tostart]==' ') tostart++;
547  int todo = 0;
548  while(ParameterString.c_str()[todo+tostart]!='\0') {
549  hwdspn.TAUDEC[todo]=ParameterString.c_str()[todo+tostart];
550  todo++;
551  }
552  if(todo != 6) {
553  throw cms::Exception("HerwigError")
554  <<" Attempted to set TAUDEC to "<<hwdspn.TAUDEC<<". This is not allowed.\n Options for TAUDEC are HERWIG and TAUOLA.";
555  }
556  }
557  else if(!strncmp(ParameterString.c_str(),"BDECAY",6)){
558  LogWarning("")<<" WARNING: BDECAY parameter *not* suported. HERWIG will use default b decay."<<"\n";
559  }
560  else if(!strncmp(ParameterString.c_str(),"QCDLAM",6))
561  hwpram.QCDLAM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
562  else if(!strncmp(ParameterString.c_str(),"VQCUT",5))
563  hwpram.VQCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
564  else if(!strncmp(ParameterString.c_str(),"VGCUT",5))
565  hwpram.VGCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
566  else if(!strncmp(ParameterString.c_str(),"VPCUT",5))
567  hwpram.VPCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
568  else if(!strncmp(ParameterString.c_str(),"CLMAX",5))
569  hwpram.CLMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
570  else if(!strncmp(ParameterString.c_str(),"CLPOW",5))
571  hwpram.CLPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
572  else if(!strncmp(ParameterString.c_str(),"PSPLT(1)",8))
573  hwpram.PSPLT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
574  else if(!strncmp(ParameterString.c_str(),"PSPLT(2)",8))
575  hwpram.PSPLT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
576  else if(!strncmp(ParameterString.c_str(),"QDIQK",5))
577  hwpram.QDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
578  else if(!strncmp(ParameterString.c_str(),"PDIQK",5))
579  hwpram.PDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
580  else if(!strncmp(ParameterString.c_str(),"QSPAC",5))
581  hwpram.QSPAC = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
582  else if(!strncmp(ParameterString.c_str(),"PTRMS",5))
583  hwpram.PTRMS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
584  else if(!strncmp(ParameterString.c_str(),"IPRINT",6))
585  hwpram.IPRINT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
586  else if(!strncmp(ParameterString.c_str(),"PRVTX",5))
587  hwpram.PRVTX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
588  else if(!strncmp(ParameterString.c_str(),"NPRFMT",6))
589  hwpram.NPRFMT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
590  else if(!strncmp(ParameterString.c_str(),"PRNDEC",6))
591  hwpram.PRNDEC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
592  else if(!strncmp(ParameterString.c_str(),"PRNDEF",6))
593  hwpram.PRNDEF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
594  else if(!strncmp(ParameterString.c_str(),"PRNTEX",6))
595  hwpram.PRNTEX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
596  else if(!strncmp(ParameterString.c_str(),"PRNWEB",6))
597  hwpram.PRNWEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
598  else if(!strncmp(ParameterString.c_str(),"MAXPR",5))
599  hwevnt.MAXPR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
600  else if(!strncmp(ParameterString.c_str(),"MAXER",5))
601  hwevnt.MAXER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
602  else if(!strncmp(ParameterString.c_str(),"LWEVT",5))
603  hwevnt.LWEVT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
604  else if(!strncmp(ParameterString.c_str(),"LRSUD",5))
605  hwpram.LRSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
606  else if(!strncmp(ParameterString.c_str(),"LWSUD",5))
607  hwpram.LWSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
608  else if(!strncmp(ParameterString.c_str(),"NRN(1)",6))
609  hwevnt.NRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
610  else if(!strncmp(ParameterString.c_str(),"NRN(2)",6))
611  hwevnt.NRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
612  else if(!strncmp(ParameterString.c_str(),"WGTMAX",6))
613  hwevnt.WGTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
614  else if(!strncmp(ParameterString.c_str(),"NOWGT",5))
615  hwevnt.NOWGT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
616  else if(!strncmp(ParameterString.c_str(),"AVWGT",5))
617  hwevnt.AVWGT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
618  else if(!strncmp(ParameterString.c_str(),"AZSOFT",6))
619  hwpram.AZSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
620  else if(!strncmp(ParameterString.c_str(),"AZSPIN",6))
621  hwpram.AZSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
622  else if(!strncmp(ParameterString.c_str(),"HARDME",6))
623  hwpram.HARDME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
624  else if(!strncmp(ParameterString.c_str(),"SOFTME",6))
625  hwpram.SOFTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
626  else if(!strncmp(ParameterString.c_str(),"GCUTME",6))
627  hwpram.GCUTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
628  else if(!strncmp(ParameterString.c_str(),"NCOLO",5))
629  hwpram.NCOLO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
630  else if(!strncmp(ParameterString.c_str(),"NFLAV",5))
631  hwpram.NFLAV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
632  else if(!strncmp(ParameterString.c_str(),"MODPDF(1)",9))
633  hwpram.MODPDF[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
634  else if(!strncmp(ParameterString.c_str(),"MODPDF(2)",9))
635  hwpram.MODPDF[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
636  else if(!strncmp(ParameterString.c_str(),"NSTRU",5))
637  hwpram.NSTRU = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
638  else if(!strncmp(ParameterString.c_str(),"PRSOF",5))
639  hwpram.PRSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
640  else if(!strncmp(ParameterString.c_str(),"ENSOF",5))
641  hwpram.ENSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
642  else if(!strncmp(ParameterString.c_str(),"IOPREM",6))
643  hwpram.IOPREM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
644  else if(!strncmp(ParameterString.c_str(),"BTCLM",5))
645  hwpram.BTCLM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
646  else if(!strncmp(ParameterString.c_str(),"ETAMIX",6))
647  hwpram.ETAMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
648  else if(!strncmp(ParameterString.c_str(),"PHIMIX",6))
649  hwpram.PHIMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
650  else if(!strncmp(ParameterString.c_str(),"H1MIX",5))
651  hwpram.H1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
652  else if(!strncmp(ParameterString.c_str(),"F0MIX",5))
653  hwpram.F0MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
654  else if(!strncmp(ParameterString.c_str(),"F1MIX",5))
655  hwpram.F1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
656  else if(!strncmp(ParameterString.c_str(),"F2MIX",5))
657  hwpram.F2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
658  else if(!strncmp(ParameterString.c_str(),"ET2MIX",6))
659  hwpram.ET2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
660  else if(!strncmp(ParameterString.c_str(),"OMHMIX",6))
661  hwpram.OMHMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
662  else if(!strncmp(ParameterString.c_str(),"PH3MIX",6))
663  hwpram.PH3MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
664  else if(!strncmp(ParameterString.c_str(),"B1LIM",5))
665  hwpram.B1LIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
666  else if(!strncmp(ParameterString.c_str(),"CLDIR(1)",8))
667  hwpram.CLDIR[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
668  else if(!strncmp(ParameterString.c_str(),"CLDIR(2)",8))
669  hwpram.CLDIR[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
670  else if(!strncmp(ParameterString.c_str(),"CLSMR(1)",8))
671  hwpram.CLSMR[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
672  else if(!strncmp(ParameterString.c_str(),"CLSMR(2)",8))
673  hwpram.CLSMR[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
674  else if(!strncmp(ParameterString.c_str(),"RMASS(1)",8))
675  hwprop.RMASS[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
676  else if(!strncmp(ParameterString.c_str(),"RMASS(2)",8))
677  hwprop.RMASS[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
678  else if(!strncmp(ParameterString.c_str(),"RMASS(3)",8))
679  hwprop.RMASS[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
680  else if(!strncmp(ParameterString.c_str(),"RMASS(4)",8))
681  hwprop.RMASS[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
682  else if(!strncmp(ParameterString.c_str(),"RMASS(5)",8))
683  hwprop.RMASS[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
684  else if(!strncmp(ParameterString.c_str(),"RMASS(6)",8))
685  hwprop.RMASS[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
686  else if(!strncmp(ParameterString.c_str(),"RMASS(13)",9))
687  hwprop.RMASS[13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
688  else if(!strncmp(ParameterString.c_str(),"SUDORD",6))
689  hwusud.SUDORD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
690  else if(!strncmp(ParameterString.c_str(),"INTER",5))
691  hwusud.INTER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
692  else if(!strncmp(ParameterString.c_str(),"NEGWTS",6))
693  hw6203.NEGWTS = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
694  else if(!strncmp(ParameterString.c_str(),"PMBN1",5))
695  hwminb.PMBN1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
696  else if(!strncmp(ParameterString.c_str(),"PMBN2",5))
697  hwminb.PMBN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
698  else if(!strncmp(ParameterString.c_str(),"PMBN3",5))
699  hwminb.PMBN3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
700  else if(!strncmp(ParameterString.c_str(),"PMBK1",5))
701  hwminb.PMBK1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
702  else if(!strncmp(ParameterString.c_str(),"PMBK2",5))
703  hwminb.PMBK2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
704  else if(!strncmp(ParameterString.c_str(),"PMBM1",5))
705  hwminb.PMBM1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
706  else if(!strncmp(ParameterString.c_str(),"PMBM2",5))
707  hwminb.PMBM2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
708  else if(!strncmp(ParameterString.c_str(),"PMBP1",5))
709  hwminb.PMBP1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
710  else if(!strncmp(ParameterString.c_str(),"PMBP2",5))
711  hwminb.PMBP2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
712  else if(!strncmp(ParameterString.c_str(),"PMBP3",5))
713  hwminb.PMBP3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
714  else if(!strncmp(ParameterString.c_str(),"VMIN2",5))
715  hwdist.VMIN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
716  else if(!strncmp(ParameterString.c_str(),"EXAG",4))
717  hwdist.EXAG = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
718  else if(!strncmp(ParameterString.c_str(),"PRECO",5))
719  hwuclu.PRECO = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
720  else if(!strncmp(ParameterString.c_str(),"CLRECO",6))
721  hwuclu.CLRECO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
722  else if(!strncmp(ParameterString.c_str(),"PWT(1)",6))
723  hwuwts.PWT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
724  else if(!strncmp(ParameterString.c_str(),"PWT(2)",6))
725  hwuwts.PWT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
726  else if(!strncmp(ParameterString.c_str(),"PWT(3)",6))
727  hwuwts.PWT[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
728  else if(!strncmp(ParameterString.c_str(),"PWT(4)",6))
729  hwuwts.PWT[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
730  else if(!strncmp(ParameterString.c_str(),"PWT(5)",6))
731  hwuwts.PWT[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
732  else if(!strncmp(ParameterString.c_str(),"PWT(6)",6))
733  hwuwts.PWT[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
734  else if(!strncmp(ParameterString.c_str(),"PWT(7)",6))
735  hwuwts.PWT[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
736  else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,0)",12))
737  hwuwts.REPWT[0][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
738  else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,1)",12))
739  hwuwts.REPWT[1][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
740  else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,2)",12))
741  hwuwts.REPWT[2][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
742  else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,3)",12))
743  hwuwts.REPWT[3][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
744  else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,4)",12))
745  hwuwts.REPWT[4][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
746  else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,0)",12))
747  hwuwts.REPWT[0][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
748  else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,1)",12))
749  hwuwts.REPWT[1][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
750  else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,2)",12))
751  hwuwts.REPWT[2][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
752  else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,3)",12))
753  hwuwts.REPWT[3][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
754  else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,4)",12))
755  hwuwts.REPWT[4][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
756  else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,0)",12))
757  hwuwts.REPWT[0][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
758  else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,1)",12))
759  hwuwts.REPWT[1][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
760  else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,2)",12))
761  hwuwts.REPWT[2][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
762  else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,3)",12))
763  hwuwts.REPWT[3][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
764  else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,4)",12))
765  hwuwts.REPWT[4][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
766  else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,0)",12))
767  hwuwts.REPWT[0][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
768  else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,1)",12))
769  hwuwts.REPWT[1][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
770  else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,2)",12))
771  hwuwts.REPWT[2][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
772  else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,3)",12))
773  hwuwts.REPWT[3][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
774  else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,4)",12))
775  hwuwts.REPWT[4][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
776  else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,0)",12))
777  hwuwts.REPWT[0][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
778  else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,1)",12))
779  hwuwts.REPWT[1][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
780  else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,2)",12))
781  hwuwts.REPWT[2][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
782  else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,3)",12))
783  hwuwts.REPWT[3][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
784  else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,4)",12))
785  hwuwts.REPWT[4][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
786  else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,0)",12))
787  hwuwts.REPWT[0][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
788  else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,1)",12))
789  hwuwts.REPWT[1][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
790  else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,2)",12))
791  hwuwts.REPWT[2][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
792  else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,3)",12))
793  hwuwts.REPWT[3][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
794  else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,4)",12))
795  hwuwts.REPWT[4][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
796  else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,0)",12))
797  hwuwts.REPWT[0][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
798  else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,1)",12))
799  hwuwts.REPWT[1][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
800  else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,2)",12))
801  hwuwts.REPWT[2][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
802  else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,3)",12))
803  hwuwts.REPWT[3][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
804  else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,4)",12))
805  hwuwts.REPWT[4][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
806  else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,0)",12))
807  hwuwts.REPWT[0][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
808  else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,1)",12))
809  hwuwts.REPWT[1][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
810  else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,2)",12))
811  hwuwts.REPWT[2][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
812  else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,3)",12))
813  hwuwts.REPWT[3][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
814  else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,4)",12))
815  hwuwts.REPWT[4][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
816  else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,0)",12))
817  hwuwts.REPWT[0][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
818  else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,1)",12))
819  hwuwts.REPWT[1][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
820  else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,2)",12))
821  hwuwts.REPWT[2][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
822  else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,3)",12))
823  hwuwts.REPWT[3][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
824  else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,4)",12))
825  hwuwts.REPWT[4][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
826  else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,0)",12))
827  hwuwts.REPWT[0][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
828  else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,1)",12))
829  hwuwts.REPWT[1][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
830  else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,2)",12))
831  hwuwts.REPWT[2][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
832  else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,3)",12))
833  hwuwts.REPWT[3][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
834  else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,4)",12))
835  hwuwts.REPWT[4][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
836  else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,0)",12))
837  hwuwts.REPWT[0][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
838  else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,1)",12))
839  hwuwts.REPWT[1][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
840  else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,2)",12))
841  hwuwts.REPWT[2][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
842  else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,3)",12))
843  hwuwts.REPWT[3][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
844  else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,4)",12))
845  hwuwts.REPWT[4][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
846  else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,0)",12))
847  hwuwts.REPWT[0][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
848  else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,1)",12))
849  hwuwts.REPWT[1][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
850  else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,2)",12))
851  hwuwts.REPWT[2][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
852  else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,3)",12))
853  hwuwts.REPWT[3][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
854  else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,4)",12))
855  hwuwts.REPWT[4][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
856  else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,0)",12))
857  hwuwts.REPWT[0][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
858  else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,1)",12))
859  hwuwts.REPWT[1][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
860  else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,2)",12))
861  hwuwts.REPWT[2][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
862  else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,3)",12))
863  hwuwts.REPWT[3][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
864  else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,4)",12))
865  hwuwts.REPWT[4][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
866  else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,0)",12))
867  hwuwts.REPWT[0][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
868  else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,1)",12))
869  hwuwts.REPWT[1][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
870  else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,2)",12))
871  hwuwts.REPWT[2][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
872  else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,3)",12))
873  hwuwts.REPWT[3][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
874  else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,4)",12))
875  hwuwts.REPWT[4][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
876  else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,0)",12))
877  hwuwts.REPWT[0][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
878  else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,1)",12))
879  hwuwts.REPWT[1][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
880  else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,2)",12))
881  hwuwts.REPWT[2][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
882  else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,3)",12))
883  hwuwts.REPWT[3][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
884  else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,4)",12))
885  hwuwts.REPWT[4][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
886  else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,0)",12))
887  hwuwts.REPWT[0][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
888  else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,1)",12))
889  hwuwts.REPWT[1][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
890  else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,2)",12))
891  hwuwts.REPWT[2][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
892  else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,3)",12))
893  hwuwts.REPWT[3][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
894  else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,4)",12))
895  hwuwts.REPWT[4][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
896  else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,0)",12))
897  hwuwts.REPWT[0][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
898  else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,1)",12))
899  hwuwts.REPWT[1][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
900  else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,2)",12))
901  hwuwts.REPWT[2][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
902  else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,3)",12))
903  hwuwts.REPWT[3][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
904  else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,4)",12))
905  hwuwts.REPWT[4][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
906  else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,0)",12))
907  hwuwts.REPWT[0][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
908  else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,1)",12))
909  hwuwts.REPWT[1][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
910  else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,2)",12))
911  hwuwts.REPWT[2][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
912  else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,3)",12))
913  hwuwts.REPWT[3][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
914  else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,4)",12))
915  hwuwts.REPWT[4][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
916  else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,0)",12))
917  hwuwts.REPWT[0][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
918  else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,1)",12))
919  hwuwts.REPWT[1][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
920  else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,2)",12))
921  hwuwts.REPWT[2][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
922  else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,3)",12))
923  hwuwts.REPWT[3][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
924  else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,4)",12))
925  hwuwts.REPWT[4][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
926  else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,0)",12))
927  hwuwts.REPWT[0][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
928  else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,1)",12))
929  hwuwts.REPWT[1][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
930  else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,2)",12))
931  hwuwts.REPWT[2][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
932  else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,3)",12))
933  hwuwts.REPWT[3][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
934  else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,4)",12))
935  hwuwts.REPWT[4][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
936  else if(!strncmp(ParameterString.c_str(),"SNGWT",5))
937  hwuwts.SNGWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
938  else if(!strncmp(ParameterString.c_str(),"DECWT",5))
939  hwuwts.DECWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
940  else if(!strncmp(ParameterString.c_str(),"PLTCUT",6))
941  hwdist.PLTCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
942  else if(!strncmp(ParameterString.c_str(),"VTOCDK(",7)){
943  // we find the index ...
944  int ind = atoi(&ParameterString[7]);
945  hwprop.VTOCDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
946  else if(!strncmp(ParameterString.c_str(),"VTORDK(",7)){
947  // we find the index ...
948  int ind = atoi(&ParameterString[7]);
949  hwprop.VTORDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);}
950  else if(!strncmp(ParameterString.c_str(),"PIPSMR",6))
951  hwdist.PIPSMR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
952  else if(!strncmp(ParameterString.c_str(),"VIPWID(1)",9))
953  hw6202.VIPWID[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
954  else if(!strncmp(ParameterString.c_str(),"VIPWID(2)",9))
955  hw6202.VIPWID[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
956  else if(!strncmp(ParameterString.c_str(),"VIPWID(3)",9))
957  hw6202.VIPWID[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
958  else if(!strncmp(ParameterString.c_str(),"MAXDKL",6))
959  hwdist.MAXDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
960  else if(!strncmp(ParameterString.c_str(),"IOPDKL",6))
961  hwdist.IOPDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
962  else if(!strncmp(ParameterString.c_str(),"DXRCYL",6))
963  hw6202.DXRCYL = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
964  else if(!strncmp(ParameterString.c_str(),"DXZMAX",6))
965  hw6202.DXZMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
966  else if(!strncmp(ParameterString.c_str(),"DXRSPH",6))
967  hw6202.DXRSPH = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
968  // else if(!strncmp(ParameterString.c_str(),"BDECAY",6))
969  // hwprch.BDECAY = ParameterString[strcspn(ParameterString.c_str(),"=")+1];
970  else if(!strncmp(ParameterString.c_str(),"MIXING",6))
971  hwdist.MIXING = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
972  else if(!strncmp(ParameterString.c_str(),"XMIX(1)",7))
973  hwdist.XMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
974  else if(!strncmp(ParameterString.c_str(),"XMIX(2)",7))
975  hwdist.XMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
976  else if(!strncmp(ParameterString.c_str(),"YMIX(1)",7))
977  hwdist.YMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
978  else if(!strncmp(ParameterString.c_str(),"YMIX(2)",7))
979  hwdist.YMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
980  else if(!strncmp(ParameterString.c_str(),"RMASS(198)",10))
981  hwprop.RMASS[198] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
982  else if(!strncmp(ParameterString.c_str(),"RMASS(199)",10))
983  hwprop.RMASS[199] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
984  else if(!strncmp(ParameterString.c_str(),"GAMW",4))
985  hwpram.GAMW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
986  else if(!strncmp(ParameterString.c_str(),"GAMZ",4))
987  hwpram.GAMZ = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
988  else if(!strncmp(ParameterString.c_str(),"RMASS(200)",10))
989  hwprop.RMASS[200] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
990  else if(!strncmp(ParameterString.c_str(),"WZRFR",5))
991  hw6202.WZRFR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
992  else if(!strncmp(ParameterString.c_str(),"MODBOS(",7)) {
993  int ind = atoi(&ParameterString[7]);
994  hwbosc.MODBOS[ind-1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
995  else if(!strncmp(ParameterString.c_str(),"RMASS(201)",10))
996  hwprop.RMASS[201] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
997  else if(!strncmp(ParameterString.c_str(),"IOPHIG",6))
998  hwbosc.IOPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
999  else if(!strncmp(ParameterString.c_str(),"GAMMAX",6))
1000  hwbosc.GAMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1001  else if(!strncmp(ParameterString.c_str(),"ENHANC(",7)) {
1002  int ind = atoi(&ParameterString[7]);
1003  hwbosc.ENHANC[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1004  else if(!strncmp(ParameterString.c_str(),"RMASS(209)",10))
1005  hwprop.RMASS[209] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1006  else if(!strncmp(ParameterString.c_str(),"RMASS(215)",10))
1007  hwprop.RMASS[215] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1008  else if(!strncmp(ParameterString.c_str(),"ALPHEM",6))
1009  hwpram.ALPHEM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1010  else if(!strncmp(ParameterString.c_str(),"SWEIN",5))
1011  hwpram.SWEIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1012  else if(!strncmp(ParameterString.c_str(),"QFCH(",5)){
1013  int ind = atoi(&ParameterString[5]);
1014  hwpram.QFCH[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1015  else if(!strncmp(ParameterString.c_str(),"AFCH(1,",7)){
1016  int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
1017  hwpram.AFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1018  else if(!strncmp(ParameterString.c_str(),"AFCH(2,",7)){
1019  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1020  hwpram.AFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1021  else if(!strncmp(ParameterString.c_str(),"AFCH(3,",7)){
1022  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1023  hwpram.AFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1024  else if(!strncmp(ParameterString.c_str(),"AFCH(4,",7)){
1025  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1026  hwpram.AFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1027  else if(!strncmp(ParameterString.c_str(),"AFCH(5,",7)){
1028  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1029  hwpram.AFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1030  else if(!strncmp(ParameterString.c_str(),"AFCH(6,",7)){
1031  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1032  hwpram.AFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1033  else if(!strncmp(ParameterString.c_str(),"AFCH(7,",7)){
1034  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1035  hwpram.AFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1036  else if(!strncmp(ParameterString.c_str(),"AFCH(8,",7)){
1037  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1038  hwpram.AFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1039  else if(!strncmp(ParameterString.c_str(),"AFCH(9,",7)){
1040  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1041  hwpram.AFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1042  else if(!strncmp(ParameterString.c_str(),"AFCH(10,",8)){
1043  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1044  hwpram.AFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1045  else if(!strncmp(ParameterString.c_str(),"AFCH(11,",8)){
1046  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1047  hwpram.AFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1048  else if(!strncmp(ParameterString.c_str(),"AFCH(12,",8)){
1049  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1050  hwpram.AFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1051  else if(!strncmp(ParameterString.c_str(),"AFCH(13,",8)){
1052  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1053  hwpram.AFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1054  else if(!strncmp(ParameterString.c_str(),"AFCH(14,",8)){
1055  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1056  hwpram.AFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1057  else if(!strncmp(ParameterString.c_str(),"AFCH(15,",8)){
1058  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1059  hwpram.AFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1060  else if(!strncmp(ParameterString.c_str(),"AFCH(16,",8)){
1061  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1062  hwpram.AFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1063  else if(!strncmp(ParameterString.c_str(),"VFCH(1,",7)){
1064  int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0;
1065  hwpram.VFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1066  else if(!strncmp(ParameterString.c_str(),"VFCH(2,",7)){
1067  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1068  hwpram.VFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1069  else if(!strncmp(ParameterString.c_str(),"VFCH(3,",7)){
1070  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1071  hwpram.VFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1072  else if(!strncmp(ParameterString.c_str(),"VFCH(4,",7)){
1073  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1074  hwpram.VFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1075  else if(!strncmp(ParameterString.c_str(),"VFCH(5,",7)){
1076  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1077  hwpram.VFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1078  else if(!strncmp(ParameterString.c_str(),"VFCH(6,",7)){
1079  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1080  hwpram.VFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1081  else if(!strncmp(ParameterString.c_str(),"VFCH(7,",7)){
1082  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1083  hwpram.VFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1084  else if(!strncmp(ParameterString.c_str(),"VFCH(8,",7)){
1085  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1086  hwpram.VFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1087  else if(!strncmp(ParameterString.c_str(),"VFCH(9,",7)){
1088  int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0;
1089  hwpram.VFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1090  else if(!strncmp(ParameterString.c_str(),"VFCH(10,",8)){
1091  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1092  hwpram.VFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1093  else if(!strncmp(ParameterString.c_str(),"VFCH(11,",8)){
1094  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1095  hwpram.VFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1096  else if(!strncmp(ParameterString.c_str(),"VFCH(12,",8)){
1097  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1098  hwpram.VFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1099  else if(!strncmp(ParameterString.c_str(),"VFCH(13,",8)){
1100  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1101  hwpram.VFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1102  else if(!strncmp(ParameterString.c_str(),"VFCH(14,",8)){
1103  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1104  hwpram.VFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1105  else if(!strncmp(ParameterString.c_str(),"VFCH(15,",8)){
1106  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1107  hwpram.VFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1108  else if(!strncmp(ParameterString.c_str(),"VFCH(16,",8)){
1109  int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0;
1110  hwpram.VFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1111  else if(!strncmp(ParameterString.c_str(),"ZPRIME",6))
1112  hwpram.ZPRIME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1113  else if(!strncmp(ParameterString.c_str(),"RMASS(202)",10))
1114  hwprop.RMASS[202] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1115  else if(!strncmp(ParameterString.c_str(),"GAMZP",5))
1116  hwpram.GAMZP = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1117  else if(!strncmp(ParameterString.c_str(),"VCKM(",5)) {
1118  int ind1 = atoi(&ParameterString[5]);
1119  if(ind1<1||ind1>3) return 0;
1120  int ind2 = atoi(&ParameterString[7]);
1121  if(ind2<1||ind2>3) return 0;
1122  hwpram.VCKM[ind2][ind1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1123  else if(!strncmp(ParameterString.c_str(),"SCABI",5))
1124  hwpram.SCABI = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1125  else if(!strncmp(ParameterString.c_str(),"EPOLN(",6)) {
1126  int ind = atoi(&ParameterString[6]);
1127  if(ind<1||ind>3) return 0;
1128  hwhard.EPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1129  else if(!strncmp(ParameterString.c_str(),"PPOLN(",6)) {
1130  int ind = atoi(&ParameterString[6]);
1131  if(ind<1||ind>3) return 0;
1132  hwhard.PPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); }
1133  else if(!strncmp(ParameterString.c_str(),"QLIM",4))
1134  hwhard.QLIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1135  else if(!strncmp(ParameterString.c_str(),"THMAX",5))
1136  hwhard.THMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1137  else if(!strncmp(ParameterString.c_str(),"Y4JT",4))
1138  hwhard.Y4JT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1139  else if(!strncmp(ParameterString.c_str(),"DURHAM",6))
1140  hwhard.DURHAM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1141  else if(!strncmp(ParameterString.c_str(),"IOP4JT(1)",9))
1142  hwpram.IOP4JT[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1143  else if(!strncmp(ParameterString.c_str(),"IOP4JT(2)",9))
1144  hwpram.IOP4JT[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1145  else if(!strncmp(ParameterString.c_str(),"BGSHAT",6))
1146  hwhard.BGSHAT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1147  else if(!strncmp(ParameterString.c_str(),"BREIT",5))
1148  hwbrch.BREIT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1149  else if(!strncmp(ParameterString.c_str(),"USECMF",6))
1150  hwbrch.USECMF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1151  else if(!strncmp(ParameterString.c_str(),"NOSPAC",6))
1152  hwpram.NOSPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1153  else if(!strncmp(ParameterString.c_str(),"ISPAC",5))
1154  hwpram.ISPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1155  else if(!strncmp(ParameterString.c_str(),"TMNISR",6))
1156  hwhard.TMNISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1157  else if(!strncmp(ParameterString.c_str(),"ZMXISR",6))
1158  hwhard.ZMXISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1159  else if(!strncmp(ParameterString.c_str(),"ASFIXD",6))
1160  hwhard.ASFIXD = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1161  else if(!strncmp(ParameterString.c_str(),"OMEGA0",6))
1162  hwhard.OMEGA0 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1163  else if(!strncmp(ParameterString.c_str(),"IAPHIG",6))
1164  hwhard.IAPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1165  else if(!strncmp(ParameterString.c_str(),"PHOMAS",6))
1166  hwhard.PHOMAS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1167  else if(!strncmp(ParameterString.c_str(),"PRESPL",6))
1168  hw6500.PRESPL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1169  else if(!strncmp(ParameterString.c_str(),"PTMIN",5))
1170  hwhard.PTMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1171  else if(!strncmp(ParameterString.c_str(),"PTMAX",5))
1172  hwhard.PTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1173  else if(!strncmp(ParameterString.c_str(),"PTPOW",5))
1174  hwhard.PTPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1175  else if(!strncmp(ParameterString.c_str(),"YJMIN",5))
1176  hwhard.YJMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1177  else if(!strncmp(ParameterString.c_str(),"YJMAX",5))
1178  hwhard.YJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1179  else if(!strncmp(ParameterString.c_str(),"EMMIN",5))
1180  hwhard.EMMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1181  else if(!strncmp(ParameterString.c_str(),"EMMAX",5))
1182  hwhard.EMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1183  else if(!strncmp(ParameterString.c_str(),"EMPOW",5))
1184  hwhard.EMPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1185  else if(!strncmp(ParameterString.c_str(),"Q2MIN",5))
1186  hwhard.Q2MIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1187  else if(!strncmp(ParameterString.c_str(),"Q2MAX",5))
1188  hwhard.Q2MAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1189  else if(!strncmp(ParameterString.c_str(),"Q2POW",5))
1190  hwhard.Q2POW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1191  else if(!strncmp(ParameterString.c_str(),"YBMIN",5))
1192  hwhard.YBMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1193  else if(!strncmp(ParameterString.c_str(),"YBMAX",5))
1194  hwhard.YBMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1195  else if(!strncmp(ParameterString.c_str(),"WHMIN",5))
1196  hwhard.WHMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1197  else if(!strncmp(ParameterString.c_str(),"ZJMAX",5))
1198  hwhard.ZJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1199  else if(!strncmp(ParameterString.c_str(),"Q2WWMN",6))
1200  hwhard.Q2WWMN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1201  else if(!strncmp(ParameterString.c_str(),"Q2WWMX",6))
1202  hwhard.Q2WWMX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1203  else if(!strncmp(ParameterString.c_str(),"YWWMIN",6))
1204  hwhard.YWWMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1205  else if(!strncmp(ParameterString.c_str(),"YWWMAX",6))
1206  hwhard.YWWMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1207  else if(!strncmp(ParameterString.c_str(),"CSPEED",6))
1208  hwpram.CSPEED = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1209  else if(!strncmp(ParameterString.c_str(),"GEV2NB",6))
1210  hwpram.GEV2NB = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1211  else if(!strncmp(ParameterString.c_str(),"IBSH",4))
1212  hwhard.IBSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1213  else if(!strncmp(ParameterString.c_str(),"IBRN(1)",7))
1214  hwhard.IBRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1215  else if(!strncmp(ParameterString.c_str(),"IBRN(2)",7))
1216  hwhard.IBRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1217  else if(!strncmp(ParameterString.c_str(),"NQEV",4))
1218  hwusud.NQEV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1219  else if(!strncmp(ParameterString.c_str(),"ZBINM",5))
1220  hwpram.ZBINM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1221  else if(!strncmp(ParameterString.c_str(),"NZBIN",5))
1222  hwpram.NZBIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1223  else if(!strncmp(ParameterString.c_str(),"NBTRY",5))
1224  hwpram.NBTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1225  else if(!strncmp(ParameterString.c_str(),"NCTRY",5))
1226  hwpram.NCTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1227  else if(!strncmp(ParameterString.c_str(),"NETRY",5))
1228  hwpram.NETRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1229  else if(!strncmp(ParameterString.c_str(),"NSTRY",5))
1230  hwpram.NSTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1231  else if(!strncmp(ParameterString.c_str(),"ACCUR",5))
1232  hwusud.ACCUR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1233  else if(!strncmp(ParameterString.c_str(),"RPARTY",6))
1234  hwrpar.RPARTY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1235  else if(!strncmp(ParameterString.c_str(),"SUSYIN",6))
1236  hwsusy.SUSYIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1237  else if(!strncmp(ParameterString.c_str(),"LRSUSY",6))
1238  hw6202.LRSUSY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1239  else if(!strncmp(ParameterString.c_str(),"SYSPIN",6))
1240  hwdspn.SYSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1241  else if(!strncmp(ParameterString.c_str(),"THREEB",6))
1242  hwdspn.THREEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1243  else if(!strncmp(ParameterString.c_str(),"FOURB",5))
1244  hwdspn.FOURB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1245  else if(!strncmp(ParameterString.c_str(),"LHSOFT",6))
1246  hwgupr.LHSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1247  else if(!strncmp(ParameterString.c_str(),"LHGLSF",6))
1248  hwgupr.LHGLSF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1249  else if(!strncmp(ParameterString.c_str(),"OPTM",4))
1250  hw6300.OPTM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1251  else if(!strncmp(ParameterString.c_str(),"IOPSTP",6))
1252  hw6300.IOPSTP = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1253  else if(!strncmp(ParameterString.c_str(),"IOPSH",5))
1254  hw6300.IOPSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1255  else if(!strncmp(ParameterString.c_str(),"JMUEO",5))
1256  jmparm.JMUEO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1257  else if(!strncmp(ParameterString.c_str(),"PTJIM",5))
1258  jmparm.PTJIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1259  else if(!strncmp(ParameterString.c_str(),"JMRAD(73)",9))
1260  jmparm.JMRAD[72] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);
1261 
1262  else accepted = 0;
1263 
1264  return accepted;
1265 }
#define hwhard
Definition: herwig.h:156
#define hwbosc
Definition: herwig.h:140
#define hwgupr
Definition: herwig.h:243
#define hwdspn
Definition: herwig.h:223
#define hwbrch
Definition: herwig.h:168
#define hwdist
Definition: herwig.h:87
#define hwminb
Definition: herwig.h:74
#define hw6203
Definition: herwig.h:51
#define hwprop
Definition: herwig.h:22
#define jmparm
Definition: herwig.h:301
#define hw6300
Definition: herwig.h:260
#define hwsusy
Definition: herwig.h:208
#define hwrpar
Definition: herwig.h:190
#define hwuclu
Definition: herwig.h:100
#define hwusud
Definition: herwig.h:37
#define hw6202
Definition: herwig.h:126
#define hwuwts
Definition: herwig.h:111
#define hw6500
Definition: herwig.h:178
void PomwigProducer::produce ( Event e,
const EventSetup es 
)
privatevirtual

Implements edm::EDProducer.

Definition at line 447 of file PomwigProducer.cc.

References conv, doMPInteraction_, edm::errors::EventCorruption, eventNumber_, evt, edm::hlt::Exception, herwigHepMCVerbosity_, hwmsct_dummy, numTrials_, convertSQLiteXML::ok, edm::Event::put(), and useJimmy_.

447  {
448 
449  int counter = 0;
450  double mpiok = 1.0;
451 
452  while(mpiok > 0.5 && counter < numTrials_) {
453 
454  // call herwig routines to create HEPEVT
455  hwuine();
456  hwepro();
457  hwbgen();
458 
459  // call jimmy ... only if event is not killed yet by HERWIG
460  if(useJimmy_ && doMPInteraction_ && hwevnt.IERROR==0)
461  mpiok = hwmsct_dummy(1.1);
462  else mpiok = 0.0;
463  counter++;
464  }
465 
466  // event after numTrials MP is not ok -> skip event
467  if(mpiok > 0.5) {
468  LogWarning("") <<" JIMMY could not produce MI in "<<numTrials_<<" trials.\n"<<" Event will be skipped to prevent from deadlock.\n";
469 
470 // Throw an exception if generation fails. Use the EventCorruption
471 // exception since it maps onto SkipEvent which is what we want to do here.
472 
473  std::ostringstream sstr;
474  sstr << "PomwigProducer: JIMMY could not produce MI in " << numTrials_ << " trials.\n";
475  edm::Exception except(edm::errors::EventCorruption, sstr.str());
476  throw except;
477  }
478 
479  hwdhob();
480  hwcfor();
481  hwcdec();
482  hwdhad();
483  hwdhvy();
484  hwmevt();
485  hwufne();
486 
487  // if event was killed by HERWIG; skip
488  if(hwevnt.IERROR!=0) {
489  std::ostringstream sstr;
490  sstr << "PomwigProducer: HERWIG indicates a failure. Abandon the event.\n";
491  edm::Exception except(edm::errors::EventCorruption, sstr.str());
492  throw except;
493  }
494 
495  // ----------------- HepMC converter --------------------
496  //HepMC::IO_HERWIG conv;
497 
498  // HEPEVT is ok, create new HepMC event
499  evt = new HepMC::GenEvent();
500  bool ok = conv.fill_next_event( evt );
501  // if conversion failed; throw excpetion and stop processing
502  if(!ok) throw cms::Exception("HerwigError")
503  <<" Conversion problems in event nr."<< eventNumber_ << ".";
504 
505  // set process id and event number
506  evt->set_signal_process_id(hwproc.IPROC);
507  evt->set_event_number(eventNumber_);
508 
509  if (herwigHepMCVerbosity_) {
510  LogWarning("") << "Event process = " << evt->signal_process_id() << "\n----------------------\n";
511  evt->print();
512  }
513 
514  // dummy if: event MUST be there
515  if(evt) {
516  auto_ptr<HepMCProduct> bare_product(new HepMCProduct());
517  bare_product->addHepMCData(evt );
518  e.put(bare_product);
519  }
520 
521  std::auto_ptr<GenEventInfoProduct> genEventInfo(new GenEventInfoProduct(evt));
522  e.put(genEventInfo);
523 
524  return;
525 }
#define hwmsct_dummy
Definition: herwig.h:321
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
HepMC::IO_HERWIG conv
HepMC::GenEvent * evt
bool PomwigProducer::setRngSeeds ( int  mseed)
private

Definition at line 1279 of file PomwigProducer.cc.

References trackerHits::c, and i.

Referenced by PomwigProducer().

1280 {
1281  double temx[5];
1282  for (int i=0; i<5; i++) {
1283  mseed = mseed * 29943829 - 1;
1284  temx[i] = mseed * (1./(65536.*65536.));
1285  }
1286  long double c;
1287  c = (long double)2111111111.0 * temx[3] +
1288  1492.0 * temx[2] +
1289  1776.0 * temx[1] +
1290  5115.0 * temx[0] +
1291  temx[4];
1292  temx[3] = temx[2];
1293  temx[2] = temx[1];
1294  temx[1] = temx[0];
1295  temx[4] = floorl(c);
1296  temx[0] = c - temx[4];
1297  temx[4] = temx[4] * (1./(65536.*65536.));
1298  hwevnt.NRN[0]=int(temx[0]*99999);
1299  c = (long double)2111111111.0 * temx[3] +
1300  1492.0 * temx[2] +
1301  1776.0 * temx[1] +
1302  5115.0 * temx[0] +
1303  temx[4];
1304  temx[3] = temx[2];
1305  temx[2] = temx[1];
1306  temx[1] = temx[0];
1307  temx[4] = floorl(c);
1308  temx[0] = c - temx[4];
1309  hwevnt.NRN[1]=int(temx[0]*99999);
1310 
1311  return true;
1312 }
int i
Definition: DBlmapReader.cc:9

Member Data Documentation

double edm::PomwigProducer::comEnergy_
private

Definition at line 46 of file PomwigProducer.h.

Referenced by PomwigProducer().

HepMC::IO_HERWIG edm::PomwigProducer::conv
private

Definition at line 64 of file PomwigProducer.h.

Referenced by produce().

int edm::PomwigProducer::diffTopology_
private

Definition at line 56 of file PomwigProducer.h.

Referenced by PomwigProducer().

bool edm::PomwigProducer::doMPInteraction_
private

Definition at line 48 of file PomwigProducer.h.

Referenced by PomwigProducer(), and produce().

bool edm::PomwigProducer::enableForcedDecays_
private

Definition at line 58 of file PomwigProducer.h.

Referenced by PomwigProducer().

int edm::PomwigProducer::eventNumber_
private

Definition at line 60 of file PomwigProducer.h.

Referenced by produce().

HepMC::GenEvent* edm::PomwigProducer::evt
private

Definition at line 41 of file PomwigProducer.h.

Referenced by produce().

double edm::PomwigProducer::extCrossSect_
private

Definition at line 52 of file PomwigProducer.h.

Referenced by endRun().

double edm::PomwigProducer::extFilterEff_
private

Definition at line 53 of file PomwigProducer.h.

Referenced by endRun().

CLHEP::HepRandomEngine* edm::PomwigProducer::fRandomEngine
private

Definition at line 62 of file PomwigProducer.h.

Referenced by PomwigProducer().

int edm::PomwigProducer::h1fit_
private

Definition at line 57 of file PomwigProducer.h.

Referenced by PomwigProducer().

bool edm::PomwigProducer::herwigHepMCVerbosity_
private

Definition at line 43 of file PomwigProducer.h.

Referenced by PomwigProducer(), and produce().

int edm::PomwigProducer::herwigLhapdfVerbosity_
private

Definition at line 44 of file PomwigProducer.h.

Referenced by PomwigProducer().

int edm::PomwigProducer::herwigVerbosity_
private

Definition at line 42 of file PomwigProducer.h.

Referenced by PomwigProducer().

int edm::PomwigProducer::maxEventsToPrint_
private

Definition at line 45 of file PomwigProducer.h.

Referenced by PomwigProducer().

int edm::PomwigProducer::numTrials_
private

Definition at line 50 of file PomwigProducer.h.

Referenced by PomwigProducer(), and produce().

bool edm::PomwigProducer::printCards_
private

Definition at line 49 of file PomwigProducer.h.

Referenced by PomwigProducer().

double edm::PomwigProducer::survivalProbability_
private

Definition at line 55 of file PomwigProducer.h.

Referenced by endRun().

bool edm::PomwigProducer::useJimmy_
private

Definition at line 47 of file PomwigProducer.h.

Referenced by clear(), PomwigProducer(), and produce().