CMS 3D CMS Logo

HydjetHadronizer.cc
Go to the documentation of this file.
1 
7 #include <iostream>
8 #include <cmath>
9 
10 #include "boost/lexical_cast.hpp"
11 
18 
24 
25 #include "HepMC/IO_HEPEVT.h"
26 #include "HepMC/PythiaWrapper6_4.h"
27 #include "HepMC/GenEvent.h"
28 #include "HepMC/HeavyIon.h"
29 #include "HepMC/SimpleVector.h"
30 
35 
36 using namespace edm;
37 using namespace std;
38 using namespace gen;
39 
40 HepMC::IO_HEPEVT hepevtio;
41 
42 namespace {
43  int convertStatus(int st) {
44  if (st <= 0)
45  return 0;
46  if (st <= 10)
47  return 1;
48  if (st <= 20)
49  return 2;
50  if (st <= 30)
51  return 3;
52  else
53  return st;
54  }
55 } // namespace
56 
57 const std::vector<std::string> HydjetHadronizer::theSharedResources = {edm::SharedResourceNames::kPythia6,
59 
60 //_____________________________________________________________________
61 HydjetHadronizer::HydjetHadronizer(const ParameterSet& pset, edm::ConsumesCollector&& iC)
63  evt(nullptr),
64  pset_(pset),
65  abeamtarget_(pset.getParameter<double>("aBeamTarget")),
66  angularspecselector_(pset.getParameter<int>("angularSpectrumSelector")),
67  bfixed_(pset.getParameter<double>("bFixed")),
68  bmax_(pset.getParameter<double>("bMax")),
69  bmin_(pset.getParameter<double>("bMin")),
70  cflag_(pset.getParameter<int>("cFlag")),
71  embedding_(pset.getParameter<bool>("embeddingMode")),
72  comenergy(pset.getParameter<double>("comEnergy")),
73  doradiativeenloss_(pset.getParameter<bool>("doRadiativeEnLoss")),
74  docollisionalenloss_(pset.getParameter<bool>("doCollisionalEnLoss")),
75  fracsoftmult_(pset.getParameter<double>("fracSoftMultiplicity")),
76  hadfreeztemp_(pset.getParameter<double>("hadronFreezoutTemperature")),
77  hymode_(pset.getParameter<string>("hydjetMode")),
78  maxEventsToPrint_(pset.getUntrackedParameter<int>("maxEventsToPrint", 1)),
79  maxlongy_(pset.getParameter<double>("maxLongitudinalRapidity")),
80  maxtrany_(pset.getParameter<double>("maxTransverseRapidity")),
81  nsub_(0),
82  nhard_(0),
83  nmultiplicity_(pset.getParameter<int>("nMultiplicity")),
84  nsoft_(0),
85  nquarkflavor_(pset.getParameter<int>("qgpNumQuarkFlavor")),
86  pythiaPylistVerbosity_(pset.getUntrackedParameter<int>("pythiaPylistVerbosity", 0)),
87  qgpt0_(pset.getParameter<double>("qgpInitialTemperature")),
88  qgptau0_(pset.getParameter<double>("qgpProperTimeFormation")),
89  phi0_(0.),
90  sinphi0_(0.),
91  cosphi0_(1.),
92  rotate_(pset.getParameter<bool>("rotateEventPlane")),
93  shadowingswitch_(pset.getParameter<int>("shadowingSwitch")),
94  signn_(pset.getParameter<double>("sigmaInelNN")),
95  fVertex_(nullptr),
96  pythia6Service_(new Pythia6Service(pset)) {
97  // Default constructor
98 
99  if (pset.exists("signalVtx"))
100  signalVtx_ = pset.getUntrackedParameter<std::vector<double> >("signalVtx");
101 
102  if (signalVtx_.size() == 4) {
103  if (!fVertex_)
104  fVertex_ = new HepMC::FourVector();
105  LogDebug("EventSignalVertex") << "Setting event signal vertex "
106  << " x = " << signalVtx_.at(0) << " y = " << signalVtx_.at(1)
107  << " z= " << signalVtx_.at(2) << " t = " << signalVtx_.at(3) << endl;
108  fVertex_->set(signalVtx_.at(0), signalVtx_.at(1), signalVtx_.at(2), signalVtx_.at(3));
109  }
110 
111  // PYLIST Verbosity Level
112  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
113  pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity", 0);
114  LogDebug("PYLISTverbosity") << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_;
115 
116  //Max number of events printed on verbosity level
117  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint", 0);
118  LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_;
119 
120  if (embedding_) {
121  cflag_ = 0;
122  src_ = iC.consumes<CrossingFrame<edm::HepMCProduct> >(
123  pset.getUntrackedParameter<edm::InputTag>("backgroundLabel", edm::InputTag("mix", "generatorSmeared")));
124  }
125 
126  int cm = 1, va, vb, vc;
127  HYJVER(cm, va, vb, vc);
128  HepMC::HEPEVT_Wrapper::set_max_number_entries(4000);
129 }
130 
131 //_____________________________________________________________________
133  // destructor
134  call_pystat(1);
135  delete pythia6Service_;
136 }
137 
138 //_____________________________________________________________________
140 
141 //_____________________________________________________________________
143  // heavy ion record in the final CMSSW Event
144  double npart = hyfpar.npart;
145  int nproj = static_cast<int>(npart / 2);
146  int ntarg = static_cast<int>(npart - nproj);
147 
148  HepMC::HeavyIon* hi = new HepMC::HeavyIon(nsub_, // Ncoll_hard/N of SubEvents
149  nproj, // Npart_proj
150  ntarg, // Npart_targ
151  static_cast<int>(hyfpar.nbcol), // Ncoll
152  0, // spectator_neutrons
153  0, // spectator_protons
154  0, // N_Nwounded_collisions
155  0, // Nwounded_N_collisions
156  0, // Nwounded_Nwounded_collisions
157  hyfpar.bgen * nuclear_radius(), // impact_parameter in [fm]
158  phi0_, // event_plane_angle
159  0, //hypsi3.psi3, // eccentricity
160  hyjpar.sigin // sigma_inel_NN
161  );
162 
163  evt->set_heavy_ion(*hi);
164  delete hi;
165 }
166 
167 //___________________________________________________________________
169  // Build particle object corresponding to index in hyjets (soft+hard)
170  double x0 = hyjets.phj[0][index];
171  double y0 = hyjets.phj[1][index];
172 
173  double x = x0 * cosphi0_ - y0 * sinphi0_;
174  double y = y0 * cosphi0_ + x0 * sinphi0_;
175 
176  HepMC::GenParticle* p = new HepMC::GenParticle(HepMC::FourVector(x, // px
177  y, // py
178  hyjets.phj[2][index], // pz
179  hyjets.phj[3][index]), // E
180  hyjets.khj[1][index], // id
181  convertStatus(hyjets.khj[0][index] // status
182  ));
183 
184  p->suggest_barcode(barcode);
185  return p;
186 }
187 
188 //___________________________________________________________________
189 HepMC::GenVertex* HydjetHadronizer::build_hyjet_vertex(int i, int id) {
190  // build verteces for the hyjets stored events
191  double x0 = hyjets.vhj[0][i];
192  double y0 = hyjets.vhj[1][i];
193  double x = x0 * cosphi0_ - y0 * sinphi0_;
194  double y = y0 * cosphi0_ + x0 * sinphi0_;
195  double z = hyjets.vhj[2][i];
196  double t = hyjets.vhj[4][i];
197 
198  HepMC::GenVertex* vertex = new HepMC::GenVertex(HepMC::FourVector(x, y, z, t), id);
199  return vertex;
200 }
201 
202 //___________________________________________________________________
203 
206 
207  // generate single event
208  if (embedding_) {
209  const edm::Event& e = getEDMEvent();
210  HepMC::GenVertex* genvtx = nullptr;
211  const HepMC::GenEvent* inev = nullptr;
213  e.getByToken(src_, cf);
215  if (mix.size() < 1) {
216  throw cms::Exception("MatchVtx") << "Mixing has " << mix.size() << " sub-events, should have been at least 1"
217  << endl;
218  }
219  const HepMCProduct& bkg = mix.getObject(0);
220  if (!(bkg.isVtxGenApplied())) {
221  throw cms::Exception("MatchVtx") << "Input background does not have smeared vertex!" << endl;
222  } else {
223  inev = bkg.GetEvent();
224  }
225 
226  genvtx = inev->signal_process_vertex();
227 
228  if (!genvtx)
229  throw cms::Exception("MatchVtx") << "Input background does not have signal process vertex!" << endl;
230 
231  double aX, aY, aZ, aT;
232 
233  aX = genvtx->position().x();
234  aY = genvtx->position().y();
235  aZ = genvtx->position().z();
236  aT = genvtx->position().t();
237 
238  if (!fVertex_) {
239  fVertex_ = new HepMC::FourVector();
240  }
241  LogInfo("MatchVtx") << " setting vertex "
242  << " aX " << aX << " aY " << aY << " aZ " << aZ << " aT " << aT << endl;
243  fVertex_->set(aX, aY, aZ, aT);
244 
245  const HepMC::HeavyIon* hi = inev->heavy_ion();
246 
247  if (hi) {
248  bfixed_ = (hi->impact_parameter()) / nuclear_radius();
249  phi0_ = hi->event_plane_angle();
250  sinphi0_ = sin(phi0_);
251  cosphi0_ = cos(phi0_);
252  } else {
253  LogWarning("EventEmbedding") << "Background event does not have heavy ion record!";
254  }
255 
256  } else if (rotate_)
257  rotateEvtPlane();
258 
259  nsoft_ = 0;
260  nhard_ = 0;
261 
262  edm::LogInfo("HYDJETmode") << "##### HYDJET nhsel = " << hyjpar.nhsel;
263  edm::LogInfo("HYDJETfpart") << "##### HYDJET fpart = " << hyflow.fpart;
264  edm::LogInfo("HYDJETtf") << "##### HYDJET hadron freez-out temp, Tf = " << hyflow.Tf;
265  edm::LogInfo("HYDJETinTemp") << "##### HYDJET: QGP init temperature, T0 =" << pyqpar.T0u;
266  edm::LogInfo("HYDJETinTau") << "##### HYDJET: QGP formation time,tau0 =" << pyqpar.tau0u;
267 
268  int ntry = 0;
269  while (nsoft_ == 0 && nhard_ == 0) {
270  if (ntry > 100) {
271  edm::LogError("HydjetEmptyEvent") << "##### HYDJET: No Particles generated, Number of tries =" << ntry;
272 
273  // Throw an exception. Use the EventCorruption exception since it maps onto SkipEvent
274  // which is what we want to do here.
275 
276  std::ostringstream sstr;
277  sstr << "HydjetHadronizerProducer: No particles generated after " << ntry << " tries.\n";
278  edm::Exception except(edm::errors::EventCorruption, sstr.str());
279  throw except;
280  } else {
281  HYEVNT(bfixed_);
282  nsoft_ = hyfpar.nhyd;
283  nsub_ = hyjpar.njet;
284  nhard_ = hyfpar.npyt;
285  ++ntry;
286  }
287  }
288 
289  if (hyjpar.nhsel < 3)
290  nsub_++;
291 
292  // event information
294 
295  if (nhard_ > 0 || nsoft_ > 0)
297 
298  evt->set_signal_process_id(pypars.msti[0]); // type of the process
299  evt->set_event_scale(pypars.pari[16]); // Q^2
301 
302  if (fVertex_) {
303  // generate new vertex & apply the shift
304 
305  // Copy the HepMC::GenEvent
306  std::unique_ptr<edm::HepMCProduct> HepMCEvt(new edm::HepMCProduct(evt));
307 
308  HepMCEvt->applyVtxGen(fVertex_);
309  evt = new HepMC::GenEvent((*HepMCEvt->GetEvent()));
310  }
311 
312  HepMC::HEPEVT_Wrapper::check_hepevt_consistency();
313  LogDebug("HEPEVT_info") << "Ev numb: " << HepMC::HEPEVT_Wrapper::event_number()
314  << " Entries number: " << HepMC::HEPEVT_Wrapper::number_entries() << " Max. entries "
315  << HepMC::HEPEVT_Wrapper::max_number_entries() << std::endl;
316 
317  event().reset(evt);
318  return true;
319 }
320 
321 //_____________________________________________________________________
323  // Hard particles. The first nhard_ lines from hyjets array.
324  // Pythia/Pyquen sub-events (sub-collisions) for a given event
325  // Return T/F if success/failure
326  // Create particles from lujet entries, assign them into vertices and
327  // put the vertices in the GenEvent, for each SubEvent
328  // The SubEvent information is kept by storing indeces of main vertices
329  // of subevents as a vector in GenHIEvent.
330 
331  LogDebug("SubEvent") << " Number of sub events " << nsub_;
332  LogDebug("Hydjet") << " Number of hard events " << hyjpar.njet;
333  LogDebug("Hydjet") << " Number of hard particles " << nhard_;
334  LogDebug("Hydjet") << " Number of soft particles " << nsoft_;
335  LogDebug("Hydjet") << " nhard_ + nsoft_ = " << nhard_ + nsoft_ << " hyjets.nhj = " << hyjets.nhj << endl;
336 
337  int ihy = 0;
338  int isub = -1;
339  int isub_l = -1;
340  int stab = 0;
341 
342  vector<HepMC::GenParticle*> primary_particle(hyjets.nhj);
343  vector<HepMC::GenParticle*> particle(hyjets.nhj);
344 
345  HepMC::GenVertex* sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), 0); // just initialization
346 
347  // contain the last index in for each subevent
348  vector<int> index(nsub_);
349 
350  while (ihy < hyjets.nhj) {
351  isub = std::floor((hyjets.khj[2][ihy] / 50000));
352  int hjoffset = isub * 50000;
353 
354  if (isub != isub_l) {
355  sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), isub);
356  evt->add_vertex(sub_vertices);
357  if (!evt->signal_process_vertex())
358  evt->set_signal_process_vertex(sub_vertices);
359  index[isub] = ihy - 1;
360  isub_l = isub;
361  }
362 
363  if (convertStatus(hyjets.khj[0][ihy]) == 1)
364  stab++;
365  LogDebug("Hydjet_array") << ihy << " MULTin ev.:" << hyjets.nhj << " SubEv.#" << isub << " Part #" << ihy + 1
366  << ", PDG: " << hyjets.khj[1][ihy] << " (st. " << convertStatus(hyjets.khj[0][ihy])
367  << ") mother=" << hyjets.khj[2][ihy] - (isub * 50000) + index[isub] + 1 << " ("
368  << hyjets.khj[2][ihy] << "), childs ("
369  << hyjets.khj[3][ihy] - (isub * 50000) + index[isub] + 1 << "-"
370  << hyjets.khj[4][ihy] - (isub * 50000) + index[isub] + 1 << "), vtx ("
371  << hyjets.vhj[0][ihy] << "," << hyjets.vhj[1][ihy] << "," << hyjets.vhj[2][ihy] << ") "
372  << std::endl;
373 
374  if (hyjets.khj[2][ihy] == 0) {
375  primary_particle[ihy] = build_hyjet(ihy, ihy + 1);
376  sub_vertices->add_particle_out(primary_particle[ihy]);
377  LogDebug("Hydjet_array") << " ---> " << ihy + 1 << std::endl;
378  } else {
379  particle[ihy] = build_hyjet(ihy, ihy + 1);
380  int mid = hyjets.khj[2][ihy] - hjoffset + index[isub];
381  int mid_t = mid;
382  while ((mid < ihy) && (hyjets.khj[1][mid] < 100) && (hyjets.khj[3][mid + 1] - hjoffset + index[isub] == ihy))
383  mid++;
384  if (hyjets.khj[1][mid] < 100)
385  mid = mid_t;
386 
387  HepMC::GenParticle* mother = primary_particle.at(mid);
388  HepMC::GenVertex* prods = build_hyjet_vertex(ihy, isub);
389 
390  if (!mother) {
391  mother = particle[mid];
392  primary_particle[mid] = mother;
393  }
394 
395  HepMC::GenVertex* prod_vertex = mother->end_vertex();
396  if (!prod_vertex) {
397  prod_vertex = prods;
398  prod_vertex->add_particle_in(mother);
399  LogDebug("Hydjet_array") << " <--- " << mid + 1 << std::endl;
400  evt->add_vertex(prod_vertex);
401  prods = nullptr;
402  }
403 
404  prod_vertex->add_particle_out(particle[ihy]);
405  LogDebug("Hydjet_array") << " ---" << mid + 1 << "---> " << ihy + 1 << std::endl;
406 
407  if (prods)
408  delete prods;
409  }
410  ihy++;
411  }
412  LogDebug("Hydjet_array") << " MULTin ev.:" << hyjets.nhj << ", last index: " << ihy - 1
413  << ", Sub events: " << isub + 1 << ", stable particles: " << stab << std::endl;
414 
415  return true;
416 }
417 
418 //______________________________________________________________
419 bool HydjetHadronizer::call_hyinit(double energy, double a, int ifb, double bmin, double bmax, double bfix, int nh) {
420  // initialize hydjet
421 
422  pydatr.mrpy[2] = 1;
423  HYINIT(energy, a, ifb, bmin, bmax, bfix, nh);
424  return true;
425 }
426 
427 //______________________________________________________________
429  // set hydjet options
430 
431  // hydjet running mode mode
432  // kHydroOnly --- nhsel=0 jet production off (pure HYDRO event), nhsel=0
433  // kHydroJets --- nhsle=1 jet production on, jet quenching off (HYDRO+njet*PYTHIA events)
434  // kHydroQJet --- nhsel=2 jet production & jet quenching on (HYDRO+njet*PYQUEN events)
435  // kJetsOnly --- nhsel=3 jet production on, jet quenching off, HYDRO off (njet*PYTHIA events)
436  // kQJetsOnly --- nhsel=4 jet production & jet quenching on, HYDRO off (njet*PYQUEN events)
437 
438  if (hymode_ == "kHydroOnly")
439  hyjpar.nhsel = 0;
440  else if (hymode_ == "kHydroJets")
441  hyjpar.nhsel = 1;
442  else if (hymode_ == "kHydroQJets")
443  hyjpar.nhsel = 2;
444  else if (hymode_ == "kJetsOnly")
445  hyjpar.nhsel = 3;
446  else if (hymode_ == "kQJetsOnly")
447  hyjpar.nhsel = 4;
448  else
449  hyjpar.nhsel = 2;
450 
451  // fraction of soft hydro induced multiplicity
452  hyflow.fpart = fracsoftmult_;
453 
454  // hadron freez-out temperature
455  hyflow.Tf = hadfreeztemp_;
456 
457  // maximum longitudinal collective rapidity
458  hyflow.ylfl = maxlongy_;
459 
460  // maximum transverse collective rapidity
461  hyflow.ytfl = maxtrany_;
462 
463  // shadowing on=1, off=0
464  hyjpar.ishad = shadowingswitch_;
465 
466  // set inelastic nucleon-nucleon cross section
467  hyjpar.sigin = signn_;
468 
469  // angular emitted gluon spectrum selection
470  pyqpar.ianglu = angularspecselector_;
471 
472  // number of active quark flavors in qgp
473  pyqpar.nfu = nquarkflavor_;
474 
475  // initial temperature of QGP
476  pyqpar.T0u = qgpt0_;
477 
478  // proper time of QGP formation
479  pyqpar.tau0u = qgptau0_;
480 
481  // type of medium induced partonic energy loss
483  edm::LogInfo("HydjetEnLoss") << "##### Radiative AND Collisional partonic energy loss ON ####";
484  pyqpar.ienglu = 0;
485  } else if (doradiativeenloss_) {
486  edm::LogInfo("HydjetenLoss") << "##### Only RADIATIVE partonic energy loss ON ####";
487  pyqpar.ienglu = 1;
488  } else if (docollisionalenloss_) {
489  edm::LogInfo("HydjetEnLoss") << "##### Only COLLISIONAL partonic energy loss ON ####";
490  pyqpar.ienglu = 2;
491  } else {
492  edm::LogInfo("HydjetEnLoss") << "##### Radiative AND Collisional partonic energy loss ON ####";
493  pyqpar.ienglu = 0;
494  }
495  return true;
496 }
497 
498 //_____________________________________________________________________
499 
503 
504  return true;
505 }
506 
507 //_____________________________________________________________________
508 
511  // pythia6Service_->setGeneralParams();
512 
513  // the input impact parameter (bxx_) is in [fm]; transform in [fm/RA] for hydjet usage
514  const float ra = nuclear_radius();
515  LogInfo("RAScaling") << "Nuclear radius(RA) = " << ra;
516  bmin_ /= ra;
517  bmax_ /= ra;
518  bfixed_ /= ra;
519 
520  // hydjet running options
522  // initialize hydjet
523  LogInfo("HYDJETinAction") << "##### Calling HYINIT(" << comenergy << "," << abeamtarget_ << "," << cflag_ << ","
524  << bmin_ << "," << bmax_ << "," << bfixed_ << "," << nmultiplicity_ << ") ####";
526  return true;
527 }
528 
529 bool HydjetHadronizer::declareStableParticles(const std::vector<int>& _pdg) {
530  std::vector<int> pdg = _pdg;
531  for (size_t i = 0; i < pdg.size(); i++) {
532  int pyCode = pycomp_(pdg[i]);
533  std::ostringstream pyCard;
534  pyCard << "MDCY(" << pyCode << ",1)=0";
535  std::cout << pyCard.str() << std::endl;
536  call_pygive(pyCard.str());
537  }
538  return true;
539 }
540 
541 //________________________________________________________________
543  const double pi = 3.14159265358979;
544  phi0_ = 2. * pi * gen::pyr_(nullptr) - pi;
545  sinphi0_ = sin(phi0_);
546  cosphi0_ = cos(phi0_);
547 }
548 
549 //________________________________________________________________
550 bool HydjetHadronizer::hadronize() { return false; }
551 
552 bool HydjetHadronizer::decay() { return true; }
553 
554 bool HydjetHadronizer::residualDecay() { return true; }
555 
557 
559 
560 const char* HydjetHadronizer::classname() const { return "gen::HydjetHadronizer"; }
gen::HydjetHadronizer::get_particles
bool get_particles(HepMC::GenEvent *evt)
Definition: HydjetHadronizer.cc:322
gen::HydjetHadronizer::cflag_
int cflag_
Definition: HydjetHadronizer.h:84
electrons_cff.bool
bool
Definition: electrons_cff.py:393
mps_fire.i
i
Definition: mps_fire.py:428
MessageLogger.h
edm::Handle::product
T const * product() const
Definition: Handle.h:70
gen::HydjetHadronizer::add_heavy_ion_rec
void add_heavy_ion_rec(HepMC::GenEvent *evt)
Definition: HydjetHadronizer.cc:142
ReggeGribovPartonMC_AdvancedParameters_cfi.bmin
bmin
Definition: ReggeGribovPartonMC_AdvancedParameters_cfi.py:4
gen::HydjetHadronizer::hadfreeztemp_
double hadfreeztemp_
Definition: HydjetHadronizer.h:97
gen::HydjetHadronizer::rotate_
bool rotate_
Switch to rotate event plane.
Definition: HydjetHadronizer.h:123
gen::HydjetHadronizer::evt
HepMC::GenEvent * evt
Definition: HydjetHadronizer.h:75
gen::HydjetHadronizer::bmin_
double bmin_
Definition: HydjetHadronizer.h:82
gen::pycomp_
int pycomp_(int &)
edm
HLT enums.
Definition: AlignableModifier.h:19
gen::pyr_
double pyr_(int *idummy)
Definition: Pythia6Service.cc:60
gather_cfg.cout
cout
Definition: gather_cfg.py:144
hyfpar
#define hyfpar
Definition: HydjetWrapper.h:51
edm::errors::EventCorruption
Definition: EDMException.h:43
pypars
#define pypars
Definition: ExhumeHadronizer.cc:45
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:85964
gen::FortranInstance::kFortranInstance
static const std::string kFortranInstance
Definition: FortranInstance.h:88
Pythia6Declarations.h
gen::HydjetHadronizer::qgpt0_
double qgpt0_
Definition: HydjetHadronizer.h:115
HydjetWrapper.h
gen::HydjetHadronizer::hadronize
bool hadronize()
Definition: HydjetHadronizer.cc:550
gen::HydjetHadronizer::residualDecay
bool residualDecay()
Definition: HydjetHadronizer.cc:554
HYINIT
#define HYINIT
Definition: HydjetWrapper.h:13
HydjetHadronizer.h
gen::Pythia6Service::setRandomEngine
void setRandomEngine(CLHEP::HepRandomEngine *v)
Definition: Pythia6Service.h:46
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
edm::Handle
Definition: AssociativeIterator.h:50
gen::BaseHadronizer
Definition: BaseHadronizer.h:46
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
GenRunInfoProduct.h
npart
double npart
Definition: HydjetWrapper.h:46
gen::Pythia6Service::setGeneralParams
void setGeneralParams()
Definition: Pythia6Service.cc:157
gen::HydjetHadronizer::sinphi0_
double sinphi0_
Definition: HydjetHadronizer.h:121
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
gen::HydjetHadronizer::nuclear_radius
double nuclear_radius() const
Definition: HydjetHadronizer.h:140
edm::Exception
Definition: EDMException.h:77
HYJVER
#define HYJVER
Definition: HydjetWrapper.h:25
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
gen::HydjetHadronizer::nsoft_
int nsoft_
multiplicity of HYDRO-induced particles in event
Definition: HydjetHadronizer.h:111
gen::HydjetHadronizer::statistics
void statistics()
Definition: HydjetHadronizer.cc:558
gen::HydjetHadronizer::comenergy
double comenergy
collision energy
Definition: HydjetHadronizer.h:88
gen::HydjetHadronizer::hydjet_init
bool hydjet_init(const edm::ParameterSet &pset)
Definition: HydjetHadronizer.cc:428
EDMException.h
gen::HydjetHadronizer::embedding_
bool embedding_
Switch for embedding mode.
Definition: HydjetHadronizer.h:87
CrossingFrame
Definition: CrossingFrame.h:38
gen::HydjetHadronizer::classname
const char * classname() const
Definition: HydjetHadronizer.cc:560
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
gen::HydjetHadronizer::decay
bool decay()
Definition: HydjetHadronizer.cc:552
MixCollection
Definition: MixCollection.h:11
gen::p
double p[5][pyjets_maxn]
Definition: Cascade2Hadronizer.cc:76
gen::HydjetHadronizer::maxEventsToPrint_
unsigned int maxEventsToPrint_
Events to print if verbosity.
Definition: HydjetHadronizer.h:100
gen::HydjetHadronizer::generatePartonsAndHadronize
bool generatePartonsAndHadronize()
Definition: HydjetHadronizer.cc:204
cms::cuda::nh
uint32_t nh
Definition: HistoContainer.h:23
Run.h
gen::FortranInstance::InstanceWrapper
Definition: FortranInstance.h:54
gen::HydjetHadronizer::build_hyjet
HepMC::GenParticle * build_hyjet(int index, int barcode)
Definition: HydjetHadronizer.cc:168
gen::BaseHadronizer::getEDMEvent
edm::Event & getEDMEvent() const
Definition: BaseHadronizer.h:69
gen::HydjetHadronizer::qgptau0_
double qgptau0_
Definition: HydjetHadronizer.h:117
HCALHighEnergyHPDFilter_cfi.energy
energy
Definition: HCALHighEnergyHPDFilter_cfi.py:5
SharedResourceNames.h
gen
Definition: PythiaDecays.h:13
FortranInstance.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
a
double a
Definition: hdecay.h:119
gen::HydjetHadronizer::pythia6Service_
Pythia6Service * pythia6Service_
Definition: HydjetHadronizer.h:132
GenEventInfoProduct.h
Event.h
hyjets
#define hyjets
Definition: HydjetWrapper.h:80
gen::HydjetHadronizer::~HydjetHadronizer
~HydjetHadronizer() override
Definition: HydjetHadronizer.cc:132
gen::HydjetHadronizer::bmax_
double bmax_
Definition: HydjetHadronizer.h:80
gen::HydjetHadronizer::call_hyinit
bool call_hyinit(double energy, double a, int ifb, double bmin, double bmax, double bfix, int nh)
Definition: HydjetHadronizer.cc:419
ReggeGribovPartonMC_AdvancedParameters_cfi.bmax
bmax
Definition: ReggeGribovPartonMC_AdvancedParameters_cfi.py:5
gen::HydjetHadronizer::pythiaPylistVerbosity_
unsigned int pythiaPylistVerbosity_
pythia verbosity; def=1
Definition: HydjetHadronizer.h:114
gen::HydjetHadronizer::signn_
double signn_
Definition: HydjetHadronizer.h:127
gen::HydjetHadronizer::cosphi0_
double cosphi0_
Definition: HydjetHadronizer.h:122
gen::HydjetHadronizer::fracsoftmult_
double fracsoftmult_
Definition: HydjetHadronizer.h:91
gen::v
double v[5][pyjets_maxn]
Definition: Cascade2Hadronizer.cc:76
createfilelist.int
int
Definition: createfilelist.py:10
gen::HydjetHadronizer::hymode_
std::string hymode_
Hydjet running mode.
Definition: HydjetHadronizer.h:99
hyflow
#define hyflow
Definition: HydjetWrapper.h:40
edm::HepMCProduct::GetEvent
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:34
edm::HepMCProduct::isVtxGenApplied
bool isVtxGenApplied() const
Definition: HepMCProduct.h:36
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
gen::HydjetHadronizer::doradiativeenloss_
bool doradiativeenloss_
DEFAULT = true.
Definition: HydjetHadronizer.h:89
gen::HydjetHadronizer::signalVtx_
std::vector< double > signalVtx_
Pset double vector to set event signal vertex.
Definition: HydjetHadronizer.h:130
hi
Definition: EPCuts.h:4
gen::HydjetHadronizer::build_hyjet_vertex
HepMC::GenVertex * build_hyjet_vertex(int i, int id)
Definition: HydjetHadronizer.cc:189
gen::HydjetHadronizer::maxtrany_
double maxtrany_
Definition: HydjetHadronizer.h:104
GenParticle.GenParticle
GenParticle
Definition: GenParticle.py:18
gen::HydjetHadronizer::declareStableParticles
bool declareStableParticles(const std::vector< int > &)
Definition: HydjetHadronizer.cc:529
std
Definition: JetResolutionObject.h:76
gen::HydjetHadronizer::src_
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > src_
Definition: HydjetHadronizer.h:133
gen::BaseHadronizer::event
std::unique_ptr< HepMC::GenEvent > & event()
Definition: BaseHadronizer.h:86
gen::HydjetHadronizer::nsub_
int nsub_
number of sub-events
Definition: HydjetHadronizer.h:107
hyjpar
#define hyjpar
Definition: HydjetWrapper.h:93
gen::HydjetHadronizer::pset_
edm::ParameterSet pset_
Definition: HydjetHadronizer.h:76
gen::HydjetHadronizer::nhard_
int nhard_
multiplicity of PYTHIA(+PYQUEN)-induced particles in event
Definition: HydjetHadronizer.h:108
gen::HydjetHadronizer::rotateEvtPlane
void rotateEvtPlane()
Definition: HydjetHadronizer.cc:542
GenHIEvent.h
edm::SharedResourceNames::kPythia6
static const std::string kPythia6
Definition: SharedResourceNames.h:26
Exception
Definition: hltDiff.cc:246
gen::HydjetHadronizer::phi0_
double phi0_
Event plane angle.
Definition: HydjetHadronizer.h:120
gen::HydjetHadronizer::maxlongy_
double maxlongy_
Definition: HydjetHadronizer.h:101
pyqpar
#define pyqpar
Definition: HydjetWrapper.h:112
Pythia6Service.h
hepevtio
HepMC::IO_HEPEVT hepevtio
Definition: HydjetHadronizer.cc:40
pdg
Definition: pdg_functions.h:28
gen::HydjetHadronizer::initializeForInternalPartons
bool initializeForInternalPartons()
Definition: HydjetHadronizer.cc:509
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
HYEVNT
#define HYEVNT
Definition: HydjetWrapper.h:20
gen::HydjetHadronizer::doSetRandomEngine
void doSetRandomEngine(CLHEP::HepRandomEngine *v) override
Definition: HydjetHadronizer.cc:139
pi
const Double_t pi
Definition: trackSplitPlot.h:36
gen::Pythia6Service
Definition: Pythia6Service.h:24
gen::HydjetHadronizer::nquarkflavor_
unsigned int nquarkflavor_
Definition: HydjetHadronizer.h:112
edm::HepMCProduct
Definition: HepMCProduct.h:18
gen::HydjetHadronizer::readSettings
bool readSettings(int)
Definition: HydjetHadronizer.cc:500
ParameterSet.h
HepMCProduct.h
gen::HydjetHadronizer::abeamtarget_
double abeamtarget_
beam/target atomic mass number
Definition: HydjetHadronizer.h:77
gen::HydjetHadronizer::fVertex_
HepMC::FourVector * fVertex_
Event signal vertex.
Definition: HydjetHadronizer.h:129
gen::HydjetHadronizer::docollisionalenloss_
bool docollisionalenloss_
DEFAULT = true.
Definition: HydjetHadronizer.h:90
edm::Event
Definition: Event.h:73
gen::HydjetHadronizer::angularspecselector_
int angularspecselector_
angular emitted gluon spectrum selection
Definition: HydjetHadronizer.h:78
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
gen::HydjetHadronizer::nmultiplicity_
int nmultiplicity_
Definition: HydjetHadronizer.h:109
GeneratorMix_cff.mix
mix
Definition: GeneratorMix_cff.py:6
gen::call_pygive
bool call_pygive(const std::string &line)
Definition: ExhumeHadronizer.cc:64
gen::HydjetHadronizer::finalizeEvent
void finalizeEvent()
Definition: HydjetHadronizer.cc:556
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
gen::HydjetHadronizer::bfixed_
double bfixed_
fixed impact param (fm); valid only if cflag_=0
Definition: HydjetHadronizer.h:79
gen::HydjetHadronizer::shadowingswitch_
unsigned int shadowingswitch_
Definition: HydjetHadronizer.h:125
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37