CMS 3D CMS Logo

PyquenHadronizer.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <ctime>
3 
5 
10 
12 
17 
19 
20 #include "HepMC/IO_HEPEVT.h"
21 #include "HepMC/PythiaWrapper.h"
22 
23 using namespace gen;
24 using namespace edm;
25 using namespace std;
26 
27 HepMC::IO_HEPEVT hepevtio;
28 
31 
34  pset_(pset),
35  abeamtarget_(pset.getParameter<double>("aBeamTarget")),
36  angularspecselector_(pset.getParameter<int>("angularSpectrumSelector")),
37  bmin_(pset.getParameter<double>("bMin")),
38  bmax_(pset.getParameter<double>("bMax")),
39  bfixed_(pset.getParameter<double>("bFixed")),
40  cflag_(pset.getParameter<int>("cFlag")),
41  comenergy(pset.getParameter<double>("comEnergy")),
42  doquench_(pset.getParameter<bool>("doQuench")),
43  doradiativeenloss_(pset.getParameter<bool>("doRadiativeEnLoss")),
44  docollisionalenloss_(pset.getParameter<bool>("doCollisionalEnLoss")),
45  doIsospin_(pset.getParameter<bool>("doIsospin")),
46  protonSide_(pset.getUntrackedParameter<int>("protonSide", 0)),
47  embedding_(pset.getParameter<bool>("embeddingMode")),
48  evtPlane_(0),
49  nquarkflavor_(pset.getParameter<int>("qgpNumQuarkFlavor")),
50  qgpt0_(pset.getParameter<double>("qgpInitialTemperature")),
51  qgptau0_(pset.getParameter<double>("qgpProperTimeFormation")),
52  maxEventsToPrint_(pset.getUntrackedParameter<int>("maxEventsToPrint", 1)),
53  fVertex_(nullptr),
54  pythiaHepMCVerbosity_(pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity", false)),
55  pythiaPylistVerbosity_(pset.getUntrackedParameter<int>("pythiaPylistVerbosity", 0)),
56  pythia6Service_(new Pythia6Service(pset)),
57  filterType_(pset.getUntrackedParameter<string>("filterType", "None")) {
58  if (pset.exists("signalVtx"))
59  signalVtx_ = pset.getUntrackedParameter<std::vector<double> >("signalVtx");
60 
61  if (signalVtx_.size() == 4) {
62  if (!fVertex_)
63  fVertex_ = new HepMC::FourVector();
64  LogDebug("EventSignalVertex") << "Setting event signal vertex "
65  << " x = " << signalVtx_.at(0) << " y = " << signalVtx_.at(1)
66  << " z= " << signalVtx_.at(2) << " t = " << signalVtx_.at(3) << endl;
67  fVertex_->set(signalVtx_.at(0), signalVtx_.at(1), signalVtx_.at(2), signalVtx_.at(3));
68  }
69 
70  // Verbosity Level
71  // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13
72  LogDebug("PYLISTverbosity") << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_ << endl;
73  // HepMC event verbosity Level
74  pythiaHepMCVerbosity_ = pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity", false);
75  LogDebug("HepMCverbosity") << "Pythia HepMC verbosity = " << pythiaHepMCVerbosity_ << endl;
76 
77  //Max number of events printed on verbosity level
78  maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint", 0);
79  LogDebug("Events2Print") << "Number of events to be printed = " << maxEventsToPrint_ << endl;
80 
81  if (embedding_) {
82  cflag_ = 0;
83  src_ = iC.consumes<CrossingFrame<edm::HepMCProduct> >(
84  pset.getUntrackedParameter<edm::InputTag>("backgroundLabel", edm::InputTag("mix", "generatorSmeared")));
85  }
87 
88  int cm = 1, va, vb, vc;
89  PYQVER(cm, va, vb, vc);
90  //HepMC::HEPEVT_Wrapper::set_max_number_entries(4000);
91 }
92 
93 //_____________________________________________________________________
95  // distructor
96  call_pystat(1);
97 
98  delete pythia6Service_;
99 }
100 
101 //_____________________________________________________________________
103 
104 //_____________________________________________________________________
106  HepMC::HeavyIon* hi = new HepMC::HeavyIon(1, // Ncoll_hard
107  -1, // Npart_proj
108  -1, // Npart_targ
109  1, // Ncoll
110  -1, // spectator_neutrons
111  -1, // spectator_protons
112  -1, // N_Nwounded_collisions
113  -1, // Nwounded_N_collisions
114  -1, // Nwounded_Nwounded_collisions
115  plfpar.bgen, // impact_parameter in [fm]
116  evtPlane_, // event_plane_angle
117  0, // eccentricity
118  -1 // sigma_inel_NN
119  );
120 
121  evt->set_heavy_ion(*hi);
122 
123  delete hi;
124 }
125 
126 //_____________________________________________________________________
129 
130  // Not possible to retrieve impact paramter and event plane info
131  // at this part, need to overwrite filter() in
132  // PyquenGeneratorFilter
133 
134  if (embedding_) {
135  const edm::Event& e = getEDMEvent();
136  HepMC::GenVertex* genvtx = nullptr;
137  const HepMC::GenEvent* inev = nullptr;
139  e.getByToken(src_, cf);
141  if (mix.size() < 1) {
142  throw cms::Exception("MatchVtx") << "Mixing has " << mix.size() << " sub-events, should have been at least 1"
143  << endl;
144  }
145  const HepMCProduct& bkg = mix.getObject(0);
146  if (!(bkg.isVtxGenApplied())) {
147  throw cms::Exception("MatchVtx") << "Input background does not have smeared vertex!" << endl;
148  } else {
149  inev = bkg.GetEvent();
150  }
151 
152  genvtx = inev->signal_process_vertex();
153 
154  if (!genvtx)
155  throw cms::Exception("MatchVtx") << "Input background does not have signal process vertex!" << endl;
156 
157  double aX, aY, aZ, aT;
158 
159  aX = genvtx->position().x();
160  aY = genvtx->position().y();
161  aZ = genvtx->position().z();
162  aT = genvtx->position().t();
163 
164  if (!fVertex_) {
165  fVertex_ = new HepMC::FourVector();
166  }
167 
168  //LogInfo("MatchVtx")
169  std::cout << " setting vertex "
170  << " aX " << aX << " aY " << aY << " aZ " << aZ << " aT " << aT << endl;
171  fVertex_->set(aX, aY, aZ, aT);
172 
173  const HepMC::HeavyIon* hi = inev->heavy_ion();
174 
175  if (hi) {
176  bfixed_ = hi->impact_parameter();
177  evtPlane_ = hi->event_plane_angle();
178  } else {
179  LogWarning("EventEmbedding") << "Background event does not have heavy ion record!";
180  }
181  }
182 
183  // Generate PYQUEN event
184  // generate single partonic PYTHIA jet event
185 
186  // Take into account whether it's a nn or pp or pn interaction
187  if (doIsospin_) {
188  string projN = "p";
189  string targN = "p";
190  if (protonSide_ != 1)
191  projN = nucleon();
192  if (protonSide_ != 2)
193  targN = nucleon();
194  call_pyinit("CMS", projN.data(), targN.data(), comenergy);
195  }
196  call_pyevnt();
197 
198  // call PYQUEN to apply parton rescattering and energy loss
199  // if doQuench=FALSE, it is pure PYTHIA
200  if (doquench_) {
202  edm::LogInfo("PYQUENinAction") << "##### Calling PYQUEN(" << abeamtarget_ << "," << cflag_ << "," << bfixed_
203  << ") ####";
204  } else {
205  edm::LogInfo("PYQUENinAction") << "##### Calling PYQUEN: QUENCHING OFF!! This is just PYTHIA !!!! ####";
206  }
207 
208  // call PYTHIA to finish the hadronization
209  pyexec_();
210 
211  // fill the HEPEVT with the PYJETS event record
212  call_pyhepc(1);
213 
214  // event information
215  // hepevtio.set_trust_mothers_before_daughters(true);
216  HepMC::GenEvent* evt = hepevtio.read_next_event();
217 
218  evt->set_signal_process_id(pypars.msti[0]); // type of the process
219  evt->set_event_scale(pypars.pari[16]); // Q^2
220 
221  if (embedding_)
223  add_heavy_ion_rec(evt);
224 
225  if (fVertex_) {
226  // Copy the HepMC::GenEvent
227  std::unique_ptr<edm::HepMCProduct> HepMCEvt(new edm::HepMCProduct(evt));
228 
229  HepMCEvt->applyVtxGen(fVertex_);
230  evt = new HepMC::GenEvent((*HepMCEvt->GetEvent()));
231  }
232 
233  // HepMC::HEPEVT_Wrapper::check_hepevt_consistency();
234 
235  event().reset(evt);
236 
237  return true;
238 }
239 
244 
245  //Proton to Nucleon fraction
246  pfrac_ = 1. / (1.98 + 0.015 * pow(abeamtarget_, 2. / 3));
247 
248  //initialize pythia
250 
251  //initilize pyquen
253 
254  return true;
255 }
256 
259 
260  // Call PYTHIA
261  call_pyinit("CMS", "p", "p", comenergy);
262 
263  return true;
264 }
265 
266 //_____________________________________________________________________
268  //Turn Hadronization Off whether or not there is quenching
269  // PYEXEC is called later anyway
270  string sHadOff("MSTP(111)=0");
271  gen::call_pygive(sHadOff);
272 
273  return true;
274 }
275 
276 //_________________________________________________________________
278  // PYQUEN initialization
279 
280  // angular emitted gluon spectrum selection
281  pyqpar.ianglu = angularspecselector_;
282 
283  // type of medium induced partonic energy loss
285  edm::LogInfo("PYQUENinEnLoss") << "##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
286  pyqpar.ienglu = 0;
287  } else if (doradiativeenloss_) {
288  edm::LogInfo("PYQUENinRad") << "##### PYQUEN: Only RADIATIVE partonic energy loss ON ####";
289  pyqpar.ienglu = 1;
290  } else if (docollisionalenloss_) {
291  edm::LogInfo("PYQUENinColl") << "##### PYQUEN: Only COLLISIONAL partonic energy loss ON ####";
292  pyqpar.ienglu = 2;
293  } else {
294  edm::LogInfo("PYQUENinEnLoss") << "##### PYQUEN: Radiative AND Collisional partonic energy loss ON ####";
295  pyqpar.ienglu = 0;
296  }
297 
298  // number of active quark flavors in qgp
299  pyqpar.nfu = nquarkflavor_;
300  // initial temperature of QGP
301  pyqpar.T0u = qgpt0_;
302  // proper time of QGP formation
303  pyqpar.tau0u = qgptau0_;
304 
305  return true;
306 }
307 
309  int* dummy = nullptr;
310  double random = gen::pyr_(dummy);
311  const char* nuc = nullptr;
312  if (random > pfrac_)
313  nuc = "n";
314  else
315  nuc = "p";
316 
317  return nuc;
318 }
319 
321  double sinphi0 = sin(angle);
322  double cosphi0 = cos(angle);
323 
324  for (HepMC::GenEvent::vertex_iterator vt = evt->vertices_begin(); vt != evt->vertices_end(); ++vt) {
325  double x0 = (*vt)->position().x();
326  double y0 = (*vt)->position().y();
327  double z = (*vt)->position().z();
328  double t = (*vt)->position().t();
329 
330  double x = x0 * cosphi0 - y0 * sinphi0;
331  double y = y0 * cosphi0 + x0 * sinphi0;
332 
333  (*vt)->set_position(HepMC::FourVector(x, y, z, t));
334  }
335 
336  for (HepMC::GenEvent::particle_iterator vt = evt->particles_begin(); vt != evt->particles_end(); ++vt) {
337  double x0 = (*vt)->momentum().x();
338  double y0 = (*vt)->momentum().y();
339  double z = (*vt)->momentum().z();
340  double t = (*vt)->momentum().t();
341 
342  double x = x0 * cosphi0 - y0 * sinphi0;
343  double y = y0 * cosphi0 + x0 * sinphi0;
344 
345  (*vt)->set_momentum(HepMC::FourVector(x, y, z, t));
346  }
347 }
348 
349 bool PyquenHadronizer::declareStableParticles(const std::vector<int>& _pdg) {
350  std::vector<int> pdg = _pdg;
351  for (size_t i = 0; i < pdg.size(); i++) {
352  int pyCode = pycomp_(pdg[i]);
353  std::ostringstream pyCard;
354  pyCard << "MDCY(" << pyCode << ",1)=0";
355  std::cout << pyCard.str() << std::endl;
356  call_pygive(pyCard.str());
357  }
358 
359  return true;
360 }
361 
362 //____________________________________________________________________
363 
364 bool PyquenHadronizer::hadronize() { return false; }
365 
366 bool PyquenHadronizer::decay() { return true; }
367 
368 bool PyquenHadronizer::residualDecay() { return true; }
369 
371 
373 
374 const char* PyquenHadronizer::classname() const { return "gen::PyquenHadronizer"; }
gen::PyquenHadronizer::maxEventsToPrint_
unsigned int maxEventsToPrint_
Events to print if verbosity.
Definition: PyquenHadronizer.h:93
plfpar
#define plfpar
Definition: PyquenWrapper.h:27
gen::PyquenHadronizer::nucleon
const char * nucleon()
Definition: PyquenHadronizer.cc:308
gen::PyquenHadronizer::decay
bool decay()
Definition: PyquenHadronizer.cc:366
gen::PyquenHadronizer::qgptau0_
double qgptau0_
Definition: PyquenHadronizer.h:91
gen::PyquenHadronizer::declareStableParticles
bool declareStableParticles(const std::vector< int > &)
Definition: PyquenHadronizer.cc:349
electrons_cff.bool
bool
Definition: electrons_cff.py:366
mps_fire.i
i
Definition: mps_fire.py:428
gen::PyquenHadronizer::classname
const char * classname() const
Definition: PyquenHadronizer.cc:374
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
gen::PyquenHadronizer::embedding_
bool embedding_
Definition: PyquenHadronizer.h:83
PyquenWrapper.h
edm::Handle::product
T const * product() const
Definition: Handle.h:70
gen::PyquenHadronizer::evtPlane_
double evtPlane_
Definition: PyquenHadronizer.h:84
gen::pycomp_
int pycomp_(int &)
gen::PyquenHadronizer::filterType_
std::string filterType_
Definition: PyquenHadronizer.h:104
gen::PyquenHadronizer::pyquen_init
bool pyquen_init(const edm::ParameterSet &pset)
Definition: PyquenHadronizer.cc:277
edm
HLT enums.
Definition: AlignableModifier.h:19
gen::pyr_
double pyr_(int *idummy)
Definition: Pythia6Service.cc:60
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pypars
#define pypars
Definition: ExhumeHadronizer.cc:45
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
gen::PyquenHadronizer::rotateEvtPlane
void rotateEvtPlane(HepMC::GenEvent *evt, double angle)
Definition: PyquenHadronizer.cc:320
gen::FortranInstance::kFortranInstance
static const std::string kFortranInstance
Definition: FortranInstance.h:88
Pythia6Declarations.h
gen::PyquenHadronizer::abeamtarget_
double abeamtarget_
beam/target atomic mass number
Definition: PyquenHadronizer.h:68
gen::PyquenHadronizer::finalizeEvent
void finalizeEvent()
Definition: PyquenHadronizer.cc:370
gen::PyquenHadronizer::qgpt0_
double qgpt0_
Definition: PyquenHadronizer.h:89
gen::Pythia6Service::setRandomEngine
void setRandomEngine(CLHEP::HepRandomEngine *v)
Definition: Pythia6Service.h:46
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
gen::PyquenHadronizer::doradiativeenloss_
bool doradiativeenloss_
DEFAULT = true.
Definition: PyquenHadronizer.h:79
edm::Handle
Definition: AssociativeIterator.h:50
gen::BaseHadronizer
Definition: BaseHadronizer.h:46
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
PYQVER
#define PYQVER
Definition: PyquenWrapper.h:22
gen::PyquenHadronizer::docollisionalenloss_
bool docollisionalenloss_
DEFAULT = true.
Definition: PyquenHadronizer.h:80
gen::Pythia6Service::setGeneralParams
void setGeneralParams()
Definition: Pythia6Service.cc:157
gen::PyquenHadronizer::hadronize
bool hadronize()
Definition: PyquenHadronizer.cc:364
gen::PyquenHadronizer::pythiaPylistVerbosity_
unsigned int pythiaPylistVerbosity_
Pythia PYLIST Verbosity flag.
Definition: PyquenHadronizer.h:99
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
gen::pyexec_
void pyexec_()
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
HiGenEvtSelectorFactory::get
static BaseHiGenEvtSelector * get(std::string, const edm::ParameterSet &)
Definition: HiGenEvtSelectorFactory.cc:9
gen::PyquenHadronizer::doIsospin_
bool doIsospin_
Run n&p with proper ratios; if false, only p+p collisions.
Definition: PyquenHadronizer.h:81
CrossingFrame
Definition: CrossingFrame.h:37
PyquenHadronizer.h
gen::PyquenHadronizer::cflag_
int cflag_
centrality flag =0 fixed impact param, <>0 minbias
Definition: PyquenHadronizer.h:76
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
gen::Pythia6Service::setCSAParams
void setCSAParams()
Definition: Pythia6Service.cc:168
MixCollection
Definition: MixCollection.h:10
gen::FortranInstance::InstanceWrapper
Definition: FortranInstance.h:54
gen::BaseHadronizer::getEDMEvent
edm::Event & getEDMEvent() const
Definition: BaseHadronizer.h:69
gen::PyquenHadronizer::generatePartonsAndHadronize
bool generatePartonsAndHadronize()
Definition: PyquenHadronizer.cc:127
SharedResourceNames.h
gen
Definition: PythiaDecays.h:13
gen::PyquenHadronizer::initializeForInternalPartons
bool initializeForInternalPartons()
Definition: PyquenHadronizer.cc:257
FortranInstance.h
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
gen::PyquenHadronizer::bmax_
double bmax_
max impact param (fm); valid only if cflag_!=0
Definition: PyquenHadronizer.h:74
gen::PyquenHadronizer::add_heavy_ion_rec
void add_heavy_ion_rec(HepMC::GenEvent *evt)
Definition: PyquenHadronizer.cc:105
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
edm::ParameterSet
Definition: ParameterSet.h:47
gen::PyquenHadronizer::pyqpythia_init
bool pyqpythia_init(const edm::ParameterSet &pset)
Definition: PyquenHadronizer.cc:267
gen::PyquenHadronizer::doquench_
bool doquench_
if true perform quenching (default = true)
Definition: PyquenHadronizer.h:78
gen::PyquenHadronizer::src_
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > src_
Definition: PyquenHadronizer.h:102
GenEventInfoProduct.h
Event.h
gen::PyquenHadronizer::statistics
void statistics()
Definition: PyquenHadronizer.cc:372
gen::PyquenHadronizer::signalVtx_
std::vector< double > signalVtx_
Pset double vector to set event signal vertex.
Definition: PyquenHadronizer.h:96
gen::v
double v[5][pyjets_maxn]
Definition: Cascade2Hadronizer.cc:76
createfilelist.int
int
Definition: createfilelist.py:10
gen::PyquenHadronizer::fVertex_
HepMC::FourVector * fVertex_
Event signal vertex.
Definition: PyquenHadronizer.h:95
gen::PyquenHadronizer::angularspecselector_
unsigned int angularspecselector_
Definition: PyquenHadronizer.h:69
gen::PyquenHadronizer::PyquenHadronizer
PyquenHadronizer(const edm::ParameterSet &, edm::ConsumesCollector &&)
Definition: PyquenHadronizer.cc:32
gen::PyquenHadronizer::theSharedResources
static const std::vector< std::string > theSharedResources
Definition: PyquenHadronizer.h:58
gen::PyquenHadronizer::residualDecay
bool residualDecay()
Definition: PyquenHadronizer.cc:368
edm::HepMCProduct::GetEvent
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:37
edm::HepMCProduct::isVtxGenApplied
bool isVtxGenApplied() const
Definition: HepMCProduct.h:39
gen::PyquenHadronizer::pset_
edm::ParameterSet pset_
Definition: PyquenHadronizer.h:67
gen::PyquenHadronizer::bfixed_
double bfixed_
fixed impact param (fm); valid only if cflag_=0
Definition: PyquenHadronizer.h:75
gen::PyquenHadronizer::pythia6Service_
Pythia6Service * pythia6Service_
Definition: PyquenHadronizer.h:103
hi
Definition: EPCuts.h:4
gen::PyquenHadronizer::nquarkflavor_
unsigned int nquarkflavor_
Definition: PyquenHadronizer.h:87
std
Definition: JetResolutionObject.h:76
gen::BaseHadronizer::event
std::unique_ptr< HepMC::GenEvent > & event()
Definition: BaseHadronizer.h:86
gen::PyquenHadronizer::comenergy
double comenergy
collision energy
Definition: PyquenHadronizer.h:77
gen::PyquenHadronizer::pfrac_
double pfrac_
Proton fraction in the nucleus.
Definition: PyquenHadronizer.h:85
HiGenEvtSelectorFactory.h
edm::SharedResourceNames::kPythia6
static const std::string kPythia6
Definition: SharedResourceNames.h:26
Exception
Definition: hltDiff.cc:245
PYQUEN
#define PYQUEN
Definition: PyquenWrapper.h:17
pyqpar
#define pyqpar
Definition: HydjetWrapper.h:112
Pythia6Service.h
angle
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
pdg
Definition: pdg_functions.h:28
gen::PyquenHadronizer::~PyquenHadronizer
~PyquenHadronizer() override
Definition: PyquenHadronizer.cc:94
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
gen::PyquenHadronizer::readSettings
bool readSettings(int)
Definition: PyquenHadronizer.cc:240
gen::Pythia6Service
Definition: Pythia6Service.h:24
edm::HepMCProduct
Definition: HepMCProduct.h:21
gen::PyquenHadronizer::selector_
BaseHiGenEvtSelector * selector_
Definition: PyquenHadronizer.h:105
dummy
Definition: DummySelector.h:38
HepMCProduct.h
gen::PyquenHadronizer::pythiaHepMCVerbosity_
bool pythiaHepMCVerbosity_
HepMC verbosity flag.
Definition: PyquenHadronizer.h:98
gen::PyquenHadronizer::bmin_
double bmin_
min impact param (fm); valid only if cflag_!=0
Definition: PyquenHadronizer.h:73
edm::Event
Definition: Event.h:73
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
hepevtio
HepMC::IO_HEPEVT hepevtio
Definition: PyquenHadronizer.cc:27
GeneratorMix_cff.mix
mix
Definition: GeneratorMix_cff.py:6
gen::call_pygive
bool call_pygive(const std::string &line)
Definition: ExhumeHadronizer.cc:64
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
gen::PyquenHadronizer::doSetRandomEngine
void doSetRandomEngine(CLHEP::HepRandomEngine *v) override
Definition: PyquenHadronizer.cc:102
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
gen::PyquenHadronizer::protonSide_
int protonSide_
Definition: PyquenHadronizer.h:82
reco::vertex_iterator
VertexRefVector::iterator vertex_iterator
iterator over a vector of references to Vertex objects in the same collection
Definition: VertexFwd.h:19