1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#ifndef HijingHadronizer_h
#define HijingHadronizer_h
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "GeneratorInterface/Core/interface/BaseHadronizer.h"
#include <map>
#include <string>
#include <vector>
#include <cmath>
namespace HepMC {
class GenEvent;
class GenParticle;
class GenVertex;
} // namespace HepMC
namespace CLHEP {
class HepRandomEngine;
}
namespace gen {
extern "C" {
float hijran_(int*);
}
class HijingHadronizer : public BaseHadronizer {
public:
HijingHadronizer(const edm::ParameterSet&);
~HijingHadronizer() override;
bool generatePartonsAndHadronize();
bool hadronize();
bool decay();
bool residualDecay();
bool readSettings(int) { return true; }
bool initializeForExternalPartons();
bool initializeForInternalPartons();
bool declareStableParticles(const std::vector<int>&);
bool declareSpecialSettings(const std::vector<std::string>&) { return true; }
void finalizeEvent();
void statistics();
const char* classname() const;
private:
void doSetRandomEngine(CLHEP::HepRandomEngine* v) override;
std::vector<std::string> const& doSharedResources() const override { return theSharedResources; }
void add_heavy_ion_rec(HepMC::GenEvent* evt);
HepMC::GenParticle* build_hijing(int index, int barcode);
HepMC::GenVertex* build_hijing_vertex(int i, int id);
bool get_particles(HepMC::GenEvent* evt);
bool call_hijset(
double efrm, std::string frame, std::string proj, std::string targ, int iap, int izp, int iat, int izt);
// inline double nuclear_radius() const;
void rotateEvtPlane();
HepMC::GenEvent* evt;
edm::ParameterSet pset_;
double bmax_; // max impact param;
// units of nucl radius
double bmin_; // min impact param;
// units of nucl radius
double efrm_; // collision energy
std::string frame_;
std::string proj_;
std::string targ_;
int iap_;
int izp_;
int iat_;
int izt_;
// unsigned int maxEventsToPrint_; // Events to print if verbosity
// unsigned int pythiaPylistVerbosity_; // pythia verbosity; def=1
double phi0_; // Event plane angle
double sinphi0_;
double cosphi0_;
bool rotate_; // Switch to rotate event plane
static const std::vector<std::string> theSharedResources;
// unsigned int shadowingswitch_; // shadowing switcher
// 1-ON, 0-OFF
// double signn_; // inelastic nucleon nucleon cross section [mb]
// DEFAULT= 58 mb
// CLHEP::HepRandomEngine* fRandomEngine;
// Pythia6Service* pythia6Service_;
};
} // namespace gen
#endif
|