forked from sPHENIX-Collaboration/coresoftware
/
sHEPGen.h
84 lines (64 loc) · 1.69 KB
/
sHEPGen.h
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
#ifndef __SHEPGEN_H__
#define __SHEPGEN_H__
#include <fun4all/SubsysReco.h>
#include <phhepmc/PHHepMCGenHelper.h>
#if !defined(__CINT__) || defined(__CLING__)
#include <gsl/gsl_rng.h>
#endif
#include <iostream>
#include <string>
class PHCompositeNode;
class PHHepMCGenEvent;
class HGenManager;
class HLorentzVector;
namespace HepMC
{
class GenEvent;
};
class sHEPGen : public SubsysReco, public PHHepMCGenHelper
{
public:
sHEPGen(const std::string &name = "sHEPGen");
virtual ~sHEPGen();
int Init(PHCompositeNode *topNode);
int process_event(PHCompositeNode *topNode);
int End(PHCompositeNode *topNode);
void set_datacard_file(const char *cfg_file)
{
if (cfg_file) _datacardFile = cfg_file;
}
void set_momentum_electron(double emom)
{
_p_electron_lab = emom;
}
void set_momentum_hadron(double hmom)
{
_p_hadron_lab = hmom;
}
void beam_vertex_parameters(double beamX,
double beamY,
double beamZ,
double beamXsigma,
double beamYsigma,
double beamZsigma)
{
set_vertex_distribution_mean(beamX, beamY, beamZ, 0);
set_vertex_distribution_width(beamXsigma, beamYsigma, beamZsigma, 0);
}
private:
/** Print HEPGen++ logo to screen
*/
void printlogo();
int _eventcount;
double _p_electron_lab;
double _p_hadron_lab;
HLorentzVector *_p4_electron_lab;
HLorentzVector *_p4_hadron_lab;
HLorentzVector *_p4_hadron_lab_invert;
HLorentzVector *_p4_electron_prest;
HLorentzVector *_p4_hadron_prest;
// HEPGen++
HGenManager *_hgenManager;
std::string _datacardFile;
};
#endif /* __SHEPGEN_H__ */