EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
sHEPGen.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file sHEPGen.h
1 #ifndef __SHEPGEN_H__
2 #define __SHEPGEN_H__
3 
4 #include <fun4all/SubsysReco.h>
6 
7 #if !defined(__CINT__) || defined(__CLING__)
8 #include <gsl/gsl_rng.h>
9 #endif
10 
11 #include <iostream>
12 #include <string>
13 
14 class PHCompositeNode;
15 class PHHepMCGenEvent;
16 
17 class HGenManager;
18 class HLorentzVector;
19 
20 namespace HepMC
21 {
22  class GenEvent;
23 };
24 
25 class sHEPGen : public SubsysReco, public PHHepMCGenHelper
26 {
27  public:
28  sHEPGen(const std::string &name = "sHEPGen");
29  virtual ~sHEPGen();
30 
31  int Init(PHCompositeNode *topNode);
32  int process_event(PHCompositeNode *topNode);
33  int End(PHCompositeNode *topNode);
34 
35  void set_datacard_file(const char *cfg_file)
36  {
37  if (cfg_file) _datacardFile = cfg_file;
38  }
39 
40  void set_momentum_electron(double emom)
41  {
42  _p_electron_lab = emom;
43  }
44 
45  void set_momentum_hadron(double hmom)
46  {
47  _p_hadron_lab = hmom;
48  }
49 
50  void beam_vertex_parameters(double beamX,
51  double beamY,
52  double beamZ,
53  double beamXsigma,
54  double beamYsigma,
55  double beamZsigma)
56  {
57  set_vertex_distribution_mean(beamX, beamY, beamZ, 0);
58  set_vertex_distribution_width(beamXsigma, beamYsigma, beamZsigma, 0);
59  }
60 
61  private:
64  void printlogo();
65 
66 
68 
70  double _p_hadron_lab;
71 
72  HLorentzVector *_p4_electron_lab;
73  HLorentzVector *_p4_hadron_lab;
74  HLorentzVector *_p4_hadron_lab_invert;
75  HLorentzVector *_p4_electron_prest;
76  HLorentzVector *_p4_hadron_prest;
77 
78  // HEPGen++
79  HGenManager *_hgenManager;
80 
81  std::string _datacardFile;
82 };
83 
84 #endif /* __SHEPGEN_H__ */