CMS 3D CMS Logo

Generator.h
Go to the documentation of this file.
1 #ifndef SimG4Core_Generator_H
2 #define SimG4Core_Generator_H
3 
6 
9 
10 #include "HepMC/GenEvent.h"
11 #include "HepMC/GenParticle.h"
12 
13 #include <vector>
14 
15 class G4Event;
16 class G4PrimaryParticle;
17 class LumiMonitorFilter;
18 
19 class Generator {
20 public:
22  virtual ~Generator();
23 
24  void setGenEvent(const HepMC::GenEvent *inpevt) {
25  evt_ = (HepMC::GenEvent *)inpevt;
26  return;
27  }
28  void HepMC2G4(const HepMC::GenEvent *g, G4Event *e);
29  void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e);
30  virtual const HepMC::GenEvent *genEvent() const { return evt_; }
31  virtual const math::XYZTLorentzVector *genVertex() const { return vtx_; }
32  virtual const double eventWeight() const { return weight_; }
33 
34 private:
35  bool particlePassesPrimaryCuts(const G4ThreeVector &p) const;
36  bool isExotic(int pdgcode) const;
37  bool isExoticNonDetectable(int pdgcode) const;
38  bool IsInTheFilterList(int pdgcode) const;
39  void particleAssignDaughters(G4PrimaryParticle *p, HepMC::GenParticle *hp, double length);
40  void setGenId(G4PrimaryParticle *p, int id) const { p->SetUserInformation(new GenParticleInfo(id)); }
41 
42 private:
43  bool fPCuts;
44  bool fPtransCut;
45  bool fEtaCuts;
46  bool fPhiCuts;
48  double theMinPhiCut;
49  double theMaxPhiCut;
50  double theMinEtaCut;
51  double theMaxEtaCut;
52  double theMinPCut;
53  double theMinPtCut2;
54  double theMaxPCut;
55  double theDecRCut2;
57  double theDecLenCut;
58  int verbose;
62  double weight_;
64  std::vector<int> pdgFilter;
66  bool fPDGFilter;
67 };
68 
69 #endif
double theDecRCut2
Definition: Generator.h:55
bool fPhiCuts
Definition: Generator.h:46
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:31
void setGenId(G4PrimaryParticle *p, int id) const
Definition: Generator.h:40
double theMinPtCut2
Definition: Generator.h:53
virtual const double eventWeight() const
Definition: Generator.h:32
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:30
double theEtaCutForHector
Definition: Generator.h:56
double Z_lmax
Definition: Generator.h:63
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:101
double theMaxPhiCut
Definition: Generator.h:49
Generator(const edm::ParameterSet &p)
Definition: Generator.cc:24
bool fPtransCut
Definition: Generator.h:44
double theDecLenCut
Definition: Generator.h:57
double theMinEtaCut
Definition: Generator.h:50
bool isExoticNonDetectable(int pdgcode) const
Definition: Generator.cc:511
bool pdgFilterSel
Definition: Generator.h:65
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
void particleAssignDaughters(G4PrimaryParticle *p, HepMC::GenParticle *hp, double length)
Definition: Generator.cc:408
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
double theMinPCut
Definition: Generator.h:52
LumiMonitorFilter * fLumiFilter
Definition: Generator.h:59
bool fFiductialCuts
Definition: Generator.h:47
susybsm::HSCParticleRefProd hp
Definition: classes.h:27
bool fPDGFilter
Definition: Generator.h:66
double theMinPhiCut
Definition: Generator.h:48
double weight_
Definition: Generator.h:62
double theMaxEtaCut
Definition: Generator.h:51
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:24
double theMaxPCut
Definition: Generator.h:54
bool isExotic(int pdgcode) const
Definition: Generator.cc:501
math::XYZTLorentzVector * vtx_
Definition: Generator.h:61
HepMC::GenEvent * evt_
Definition: Generator.h:60
void nonBeamEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:530
double Z_lmin
Definition: Generator.h:63
int verbose
Definition: Generator.h:58
virtual ~Generator()
Definition: Generator.cc:99
bool particlePassesPrimaryCuts(const G4ThreeVector &p) const
Definition: Generator.cc:469
std::vector< int > pdgFilter
Definition: Generator.h:64
bool IsInTheFilterList(int pdgcode) const
Definition: Generator.cc:520
bool fEtaCuts
Definition: Generator.h:45
double Z_hector
Definition: Generator.h:63
bool fPCuts
Definition: Generator.h:43