CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
gen::PyquenHadronizer Class Reference

#include <PyquenHadronizer.h>

Inheritance diagram for gen::PyquenHadronizer:
gen::BaseHadronizer

Public Member Functions

const char * classname () const
 
bool decay ()
 
bool declareSpecialSettings (const std::vector< std::string > &)
 
bool declareStableParticles (const std::vector< int > &)
 
void finalizeEvent ()
 
bool generatePartonsAndHadronize ()
 
bool hadronize ()
 
bool initializeForExternalPartons ()
 
bool initializeForInternalPartons ()
 
 PyquenHadronizer (const edm::ParameterSet &, edm::ConsumesCollector &&)
 
bool readSettings (int)
 
bool residualDecay ()
 
bool select (HepMC::GenEvent *evtTry) const override
 
void statistics ()
 
 ~PyquenHadronizer () override
 
- Public Member Functions inherited from gen::BaseHadronizer
 BaseHadronizer (edm::ParameterSet const &ps)
 
void cleanLHE ()
 
void generateLHE (edm::LuminosityBlock const &lumi, CLHEP::HepRandomEngine *rengine, unsigned int ncpu)
 
edm::EventgetEDMEvent () const
 
std::unique_ptr< HepMC::GenEventgetGenEvent ()
 
std::unique_ptr< HepMC3::GenEvent > getGenEvent3 ()
 
std::unique_ptr< GenEventInfoProductgetGenEventInfo ()
 
std::unique_ptr< GenEventInfoProduct3getGenEventInfo3 ()
 
virtual std::unique_ptr< GenLumiInfoHeadergetGenLumiInfoHeader () const
 
GenRunInfoProductgetGenRunInfo ()
 
std::unique_ptr< lhef::LHEEventgetLHEEvent ()
 
const std::shared_ptr< lhef::LHERunInfo > & getLHERunInfo () const
 
unsigned int getVHepMC ()
 
const std::string & gridpackPath () const
 
int randomIndex () const
 
const std::string & randomInitConfigDescription () const
 
void randomizeIndex (edm::LuminosityBlock const &lumi, CLHEP::HepRandomEngine *rengine)
 
void resetEvent (std::unique_ptr< HepMC::GenEvent > event)
 
void resetEvent3 (std::unique_ptr< HepMC3::GenEvent > event3)
 
void resetEventInfo (std::unique_ptr< GenEventInfoProduct > eventInfo)
 
void resetEventInfo3 (std::unique_ptr< GenEventInfoProduct3 > eventInfo)
 
void setEDMEvent (edm::Event &event)
 
void setLHEEvent (std::unique_ptr< lhef::LHEEvent > event)
 
void setLHERunInfo (std::unique_ptr< lhef::LHERunInfo > runInfo)
 
void setRandomEngine (CLHEP::HepRandomEngine *v)
 
std::vector< std::string > const & sharedResources () const
 
virtual ~BaseHadronizer () noexcept(false)
 

Private Member Functions

void add_heavy_ion_rec (HepMC::GenEvent *evt)
 
void doSetRandomEngine (CLHEP::HepRandomEngine *v) override
 
std::vector< std::string > const & doSharedResources () const override
 
const char * nucleon ()
 
bool pyqpythia_init (const edm::ParameterSet &pset)
 
bool pyquen_init (const edm::ParameterSet &pset)
 
void rotateEvtPlane (HepMC::GenEvent *evt, double angle)
 

Private Attributes

double abeamtarget_
 beam/target atomic mass number More...
 
unsigned int angularspecselector_
 
double bfixed_
 fixed impact param (fm); valid only if cflag_=0 More...
 
double bmax_
 max impact param (fm); valid only if cflag_!=0 More...
 
double bmin_
 min impact param (fm); valid only if cflag_!=0 More...
 
int cflag_
 centrality flag =0 fixed impact param, <>0 minbias More...
 
double comenergy
 collision energy More...
 
bool docollisionalenloss_
 DEFAULT = true. More...
 
bool doIsospin_
 Run n&p with proper ratios; if false, only p+p collisions. More...
 
bool doquench_
 if true perform quenching (default = true) More...
 
bool doradiativeenloss_
 DEFAULT = true. More...
 
bool embedding_
 
double evtPlane_
 
std::string filterType_
 
HepMC::FourVector * fVertex_
 Event signal vertex. More...
 
unsigned int maxEventsToPrint_
 Events to print if verbosity. More...
 
unsigned int nquarkflavor_
 
double pfrac_
 Proton fraction in the nucleus. More...
 
int protonSide_
 
edm::ParameterSet pset_
 
Pythia6Servicepythia6Service_
 
bool pythiaHepMCVerbosity_
 HepMC verbosity flag. More...
 
unsigned int pythiaPylistVerbosity_
 Pythia PYLIST Verbosity flag. More...
 
double qgpt0_
 
double qgptau0_
 
BaseHiGenEvtSelectorselector_
 
std::vector< double > signalVtx_
 Pset double vector to set event signal vertex. More...
 
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > src_
 

Static Private Attributes

static const std::vector< std::string > theSharedResources
 

Additional Inherited Members

- Protected Member Functions inherited from gen::BaseHadronizer
std::unique_ptr< HepMC::GenEvent > & event ()
 
std::unique_ptr< HepMC3::GenEvent > & event3 ()
 
std::unique_ptr< GenEventInfoProduct > & eventInfo ()
 
std::unique_ptr< GenEventInfoProduct3 > & eventInfo3 ()
 
lhef::LHEEventlheEvent ()
 
lhef::LHERunInfolheRunInfo ()
 
GenRunInfoProductrunInfo ()
 
- Protected Attributes inherited from gen::BaseHadronizer
unsigned int ivhepmc = 2
 
std::string lheFile_
 
int randomIndex_
 

Detailed Description

Definition at line 34 of file PyquenHadronizer.h.

Constructor & Destructor Documentation

◆ PyquenHadronizer()

PyquenHadronizer::PyquenHadronizer ( const edm::ParameterSet pset,
edm::ConsumesCollector &&  iC 
)

Definition at line 32 of file PyquenHadronizer.cc.

References cflag_, embedding_, filterType_, fVertex_, HiGenEvtSelectorFactory::get(), HLT_2022v15_cff::InputTag, LogDebug, maxEventsToPrint_, muonDTDigis_cfi::pset, PYQVER, pythiaHepMCVerbosity_, pythiaPylistVerbosity_, selector_, signalVtx_, and src_.

34  pset_(pset),
35  abeamtarget_(pset.getParameter<double>("aBeamTarget")),
36  angularspecselector_(pset.getParameter<int>("angularSpectrumSelector")),
37  bmin_(pset.getParameter<double>("bMin")),
38  bmax_(pset.getParameter<double>("bMax")),
39  bfixed_(pset.getParameter<double>("bFixed")),
40  cflag_(pset.getParameter<int>("cFlag")),
41  comenergy(pset.getParameter<double>("comEnergy")),
42  doquench_(pset.getParameter<bool>("doQuench")),
43  doradiativeenloss_(pset.getParameter<bool>("doRadiativeEnLoss")),
44  docollisionalenloss_(pset.getParameter<bool>("doCollisionalEnLoss")),
45  doIsospin_(pset.getParameter<bool>("doIsospin")),
46  protonSide_(pset.getUntrackedParameter<int>("protonSide", 0)),
47  embedding_(pset.getParameter<int>("embeddingMode")),
48  evtPlane_(0),
49  nquarkflavor_(pset.getParameter<int>("qgpNumQuarkFlavor")),
50  qgpt0_(pset.getParameter<double>("qgpInitialTemperature")),
51  qgptau0_(pset.getParameter<double>("qgpProperTimeFormation")),
52  maxEventsToPrint_(pset.getUntrackedParameter<int>("maxEventsToPrint", 1)),
53  fVertex_(nullptr),
54  pythiaHepMCVerbosity_(pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity", false)),
55  pythiaPylistVerbosity_(pset.getUntrackedParameter<int>("pythiaPylistVerbosity", 0)),
57  filterType_(pset.getUntrackedParameter<string>("filterType", "None")) {
58  if (pset.exists("signalVtx"))
59  signalVtx_ = pset.getUntrackedParameter<std::vector<double> >("signalVtx");
60 
61  if (signalVtx_.size() == 4) {
62  if (!fVertex_)
63  fVertex_ = new HepMC::FourVector();
64  LogDebug("EventSignalVertex") << "Setting event signal vertex "
65  << " x = " << signalVtx_.at(0) << " y = " << signalVtx_.at(1)
66  << " z= " << signalVtx_.at(2) << " t = " << signalVtx_.at(3) << endl;
67  fVertex_->set(signalVtx_.at(0), signalVtx_.at(1), signalVtx_.at(2), signalVtx_.at(3));
68  }
69 
70  // Verbosity Level
71  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
72  LogDebug("PYLISTverbosity") << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_ << endl;
73  // HepMC event verbosity Level
74  pythiaHepMCVerbosity_ = pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity", false);
75  LogDebug("HepMCverbosity") << "Pythia HepMC verbosity = " << pythiaHepMCVerbosity_ << endl;
76 
77  //Max number of events printed on verbosity level
78  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint", 0);
79  LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_ << endl;
80 
81  if (embedding_ == 1) {
82  cflag_ = 0;
84  pset.getUntrackedParameter<edm::InputTag>("backgroundLabel", edm::InputTag("mix", "generatorSmeared")));
85  }
87 
88  int cm = 1, va, vb, vc;
89  PYQVER(cm, va, vb, vc);
90  //HepMC::HEPEVT_Wrapper::set_max_number_entries(4000);
91 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
unsigned int maxEventsToPrint_
Events to print if verbosity.
BaseHadronizer(edm::ParameterSet const &ps)
bool doradiativeenloss_
DEFAULT = true.
bool docollisionalenloss_
DEFAULT = true.
#define PYQVER
Definition: PyquenWrapper.h:22
double bmax_
max impact param (fm); valid only if cflag_!=0
double abeamtarget_
beam/target atomic mass number
int cflag_
centrality flag =0 fixed impact param, <>0 minbias
unsigned int pythiaPylistVerbosity_
Pythia PYLIST Verbosity flag.
bool doIsospin_
Run n&p with proper ratios; if false, only p+p collisions.
static BaseHiGenEvtSelector * get(std::string, const edm::ParameterSet &)
unsigned int angularspecselector_
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > src_
HepMC::FourVector * fVertex_
Event signal vertex.
Pythia6Service * pythia6Service_
edm::ParameterSet pset_
unsigned int nquarkflavor_
bool doquench_
if true perform quenching (default = true)
std::vector< double > signalVtx_
Pset double vector to set event signal vertex.
double comenergy
collision energy
bool pythiaHepMCVerbosity_
HepMC verbosity flag.
BaseHiGenEvtSelector * selector_
double bmin_
min impact param (fm); valid only if cflag_!=0
double bfixed_
fixed impact param (fm); valid only if cflag_=0
#define LogDebug(id)

◆ ~PyquenHadronizer()

PyquenHadronizer::~PyquenHadronizer ( )
override

Definition at line 94 of file PyquenHadronizer.cc.

References pythia6Service_.

94  {
95  // distructor
96  call_pystat(1);
97 
98  delete pythia6Service_;
99 }
Pythia6Service * pythia6Service_

Member Function Documentation

◆ add_heavy_ion_rec()

void PyquenHadronizer::add_heavy_ion_rec ( HepMC::GenEvent evt)
private

Definition at line 105 of file PyquenHadronizer.cc.

References evtPlane_, and plfpar.

Referenced by generatePartonsAndHadronize().

105  {
106  HepMC::HeavyIon* hi = new HepMC::HeavyIon(1, // Ncoll_hard
107  -1, // Npart_proj
108  -1, // Npart_targ
109  1, // Ncoll
110  -1, // spectator_neutrons
111  -1, // spectator_protons
112  -1, // N_Nwounded_collisions
113  -1, // Nwounded_N_collisions
114  -1, // Nwounded_Nwounded_collisions
115  plfpar.bgen, // impact_parameter in [fm]
116  evtPlane_, // event_plane_angle
117  0, // eccentricity
118  -1 // sigma_inel_NN
119  );
120 
121  evt->set_heavy_ion(*hi);
122 
123  delete hi;
124 }
#define plfpar
Definition: PyquenWrapper.h:27
Definition: EPCuts.h:4

◆ classname()

const char * PyquenHadronizer::classname ( ) const

Definition at line 380 of file PyquenHadronizer.cc.

380 { return "gen::PyquenHadronizer"; }

◆ decay()

bool PyquenHadronizer::decay ( )

Definition at line 372 of file PyquenHadronizer.cc.

372 { return true; }

◆ declareSpecialSettings()

bool gen::PyquenHadronizer::declareSpecialSettings ( const std::vector< std::string > &  )
inline

Definition at line 47 of file PyquenHadronizer.h.

47 { return true; }

◆ declareStableParticles()

bool PyquenHadronizer::declareStableParticles ( const std::vector< int > &  _pdg)

Definition at line 355 of file PyquenHadronizer.cc.

References gen::call_pygive(), gather_cfg::cout, mps_fire::i, and gen::pycomp_().

355  {
356  std::vector<int> pdg = _pdg;
357  for (size_t i = 0; i < pdg.size(); i++) {
358  int pyCode = pycomp_(pdg[i]);
359  std::ostringstream pyCard;
360  pyCard << "MDCY(" << pyCode << ",1)=0";
361  std::cout << pyCard.str() << std::endl;
362  call_pygive(pyCard.str());
363  }
364 
365  return true;
366 }
bool call_pygive(const std::string &line)
int pycomp_(int &)

◆ doSetRandomEngine()

void PyquenHadronizer::doSetRandomEngine ( CLHEP::HepRandomEngine *  v)
overrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 102 of file PyquenHadronizer.cc.

References pythia6Service_, gen::Pythia6Service::setRandomEngine(), and gen::v.

double v[5][pyjets_maxn]
Pythia6Service * pythia6Service_
void setRandomEngine(CLHEP::HepRandomEngine *v)

◆ doSharedResources()

std::vector<std::string> const& gen::PyquenHadronizer::doSharedResources ( ) const
inlineoverrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 55 of file PyquenHadronizer.h.

References theSharedResources.

55 { return theSharedResources; }
static const std::vector< std::string > theSharedResources

◆ finalizeEvent()

void PyquenHadronizer::finalizeEvent ( )

Definition at line 376 of file PyquenHadronizer.cc.

376 {}

◆ generatePartonsAndHadronize()

bool PyquenHadronizer::generatePartonsAndHadronize ( )

Definition at line 127 of file PyquenHadronizer.cc.

References abeamtarget_, add_heavy_ion_rec(), bfixed_, bmax_, bmin_, cflag_, comenergy, gather_cfg::cout, doIsospin_, doquench_, MillePedeFileConverter_cfg::e, embedding_, gen::BaseHadronizer::event(), evtPlane_, Exception, fVertex_, gen::BaseHadronizer::getEDMEvent(), edm::HepMCProduct::GetEvent(), edm::HepMCProduct::isVtxGenApplied(), GeneratorMix_cff::mix, nucleon(), edm::Handle< T >::product(), protonSide_, gen::pyexec_(), pypars, PYQUEN, pyquen_hepevtio, pythia6Service_, rotateEvtPlane(), and src_.

127  {
128  Pythia6Service::InstanceWrapper guard(pythia6Service_);
129 
130  // Not possible to retrieve impact paramter and event plane info
131  // at this part, need to overwrite filter() in
132  // PyquenGeneratorFilter
133 
134  if (embedding_ == 1) {
135  const edm::Event& e = getEDMEvent();
136  HepMC::GenVertex* genvtx = nullptr;
137  const HepMC::GenEvent* inev = nullptr;
139  e.getByToken(src_, cf);
141  if (mix.size() < 1) {
142  throw cms::Exception("MatchVtx") << "Mixing has " << mix.size() << " sub-events, should have been at least 1"
143  << endl;
144  }
145  const HepMCProduct& bkg = mix.getObject(0);
146  if (!(bkg.isVtxGenApplied())) {
147  throw cms::Exception("MatchVtx") << "Input background does not have smeared vertex!" << endl;
148  } else {
149  inev = bkg.GetEvent();
150  }
151 
152  genvtx = inev->signal_process_vertex();
153 
154  if (!genvtx)
155  throw cms::Exception("MatchVtx") << "Input background does not have signal process vertex!" << endl;
156 
157  double aX, aY, aZ, aT;
158 
159  aX = genvtx->position().x();
160  aY = genvtx->position().y();
161  aZ = genvtx->position().z();
162  aT = genvtx->position().t();
163 
164  if (!fVertex_) {
165  fVertex_ = new HepMC::FourVector();
166  }
167 
168  //LogInfo("MatchVtx")
169  std::cout << " setting vertex "
170  << " aX " << aX << " aY " << aY << " aZ " << aZ << " aT " << aT << endl;
171  fVertex_->set(aX, aY, aZ, aT);
172 
173  const HepMC::HeavyIon* hi = inev->heavy_ion();
174 
175  if (hi) {
176  bfixed_ = hi->impact_parameter();
177  evtPlane_ = hi->event_plane_angle();
178  } else {
179  LogWarning("EventEmbedding") << "Background event does not have heavy ion record!";
180  }
181  }
182 
183  // Generate PYQUEN event
184  // generate single partonic PYTHIA jet event
185 
186  // Take into account whether it's a nn or pp or pn interaction
187  if (doIsospin_) {
188  string projN = "p";
189  string targN = "p";
190  if (protonSide_ != 1)
191  projN = nucleon();
192  if (protonSide_ != 2)
193  targN = nucleon();
194  call_pyinit("CMS", projN.data(), targN.data(), comenergy);
195  }
196  call_pyevnt();
197 
198  // call PYQUEN to apply parton rescattering and energy loss
199  // if doQuench=FALSE, it is pure PYTHIA
200  if (doquench_) {
202  edm::LogInfo("PYQUENinAction") << "##### Calling PYQUEN(" << abeamtarget_ << "," << cflag_ << "," << bfixed_
203  << ") ####";
204  } else {
205  edm::LogInfo("PYQUENinAction") << "##### Calling PYQUEN: QUENCHING OFF!! This is just PYTHIA !!!! ####";
206  }
207 
208  // call PYTHIA to finish the hadronization
209  pyexec_();
210 
211  // fill the HEPEVT with the PYJETS event record
212  call_pyhepc(1);
213 
214  // event information
215  // pyquen_hepevtio.set_trust_mothers_before_daughters(true);
216  HepMC::GenEvent* evt = pyquen_hepevtio.read_next_event();
217 
218  // signal vertex
219  HepMC::GenVertex* sub_vertices = new HepMC::GenVertex(HepMC::FourVector(0, 0, 0, 0), 0); // just initialization
220  if (!evt->signal_process_vertex())
221  evt->set_signal_process_vertex(sub_vertices);
222 
223  delete sub_vertices;
224  evt->set_signal_process_id(pypars.msti[0]); // type of the process
225  evt->set_event_scale(pypars.pari[16]); // Q^2
226 
227  if (embedding_)
229  add_heavy_ion_rec(evt);
230 
231  if (fVertex_) {
232  // Copy the HepMC::GenEvent
233  std::unique_ptr<edm::HepMCProduct> HepMCEvt(new edm::HepMCProduct(evt));
234 
235  HepMCEvt->applyVtxGen(fVertex_);
236  evt = new HepMC::GenEvent((*HepMCEvt->GetEvent()));
237  }
238 
239  // HepMC::HEPEVT_Wrapper::check_hepevt_consistency();
240 
241  event().reset(evt);
242 
243  return true;
244 }
bool isVtxGenApplied() const
Definition: HepMCProduct.h:39
T const * product() const
Definition: Handle.h:70
void rotateEvtPlane(HepMC::GenEvent *evt, double angle)
double bmax_
max impact param (fm); valid only if cflag_!=0
double abeamtarget_
beam/target atomic mass number
int cflag_
centrality flag =0 fixed impact param, <>0 minbias
edm::Event & getEDMEvent() const
Definition: EPCuts.h:4
bool doIsospin_
Run n&p with proper ratios; if false, only p+p collisions.
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > src_
HepMC::FourVector * fVertex_
Event signal vertex.
void add_heavy_ion_rec(HepMC::GenEvent *evt)
Pythia6Service * pythia6Service_
std::unique_ptr< HepMC::GenEvent > & event()
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:37
Log< level::Info, false > LogInfo
#define pypars
bool doquench_
if true perform quenching (default = true)
double comenergy
collision energy
double bmin_
min impact param (fm); valid only if cflag_!=0
#define PYQUEN
Definition: PyquenWrapper.h:17
double bfixed_
fixed impact param (fm); valid only if cflag_=0
Log< level::Warning, false > LogWarning
HepMC::IO_HEPEVT pyquen_hepevtio
void pyexec_()

◆ hadronize()

bool PyquenHadronizer::hadronize ( )

Definition at line 370 of file PyquenHadronizer.cc.

370 { return false; }

◆ initializeForExternalPartons()

bool gen::PyquenHadronizer::initializeForExternalPartons ( )

◆ initializeForInternalPartons()

bool PyquenHadronizer::initializeForInternalPartons ( )

Definition at line 263 of file PyquenHadronizer.cc.

References comenergy, and pythia6Service_.

263  {
264  Pythia6Service::InstanceWrapper guard(pythia6Service_);
265 
266  // Call PYTHIA
267  call_pyinit("CMS", "p", "p", comenergy);
268 
269  return true;
270 }
Pythia6Service * pythia6Service_
double comenergy
collision energy

◆ nucleon()

const char * PyquenHadronizer::nucleon ( )
private

Definition at line 314 of file PyquenHadronizer.cc.

References pfrac_, and gen::pyr_().

Referenced by generatePartonsAndHadronize().

314  {
315  int* dummy = nullptr;
316  double random = gen::pyr_(dummy);
317  const char* nuc = nullptr;
318  if (random > pfrac_)
319  nuc = "n";
320  else
321  nuc = "p";
322 
323  return nuc;
324 }
double pyr_(int *idummy)
double pfrac_
Proton fraction in the nucleus.

◆ pyqpythia_init()

bool PyquenHadronizer::pyqpythia_init ( const edm::ParameterSet pset)
private

Definition at line 273 of file PyquenHadronizer.cc.

References gen::call_pygive().

Referenced by readSettings().

273  {
274  //Turn Hadronization Off whether or not there is quenching
275  // PYEXEC is called later anyway
276  string sHadOff("MSTP(111)=0");
277  gen::call_pygive(sHadOff);
278 
279  return true;
280 }
bool call_pygive(const std::string &line)

◆ pyquen_init()

bool PyquenHadronizer::pyquen_init ( const edm::ParameterSet pset)
private

Definition at line 283 of file PyquenHadronizer.cc.

References angularspecselector_, docollisionalenloss_, doradiativeenloss_, nquarkflavor_, pyqpar, qgpt0_, and qgptau0_.

Referenced by readSettings().

283  {
284  // PYQUEN initialization
285 
286  // angular emitted gluon spectrum selection
287  pyqpar.ianglu = angularspecselector_;
288 
289  // type of medium induced partonic energy loss
291  edm::LogInfo("PYQUENinEnLoss") << "##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
292  pyqpar.ienglu = 0;
293  } else if (doradiativeenloss_) {
294  edm::LogInfo("PYQUENinRad") << "##### PYQUEN: Only RADIATIVE partonic energy loss ON ####";
295  pyqpar.ienglu = 1;
296  } else if (docollisionalenloss_) {
297  edm::LogInfo("PYQUENinColl") << "##### PYQUEN: Only COLLISIONAL partonic energy loss ON ####";
298  pyqpar.ienglu = 2;
299  } else {
300  edm::LogInfo("PYQUENinEnLoss") << "##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
301  pyqpar.ienglu = 0;
302  }
303 
304  // number of active quark flavors in qgp
305  pyqpar.nfu = nquarkflavor_;
306  // initial temperature of QGP
307  pyqpar.T0u = qgpt0_;
308  // proper time of QGP formation
309  pyqpar.tau0u = qgptau0_;
310 
311  return true;
312 }
bool doradiativeenloss_
DEFAULT = true.
bool docollisionalenloss_
DEFAULT = true.
unsigned int angularspecselector_
Log< level::Info, false > LogInfo
unsigned int nquarkflavor_
#define pyqpar

◆ readSettings()

bool PyquenHadronizer::readSettings ( int  )

Definition at line 246 of file PyquenHadronizer.cc.

References abeamtarget_, pfrac_, funct::pow(), pset_, pyqpythia_init(), pyquen_init(), pythia6Service_, gen::Pythia6Service::setCSAParams(), and gen::Pythia6Service::setGeneralParams().

246  {
247  Pythia6Service::InstanceWrapper guard(pythia6Service_);
250 
251  //Proton to Nucleon fraction
252  pfrac_ = 1. / (1.98 + 0.015 * pow(abeamtarget_, 2. / 3));
253 
254  //initialize pythia
256 
257  //initilize pyquen
259 
260  return true;
261 }
bool pyquen_init(const edm::ParameterSet &pset)
double abeamtarget_
beam/target atomic mass number
Pythia6Service * pythia6Service_
edm::ParameterSet pset_
bool pyqpythia_init(const edm::ParameterSet &pset)
double pfrac_
Proton fraction in the nucleus.
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29

◆ residualDecay()

bool PyquenHadronizer::residualDecay ( )

Definition at line 374 of file PyquenHadronizer.cc.

374 { return true; }

◆ rotateEvtPlane()

void PyquenHadronizer::rotateEvtPlane ( HepMC::GenEvent evt,
double  angle 
)
private

Definition at line 326 of file PyquenHadronizer.cc.

References angle(), funct::cos(), funct::sin(), submitPVValidationJobs::t, and x.

Referenced by generatePartonsAndHadronize().

326  {
327  double sinphi0 = sin(angle);
328  double cosphi0 = cos(angle);
329 
330  for (HepMC::GenEvent::vertex_iterator vt = evt->vertices_begin(); vt != evt->vertices_end(); ++vt) {
331  double x0 = (*vt)->position().x();
332  double y0 = (*vt)->position().y();
333  double z = (*vt)->position().z();
334  double t = (*vt)->position().t();
335 
336  double x = x0 * cosphi0 - y0 * sinphi0;
337  double y = y0 * cosphi0 + x0 * sinphi0;
338 
339  (*vt)->set_position(HepMC::FourVector(x, y, z, t));
340  }
341 
342  for (HepMC::GenEvent::particle_iterator vt = evt->particles_begin(); vt != evt->particles_end(); ++vt) {
343  double x0 = (*vt)->momentum().x();
344  double y0 = (*vt)->momentum().y();
345  double z = (*vt)->momentum().z();
346  double t = (*vt)->momentum().t();
347 
348  double x = x0 * cosphi0 - y0 * sinphi0;
349  double y = y0 * cosphi0 + x0 * sinphi0;
350 
351  (*vt)->set_momentum(HepMC::FourVector(x, y, z, t));
352  }
353 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
VertexRefVector::iterator vertex_iterator
iterator over a vector of references to Vertex objects in the same collection
Definition: VertexFwd.h:19
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11

◆ select()

bool gen::PyquenHadronizer::select ( HepMC::GenEvent evtTry) const
inlineoverridevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 48 of file PyquenHadronizer.h.

References BaseHiGenEvtSelector::filter(), and selector_.

48 { return selector_->filter(evtTry); }
virtual bool filter(HepMC::GenEvent *)
BaseHiGenEvtSelector * selector_

◆ statistics()

void PyquenHadronizer::statistics ( )

Definition at line 378 of file PyquenHadronizer.cc.

378 {}

Member Data Documentation

◆ abeamtarget_

double gen::PyquenHadronizer::abeamtarget_
private

beam/target atomic mass number

Definition at line 67 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and readSettings().

◆ angularspecselector_

unsigned int gen::PyquenHadronizer::angularspecselector_
private

angular emitted gluon spectrum selection DEFAULT= 0 – small angular emitted gluon spectrum = 1 – broad angular emitted gluon spectrum = 2 – collinear angular emitted gluon spectrum

Definition at line 68 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ bfixed_

double gen::PyquenHadronizer::bfixed_
private

fixed impact param (fm); valid only if cflag_=0

Definition at line 74 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ bmax_

double gen::PyquenHadronizer::bmax_
private

max impact param (fm); valid only if cflag_!=0

Definition at line 73 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ bmin_

double gen::PyquenHadronizer::bmin_
private

min impact param (fm); valid only if cflag_!=0

Definition at line 72 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ cflag_

int gen::PyquenHadronizer::cflag_
private

centrality flag =0 fixed impact param, <>0 minbias

Definition at line 75 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and PyquenHadronizer().

◆ comenergy

double gen::PyquenHadronizer::comenergy
private

collision energy

Definition at line 76 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and initializeForInternalPartons().

◆ docollisionalenloss_

bool gen::PyquenHadronizer::docollisionalenloss_
private

DEFAULT = true.

Definition at line 79 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ doIsospin_

bool gen::PyquenHadronizer::doIsospin_
private

Run n&p with proper ratios; if false, only p+p collisions.

Definition at line 80 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ doquench_

bool gen::PyquenHadronizer::doquench_
private

if true perform quenching (default = true)

Definition at line 77 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ doradiativeenloss_

bool gen::PyquenHadronizer::doradiativeenloss_
private

DEFAULT = true.

Definition at line 78 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ embedding_

bool gen::PyquenHadronizer::embedding_
private

Definition at line 82 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and PyquenHadronizer().

◆ evtPlane_

double gen::PyquenHadronizer::evtPlane_
private

Definition at line 83 of file PyquenHadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

◆ filterType_

std::string gen::PyquenHadronizer::filterType_
private

Definition at line 103 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer().

◆ fVertex_

HepMC::FourVector* gen::PyquenHadronizer::fVertex_
private

Event signal vertex.

Definition at line 94 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and PyquenHadronizer().

◆ maxEventsToPrint_

unsigned int gen::PyquenHadronizer::maxEventsToPrint_
private

Events to print if verbosity.

Definition at line 92 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer().

◆ nquarkflavor_

unsigned int gen::PyquenHadronizer::nquarkflavor_
private

number of active quark flavors in qgp DEFAULT=0; allowed values: 0,1,2,3.

Definition at line 86 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ pfrac_

double gen::PyquenHadronizer::pfrac_
private

Proton fraction in the nucleus.

Definition at line 84 of file PyquenHadronizer.h.

Referenced by nucleon(), and readSettings().

◆ protonSide_

int gen::PyquenHadronizer::protonSide_
private

Definition at line 81 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize().

◆ pset_

edm::ParameterSet gen::PyquenHadronizer::pset_
private

Definition at line 66 of file PyquenHadronizer.h.

Referenced by readSettings().

◆ pythia6Service_

Pythia6Service* gen::PyquenHadronizer::pythia6Service_
private

◆ pythiaHepMCVerbosity_

bool gen::PyquenHadronizer::pythiaHepMCVerbosity_
private

HepMC verbosity flag.

Definition at line 97 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer().

◆ pythiaPylistVerbosity_

unsigned int gen::PyquenHadronizer::pythiaPylistVerbosity_
private

Pythia PYLIST Verbosity flag.

Definition at line 98 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer().

◆ qgpt0_

double gen::PyquenHadronizer::qgpt0_
private

initial temperature of QGP DEFAULT = 1GeV; allowed range [0.2,2.0]GeV;

Definition at line 88 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ qgptau0_

double gen::PyquenHadronizer::qgptau0_
private

proper time of QGP formation DEFAULT = 0.1 fm/c; allowed range [0.01,10.0]fm/c;

Definition at line 90 of file PyquenHadronizer.h.

Referenced by pyquen_init().

◆ selector_

BaseHiGenEvtSelector* gen::PyquenHadronizer::selector_
private

Definition at line 104 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer(), and select().

◆ signalVtx_

std::vector<double> gen::PyquenHadronizer::signalVtx_
private

Pset double vector to set event signal vertex.

Definition at line 95 of file PyquenHadronizer.h.

Referenced by PyquenHadronizer().

◆ src_

edm::EDGetTokenT<CrossingFrame<edm::HepMCProduct> > gen::PyquenHadronizer::src_
private

Definition at line 101 of file PyquenHadronizer.h.

Referenced by generatePartonsAndHadronize(), and PyquenHadronizer().

◆ theSharedResources

const std::vector< std::string > PyquenHadronizer::theSharedResources
staticprivate