CMS 3D CMS Logo

Pythia6Hadronizer.h
Go to the documentation of this file.
1 #ifndef gen_Pythia6Hadronizer_h
2 #define gen_Pythia6Hadronizer_h
3 
4 // -*- C++ -*-
5 
6 // class Pythia6Hadronizer is an example of a class that models the
7 // Hadronizer concept.
8 
9 #include <memory>
10 #include <string>
11 #include <vector>
12 
14 
16 
17 namespace lhef {
18  class LHERunInfo;
19  class LHEEvent;
20 } // namespace lhef
21 
22 class LHEEventProduct;
23 
24 namespace HepMC {
25  class GenEvent;
26 }
27 
28 namespace CLHEP {
29  class HepRandomEngine;
30 }
31 
32 namespace gen {
33 
34  class Pythia6Service;
35  class JetMatching;
36 
38  public:
40  ~Pythia6Hadronizer() override;
41 
42  // bool generatePartons();
44  bool hadronize();
45  bool decay();
46  bool residualDecay();
47  bool readSettings(int);
50  bool declareStableParticles(const std::vector<int>&);
51  bool declareSpecialSettings(const std::vector<std::string>&);
52 
53  static JetMatching* getJetMatching() { return fJetMatching; }
54 
55  void finalizeEvent();
56 
57  void statistics();
58 
59  const char* classname() const;
60 
61  private:
62  // methods
63  //
64 
65  void doSetRandomEngine(CLHEP::HepRandomEngine* v) override;
66  std::vector<std::string> const& doSharedResources() const override { return theSharedResources; }
67 
68  void flushTmpStorage();
69  void fillTmpStorage();
70 
71  void imposeProperTime();
72 
73  // data members
74  //
75 
77 
78  // some of the following params are common for all generators(interfaces)
79  // probably better to wrap them up in a class and reuse ?
80  // (the event/run pointers are already moved to BaseHadronizer)
81  //
83 
84  int fInitialState; // pp, ppbar, e-e+, or e-p
85  double fCOMEnergy; // this one is irrelevant for setting py6 as hadronizer
86  // or if anything, it should be picked up from LHERunInfoProduct !
87  double fBeam1PZ;
88  double fBeam2PZ;
89 
91 
93  unsigned int fMaxEventsToPrint;
94 
95  // this is the only one specific to Pythia6
96  //
97  unsigned int fPythiaListVerbosity;
100 
101  // these two params control stop- and r-handron features,
102  // that are "custom" add-ons to Py6;
103  // I doubt they should drag along Py6Int main library...
104  //
107 
108  // this is a "trick" to generate enriched mu-samples and the likes
110 
111  // and final touch - conversion of Py6 PID's into PDG convension
113 
114  // tmp stuff, to deal with EvtGen corrupting pyjets
115  // int NPartsBeforeDecays;
116 
117  static const std::vector<std::string> theSharedResources;
118  };
119 } // namespace gen
120 
121 #endif
unsigned int fPythiaListVerbosity
unsigned int fMaxEventsToPrint
static JetMatching * getJetMatching()
std::vector< std::string > const & doSharedResources() const override
void doSetRandomEngine(CLHEP::HepRandomEngine *v) override
double v[5][pyjets_maxn]
bool declareStableParticles(const std::vector< int > &)
static const std::vector< std::string > theSharedResources
Pythia6Hadronizer(edm::ParameterSet const &ps)
Pythia6Service * fPy6Service
const char * classname() const
bool declareSpecialSettings(const std::vector< std::string > &)
static JetMatching * fJetMatching