CMS 3D CMS Logo

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 ()
 
double GetWeakDecayLimit () override
 
bool hadronize ()
 
 Hydjet2Hadronizer (const edm::ParameterSet &)
 
bool IniOfThFreezeoutParameters ()
 
bool initializeForExternalPartons ()
 
bool initializeForInternalPartons ()
 
double MidpointIntegrator2 (double, double, double, double)
 
bool readSettings (int)
 
bool residualDecay ()
 
bool RunDecays () override
 
void SetVolEff (double value)
 
double SimpsonIntegrator (double, double, double, double)
 
double SimpsonIntegrator2 (double, double, double, double)
 
void statistics ()
 
 ~Hydjet2Hadronizer () override
 
- Public Member Functions inherited from InitialState
virtual void Evolve (List_t &secondaries, ParticleAllocator &allocator, double weakDecayLimit)
 
 InitialState ()
 
virtual ~InitialState ()(false)
 
- 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< GenEventInfoProductgetGenEventInfo ()
 
virtual std::unique_ptr< GenLumiInfoHeadergetGenLumiInfoHeader () const
 
GenRunInfoProductgetGenRunInfo ()
 
std::unique_ptr< lhef::LHEEventgetLHEEvent ()
 
const std::shared_ptr< lhef::LHERunInfo > & getLHERunInfo () const
 
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 resetEventInfo (std::unique_ptr< GenEventInfoProduct > eventInfo)
 
virtual bool select (HepMC::GenEvent *) const
 
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 ()(false)
 

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)
 
void doSetRandomEngine (CLHEP::HepRandomEngine *v) override
 
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::GenEventevt
 
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
 
double psiforv3
 
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::unique_ptr< HepMC::GenEvent > & event ()
 
std::unique_ptr< GenEventInfoProduct > & eventInfo ()
 
lhef::LHEEventlheEvent ()
 
lhef::LHERunInfolheRunInfo ()
 
GenRunInfoProductrunInfo ()
 
- Protected Attributes inherited from InitialState
DatabasePDGfDatabase
 
- Protected Attributes inherited from gen::BaseHadronizer
std::string lheFile_
 
int randomIndex_
 

Detailed Description

Definition at line 66 of file Hydjet2Hadronizer.h.

Constructor & Destructor Documentation

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

Definition at line 121 of file Hydjet2Hadronizer.cc.

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

121  :
122  BaseHadronizer(pset),
123  fSqrtS(pset.getParameter<double>("fSqrtS")), // C.m.s. energy per nucleon pair
124  fAw(pset.getParameter<double>("fAw")), // Atomic weigth of nuclei, fAw
125  fIfb(pset.getParameter<int>("fIfb")), // Flag of type of centrality generation, fBfix (=0 is fixed by fBfix, >0 distributed [fBfmin, fBmax])
126  fBmin(pset.getParameter<double>("fBmin")), // Minimum impact parameter in units of nuclear radius, fBmin
127  fBmax(pset.getParameter<double>("fBmax")), // Maximum impact parameter in units of nuclear radius, fBmax
128  fBfix(pset.getParameter<double>("fBfix")), // Fixed impact parameter in units of nuclear radius, fBfix
129  fT(pset.getParameter<double>("fT")), // Temperature at chemical freeze-out, fT [GeV]
130  fMuB(pset.getParameter<double>("fMuB")), // Chemical baryon potential per unit charge, fMuB [GeV]
131  fMuS(pset.getParameter<double>("fMuS")), // Chemical strangeness potential per unit charge, fMuS [GeV]
132  fMuC(pset.getParameter<double>("fMuC")), // Chemical charm potential per unit charge, fMuC [GeV] (used if charm production is turned on)
133  fMuI3(pset.getParameter<double>("fMuI3")), // Chemical isospin potential per unit charge, fMuI3 [GeV]
134  fThFO(pset.getParameter<double>("fThFO")), // Temperature at thermal freeze-out, fThFO [GeV]
135  fMu_th_pip(pset.getParameter<double>("fMu_th_pip")),// Chemical potential of pi+ at thermal freeze-out, fMu_th_pip [GeV]
136  fTau(pset.getParameter<double>("fTau")), // Proper time proper at thermal freeze-out for central collisions, fTau [fm/c]
137  fSigmaTau(pset.getParameter<double>("fSigmaTau")), // Duration of emission at thermal freeze-out for central collisions, fSigmaTau [fm/c]
138  fR(pset.getParameter<double>("fR")), // Maximal transverse radius at thermal freeze-out for central collisions, fR [fm]
139  fYlmax(pset.getParameter<double>("fYlmax")), // Maximal longitudinal flow rapidity at thermal freeze-out, fYlmax
140  fUmax(pset.getParameter<double>("fUmax")), // Maximal transverse flow rapidity at thermal freeze-out for central collisions, fUmax
141  fDelta(pset.getParameter<double>("fDelta")), // Momentum azimuthal anizotropy parameter at thermal freeze-out, fDelta
142  fEpsilon(pset.getParameter<double>("fEpsilon")), // Spatial azimuthal anisotropy parameter at thermal freeze-out, fEpsilon
143  fIfDeltaEpsilon(pset.getParameter<double>("fIfDeltaEpsilon")), // Flag to specify fDelta and fEpsilon values, fIfDeltaEpsilon (=0 user's ones, >=1 calculated)
144  fDecay(pset.getParameter<int>("fDecay")), // Flag to switch on/off hadron decays, fDecay (=0 decays off, >=1 decays on)
145  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
146  fEtaType(pset.getParameter<double>("fEtaType")), // Flag to choose longitudinal flow rapidity distribution, fEtaType (=0 uniform, >0 Gaussian with the dispersion Ylmax)
147  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)
148  fCorrS(pset.getParameter<double>("fCorrS")), // Strangeness supression factor gamma_s with fCorrS value (0<fCorrS <=1, if fCorrS <= 0 then it is calculated)
149  fCharmProd(pset.getParameter<int>("fCharmProd")), // Flag to include thermal charm production, fCharmProd (=0 no charm production, >=1 charm production)
150  fCorrC(pset.getParameter<double>("fCorrC")), // Charmness enhancement factor gamma_c with fCorrC value (fCorrC >0, if fCorrC<0 then it is calculated)
151  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)
152  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)
153  fIshad(pset.getParameter<int>("fIshad")), // Flag to switch on/off nuclear shadowing, fIshad (0 shadowing off, 1 shadowing on)
154  fPtmin(pset.getParameter<double>("fPtmin")), // Minimal pt of parton-parton scattering in PYTHIA event, fPtmin [GeV/c]
155  fT0(pset.getParameter<double>("fT0")), // Initial QGP temperature for central Pb+Pb collisions in mid-rapidity, fT0 [GeV]
156  fTau0(pset.getParameter<double>("fTau0")), // Proper QGP formation time in fm/c, fTau0 (0.01<fTau0<10)
157  fNf(pset.getParameter<int>("fNf")), // Number of active quark flavours in QGP, fNf (0, 1, 2 or 3)
158  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)
159  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).
160 
161  embedding_(pset.getParameter<bool>("embeddingMode")),
162  rotate_(pset.getParameter<bool>("rotateEventPlane")),
163  evt(nullptr),
164  nsub_(0),
165  nhard_(0),
166  nsoft_(0),
167  phi0_(0.),
168  sinphi0_(0.),
169  cosphi0_(1.),
171 
172 {
173  // constructor
174  // PYLIST Verbosity Level
175  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
176  pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0);
177  LogDebug("PYLISTverbosity") << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_;
178  //Max number of events printed on verbosity level
179  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0);
180  LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_;
181  if(embedding_) src_ = pset.getParameter<edm::InputTag>("backgroundLabel");
182 }
#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 ( )
override

Definition at line 185 of file Hydjet2Hadronizer.cc.

References pythia6Service_.

185  {
186  // destructor
187  call_pystat(1);
188  delete pythia6Service_;
189 }
Pythia6Service * pythia6Service_

Member Function Documentation

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

Definition at line 1203 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 1161 of file Hydjet2Hadronizer.cc.

References cosphi0_, E, GenParticle::GenParticle, gen::p, Px, Py, Pz, and sinphi0_.

Referenced by get_particles().

1180 {
1181  // build verteces for the hyjets stored events
1182 
1183  double x0=X[i];
1184  double y0=Y[i];
HepMC::GenVertex * Hydjet2Hadronizer::build_hyjet2_vertex ( int  i,
int  id 
)
private

Definition at line 1187 of file Hydjet2Hadronizer.cc.

References cosphi0_, mps_fire::i, sinphi0_, protons_cff::t, X, Y, and Z.

Referenced by get_particles().

1196 {
1197  // heavy ion record in the final CMSSW Event
1198  double npart = Npart;
1199  int nproj = static_cast<int>(npart / 2);
1200  int ntarg = static_cast<int>(npart - nproj);
double npart
Definition: HydjetWrapper.h:49
double Hydjet2Hadronizer::CharmEnhancementFactor ( double  Ncc,
double  Ndth,
double  NJPsith,
double  Epsilon 
)

Definition at line 1031 of file Hydjet2Hadronizer.cc.

References BesselI0(), BesselI1(), mps_fire::i, and globals_cff::x1.

Referenced by generatePartonsAndHadronize().

1034  {
1035  if(var1 * var0<0){
1036  gammaC=gammaC+0.01*i;
1037  double x = gammaC*Ndth;
1038  var0 = Ncc-0.5*gammaC*Ndth*TMath::BesselI1(x)/TMath::BesselI0(x)-gammaC*gammaC*NJPsith;
1039  }
1040  else
1041  {
1042  LogInfo("Charam") << "gammaC "<<gammaC<<" var0 "<<var0;
1043  return gammaC;
1044  }
1045 
1046  }
1047  LogInfo("Charam") << "gammaC not found ? "<<gammaC<<" var0 "<<var0;
1048  return -100;
1049 }
1050 //----------------------------------------------------------------------------------------------
1051 
1052 
1053 
1054 //_____________________________________________________________________
1055 
1056 
1057 
double BesselI0(double x)
double BesselI1(double x)
const char * Hydjet2Hadronizer::classname ( ) const

Definition at line 940 of file Hydjet2Hadronizer.cc.

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

Definition at line 926 of file Hydjet2Hadronizer.cc.

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

Definition at line 75 of file Hydjet2Hadronizer.h.

References data-class-funcs::classname, SelectingProcedure_cff::decay, and myMessageLogger_cff::statistics.

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

Definition at line 909 of file Hydjet2Hadronizer.cc.

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

915 {
916  return false;
917 }
919 {
920  return true;
void Hydjet2Hadronizer::doSetRandomEngine ( CLHEP::HepRandomEngine *  v)
overrideprivatevirtual

Reimplemented from gen::BaseHadronizer.

Definition at line 193 of file Hydjet2Hadronizer.cc.

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

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

Reimplemented from gen::BaseHadronizer.

Definition at line 114 of file Hydjet2Hadronizer.h.

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 949 of file Hydjet2Hadronizer.cc.

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

Referenced by MidpointIntegrator2(), and SimpsonIntegrator().

952  {
953  LogDebug("SimpsonIntegrator") <<"in SimpsonIntegrator"<<"delta - "<<Delta;
954  int nsubIntervals=100;
955  double h = (b - a)/nsubIntervals;
956  double s = f2(phi,a + 0.5*h,Delta);
957  double t = 0.5*(f2(phi,a,Delta) + f2(phi,b,Delta));
#define LogDebug(id)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
double f2(double, double, double)
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
void Hydjet2Hadronizer::finalizeEvent ( )

Definition at line 934 of file Hydjet2Hadronizer.cc.

bool Hydjet2Hadronizer::generatePartonsAndHadronize ( )

Definition at line 454 of file Hydjet2Hadronizer.cc.

References patCaloMETCorrections_cff::A, funct::abs(), Abs(), add_heavy_ion_rec(), ParticleAllocator::AddParticle(), allocator, HYFPARCommon::bgen, Bgen, patCaloMETCorrections_cff::C, CharmEnhancementFactor(), funct::cos(), cosphi0_, edmIntegrityCheck::d, MillePedeFileConverter_cfg::e, E, SiPixelPhase1TrackClustersV_cfi::e3, photonPostprocessing_cfi::eMax, embedding_, trackListMerger_cfi::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(), edm::HepMCProduct::GetEvent(), ParticlePDG::GetMass(), DatabasePDG::GetPDGParticle(), ParticlePDG::GetSpin(), GetWeakDecayLimit(), h, hjRandomEngine, hyevnt_(), mps_fire::i, Index, Particle::InitIndexing(), input, createfilelist::int, kMax, LastDaughterIndex, ResonanceBuilder::mass, MotherIndex, Mpdg, RPCpg::mu, HYFPARCommon::nbcol, Nbcol, NDaughters, nhard_, Nhyd, HYJPARCommon::njet, Njet, HYPARTCommon::njp, HYFPARCommon::npart, Npart, HYFPARCommon::npart0, Npyt, nsoft_, nsub_, Ntot, phi0_, Pi, HYPARTCommon::ppart, RandArrayFunction::PrepareTable(), psiforv3, Px, Py, pypars, pythia6Service_, pythiaStatus, Pz, alignCSCRings::r, HYIPARCommon::RA, rotate_, rotateEvtPlane(), RunDecays(), SERVICE, SERVICEEV, HYJPARCommon::sigin, Sigin, HYJPARCommon::sigjet, Sigjet, SimpsonIntegrator2(), funct::sin(), sinphi0_, source, mathSSE::sqrt(), src_, genVertex_cff::t0, metsig::tau, TwoPi, X, Y, geometryCSVtoXML::yy, and Z.

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

Definition at line 1077 of file Hydjet2Hadronizer.cc.

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

Referenced by generatePartonsAndHadronize().

1086  {
1087  LogDebug("SubEvent") <<"Sub Event ID : "<<isub;
1088 
1089  int sub_up = (isub+1)*150000; // Upper limit in mother index, determining the range of Sub-Event
1090  vector<HepMC::GenParticle*> particles;
1091  vector<int> mother_ids;
1092  vector<HepMC::GenVertex*> prods;
1093 
1094  sub_vertices[isub] = new HepMC::GenVertex(HepMC::FourVector(0,0,0,0),isub);
1095  evt->add_vertex(sub_vertices[isub]);
1096 
1097  if(!evt->signal_process_vertex()) evt->set_signal_process_vertex(sub_vertices[isub]);
1098 
1099  while(ihy<nhard_+nsoft_ && (MotherIndex[ihy] < sub_up || ihy > nhard_ )){
1100  particles.push_back(build_hyjet2(ihy,ihy+1));
1101  prods.push_back(build_hyjet2_vertex(ihy,isub));
1102  mother_ids.push_back(MotherIndex[ihy]);
1103  LogDebug("DecayChain")<<"Mother index : "<<MotherIndex[ihy];
1104  ihy++;
1105  }
1106  //Produce Vertices and add them to the GenEvent. Remember that GenParticles are adopted by
1107  //GenVertex and GenVertex is adopted by GenEvent.
1108  LogDebug("Hydjet2")<<"Number of particles in vector "<<particles.size();
1109 
1110  for (unsigned int i = 0; i<particles.size(); i++) {
1111 
1112  HepMC::GenParticle* part = particles[i];
1113  //The Fortran code is modified to preserve mother id info, by seperating the beginning
1114  //mother indices of successive subevents by 5000
1115  int mid = mother_ids[i]-isub*150000-1;
1116  LogDebug("DecayChain")<<"Particle "<<i;
1117  LogDebug("DecayChain")<<"Mother's ID "<<mid;
1118  LogDebug("DecayChain")<<"Particle's PDG ID "<<part->pdg_id();
1119 
1120  if(mid <= 0){
1121 
1122  sub_vertices[isub]->add_particle_out(part);
1123  continue;
1124  }
1125 
1126  if(mid > 0){
1127  HepMC::GenParticle* mother = particles[mid];
1128  LogDebug("DecayChain")<<"Mother's PDG ID "<<mother->pdg_id();
1129  HepMC::GenVertex* prod_vertex = mother->end_vertex();
1130  if(!prod_vertex){
1131  prod_vertex = prods[i];
1132  prod_vertex->add_particle_in(mother);
1133  evt->add_vertex(prod_vertex);
1134  prods[i]=nullptr; // mark to protect deletion
1135  }
1136 
1137  prod_vertex->add_particle_out(part);
1138 
1139  }
1140  }
1141 
1142  // cleanup vertices not assigned to evt
1143  for (unsigned int i = 0; i<prods.size(); i++) {
1144  if(prods[i]) delete prods[i];
1145  }
1146  }
1147 
1148  return kTRUE;
1149 }
1150 
1151 
1152 //___________________________________________________________________
1154 {
1155  // Build particle object corresponding to index in hyjets (soft+hard)
1156 
1157  double px0 = Px[index];
#define LogDebug(id)
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.

91 {return fVolEff;}
double gen::Hydjet2Hadronizer::GetWeakDecayLimit ( )
inlineoverridevirtual
bool Hydjet2Hadronizer::hadronize ( )

Definition at line 922 of file Hydjet2Hadronizer.cc.

923 {
924  return true;
925 }
bool gen::Hydjet2Hadronizer::IniOfThFreezeoutParameters ( )
bool gen::Hydjet2Hadronizer::initializeForExternalPartons ( )
bool Hydjet2Hadronizer::initializeForInternalPartons ( )

Definition at line 214 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, createfilelist::int, HYJPARCommon::iPyhist, HYJPARCommon::ishad, RPCpg::mu, myini_(), HYJPARCommon::nhsel, nuclear_radius(), GrandCanonical::ParticleNumberDensity(), Pi, HYJPARCommon::ptmin, PYQPAR, pythia6Service_, NAStrangePotential::SetBaryonPotential(), and NAStrangePotential::SetTemperature().

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

References a, MillePedeFileConverter_cfg::e, trackListMerger_cfi::Epsilon, f2(), fR, h, mps_fire::i, createfilelist::int, and protons_cff::t.

1007  {
1008  x += h; // integr phi
1009 
1010  double RsB = fR; //test: podstavit' *coefff_RB
1011  double RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB
1012 
1013  nsubIntervals2 = int(RB / h2)+1;
1014  // integr R
1015  y=0;
1016  for(int i = 1; i < nsubIntervals2; i++)
1017  t += f2(x,(y += h2),Delta);
1018  }
1019  return t*h*h2;
1020 }
1021 
1022 //__________________________________________________________________________________________________________
1023 double Hydjet2Hadronizer::CharmEnhancementFactor(double Ncc, double Ndth, double NJPsith, double Epsilon) {
1024 
1025  double gammaC=100.;
1026  double x1 = gammaC*Ndth;
1027  double var1 = Ncc-0.5*gammaC*Ndth*TMath::BesselI1(x1)/TMath::BesselI0(x1)-gammaC*gammaC*NJPsith;
1028  LogInfo("Charam") << "gammaC 20"<<" var "<<var1<<endl;
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
double BesselI0(double x)
double f2(double, double, double)
double CharmEnhancementFactor(double, double, double, double)
double BesselI1(double x)
double Hydjet2Hadronizer::nuclear_radius ( ) const
inlineprivate

Definition at line 251 of file Hydjet2Hadronizer.h.

References funct::pow().

Referenced by add_heavy_ion_rec(), and initializeForInternalPartons().

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

Definition at line 200 of file Hydjet2Hadronizer.cc.

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

200  {
201 
202  Pythia6Service::InstanceWrapper guard(pythia6Service_);
204 
205  SERVICE.iseed_fromC=hjRandomEngine->CLHEP::HepRandomEngine::getSeed();
206  LogInfo("Hydjet2Hadronizer|GenSeed") << "Seed for random number generation: "<<hjRandomEngine->CLHEP::HepRandomEngine::getSeed();
207 
208  fNPartTypes = 0; //counter of hadron species
209 
210  return kTRUE;
211 }
Pythia6Service * pythia6Service_
CLHEP::HepRandomEngine * hjRandomEngine
#define SERVICE
Definition: HYJET_COMMONS.h:39
bool Hydjet2Hadronizer::residualDecay ( )

Definition at line 930 of file Hydjet2Hadronizer.cc.

930 {
931 }
932 const char* Hydjet2Hadronizer::classname() const
933 {
const char * classname() const
void Hydjet2Hadronizer::rotateEvtPlane ( )
private

Definition at line 1068 of file Hydjet2Hadronizer.cc.

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

Referenced by generatePartonsAndHadronize().

1070 {
1071  // Hard particles. The first nhard_ lines from hyjets array.
1072  // Pythia/Pyquen sub-events (sub-collisions) for a given event
1073  // Return T/F if success/failure
1074  // Create particles from lujet entries, assign them into vertices and
bool gen::Hydjet2Hadronizer::RunDecays ( )
inlineoverridevirtual

Implements InitialState.

Definition at line 92 of file Hydjet2Hadronizer.h.

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 960 of file Hydjet2Hadronizer.cc.

References a, f2(), h, mps_fire::i, LogDebug, alignCSCRings::s, and protons_cff::t.

Referenced by SimpsonIntegrator2().

960  {
961  x += h;
962  y += h;
963  s += f2(phi,y,Delta);
964  t += f2(phi,x,Delta);
965  }
966  t += 2.0*s;
967  return t*h/3.0;
968 }
969 
970 //______________________________________________________________________________________________
971 double Hydjet2Hadronizer::SimpsonIntegrator2(double a, double b, double Epsilon, double Delta) {
972 
973  LogInfo("SimpsonIntegrator2") <<"in SimpsonIntegrator2: epsilon - "<<Epsilon<<" delta - "<<Delta;
974  int nsubIntervals=10000;
975  double h = (b - a)/nsubIntervals; //-1-pi, phi
976  double s=0;
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
double SimpsonIntegrator2(double, double, double, double)
double f2(double, double, double)
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 979 of file Hydjet2Hadronizer.cc.

References a, MillePedeFileConverter_cfg::e, trackListMerger_cfi::Epsilon, fR, h, alignCSCRings::s, and SimpsonIntegrator().

Referenced by generatePartonsAndHadronize().

980  {
981  x += h; // phi
982  double e = Epsilon;
983  double RsB = fR; //test: podstavit' *coefff_RB
984  double RB = RsB *(TMath::Sqrt(1-e*e)/TMath::Sqrt(1+e*TMath::Cos(2*x))); //f-la7 RB
985  double sr = SimpsonIntegrator(0,RB,x,Delta);
986  s += sr;
987  }
988  return s*h;
989 
990 }
991 
992 //___________________________________________________________________________________________________
993 double Hydjet2Hadronizer::MidpointIntegrator2(double a, double b, double Delta, double Epsilon) {
994 
995  int nsubIntervals=2000;
996  int nsubIntervals2=1;
997  double h = (b - a)/nsubIntervals; //0-pi , phi
998  double h2 = (fR)/nsubIntervals; //0-R maximal RB ?
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
double MidpointIntegrator2(double, double, double, double)
double SimpsonIntegrator(double, double, double, double)
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121
void Hydjet2Hadronizer::statistics ( )

Definition at line 937 of file Hydjet2Hadronizer.cc.

Member Data Documentation

ParticleAllocator gen::Hydjet2Hadronizer::allocator
private

Definition at line 247 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Bgen
private

Definition at line 227 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 231 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().

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.

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 245 of file Hydjet2Hadronizer.h.

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

Definition at line 243 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.

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

Definition at line 240 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

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

Definition at line 244 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 241 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize(), and get_particles().

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

Definition at line 237 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 242 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

Definition at line 236 of file Hydjet2Hadronizer.h.

double gen::Hydjet2Hadronizer::phi0_
private
edm::ParameterSet gen::Hydjet2Hadronizer::pset
private

Definition at line 222 of file Hydjet2Hadronizer.h.

double gen::Hydjet2Hadronizer::psiforv3
private

Definition at line 226 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

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

Definition at line 228 of file Hydjet2Hadronizer.h.

Referenced by build_hyjet2(), and generatePartonsAndHadronize().

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

Definition at line 229 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 239 of file Hydjet2Hadronizer.h.

Referenced by generatePartonsAndHadronize().

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

Definition at line 230 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 227 of file Hydjet2Hadronizer.h.

Referenced by add_heavy_ion_rec(), and generatePartonsAndHadronize().

float gen::Hydjet2Hadronizer::Sigjet
private

Definition at line 227 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 235 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.

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