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 | Static Private Attributes
gen::Hydjet2Hadronizer Class Reference

#include <Hydjet2Hadronizer.h>

Inheritance diagram for gen::Hydjet2Hadronizer:
InitialState gen::BaseHadronizer

Public Member Functions

double CharmEnhancementFactor (double, double, double, double)
 
const char * classname () const
 
bool decay ()
 
bool declareSpecialSettings (const std::vector< std::string > &)
 
bool declareStableParticles (const std::vector< int > &)
 
double f (double)
 
double f2 (double, double, double)
 
void finalizeEvent ()
 
bool generatePartonsAndHadronize ()
 
double GetVolEff ()
 
virtual double GetWeakDecayLimit ()
 
bool hadronize ()
 
 Hydjet2Hadronizer (const edm::ParameterSet &)
 
bool IniOfThFreezeoutParameters ()
 
bool initializeForExternalPartons ()
 
bool initializeForInternalPartons ()
 
double MidpointIntegrator2 (double, double, double, double)
 
bool readSettings (int)
 
bool residualDecay ()
 
virtual bool RunDecays ()
 
void SetVolEff (double value)
 
double SimpsonIntegrator (double, double, double, double)
 
double SimpsonIntegrator2 (double, double, double, double)
 
void statistics ()
 
 ~Hydjet2Hadronizer ()
 
- Public Member Functions inherited from InitialState
virtual void Evolve (List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit)
 
 InitialState ()
 
virtual ~InitialState ()
 
- Public Member Functions inherited from gen::BaseHadronizer
 BaseHadronizer (edm::ParameterSet const &ps)
 
edm::EventgetEDMEvent () const
 
HepMC::GenEvent * getGenEvent ()
 
GenEventInfoProductgetGenEventInfo ()
 
GenRunInfoProductgetGenRunInfo ()
 
const boost::shared_ptr
< lhef::LHERunInfo > & 
getLHERunInfo () const
 
void resetEvent (HepMC::GenEvent *event)
 
void resetEventInfo (GenEventInfoProduct *eventInfo)
 
virtual bool select (HepMC::GenEvent *) const
 
void setEDMEvent (edm::Event &event)
 
void setLHEEvent (lhef::LHEEvent *event)
 
void setLHERunInfo (lhef::LHERunInfo *runInfo)
 
void setRandomEngine (CLHEP::HepRandomEngine *v)
 
std::vector< std::string > const & sharedResources () const
 
 ~BaseHadronizer ()
 

Private Member Functions

void add_heavy_ion_rec (HepMC::GenEvent *evt)
 
HepMC::GenParticle * build_hyjet2 (int index, int barcode)
 
HepMC::GenVertex * build_hyjet2_vertex (int i, int id)
 
virtual void doSetRandomEngine (CLHEP::HepRandomEngine *v) override
 
virtual std::vector
< std::string > const & 
doSharedResources () const override
 
bool get_particles (HepMC::GenEvent *evt)
 
double nuclear_radius () const
 
void rotateEvtPlane ()
 

Private Attributes

ParticleAllocator allocator
 
float Bgen
 
double cosphi0_
 
float E [500000]
 
bool embedding_
 
int ev
 
HepMC::GenEvent * evt
 
double fAw
 
double fBfix
 
double fBmax
 
double fBmin
 
int fCharmProd
 
double fCorrC
 
double fCorrS
 
int fDecay
 
double fDelta
 
double fEpsilon
 
int fEtaType
 
int fIanglu
 
int fIenglu
 
int fIfb
 
int fIfDeltaEpsilon
 
int final [500000]
 
int FirstDaughterIndex [500000]
 
int fIshad
 
double fMu_th_pip
 
double fMuB
 
double fMuC
 
double fMuI3
 
double fMuS
 
double fMuTh [1000]
 
double fNccth
 
int fNf
 
int fNhsel
 
double fNocth
 
int fNPartTypes
 
int fPartEnc [1000]
 
double fPartMu [2000]
 
double fPartMult [2000]
 
double fPtmin
 
int fPyhist
 
int fPythDecay
 
double fR
 
edm::Service< TFileServicefs
 
double fSigmaTau
 
double fSqrtS
 
double fT
 
double fT0
 
double fTau
 
double fTau0
 
double fThFO
 
int fTMuType
 
double fUmax
 
double fVolEff
 
double fWeakDecay
 
double fYlmax
 
int Index [500000]
 
int LastDaughterIndex [500000]
 
unsigned int maxEventsToPrint_
 
int MotherIndex [500000]
 
int Mpdg [500000]
 
int Nbcol
 
int NDaughters [500000]
 
int nhard_
 
int Nhyd
 
int Njet
 
int Npart
 
int Npyt
 
int nsoft_
 
int nsub_
 
int Ntot
 
int pdg [500000]
 
double phi0_
 
edm::ParameterSet pset
 
float Px [500000]
 
float Py [500000]
 
Pythia6Servicepythia6Service_
 
unsigned int pythiaPylistVerbosity_
 
int pythiaStatus [500000]
 
float Pz [500000]
 
bool rotate_
 
float Sigin
 
float Sigjet
 
double sinphi0_
 
List_t source
 
edm::InputTag src_
 
int sseed
 
float T [500000]
 
int type [500000]
 
float X [500000]
 
float Y [500000]
 
float Z [500000]
 

Static Private Attributes

static const std::vector
< std::string > 
theSharedResources = { edm::SharedResourceNames::kPythia6, gen::FortranInstance::kFortranInstance }
 

Additional Inherited Members

- Protected Member Functions inherited from gen::BaseHadronizer
std::auto_ptr< HepMC::GenEvent > & event ()
 
std::auto_ptr
< GenEventInfoProduct > & 
eventInfo ()
 
lhef::LHEEventlheEvent ()
 
lhef::LHERunInfolheRunInfo ()
 
GenRunInfoProductrunInfo ()
 
- Protected Attributes inherited from InitialState
DatabasePDGfDatabase
 

Detailed Description

Definition at line 66 of file Hydjet2Hadronizer.h.

Constructor & Destructor Documentation

Hydjet2Hadronizer::Hydjet2Hadronizer ( const edm::ParameterSet pset)

Definition at line 104 of file Hydjet2Hadronizer.cc.

References embedding_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), LogDebug, maxEventsToPrint_, pythiaPylistVerbosity_, and src_.

104  :
105  BaseHadronizer(pset),
106  fSqrtS(pset.getParameter<double>("fSqrtS")), // C.m.s. energy per nucleon pair
107  fAw(pset.getParameter<double>("fAw")), // Atomic weigth of nuclei, fAw
108  fIfb(pset.getParameter<int>("fIfb")), // Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax])
109  fBmin(pset.getParameter<double>("fBmin")), // Minimum impact parameter in units of nuclear radius, fBmin
110  fBmax(pset.getParameter<double>("fBmax")), // Maximum impact parameter in units of nuclear radius, fBmax
111  fBfix(pset.getParameter<double>("fBfix")), // Fixed impact parameter in units of nuclear radius, fBfix
112  fT(pset.getParameter<double>("fT")), // Temperature at chemical freeze-out, fT [GeV]
113  fMuB(pset.getParameter<double>("fMuB")), // Chemical baryon potential per unit charge, fMuB [GeV]
114  fMuS(pset.getParameter<double>("fMuS")), // Chemical strangeness potential per unit charge, fMuS [GeV]
115  fMuC(pset.getParameter<double>("fMuC")), // Chemical charm potential per unit charge, fMuC [GeV] (used if charm production is turned on)
116  fMuI3(pset.getParameter<double>("fMuI3")), // Chemical isospin potential per unit charge, fMuI3 [GeV]
117  fThFO(pset.getParameter<double>("fThFO")), // Temperature at thermal freeze-out, fThFO [GeV]
118  fMu_th_pip(pset.getParameter<double>("fMu_th_pip")),// Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV]
119  fTau(pset.getParameter<double>("fTau")), // Proper time proper at thermal freeze-out for central collisions, fTau [fm/c]
120  fSigmaTau(pset.getParameter<double>("fSigmaTau")), // Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c]
121  fR(pset.getParameter<double>("fR")), // Maximal transverse radius at thermal freeze-out for central collisions, fR [fm]
122  fYlmax(pset.getParameter<double>("fYlmax")), // Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax
123  fUmax(pset.getParameter<double>("fUmax")), // Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax
124  fDelta(pset.getParameter<double>("fDelta")), // Momentum azimuthal anizotropy parameter at thermal freeze-out, fDelta
125  fEpsilon(pset.getParameter<double>("fEpsilon")), // Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon
126  fIfDeltaEpsilon(pset.getParameter<double>("fIfDeltaEpsilon")), // Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated)
127  fDecay(pset.getParameter<int>("fDecay")), // Flag to switch on/off hadron decays, fDecay (=0 decays off, >=1 decays on)
128  fWeakDecay(pset.getParameter<double>("fWeakDecay")),// Low decay width threshold fWeakDecay[GeV]: width<fWeakDecay decay off, width>=fDecayWidth decay on; can be used to switch off weak decays
129  fEtaType(pset.getParameter<double>("fEtaType")), // Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax)
130  fTMuType(pset.getParameter<double>("fTMuType")), // Flag to use calculated T_ch, mu_B and mu_S as a function of fSqrtS, fTMuType (=0 user's ones, >0 calculated)
131  fCorrS(pset.getParameter<double>("fCorrS")), // Strangeness supression factor gamma_s with fCorrS value (0<fCorrS <=1, if fCorrS <= 0 then it is calculated)
132  fCharmProd(pset.getParameter<int>("fCharmProd")), // Flag to include thermal charm production, fCharmProd (=0 no charm production, >=1 charm production)
133  fCorrC(pset.getParameter<double>("fCorrC")), // Charmness enhancement factor gamma_c with fCorrC value (fCorrC >0, if fCorrC<0 then it is calculated)
134  fNhsel(pset.getParameter<int>("fNhsel")), //Flag to include jet (J)/jet quenching (JQ) and hydro (H) state production, fNhsel (0 H on & J off, 1 H/J on & JQ off, 2 H/J/HQ on, 3 J on & H/JQ off, 4 H off & J/JQ on)
135  fPyhist(pset.getParameter<int>("fPyhist")), // Flag to suppress the output of particle history from PYTHIA, fPyhist (=1 only final state particles; =0 full particle history from PYTHIA)
136  fIshad(pset.getParameter<int>("fIshad")), // Flag to switch on/off nuclear shadowing, fIshad (0 shadowing off, 1 shadowing on)
137  fPtmin(pset.getParameter<double>("fPtmin")), // Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c]
138  fT0(pset.getParameter<double>("fT0")), // Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]
139  fTau0(pset.getParameter<double>("fTau0")), // Proper QGP formation time in fm/c, fTau0 (0.01<fTau0<10)
140  fNf(pset.getParameter<int>("fNf")), // Number of active quark flavours in QGP, fNf (0, 1, 2 or 3)
141  fIenglu(pset.getParameter<int>("fIenglu")), // Flag to fix type of partonic energy loss, fIenglu (0 radiative and collisional loss, 1 radiative loss only, 2 collisional loss only)
142  fIanglu(pset.getParameter<int>("fIanglu")), // Flag to fix type of angular distribution of in-medium emitted gluons, fIanglu (0 small-angular, 1 wide-angular, 2 collinear).
143 
144  embedding_(pset.getParameter<bool>("embeddingMode")),
145  rotate_(pset.getParameter<bool>("rotateEventPlane")),
146  evt(0),
147  nsub_(0),
148  nhard_(0),
149  nsoft_(0),
150  phi0_(0.),
151  sinphi0_(0.),
152  cosphi0_(1.),
154 
155 {
156  // constructor
157  // PYLIST Verbosity Level
158  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
159  pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0);
160  LogDebug("PYLISTverbosity") << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_;
161  //Max number of events printed on verbosity level
162  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0);
163  LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_;
164  if(embedding_) src_ = pset.getParameter<edm::InputTag>("backgroundLabel");
165 }
#define LogDebug(id)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
BaseHadronizer(edm::ParameterSet const &ps)
unsigned int pythiaPylistVerbosity_
Pythia6Service * pythia6Service_
Hydjet2Hadronizer::~Hydjet2Hadronizer ( )

Definition at line 168 of file Hydjet2Hadronizer.cc.

References pythia6Service_.

168  {
169  // destructor
170  call_pystat(1);
171  delete pythia6Service_;
172 }
Pythia6Service * pythia6Service_

Member Function Documentation

void Hydjet2Hadronizer::add_heavy_ion_rec ( HepMC::GenEvent *  evt)
private

Definition at line 1185 of file Hydjet2Hadronizer.cc.

References Bgen, Nbcol, npart, Npart, nsub_, nuclear_radius(), phi0_, and Sigin.

Referenced by generatePartonsAndHadronize().

HepMC::GenParticle * Hydjet2Hadronizer::build_hyjet2 ( int  index,
int  barcode 
)
private

Definition at line 1143 of file Hydjet2Hadronizer.cc.

References crabWrap::convertStatus(), cosphi0_, E, GenParticle::GenParticle, cmsHarvester::index, gen::p, pdg, Px, Py, Pz, and sinphi0_.

Referenced by get_particles().

1162 {
1163  // build verteces for the hyjets stored events
1164 
1165  double x0=X[i];
1166  double y0=Y[i];
int i
Definition: DBlmapReader.cc:9
HepMC::GenVertex * Hydjet2Hadronizer::build_hyjet2_vertex ( int  i,
int  id 
)
private

Definition at line 1169 of file Hydjet2Hadronizer.cc.

References cosphi0_, i, sinphi0_, tree::t, x(), X, Y, and Z.

Referenced by get_particles().

1178 {
1179  // heavy ion record in the final CMSSW Event
1180  double npart = Npart;
1181  int nproj = static_cast<int>(npart / 2);
1182  int ntarg = static_cast<int>(npart - nproj);
double npart
Definition: HydjetWrapper.h:44
double Hydjet2Hadronizer::CharmEnhancementFactor ( double  Ncc,
double  Ndth,
double  NJPsith,
double  Epsilon 
)

Definition at line 1013 of file Hydjet2Hadronizer.cc.

References BesselI0(), BesselI1(), i, and x().

Referenced by generatePartonsAndHadronize().

1016  {
1017  if(var1 * var0<0){
1018  gammaC=gammaC+0.01*i;
1019  double x = gammaC*Ndth;
1020  var0 = Ncc-0.5*gammaC*Ndth*TMath::BesselI1(x)/TMath::BesselI0(x)-gammaC*gammaC*NJPsith;
1021  }
1022  else
1023  {
1024  LogInfo("Charam") << "gammaC "<<gammaC<<" var0 "<<var0;
1025  return gammaC;
1026  }
1027 
1028  }
1029  LogInfo("Charam") << "gammaC not found ? "<<gammaC<<" var0 "<<var0;
1030  return -100;
1031 }
1032 //----------------------------------------------------------------------------------------------
1033 
1034 
1035 
1036 //_____________________________________________________________________
1037 
1038 
1039 
int i
Definition: DBlmapReader.cc:9
double BesselI0(double x)
double BesselI1(double x)
const char * Hydjet2Hadronizer::classname ( ) const

Definition at line 922 of file Hydjet2Hadronizer.cc.

923  {
924  LogDebug("f2") <<"in f2: "<<"delta"<<Delta;
925  double RsB = fR; //test: podstavit' *coefff_RB
#define LogDebug(id)
bool Hydjet2Hadronizer::decay ( )

Definition at line 908 of file Hydjet2Hadronizer.cc.

909 {
910 }
bool gen::Hydjet2Hadronizer::declareSpecialSettings ( const std::vector< std::string > &  )
inline

Definition at line 75 of file Hydjet2Hadronizer.h.

75 { return true; }
bool Hydjet2Hadronizer::declareStableParticles ( const std::vector< int > &  _pdg)

Definition at line 891 of file Hydjet2Hadronizer.cc.

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

897 {
898  return false;
899 }
901 {
902  return true;
void Hydjet2Hadronizer::doSetRandomEngine ( CLHEP::HepRandomEngine *  v)
overrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 176 of file Hydjet2Hadronizer.cc.

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

177 {
179  hjRandomEngine = v;
180 }
double v[5][pyjets_maxn]
Pythia6Service * pythia6Service_
CLHEP::HepRandomEngine * hjRandomEngine
void setRandomEngine(CLHEP::HepRandomEngine *v)
virtual std::vector<std::string> const& gen::Hydjet2Hadronizer::doSharedResources ( ) const
inlineoverrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 114 of file Hydjet2Hadronizer.h.

References theSharedResources.

114 { return theSharedResources; }
static const std::vector< std::string > theSharedResources
double gen::Hydjet2Hadronizer::f ( double  )
double Hydjet2Hadronizer::f2 ( double  x,
double  y,
double  Delta 
)

Definition at line 931 of file Hydjet2Hadronizer.cc.

References alignCSCRings::ff, fR, fUmax, and LogDebug.

Referenced by MidpointIntegrator2(), and SimpsonIntegrator().

934  {
935  LogDebug("SimpsonIntegrator") <<"in SimpsonIntegrator"<<"delta - "<<Delta;
936  int nsubIntervals=100;
937  double h = (b - a)/nsubIntervals;
938  double s = f2(phi,a + 0.5*h,Delta);
939  double t = 0.5*(f2(phi,a,Delta) + f2(phi,b,Delta));
#define LogDebug(id)
tuple t
Definition: tree.py:139
double f2(double, double, double)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
void Hydjet2Hadronizer::finalizeEvent ( )

Definition at line 916 of file Hydjet2Hadronizer.cc.

bool Hydjet2Hadronizer::generatePartonsAndHadronize ( )

Definition at line 437 of file Hydjet2Hadronizer.cc.

References HLT_25ns14e33_v1_cff::A, funct::abs(), Abs(), add_heavy_ion_rec(), ParticleAllocator::AddParticle(), allocator, HYFPARCommon::bgen, Bgen, funct::C, CharmEnhancementFactor(), funct::cos(), cosphi0_, ztail::d, alignCSCRings::e, E, embedding_, HLT_25ns14e33_v1_cff::Epsilon, ev, gen::BaseHadronizer::event(), edm::errors::EventCorruption, InitialState::Evolve(), evt, fBfix, fCharmProd, fCorrC, InitialState::fDatabase, fDelta, fEpsilon, fEtaType, fIfb, fIfDeltaEpsilon, FirstDaughterIndex, fNccth, fNhsel, fNocth, fNPartTypes, fPartEnc, fPartMu, fPartMult, fR, ParticleAllocator::FreeList(), fSigmaTau, fT, fTau, fThFO, fUmax, fVolEff, fYlmax, get_particles(), edm::Event::getByLabel(), ParticlePDG::GetCharmAQNumber(), ParticlePDG::GetCharmQNumber(), gen::BaseHadronizer::getEDMEvent(), ParticlePDG::GetMass(), DatabasePDG::GetPDGParticle(), ParticlePDG::GetSpin(), GetWeakDecayLimit(), h, hjRandomEngine, hyevnt_(), i, Index, cmsHarvester::index, Particle::InitIndexing(), input, j, kMax, LastDaughterIndex, MotherIndex, Mpdg, RPCpg::mu, HYFPARCommon::nbcol, Nbcol, NDaughters, nhard_, Nhyd, HYJPARCommon::njet, Njet, HYPARTCommon::njp, HYFPARCommon::npart, Npart, HYFPARCommon::npart0, Npyt, nsoft_, nsub_, Ntot, pdg, phi(), phi0_, Pi, HYPARTCommon::ppart, RandArrayFunction::PrepareTable(), Px, Py, pypars, pythia6Service_, pythiaStatus, Pz, alignCSCRings::r, HYIPARCommon::RA, rho, rotate_, rotateEvtPlane(), RunDecays(), SERVICE, SERVICEEV, HYJPARCommon::sigin, Sigin, HYJPARCommon::sigjet, Sigjet, SimpsonIntegrator2(), funct::sin(), sinphi0_, source, mathSSE::sqrt(), src_, metsig::tau, TwoPi, histoStyle::weight, x(), X, Y, and Z.

437  {
438 
439 
440  Pythia6Service::InstanceWrapper guard(pythia6Service_);
441 
442  // Initialize the static "last index variable"
444 
445  //----- high-pt part------------------------------
446  TLorentzVector partJMom, partJPos, zeroVec;
447 
448  // generate single event
449  if(embedding_){
450  fIfb = 0;
451  const edm::Event& e = getEDMEvent();
453  e.getByLabel(src_,input);
454  const HepMC::GenEvent * inev = input->GetEvent();
455  const HepMC::HeavyIon* hi = inev->heavy_ion();
456  if(hi){
457  fBfix = hi->impact_parameter();
458  phi0_ = hi->event_plane_angle();
459  sinphi0_ = sin(phi0_);
460  cosphi0_ = cos(phi0_);
461  }else{
462  LogWarning("EventEmbedding")<<"Background event does not have heavy ion record!";
463  }
464  }else if(rotate_) rotateEvtPlane();
465 
466  nsoft_ = 0;
467  nhard_ = 0;
468  /*
469  edm::LogInfo("HYDJET2mode") << "##### HYDJET2 fNhsel = " << fNhsel;
470  edm::LogInfo("HYDJET2fpart") << "##### HYDJET2 fpart = " << hyflow.fpart;??
471  edm::LogInfo("HYDJET2tf") << "##### HYDJET2 hadron freez-out temp, Tf = " << hyflow.Tf;??
472  edm::LogInfo("HYDJET2tf") << "##### HYDJET2 hadron freez-out temp, Tf = " << hyflow.Tf;??
473  edm::LogInfo("HYDJET2inTemp") << "##### HYDJET2: QGP init temperature, fT0 ="<<fT0;
474  edm::LogInfo("HYDJET2inTau") << "##### HYDJET2: QGP formation time, fTau0 ="<<fTau0;
475  */
476  // generate a HYDJET event
477  int ntry = 0;
478  while(nsoft_ == 0 && nhard_ == 0){
479  if(ntry > 100){
480  LogError("Hydjet2EmptyEvent") << "##### HYDJET2: No Particles generated, Number of tries ="<<ntry;
481  // Throw an exception. Use the EventCorruption exception since it maps onto SkipEvent
482  // which is what we want to do here.
483  std::ostringstream sstr;
484  sstr << "Hydjet2HadronizerProducer: No particles generated after " << ntry << " tries.\n";
485  edm::Exception except(edm::errors::EventCorruption, sstr.str());
486  throw except;
487  } else {
488 
489 
490  //generate non-equilibrated part event
491  hyevnt_();
492 
494  if(fNhsel != 0){
495  //get number of particles in jets
496  int numbJetPart = HYPART.njp;
497 
498  for(int i = 0; i <numbJetPart; ++i) {
499  int pythiaStatus = int(HYPART.ppart[i][0]); // PYTHIA status code
500  int pdg = int(HYPART.ppart[i][1]); // PYTHIA species code
501  double px = HYPART.ppart[i][2]; // px
502  double py = HYPART.ppart[i][3]; // py
503  double pz = HYPART.ppart[i][4]; // pz
504  double e = HYPART.ppart[i][5]; // E
505  double vx = HYPART.ppart[i][6]; // x
506  double vy = HYPART.ppart[i][7]; // y
507  double vz = HYPART.ppart[i][8]; // z
508  double vt = HYPART.ppart[i][9]; // t
509  // particle line number in pythia are 1 based while we use a 0 based numbering
510  int mother_index = int(HYPART.ppart[i][10])-1; //line number of parent particle
511  int daughter_index1 = int(HYPART.ppart[i][11])-1; //line number of first daughter
512  int daughter_index2 = int(HYPART.ppart[i][12])-1; //line number of last daughter
513 
514  // For status codes 3, 13, 14 the first and last daughter indexes have a different meaning
515  // used for color flow in PYTHIA. So these indexes will be reset to zero.
516  if(TMath::Abs(daughter_index1)>numbJetPart || TMath::Abs(daughter_index2)>numbJetPart ||
517  TMath::Abs(daughter_index1)>TMath::Abs(daughter_index2)) {
518  daughter_index1 = -1;
519  daughter_index2 = -1;
520  }
521 
522  ParticlePDG *partDef = fDatabase->GetPDGParticle(pdg);
523 
524  int type=1; //from jet
525  if(partDef) {
526  int motherPdg = int(HYPART.ppart[mother_index][1]);
527  if(motherPdg==0) motherPdg = -1;
528  partJMom.SetXYZT(px, py, pz, e);
529  partJPos.SetXYZT(vx, vy, vz, vt);
530  Particle particle(partDef, partJPos, partJMom, 0, 0, type, motherPdg, zeroVec, zeroVec);
531  int index = particle.SetIndex();
532  if(index!=i) {
533  LogWarning("Hydjet2Hadronizer") << " Allocated HYDJET++ index is not synchronized with the PYTHIA index!" << endl
534  << " Collision history information is destroyed! It happens when a PYTHIA code is not" << endl
535  << " implemented in HYDJET++ particle list particles.data! Check it out!";
536  }
537  particle.SetPythiaStatusCode(pythiaStatus);
538  particle.SetMother(mother_index);
539  particle.SetFirstDaughterIndex(daughter_index1);
540  particle.SetLastDaughterIndex(daughter_index2);
541  if(pythiaStatus!=1) particle.SetDecayed();
542  allocator.AddParticle(particle, source);
543  }
544  else {
545  LogWarning("Hydjet2Hadronizer") << " PYTHIA particle of specie " << pdg << " is not in HYDJET++ particle list" << endl
546  <<" Please define it in particles.data, otherwise the history information will be de-synchronized and lost!";
547  }
548  }
549  } //nhsel !=0 not only hydro!
550 
551 
552  //----------HYDRO part--------------------------------------
553 
554  // get impact parameter
555  double impactParameter = HYFPAR.bgen;
556 
557  // Sergey psiforv3
558  double psiforv3 = 0.; //AS-ML Nov2012 epsilon3 //
559  double e3 = (0.2/5.5)*TMath::Power(impactParameter,1./3.);
560  psiforv3 = TMath::TwoPi() * (-0.5 + CLHEP::RandFlat::shoot(hjRandomEngine)) / 3.;
561  SERVICEEV.psiv3 = -psiforv3;
562 
563  if(fNhsel < 3){
564  const double weightMax = 2*TMath::CosH(fUmax);
565  const int nBins = 100;
566  double probList[nBins];
567  RandArrayFunction arrayFunctDistE(nBins);
568  RandArrayFunction arrayFunctDistR(nBins);
569  TLorentzVector partPos, partMom, n1, p0;
570  TVector3 vec3;
571  const TLorentzVector zeroVec;
572  //set maximal hadron energy
573  const double eMax = 5.;
574  //-------------------------------------
575  // get impact parameter
576 
577  double Delta =fDelta;
578  double Epsilon =fEpsilon;
579 
580  if(fIfDeltaEpsilon>0){
581  double Epsilon0 = 0.5*impactParameter; //e0=b/2Ra
582  double coeff = (HYIPAR.RA/fR)/12.;//phenomenological coefficient
583  Epsilon = Epsilon0 * coeff;
584  double C=5.6;
585  double A = C*Epsilon*(1-Epsilon*Epsilon);
586  if(TMath::Abs(Epsilon)<0.0001 || TMath::Abs(A)<0.0001 )Delta=0.0; if(TMath::Abs(Epsilon)>0.0001 && TMath::Abs(A)>0.0001)Delta = 0.5*(TMath::Sqrt(1+4*A*(Epsilon+A))-1)/A;
587 
588  }
589 
590  //effective volume for central
591  double dYl= 2 * fYlmax; //uniform distr. [-Ylmax; Ylmax]
592  if (fEtaType >0) dYl = TMath::Sqrt(2 * TMath::Pi()) * fYlmax ; //Gaussian distr.
593 
594  double VolEffcent = 2 * TMath::Pi() * fTau * dYl * (fR * fR)/TMath::Power((fUmax),2) * ((fUmax)*TMath::SinH((fUmax))-TMath::CosH((fUmax))+ 1);
595 
596  //effective volume for non-central Simpson2
597  double VolEffnoncent = fTau * dYl * SimpsonIntegrator2(0., 2.*TMath::Pi(), Epsilon, Delta);
598 
599  fVolEff = VolEffcent * HYFPAR.npart/HYFPAR.npart0;
600 
601  double coeff_RB = TMath::Sqrt(VolEffcent * HYFPAR.npart/HYFPAR.npart0/VolEffnoncent);
602  double coeff_R1 = HYFPAR.npart/HYFPAR.npart0;
603  coeff_R1 = TMath::Power(coeff_R1, 0.333333);
604 
605  double Veff=fVolEff;
606  //------------------------------------
607  //cycle on particles types
608 
609  double Nbcol = HYFPAR.nbcol;
610  double NccNN = SERVICE.charm;
611  double Ncc = Nbcol * NccNN/dYl;
612  double Nocth = fNocth;
613  double NJPsith = fNccth;
614 
615  double gammaC=1.0;
616  if(fCorrC<=0){
617  gammaC=CharmEnhancementFactor(Ncc, Nocth, NJPsith, 0.001);
618  }else{
619  gammaC=fCorrC;
620  }
621 
622  LogInfo("Hydjet2Hadronizer|Param") <<" gammaC = " <<gammaC;
623 
624  for(int i = 0; i < fNPartTypes; ++i) {
625  double Mparam = fPartMult[2 * i] * Veff;
626  const int encoding = fPartEnc[i];
627 
628  //ml if(abs(encoding)==443)Mparam = Mparam * gammaC * gammaC;
629  //ml if(abs(encoding)==411 || abs(encoding)==421 ||abs(encoding)==413 || abs(encoding)==423
630  //ml || abs(encoding)==4122 || abs(encoding)==431)
631 
632  ParticlePDG *partDef0 = fDatabase->GetPDGParticle(encoding);
633 
634  if(partDef0->GetCharmQNumber()!=0 || partDef0->GetCharmAQNumber()!=0)Mparam = Mparam * gammaC;
635  if(abs(encoding)==443)Mparam = Mparam * gammaC;
636 
637  LogInfo("Hydjet2Hadronizer|Param") <<encoding<<" "<<Mparam/dYl;
638 
639  int multiplicity = CLHEP::RandPoisson::shoot(hjRandomEngine, Mparam);
640 
641  LogInfo("Hydjet2Hadronizer|Param") <<"specie: " << encoding << "; average mult: = " << Mparam << "; multiplicity = " << multiplicity;
642 
643  if (multiplicity > 0) {
644  ParticlePDG *partDef = fDatabase->GetPDGParticle(encoding);
645  if(!partDef) {
646  LogError("Hydjet2Hadronizer") << "No particle with encoding "<< encoding;
647  continue;
648  }
649 
650 
651  if(fCharmProd<=0 && (partDef->GetCharmQNumber()!=0 || partDef->GetCharmAQNumber()!=0)){
652  LogInfo("Hydjet2Hadronizer|Param") <<"statistical charmed particle not allowed ! "<<encoding;
653  continue;
654  }
655  if(partDef->GetCharmQNumber()!=0 || partDef->GetCharmAQNumber()!=0)
656  LogInfo("Hydjet2Hadronizer|Param") <<" charm pdg generated "<< encoding;
657 
658 
659  //compute chemical potential for single f.o. mu==mu_ch
660  //compute chemical potential for thermal f.o.
661  double mu = fPartMu[2 * i];
662 
663  //choose Bose-Einstein or Fermi-Dirac statistics
664  const double d = !(int(2*partDef->GetSpin()) & 1) ? -1 : 1;
665  const double mass = partDef->GetMass();
666 
667  //prepare histogram to sample hadron energy:
668  double h = (eMax - mass) / nBins;
669  double x = mass + 0.5 * h;
670  int i;
671  for(i = 0; i < nBins; ++i) {
672  if(x>=mu && fThFO>0)probList[i] = x * TMath::Sqrt(x * x - mass * mass) / (TMath::Exp((x - mu) / (fThFO)) + d);
673  if(x>=mu && fThFO<=0)probList[i] = x * TMath::Sqrt(x * x - mass * mass) / (TMath::Exp((x - mu) / (fT)) + d);
674  if(x<mu)probList[i] = 0.;
675  x += h;
676  }
677  arrayFunctDistE.PrepareTable(probList);
678 
679  //prepare histogram to sample hadron transverse radius:
680  h = (fR) / nBins;
681  x = 0.5 * h;
682  double param = (fUmax) / (fR);
683  for (i = 0; i < nBins; ++i) {
684  probList[i] = x * TMath::CosH(param*x);
685  x += h;
686  }
687  arrayFunctDistR.PrepareTable(probList);
688 
689  //loop over hadrons, assign hadron coordinates and momenta
690  double weight = 0., yy = 0., px0 = 0., py0 = 0., pz0 = 0.;
691  double e = 0., x0 = 0., y0 = 0., z0 = 0., t0 = 0., etaF = 0.;
692  double r, RB, phiF;
693 
694  RB = fR * coeff_RB * coeff_R1 * TMath::Sqrt((1+e3)/(1-e3));
695 
696  for(int j = 0; j < multiplicity; ++j) {
697  do {
698  fEtaType <=0 ? etaF = fYlmax * (2. * CLHEP::RandFlat::shoot(hjRandomEngine) - 1.) : etaF = (fYlmax) * (CLHEP::RandGauss::shoot(hjRandomEngine));
699  n1.SetXYZT(0.,0.,TMath::SinH(etaF),TMath::CosH(etaF));
700 
701  if(TMath::Abs(etaF)>5.)continue;
702 
703  //old
704  //double RBold = fR * TMath::Sqrt(1-fEpsilon);
705 
706  //RB = fR * coeff_RB * coeff_R1;
707 
708  //double impactParameter =HYFPAR.bgen;
709  //double e0 = 0.5*impactParameter;
710  //double RBold1 = fR * TMath::Sqrt(1-e0);
711 
712  double rho = TMath::Sqrt(CLHEP::RandFlat::shoot(hjRandomEngine));
713  double phi = TMath::TwoPi() * CLHEP::RandFlat::shoot(hjRandomEngine);
714  double Rx = TMath::Sqrt(1-Epsilon)*RB;
715  double Ry = TMath::Sqrt(1+Epsilon)*RB;
716 
717  x0 = Rx * rho * TMath::Cos(phi);
718  y0 = Ry * rho * TMath::Sin(phi);
719  r = TMath::Sqrt(x0*x0+y0*y0);
720  phiF = TMath::Abs(TMath::ATan(y0/x0));
721 
722  if(x0<0&&y0>0)phiF = TMath::Pi()-phiF;
723  if(x0<0&&y0<0)phiF = TMath::Pi()+phiF;
724  if(x0>0&&y0<0)phiF = 2.*TMath::Pi()-phiF;
725 
726  //new Nov2012 AS-ML
727  if(r>RB*(1+e3*TMath::Cos(3*(phiF+psiforv3)))/(1+e3))continue;
728 
729  //proper time with emission duration
730  double tau = coeff_R1 * fTau + sqrt(2.) * fSigmaTau * coeff_R1 * (CLHEP::RandGauss::shoot(hjRandomEngine));
731  z0 = tau * TMath::SinH(etaF);
732  t0 = tau * TMath::CosH(etaF);
733  double rhou = fUmax * r / RB;
734  double rhou3 = 0.063*TMath::Sqrt((0.5*impactParameter)/0.67); double rhou4 = 0.023*((0.5*impactParameter)/0.67);
735  double rrcoeff = 1./TMath::Sqrt(1. + Delta*TMath::Cos(2*phiF));
736  //AS-ML Nov.2012
737  rhou3=0.; //rhou4=0.;
738  rhou = rhou * (1 + rrcoeff*rhou3*TMath::Cos(3*(phiF+psiforv3)) + rrcoeff*rhou4*TMath::Cos(4*phiF) ); //ML new suggestion of AS mar2012
739  double delta1 = 0.; Delta = Delta * (1.0 + delta1 * TMath::Cos(phiF) - delta1 * TMath::Cos(3*phiF));
740 
741  double uxf = TMath::SinH(rhou)*TMath::Sqrt(1+Delta)*TMath::Cos(phiF);
742  double uyf = TMath::SinH(rhou)*TMath::Sqrt(1-Delta)*TMath::Sin(phiF);
743  double utf = TMath::CosH(etaF) * TMath::CosH(rhou) *
744  TMath::Sqrt(1+Delta*TMath::Cos(2*phiF)*TMath::TanH(rhou)*TMath::TanH(rhou));
745  double uzf = TMath::SinH(etaF) * TMath::CosH(rhou) *
746  TMath::Sqrt(1+Delta*TMath::Cos(2*phiF)*TMath::TanH(rhou)*TMath::TanH(rhou));
747 
748  vec3.SetXYZ(uxf / utf, uyf / utf, uzf / utf);
749  n1.Boost(-vec3);
750 
751  yy = weightMax * CLHEP::RandFlat::shoot(hjRandomEngine);
752 
753  double php0 = TMath::TwoPi() * CLHEP::RandFlat::shoot(hjRandomEngine);
754  double ctp0 = 2. * CLHEP::RandFlat::shoot(hjRandomEngine) - 1.;
755  double stp0 = TMath::Sqrt(1. - ctp0 * ctp0);
756  e = mass + (eMax - mass) * arrayFunctDistE();
757  double pp0 = TMath::Sqrt(e * e - mass * mass);
758  px0 = pp0 * stp0 * TMath::Sin(php0);
759  py0 = pp0 * stp0 * TMath::Cos(php0);
760  pz0 = pp0 * ctp0;
761  p0.SetXYZT(px0, py0, pz0, e);
762 
763  //weight for rdr
764  weight = (n1 * p0) /e; // weight for rdr gammar: weight = (n1 * p0) / n1[3] / e;
765 
766  } while(yy >= weight);
767 
768  if(abs(z0)>1000 || abs(x0)>1000) LogInfo("Hydjet2Hadronizer|Param") <<" etaF = "<<etaF<<std::endl;
769 
770  partMom.SetXYZT(px0, py0, pz0, e);
771  partPos.SetXYZT(x0, y0, z0, t0);
772  partMom.Boost(vec3);
773 
774  int type =0; //hydro
775  Particle particle(partDef, partPos, partMom, 0., 0, type, -1, zeroVec, zeroVec);
776  particle.SetIndex();
777  allocator.AddParticle(particle, source);
778  } //nhsel==4 , no hydro part
779  }
780  }
781  }
782 
784 
785  Npart = (int)HYFPAR.npart;
786  Bgen = HYFPAR.bgen;
787  Njet = (int)HYJPAR.njet;
788  Nbcol = (int)HYFPAR.nbcol;
789 
790  if(source.empty()) {
791  LogError("Hydjet2Hadronizer") << "Source is not initialized!!";
792  //return ;
793  }
794  //Run the decays
796 
797  LPIT_t it;
798  LPIT_t e;
799 
800  //Fill the decayed arrays
801  Ntot = 0; Nhyd=0; Npyt=0;
802  for(it = source.begin(), e = source.end(); it != e; ++it) {
803  TVector3 pos(it->Pos().Vect());
804  TVector3 mom(it->Mom().Vect());
805  float m1 = it->TableMass();
806  pdg[Ntot] = it->Encoding();
807  Mpdg[Ntot] = it->GetLastMotherPdg();
808  Px[Ntot] = mom[0];
809  Py[Ntot] = mom[1];
810  Pz[Ntot] = mom[2];
811  E[Ntot] = TMath::Sqrt(mom.Mag2() + m1*m1);
812  X[Ntot] = pos[0];
813  Y[Ntot] = pos[1];
814  Z[Ntot] = pos[2];
815  T[Ntot] = it->T();
816  type[Ntot] = it->GetType();
817  pythiaStatus[Ntot] = it->GetPythiaStatusCode();
818  Index[Ntot] = it->GetIndex();
819  MotherIndex[Ntot] = it->GetMother();
820  NDaughters[Ntot] = it->GetNDaughters();
822  //index of first daughter
823  FirstDaughterIndex[Ntot] = it->GetFirstDaughterIndex();
824  //index of last daughter
825  LastDaughterIndex[Ntot] = it->GetLastDaughterIndex();
826  if(type[Ntot]==1) { // jets
827  if(pythiaStatus[Ntot]==1 && NDaughters[Ntot]==0) // code for final state particle in pythia
828  final[Ntot]=1;
829  else
830  final[Ntot]=0;
831  }
832  if(type[Ntot]==0) { // hydro
833  if(NDaughters[Ntot]==0)
834  final[Ntot]=1;
835  else
836  final[Ntot]=0;
837  }
838 
839  if(type[Ntot]==0)Nhyd++;
840  if(type[Ntot]==1)Npyt++;
841 
842  Ntot++;
843  if(Ntot > kMax)
844  LogError("Hydjet2Hadronizer") << "Ntot is too large" << Ntot;
845  }
846 
847  nsoft_ = Nhyd;
848  nsub_ = Njet;
849  nhard_ = Npyt;
850 
851  //100 trys
852 
853  ++ntry;
854  }
855  }
856 
857  if(ev==0) {
858  Sigin=HYJPAR.sigin;
859  Sigjet=HYJPAR.sigjet;
860  }
861  ev=1;
862 
863  if(fNhsel < 3) nsub_++;
864 
865  // event information
866  HepMC::GenEvent *evt = new HepMC::GenEvent();
867  if(nhard_>0 || nsoft_>0) get_particles(evt);
868 
869  evt->set_signal_process_id(pypars.msti[0]); // type of the process
870  evt->set_event_scale(pypars.pari[16]); // Q^2
871  add_heavy_ion_rec(evt);
872 
873 
874  event().reset(evt);
875 
877 
878  return kTRUE;
879 }
880 
881 
882 //________________________________________________________________
883 bool Hydjet2Hadronizer::declareStableParticles(const std::vector<int>& _pdg )
884 {
885  std::vector<int> pdg = _pdg;
886  for ( size_t i=0; i < pdg.size(); i++ ) {
887  int pyCode = pycomp_( pdg[i] );
const double TwoPi
const double Pi
type
Definition: HCALResponse.h:21
int i
Definition: DBlmapReader.cc:9
bool declareStableParticles(const std::vector< int > &)
ParticlePDG * GetPDGParticle(int pdg)
Definition: DatabasePDG.cc:222
ParticleAllocator allocator
#define HYJPAR
Definition: HYJET_COMMONS.h:70
void add_heavy_ion_rec(HepMC::GenEvent *evt)
#define HYPART
double SimpsonIntegrator2(double, double, double, double)
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
#define SERVICEEV
Definition: HYJET_COMMONS.h:53
virtual double GetWeakDecayLimit()
std::auto_ptr< HepMC::GenEvent > & event()
double GetCharmAQNumber()
Definition: ParticlePDG.h:79
static std::string const input
Definition: EdmProvDump.cc:43
#define HYFPAR
tuple d
Definition: ztail.py:151
double GetSpin()
Definition: ParticlePDG.h:71
Pythia6Service * pythia6Service_
std::vector< vec2 > vec3
Definition: HCALResponse.h:17
void FreeList(List_t &list)
Definition: Particle.cc:122
bool get_particles(HepMC::GenEvent *evt)
void hyevnt_()
T sqrt(T t)
Definition: SSEVec.h:48
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
T Abs(T a)
Definition: MathUtil.h:49
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int j
Definition: DBlmapReader.cc:9
double CharmEnhancementFactor(double, double, double, double)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
const int mu
Definition: Constants.h:22
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:413
CLHEP::HepRandomEngine * hjRandomEngine
#define HYIPAR
Definition: HYJET_COMMONS.h:27
virtual void Evolve(List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit)
Definition: InitialState.cc:13
static void InitIndexing()
Definition: Particle.h:105
#define SERVICE
Definition: HYJET_COMMONS.h:39
int pycomp_(int &)
#define pypars
double GetCharmQNumber()
Definition: ParticlePDG.h:78
DatabasePDG * fDatabase
Definition: InitialState.h:16
double GetMass()
Definition: ParticlePDG.h:68
#define kMax
void AddParticle(const Particle &particle, List_t &list)
Definition: Particle.cc:109
int weight
Definition: histoStyle.py:50
std::list< Particle >::iterator LPIT_t
Definition: Particle.h:144
long double T
edm::Event & getEDMEvent() const
bool Hydjet2Hadronizer::get_particles ( HepMC::GenEvent *  evt)
private

Definition at line 1059 of file Hydjet2Hadronizer.cc.

References build_hyjet2(), build_hyjet2_vertex(), GenParticle::GenParticle, i, LogDebug, MotherIndex, nhard_, Njet, nsoft_, and nsub_.

Referenced by generatePartonsAndHadronize().

1068  {
1069  LogDebug("SubEvent") <<"Sub Event ID : "<<isub;
1070 
1071  int sub_up = (isub+1)*50000; // Upper limit in mother index, determining the range of Sub-Event
1072  vector<HepMC::GenParticle*> particles;
1073  vector<int> mother_ids;
1074  vector<HepMC::GenVertex*> prods;
1075 
1076  sub_vertices[isub] = new HepMC::GenVertex(HepMC::FourVector(0,0,0,0),isub);
1077  evt->add_vertex(sub_vertices[isub]);
1078 
1079  if(!evt->signal_process_vertex()) evt->set_signal_process_vertex(sub_vertices[isub]);
1080 
1081  while(ihy<nhard_+nsoft_ && (MotherIndex[ihy] < sub_up || ihy > nhard_ )){
1082  particles.push_back(build_hyjet2(ihy,ihy+1));
1083  prods.push_back(build_hyjet2_vertex(ihy,isub));
1084  mother_ids.push_back(MotherIndex[ihy]);
1085  LogDebug("DecayChain")<<"Mother index : "<<MotherIndex[ihy];
1086  ihy++;
1087  }
1088  //Produce Vertices and add them to the GenEvent. Remember that GenParticles are adopted by
1089  //GenVertex and GenVertex is adopted by GenEvent.
1090  LogDebug("Hydjet2")<<"Number of particles in vector "<<particles.size();
1091 
1092  for (unsigned int i = 0; i<particles.size(); i++) {
1093 
1094  HepMC::GenParticle* part = particles[i];
1095  //The Fortran code is modified to preserve mother id info, by seperating the beginning
1096  //mother indices of successive subevents by 5000
1097  int mid = mother_ids[i]-isub*50000-1;
1098  LogDebug("DecayChain")<<"Particle "<<i;
1099  LogDebug("DecayChain")<<"Mother's ID "<<mid;
1100  LogDebug("DecayChain")<<"Particle's PDG ID "<<part->pdg_id();
1101 
1102  if(mid <= 0){
1103 
1104  sub_vertices[isub]->add_particle_out(part);
1105  continue;
1106  }
1107 
1108  if(mid > 0){
1109  HepMC::GenParticle* mother = particles[mid];
1110  LogDebug("DecayChain")<<"Mother's PDG ID "<<mother->pdg_id();
1111  HepMC::GenVertex* prod_vertex = mother->end_vertex();
1112  if(!prod_vertex){
1113  prod_vertex = prods[i];
1114  prod_vertex->add_particle_in(mother);
1115  evt->add_vertex(prod_vertex);
1116  prods[i]=0; // mark to protect deletion
1117  }
1118 
1119  prod_vertex->add_particle_out(part);
1120 
1121  }
1122  }
1123 
1124  // cleanup vertices not assigned to evt
1125  for (unsigned int i = 0; i<prods.size(); i++) {
1126  if(prods[i]) delete prods[i];
1127  }
1128  }
1129 
1130  return kTRUE;
1131 }
1132 
1133 
1134 //___________________________________________________________________
1136 {
1137  // Build particle object corresponding to index in hyjets (soft+hard)
1138 
1139  double px0 = Px[index];
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
HepMC::GenVertex * build_hyjet2_vertex(int i, int id)
part
Definition: HCALResponse.h:20
HepMC::GenParticle * build_hyjet2(int index, int barcode)
double gen::Hydjet2Hadronizer::GetVolEff ( )
inline

Definition at line 91 of file Hydjet2Hadronizer.h.

References fVolEff.

91 {return fVolEff;}
virtual double gen::Hydjet2Hadronizer::GetWeakDecayLimit ( )
inlinevirtual

Implements InitialState.

Definition at line 93 of file Hydjet2Hadronizer.h.

References fWeakDecay.

Referenced by generatePartonsAndHadronize().

93 {return fWeakDecay;}
bool Hydjet2Hadronizer::hadronize ( )

Definition at line 904 of file Hydjet2Hadronizer.cc.

905 {
906  return true;
907 }
bool gen::Hydjet2Hadronizer::IniOfThFreezeoutParameters ( )
bool gen::Hydjet2Hadronizer::initializeForExternalPartons ( )
bool Hydjet2Hadronizer::initializeForInternalPartons ( )

Definition at line 197 of file Hydjet2Hadronizer.cc.

References funct::abs(), Abs(), HYIPARCommon::AW, HYIPARCommon::bmaxh, HYIPARCommon::bminh, NAStrangePotential::CalculateStrangePotential(), fAw, fBfix, fBmax, fBmin, fCorrS, InitialState::fDatabase, fEtaType, fIanglu, fIenglu, fIfb, fIshad, fMu_th_pip, fMuB, fMuC, fMuI3, fMuS, fNccth, fNf, fNhsel, fNocth, fNPartTypes, fPartEnc, fPartMu, fPartMult, fPtmin, fPyhist, fR, fSqrtS, fT, fT0, fTau, fTau0, fThFO, fTMuType, fUmax, fVolEff, fYlmax, ParticlePDG::GetBaryonNumber(), ParticlePDG::GetCharmAQNumber(), ParticlePDG::GetCharmness(), ParticlePDG::GetCharmQNumber(), ParticlePDG::GetElectricCharge(), DatabasePDG::GetNParticles(), ParticlePDG::GetPDG(), DatabasePDG::GetPDGParticle(), DatabasePDG::GetPDGParticleByIndex(), ParticlePDG::GetStrangeness(), HYPYIN, HYJPARCommon::iPyhist, HYJPARCommon::ishad, RPCpg::mu, myini_(), HYJPARCommon::nhsel, nuclear_radius(), GrandCanonical::ParticleNumberDensity(), Pi, HYJPARCommon::ptmin, PYQPAR, pythia6Service_, S(), NAStrangePotential::SetBaryonPotential(), and NAStrangePotential::SetTemperature().

197  {
198 
199  Pythia6Service::InstanceWrapper guard(pythia6Service_);
200 
201  // the input impact parameter (bxx_) is in [fm]; transform in [fm/RA] for hydjet usage
202  const float ra = nuclear_radius();
203  LogInfo("Hydjet2Hadronizer|RAScaling")<<"Nuclear radius(RA) = "<<ra;
204  fBmin /= ra;
205  fBmax /= ra;
206  fBfix /= ra;
207 
208  //check and redefine input parameters
209  if(fTMuType>0 && fSqrtS > 2.24) {
210 
211  if(fSqrtS < 2.24){
212  LogError("Hydjet2Hadronizer|sqrtS") << "SqrtS<2.24 not allowed with fTMuType>0";
213  return 0;
214  }
215 
216  //sqrt(s) = 2.24 ==> T_kin = 0.8 GeV
217  //see J. Cleymans, H. Oeschler, K. Redlich,S. Wheaton, Phys Rev. C73 034905 (2006)
218  fMuB = 1.308/(1. + fSqrtS*0.273);
219  fT = 0.166 - 0.139*fMuB*fMuB - 0.053*fMuB*fMuB*fMuB*fMuB;
220  fMuI3 = 0.;
221  fMuS = 0.;
222 
223  //create strange potential object and set strangeness density 0
225  psp->SetBaryonPotential(fMuB);
226  psp->SetTemperature(fT);
227 
228  //compute strangeness potential
229  if(fMuB > 0.01) fMuS = psp->CalculateStrangePotential();
230  LogInfo("Hydjet2Hadronizer|Strange") << "fMuS = " << fMuS;
231 
232  //if user choose fYlmax larger then allowed by kinematics at the specified beam energy sqrt(s)
233  if(fYlmax > TMath::Log(fSqrtS/0.94)){
234  LogError("Hydjet2Hadronizer|Ylmax") << "fYlmax more then TMath::Log(fSqrtS vs 0.94)!!! ";
235  return 0;
236  }
237 
238  if(fCorrS <= 0.) {
239  //see F. Becattini, J. Mannien, M. Gazdzicki, Phys Rev. C73 044905 (2006)
240  fCorrS = 1. - 0.386* TMath::Exp(-1.23*fT/fMuB);
241  LogInfo("Hydjet2Hadronizer|Strange") << "The phenomenological f-la F. Becattini et al. PRC73 044905 (2006) for CorrS was used."<<endl
242  <<"Strangeness suppression parameter = "<<fCorrS;
243  }
244  LogInfo("Hydjet2Hadronizer|Strange") << "The phenomenological f-la J. Cleymans et al. PRC73 034905 (2006) for Tch mu_B was used." << endl
245  <<"The simulation will be done with the calculated parameters:" << endl
246  <<"Baryon chemical potential = "<<fMuB<< " [GeV]" << endl
247  <<"Strangeness chemical potential = "<<fMuS<< " [GeV]" << endl
248  <<"Isospin chemical potential = "<<fMuI3<< " [GeV]" << endl
249  <<"Strangeness suppression parameter = "<<fCorrS << endl
250  <<"Eta_max = "<<fYlmax;
251  }
252 
253  LogInfo("Hydjet2Hadronizer|Param") << "Used eta_max = "<<fYlmax<< endl
254  <<"maximal allowed eta_max TMath::Log(fSqrtS/0.94)= "<<TMath::Log(fSqrtS/0.94);
255 
256  //initialisation of high-pt part
257  HYJPAR.nhsel = fNhsel;
258  HYJPAR.ptmin = fPtmin;
259  HYJPAR.ishad = fIshad;
260  HYJPAR.iPyhist = fPyhist;
261  HYIPAR.bminh = fBmin;
262  HYIPAR.bmaxh = fBmax;
263  HYIPAR.AW = fAw;
264 
265  HYPYIN.ifb = fIfb;
266  HYPYIN.bfix = fBfix;
267  HYPYIN.ene = fSqrtS;
268 
269  PYQPAR.T0 = fT0;
270  PYQPAR.tau0 = fTau0;
271  PYQPAR.nf = fNf;
272  PYQPAR.ienglu = fIenglu;
273  PYQPAR.ianglu = fIanglu;
274  myini_();
275 
276  // calculation of multiplicities of different particle species
277  // according to the grand canonical approach
278  GrandCanonical gc(15, fT, fMuB, fMuS, fMuI3, fMuC);
279  GrandCanonical gc_ch(15, fT, fMuB, fMuS, fMuI3, fMuC);
280  GrandCanonical gc_pi_th(15, fThFO, 0., 0., fMu_th_pip, fMuC);
281  GrandCanonical gc_th_0(15, fThFO, 0., 0., 0., 0.);
282 
283  // std::ofstream outMult("densities.txt");
284  // outMult<<"encoding particle density chemical potential "<<std::endl;
285 
286  double Nocth=0; //open charm
287  double NJPsith=0; //JPsi
288 
289  //effective volume for central
290  double dYl= 2 * fYlmax; //uniform distr. [-Ylmax; Ylmax]
291  if (fEtaType >0) dYl = TMath::Sqrt(2 * TMath::Pi()) * fYlmax ; //Gaussian distr.
292  fVolEff = 2 * TMath::Pi() * fTau * dYl * (fR * fR)/TMath::Power((fUmax),2) *
293  ((fUmax)*TMath::SinH((fUmax))-TMath::CosH((fUmax))+ 1);
294  LogInfo("Hydjet2Hadronizer|Param") << "central Effective volume = " << fVolEff << " [fm^3]";
295 
296  double particleDensity_pi_ch=0;
297  double particleDensity_pi_th=0;
298  // double particleDensity_th_0=0;
299 
300  if(fThFO != fT && fThFO > 0){
301  GrandCanonical gc_ch(15, fT, fMuB, fMuS, fMuI3, fMuC);
302  GrandCanonical gc_pi_th(15, fThFO, 0., 0., fMu_th_pip, fMuC);
303  GrandCanonical gc_th_0(15, fThFO, 0., 0., 0., 0.);
304  particleDensity_pi_ch = gc_ch.ParticleNumberDensity(fDatabase->GetPDGParticle(211));
305  particleDensity_pi_th = gc_pi_th.ParticleNumberDensity(fDatabase->GetPDGParticle(211));
306  }
307 
308  for(int particleIndex = 0; particleIndex < fDatabase->GetNParticles(); particleIndex++) {
309  ParticlePDG *currParticle = fDatabase->GetPDGParticleByIndex(particleIndex);
310  int encoding = currParticle->GetPDG();
311 
312  //strangeness supression
313  double gammaS = 1;
314  int S = int(currParticle->GetStrangeness());
315  if(encoding == 333)S = 2;
316  if(fCorrS < 1. && S != 0)gammaS = TMath::Power(fCorrS,-TMath::Abs(S));
317 
318 
319  //average densities
320  double particleDensity = gc.ParticleNumberDensity(currParticle)/gammaS;
321 
322  //compute chemical potential for single f.o. mu==mu_ch
323  double mu = fMuB * int(currParticle->GetBaryonNumber()) +
324  fMuS * int(currParticle->GetStrangeness()) +
325  fMuI3 * int(currParticle->GetElectricCharge()) +
326  fMuC * int(currParticle->GetCharmness());
327 
328  //thermal f.o.
329  if(fThFO != fT && fThFO > 0){
330  double particleDensity_ch = gc_ch.ParticleNumberDensity(currParticle);
331  double particleDensity_th_0 = gc_th_0.ParticleNumberDensity(currParticle);
332  double numb_dens_bolt = particleDensity_pi_th*particleDensity_ch/particleDensity_pi_ch;
333  mu = fThFO*TMath::Log(numb_dens_bolt/particleDensity_th_0);
334  if(abs(encoding)==211 || encoding==111)mu= fMu_th_pip;
335  particleDensity = numb_dens_bolt;
336  }
337 
338  // set particle densities to zero for some particle codes
339  // pythia quark codes
340  if(abs(encoding)<=9) {
341  particleDensity=0;
342  }
343  // leptons
344  if(abs(encoding)>10 && abs(encoding)<19) {
345  particleDensity=0;
346  }
347  // exchange bosons
348  if(abs(encoding)>20 && abs(encoding)<30) {
349  particleDensity=0;
350  }
351  // pythia special codes (e.g. strings, clusters ...)
352  if(abs(encoding)>80 && abs(encoding)<100) {
353  particleDensity=0;
354  }
355  // pythia di-quark codes
356  // Note: in PYTHIA all diquark codes have the tens digits equal to zero
357  if(abs(encoding)>1000 && abs(encoding)<6000) {
358  int tens = ((abs(encoding)-(abs(encoding)%10))/10)%10;
359  if(tens==0) { // its a diquark;
360  particleDensity=0;
361  }
362  }
363  // K0S and K0L
364  if(abs(encoding)==130 || abs(encoding)==310) {
365  particleDensity=0;
366  }
367  // charmed particles
368 
369  if(encoding==443)NJPsith=particleDensity*fVolEff/dYl;
370 
371  // We generate thermo-statistically only J/psi(443), D_+(411), D_-(-411), D_0(421),
372  //Dbar_0(-421), D1_+(413), D1_-(-413), D1_0(423), D1bar_0(-423)
373  //Dcs(431) Lambdac(4122)
374  if(currParticle->GetCharmQNumber()!=0 || currParticle->GetCharmAQNumber()!=0) {
375  //ml if(abs(encoding)!=443 &&
376  //ml abs(encoding)!=411 && abs(encoding)!=421 &&
377  //ml abs(encoding)!=413 && abs(encoding)!=423 && abs(encoding)!=4122 && abs(encoding)!=431) {
378  //ml particleDensity=0; }
379 
380  if(abs(encoding)==441 ||
381  abs(encoding)==10441 || abs(encoding)==10443 ||
382  abs(encoding)==20443 || abs(encoding)==445 || abs(encoding)==4232 || abs(encoding)==4322 ||
383  abs(encoding)==4132 || abs(encoding)==4312 || abs(encoding)==4324 || abs(encoding)==4314 ||
384  abs(encoding)==4332 || abs(encoding)==4334
385  ) {
386  particleDensity=0; }
387  else
388  {
389  if(abs(encoding)!=443){ //only open charm
390  Nocth=Nocth+particleDensity*fVolEff/dYl;
391  LogInfo("Hydjet2Hadronizer|Charam") << encoding<<" Nochth "<<Nocth;
392  // particleDensity=particleDensity*fCorrC;
393  // if(abs(encoding)==443)particleDensity=particleDensity*fCorrC;
394  }
395  }
396 
397  }
398 
399 
400  // bottom mesons
401  if((abs(encoding)>500 && abs(encoding)<600) ||
402  (abs(encoding)>10500 && abs(encoding)<10600) ||
403  (abs(encoding)>20500 && abs(encoding)<20600) ||
404  (abs(encoding)>100500 && abs(encoding)<100600)) {
405  particleDensity=0;
406  }
407  // bottom baryons
408  if(abs(encoding)>5000 && abs(encoding)<6000) {
409  particleDensity=0;
410  }
412 
413 
414  if(particleDensity > 0.) {
415  fPartEnc[fNPartTypes] = encoding;
416  fPartMult[2 * fNPartTypes] = particleDensity;
417  fPartMu[2 * fNPartTypes] = mu;
418  ++fNPartTypes;
419  if(fNPartTypes > 1000)
420  LogError("Hydjet2Hadronizer") << "fNPartTypes is too large" << fNPartTypes;
421 
422  //outMult<<encoding<<" "<<particleDensity*fVolEff/dYl <<" "<<mu<<std::endl;
423 
424  }
425  }
426 
427  //put open charm number and cc number in Params
428  fNocth = Nocth;
429  fNccth = NJPsith;
430 
431 
432  return kTRUE;
433 }
const double Pi
void SetBaryonPotential(double value)
ParticlePDG * GetPDGParticle(int pdg)
Definition: DatabasePDG.cc:222
#define HYPYIN
Definition: HYJET_COMMONS.h:86
int GetNParticles(bool all=kFALSE)
Definition: DatabasePDG.cc:574
#define HYJPAR
Definition: HYJET_COMMONS.h:70
#define PYQPAR
int GetPDG()
Definition: ParticlePDG.h:67
double CalculateStrangePotential()
double GetCharmAQNumber()
Definition: ParticlePDG.h:79
double nuclear_radius() const
Pythia6Service * pythia6Service_
ParticlePDG * GetPDGParticleByIndex(int index)
Definition: DatabasePDG.cc:202
double GetCharmness()
Definition: ParticlePDG.h:83
double GetElectricCharge()
Definition: ParticlePDG.h:84
T Abs(T a)
Definition: MathUtil.h:49
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const int mu
Definition: Constants.h:22
double GetBaryonNumber()
Definition: ParticlePDG.h:80
double GetStrangeness()
Definition: ParticlePDG.h:82
#define HYIPAR
Definition: HYJET_COMMONS.h:27
void myini_()
double S(const TLorentzVector &, const TLorentzVector &)
Definition: Particle.cc:99
double GetCharmQNumber()
Definition: ParticlePDG.h:78
DatabasePDG * fDatabase
Definition: InitialState.h:16
void SetTemperature(double value)
double Hydjet2Hadronizer::MidpointIntegrator2 ( double  a,
double  b,
double  Delta,
double  Epsilon 
)

Definition at line 983 of file Hydjet2Hadronizer.cc.

References a, alignCSCRings::e, HLT_25ns14e33_v1_cff::Epsilon, f2(), fR, h, i, j, tree::t, and x().

989  {
990  x += h; // integr phi
991 
992  double RsB = fR; //test: podstavit' *coefff_RB
993  double RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB
994 
995  nsubIntervals2 = int(RB / h2)+1;
996  // integr R
997  y=0;
998  for(int i = 1; i < nsubIntervals2; i++)
999  t += f2(x,(y += h2),Delta);
1000  }
1001  return t*h*h2;
1002 }
1003 
1004 //__________________________________________________________________________________________________________
1005 double Hydjet2Hadronizer::CharmEnhancementFactor(double Ncc, double Ndth, double NJPsith, double Epsilon) {
1006 
1007  double gammaC=100.;
1008  double x1 = gammaC*Ndth;
1009  double var1 = Ncc-0.5*gammaC*Ndth*TMath::BesselI1(x1)/TMath::BesselI0(x1)-gammaC*gammaC*NJPsith;
1010  LogInfo("Charam") << "gammaC 20"<<" var "<<var1<<endl;
tuple t
Definition: tree.py:139
int i
Definition: DBlmapReader.cc:9
double BesselI0(double x)
double f2(double, double, double)
double CharmEnhancementFactor(double, double, double, double)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
double BesselI1(double x)
double Hydjet2Hadronizer::nuclear_radius ( ) const
inlineprivate

Definition at line 250 of file Hydjet2Hadronizer.h.

References fAw, and funct::pow().

Referenced by add_heavy_ion_rec(), and initializeForInternalPartons().

251  {
252  // Return the nuclear radius derived from the
253  // beam/target atomic mass number.
254  return 1.15 * pow((double)fAw, 1./3.);
255  }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
bool Hydjet2Hadronizer::readSettings ( int  )

Definition at line 183 of file Hydjet2Hadronizer.cc.

References fNPartTypes, hjRandomEngine, pythia6Service_, SERVICE, and gen::Pythia6Service::setGeneralParams().

183  {
184 
185  Pythia6Service::InstanceWrapper guard(pythia6Service_);
187 
188  SERVICE.iseed_fromC=hjRandomEngine->CLHEP::HepRandomEngine::getSeed();
189  LogInfo("Hydjet2Hadronizer|GenSeed") << "Seed for random number generation: "<<hjRandomEngine->CLHEP::HepRandomEngine::getSeed();
190 
191  fNPartTypes = 0; //counter of hadron species
192 
193  return kTRUE;
194 }
Pythia6Service * pythia6Service_
CLHEP::HepRandomEngine * hjRandomEngine
#define SERVICE
Definition: HYJET_COMMONS.h:39
bool Hydjet2Hadronizer::residualDecay ( )

Definition at line 912 of file Hydjet2Hadronizer.cc.

912 {
913 }
914 const char* Hydjet2Hadronizer::classname() const
915 {
const char * classname() const
void Hydjet2Hadronizer::rotateEvtPlane ( )
private

Definition at line 1050 of file Hydjet2Hadronizer.cc.

References funct::cos(), cosphi0_, phi0_, pi, gen::pyr_(), funct::sin(), and sinphi0_.

Referenced by generatePartonsAndHadronize().

1052 {
1053  // Hard particles. The first nhard_ lines from hyjets array.
1054  // Pythia/Pyquen sub-events (sub-collisions) for a given event
1055  // Return T/F if success/failure
1056  // Create particles from lujet entries, assign them into vertices and
virtual bool gen::Hydjet2Hadronizer::RunDecays ( )
inlinevirtual

Implements InitialState.

Definition at line 92 of file Hydjet2Hadronizer.h.

References fDecay.

Referenced by generatePartonsAndHadronize().

92 {return (fDecay>0 ? kTRUE : kFALSE);}
void gen::Hydjet2Hadronizer::SetVolEff ( double  value)
inline
double Hydjet2Hadronizer::SimpsonIntegrator ( double  a,
double  b,
double  phi,
double  Delta 
)

Definition at line 942 of file Hydjet2Hadronizer.cc.

References a, f2(), h, i, LogDebug, alignCSCRings::s, tree::t, and x().

Referenced by SimpsonIntegrator2().

942  {
943  x += h;
944  y += h;
945  s += f2(phi,y,Delta);
946  t += f2(phi,x,Delta);
947  }
948  t += 2.0*s;
949  return t*h/3.0;
950 }
951 
952 //______________________________________________________________________________________________
953 double Hydjet2Hadronizer::SimpsonIntegrator2(double a, double b, double Epsilon, double Delta) {
954 
955  LogInfo("SimpsonIntegrator2") <<"in SimpsonIntegrator2: epsilon - "<<Epsilon<<" delta - "<<Delta;
956  int nsubIntervals=10000;
957  double h = (b - a)/nsubIntervals; //-1-pi, phi
958  double s=0;
tuple t
Definition: tree.py:139
double SimpsonIntegrator2(double, double, double, double)
double f2(double, double, double)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
double Hydjet2Hadronizer::SimpsonIntegrator2 ( double  a,
double  b,
double  Epsilon,
double  Delta 
)

Definition at line 961 of file Hydjet2Hadronizer.cc.

References a, alignCSCRings::e, HLT_25ns14e33_v1_cff::Epsilon, fR, h, j, alignCSCRings::s, SimpsonIntegrator(), and x().

Referenced by generatePartonsAndHadronize().

962  {
963  x += h; // phi
964  double e = Epsilon;
965  double RsB = fR; //test: podstavit' *coefff_RB
966  double RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB
967  double sr = SimpsonIntegrator(0,RB,x,Delta);
968  s += sr;
969  }
970  return s*h;
971 
972 }
973 
974 //___________________________________________________________________________________________________
975 double Hydjet2Hadronizer::MidpointIntegrator2(double a, double b, double Delta, double Epsilon) {
976 
977  int nsubIntervals=2000;
978  int nsubIntervals2=1;
979  double h = (b - a)/nsubIntervals; //0-pi , phi
980  double h2 = (fR)/nsubIntervals; //0-R maximal RB ?
double MidpointIntegrator2(double, double, double, double)
double SimpsonIntegrator(double, double, double, double)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
void Hydjet2Hadronizer::statistics ( )

Definition at line 919 of file Hydjet2Hadronizer.cc.

Member Data Documentation

ParticleAllocator gen::Hydjet2Hadronizer::allocator
private

Definition at line 246 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Bgen
private

Definition at line 226 of file Hydjet2Hadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::cosphi0_
private
float gen::Hydjet2Hadronizer::E[500000]
private

Definition at line 230 of file Hydjet2Hadronizer.h.

Referenced by build_hyjet2(), and generatePartonsAndHadronize().

bool gen::Hydjet2Hadronizer::embedding_
private

Definition at line 195 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and Hydjet2Hadronizer().

int gen::Hydjet2Hadronizer::ev
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

HepMC::GenEvent* gen::Hydjet2Hadronizer::evt
private

Definition at line 197 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::fAw
private

Definition at line 125 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons(), and nuclear_radius().

double gen::Hydjet2Hadronizer::fBfix
private
double gen::Hydjet2Hadronizer::fBmax
private

Definition at line 130 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fBmin
private

Definition at line 129 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fCharmProd
private

Definition at line 163 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::fCorrC
private

Definition at line 164 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::fCorrS
private

Definition at line 162 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fDecay
private

Definition at line 150 of file Hydjet2Hadronizer.h.

Referenced by RunDecays().

double gen::Hydjet2Hadronizer::fDelta
private

Definition at line 146 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::fEpsilon
private

Definition at line 147 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::fEtaType
private
int gen::Hydjet2Hadronizer::fIanglu
private

Definition at line 190 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fIenglu
private

Definition at line 187 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fIfb
private
int gen::Hydjet2Hadronizer::fIfDeltaEpsilon
private

Definition at line 148 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::final[500000]
private

Definition at line 244 of file Hydjet2Hadronizer.h.

int gen::Hydjet2Hadronizer::FirstDaughterIndex[500000]
private

Definition at line 242 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::fIshad
private

Definition at line 172 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMu_th_pip
private

Definition at line 139 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMuB
private

Definition at line 134 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMuC
private

Definition at line 136 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMuI3
private

Definition at line 137 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMuS
private

Definition at line 135 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fMuTh[1000]
private

Definition at line 216 of file Hydjet2Hadronizer.h.

double gen::Hydjet2Hadronizer::fNccth
private
int gen::Hydjet2Hadronizer::fNf
private

Definition at line 186 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fNhsel
private
double gen::Hydjet2Hadronizer::fNocth
private
int gen::Hydjet2Hadronizer::fNPartTypes
private
int gen::Hydjet2Hadronizer::fPartEnc[1000]
private
double gen::Hydjet2Hadronizer::fPartMu[2000]
private
double gen::Hydjet2Hadronizer::fPartMult[2000]
private
double gen::Hydjet2Hadronizer::fPtmin
private

Definition at line 176 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fPyhist
private

Definition at line 171 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

int gen::Hydjet2Hadronizer::fPythDecay
private

Definition at line 152 of file Hydjet2Hadronizer.h.

double gen::Hydjet2Hadronizer::fR
private
edm::Service<TFileService> gen::Hydjet2Hadronizer::fs
private

Definition at line 223 of file Hydjet2Hadronizer.h.

double gen::Hydjet2Hadronizer::fSigmaTau
private

Definition at line 142 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::fSqrtS
private

Definition at line 124 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fT
private
double gen::Hydjet2Hadronizer::fT0
private

Definition at line 181 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fTau
private
double gen::Hydjet2Hadronizer::fTau0
private

Definition at line 185 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fThFO
private
int gen::Hydjet2Hadronizer::fTMuType
private

Definition at line 159 of file Hydjet2Hadronizer.h.

Referenced by initializeForInternalPartons().

double gen::Hydjet2Hadronizer::fUmax
private
double gen::Hydjet2Hadronizer::fVolEff
private
double gen::Hydjet2Hadronizer::fWeakDecay
private

Definition at line 151 of file Hydjet2Hadronizer.h.

Referenced by GetWeakDecayLimit().

double gen::Hydjet2Hadronizer::fYlmax
private
int gen::Hydjet2Hadronizer::Index[500000]
private

Definition at line 239 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::LastDaughterIndex[500000]
private

Definition at line 243 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

unsigned int gen::Hydjet2Hadronizer::maxEventsToPrint_
private

Definition at line 207 of file Hydjet2Hadronizer.h.

Referenced by Hydjet2Hadronizer().

int gen::Hydjet2Hadronizer::MotherIndex[500000]
private

Definition at line 240 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and get_particles().

int gen::Hydjet2Hadronizer::Mpdg[500000]
private

Definition at line 236 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::Nbcol
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::NDaughters[500000]
private

Definition at line 241 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::nhard_
private

Definition at line 199 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and get_particles().

int gen::Hydjet2Hadronizer::Nhyd
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::Njet
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and get_particles().

int gen::Hydjet2Hadronizer::Npart
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::Npyt
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::nsoft_
private

Definition at line 200 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and get_particles().

int gen::Hydjet2Hadronizer::nsub_
private
int gen::Hydjet2Hadronizer::Ntot
private

Definition at line 225 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

int gen::Hydjet2Hadronizer::pdg[500000]
private
double gen::Hydjet2Hadronizer::phi0_
private
edm::ParameterSet gen::Hydjet2Hadronizer::pset
private

Definition at line 222 of file Hydjet2Hadronizer.h.

float gen::Hydjet2Hadronizer::Px[500000]
private

Definition at line 227 of file Hydjet2Hadronizer.h.

Referenced by build_hyjet2(), and generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Py[500000]
private

Definition at line 228 of file Hydjet2Hadronizer.h.

Referenced by build_hyjet2(), and generatePartonsAndHadronize().

Pythia6Service* gen::Hydjet2Hadronizer::pythia6Service_
private
unsigned int gen::Hydjet2Hadronizer::pythiaPylistVerbosity_
private

Definition at line 206 of file Hydjet2Hadronizer.h.

Referenced by Hydjet2Hadronizer().

int gen::Hydjet2Hadronizer::pythiaStatus[500000]
private

Definition at line 238 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Pz[500000]
private

Definition at line 229 of file Hydjet2Hadronizer.h.

Referenced by build_hyjet2(), and generatePartonsAndHadronize().

bool gen::Hydjet2Hadronizer::rotate_
private

Definition at line 196 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Sigin
private

Definition at line 226 of file Hydjet2Hadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Sigjet
private

Definition at line 226 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

double gen::Hydjet2Hadronizer::sinphi0_
private
List_t gen::Hydjet2Hadronizer::source
private
edm::InputTag gen::Hydjet2Hadronizer::src_
private

Definition at line 210 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and Hydjet2Hadronizer().

int gen::Hydjet2Hadronizer::sseed
private

Definition at line 225 of file Hydjet2Hadronizer.h.

float gen::Hydjet2Hadronizer::T[500000]
private

Definition at line 234 of file Hydjet2Hadronizer.h.

const std::vector< std::string > Hydjet2Hadronizer::theSharedResources = { edm::SharedResourceNames::kPythia6, gen::FortranInstance::kFortranInstance }
staticprivate

Definition at line 115 of file Hydjet2Hadronizer.h.

Referenced by doSharedResources().

int gen::Hydjet2Hadronizer::type[500000]
private
float gen::Hydjet2Hadronizer::X[500000]
private
float gen::Hydjet2Hadronizer::Y[500000]
private
float gen::Hydjet2Hadronizer::Z[500000]
private