|
|
Go to the documentation of this file.
26 #include "HepMC/IO_HEPEVT.h"
27 #include "HepMC/PythiaWrapper.h"
41 abeamtarget_(
pset.getParameter<double>(
"aBeamTarget")),
42 angularspecselector_(
pset.getParameter<
int>(
"angularSpectrumSelector")),
43 bmin_(
pset.getParameter<double>(
"bMin")),
44 bmax_(
pset.getParameter<double>(
"bMax")),
45 bfixed_(
pset.getParameter<double>(
"bFixed")),
46 cflag_(
pset.getParameter<
int>(
"cFlag")),
47 comenergy(
pset.getParameter<double>(
"comEnergy")),
48 doquench_(
pset.getParameter<
bool>(
"doQuench")),
49 doradiativeenloss_(
pset.getParameter<
bool>(
"doRadiativeEnLoss")),
50 docollisionalenloss_(
pset.getParameter<
bool>(
"doCollisionalEnLoss")),
51 doIsospin_(
pset.getParameter<
bool>(
"doIsospin")),
52 protonSide_(
pset.getUntrackedParameter<
int>(
"protonSide", 0)),
53 embedding_(
pset.getParameter<
bool>(
"embeddingMode")),
55 nquarkflavor_(
pset.getParameter<
int>(
"qgpNumQuarkFlavor")),
56 qgpt0_(
pset.getParameter<double>(
"qgpInitialTemperature")),
57 qgptau0_(
pset.getParameter<double>(
"qgpProperTimeFormation")),
58 maxEventsToPrint_(
pset.getUntrackedParameter<
int>(
"maxEventsToPrint", 1)),
59 pythiaHepMCVerbosity_(
pset.getUntrackedParameter<
bool>(
"pythiaHepMCVerbosity",
false)),
60 pythiaPylistVerbosity_(
pset.getUntrackedParameter<
int>(
"pythiaPylistVerbosity", 0)),
62 filterType_(
pset.getUntrackedParameter<
string>(
"filterType",
"None")) {
80 int cm = 1, va, vb, vc;
97 HepMC::HeavyIon*
hi =
new HepMC::HeavyIon(1,
112 evt->set_heavy_ion(*
hi);
131 const HepMC::HeavyIon*
hi = inev->heavy_ion();
136 LogWarning(
"EventEmbedding") <<
"Background event does not have heavy ion record!";
151 call_pyinit(
"CMS", projN.data(), targN.data(),
comenergy);
162 edm::LogInfo(
"PYQUENinAction") <<
"##### Calling PYQUEN: QUENCHING OFF!! This is just PYTHIA !!!! ####";
174 evt->set_signal_process_id(
pypars.msti[0]);
175 evt->set_event_scale(
pypars.pari[16]);
181 HepMC::HEPEVT_Wrapper::check_hepevt_consistency();
219 string sHadOff(
"MSTP(111)=0");
234 edm::LogInfo(
"PYQUENinEnLoss") <<
"##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
237 edm::LogInfo(
"PYQUENinRad") <<
"##### PYQUEN: Only RADIATIVE partonic energy loss ON ####";
240 edm::LogInfo(
"PYQUENinColl") <<
"##### PYQUEN: Only COLLISIONAL partonic energy loss ON ####";
243 edm::LogInfo(
"PYQUENinEnLoss") <<
"##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
258 int*
dummy =
nullptr;
260 const char* nuc =
nullptr;
274 double x0 = (*vt)->position().x();
275 double y0 = (*vt)->position().y();
276 double z = (*vt)->position().z();
277 double t = (*vt)->position().t();
279 double x = x0 * cosphi0 - y0 * sinphi0;
280 double y = y0 * cosphi0 + x0 * sinphi0;
282 (*vt)->set_position(HepMC::FourVector(x, y, z,
t));
285 for (HepMC::GenEvent::particle_iterator vt = evt->particles_begin(); vt != evt->particles_end(); ++vt) {
286 double x0 = (*vt)->momentum().x();
287 double y0 = (*vt)->momentum().y();
288 double z = (*vt)->momentum().z();
289 double t = (*vt)->momentum().t();
291 double x = x0 * cosphi0 - y0 * sinphi0;
292 double y = y0 * cosphi0 + x0 * sinphi0;
294 (*vt)->set_momentum(HepMC::FourVector(x, y, z,
t));
299 std::vector<int>
pdg = _pdg;
300 for (
size_t i = 0;
i <
pdg.size();
i++) {
302 std::ostringstream pyCard;
303 pyCard <<
"MDCY(" << pyCode <<
",1)=0";
unsigned int maxEventsToPrint_
bool declareStableParticles(const std::vector< int > &)
static const std::string input
const char * classname() const
bool pyquen_init(const edm::ParameterSet &pset)
PyquenHadronizer(const edm::ParameterSet &)
void rotateEvtPlane(HepMC::GenEvent *evt, double angle)
static const std::string kFortranInstance
void setRandomEngine(CLHEP::HepRandomEngine *v)
bool doradiativeenloss_
if true perform quenching (default = true)
bool docollisionalenloss_
DEFAULT = true.
unsigned int pythiaPylistVerbosity_
HepMC verbosity flag.
Sin< T >::type sin(const T &t)
static BaseHiGenEvtSelector * get(std::string, const edm::ParameterSet &)
bool doIsospin_
DEFAULT = true.
int cflag_
fixed impact param (fm); valid only if cflag_=0
Cos< T >::type cos(const T &t)
edm::Event & getEDMEvent() const
bool generatePartonsAndHadronize()
bool initializeForInternalPartons()
double bmax_
min impact param (fm); valid only if cflag_!=0
void add_heavy_ion_rec(HepMC::GenEvent *evt)
bool pyqpythia_init(const edm::ParameterSet &pset)
bool doquench_
collision energy
unsigned int angularspecselector_
beam/target atomic mass number
static const std::vector< std::string > theSharedResources
edm::InputTag src_
Pythia PYLIST Verbosity flag.
double bfixed_
max impact param (fm); valid only if cflag_!=0
Pythia6Service * pythia6Service_
unsigned int nquarkflavor_
Proton fraction in the nucleus.
std::unique_ptr< HepMC::GenEvent > & event()
double comenergy
centrality flag =0 fixed impact param, <>0 minbias
static const std::string kPythia6
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
~PyquenHadronizer() override
Power< A, B >::type pow(const A &a, const B &b)
BaseHiGenEvtSelector * selector_
bool pythiaHepMCVerbosity_
Events to print if verbosity.
HepMC::IO_HEPEVT hepevtio
bool call_pygive(const std::string &line)
void doSetRandomEngine(CLHEP::HepRandomEngine *v) override
int protonSide_
Run n&p with proper ratios; if false, only p+p collisions.
VertexRefVector::iterator vertex_iterator
iterator over a vector of references to Vertex objects in the same collection