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 nonCentralEvent2G4(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;
59  int verbose;
63  double weight_;
65  std::vector<int> pdgFilter;
67  bool fPDGFilter;
68 };
69 
70 #endif
double theDecRCut2
Definition: Generator.h:55
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:30
bool fPhiCuts
Definition: Generator.h:46
bool isExoticNonDetectable(int pdgcode) const
Definition: Generator.cc:532
void nonCentralEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:549
double theMinPtCut2
Definition: Generator.h:53
double maxZCentralCMS
Definition: Generator.h:58
double theEtaCutForHector
Definition: Generator.h:56
double Z_lmax
Definition: Generator.h:64
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:112
double theMaxPhiCut
Definition: Generator.h:49
Generator(const edm::ParameterSet &p)
Definition: Generator.cc:23
bool isExotic(int pdgcode) const
Definition: Generator.cc:524
bool fPtransCut
Definition: Generator.h:44
double theDecLenCut
Definition: Generator.h:57
double theMinEtaCut
Definition: Generator.h:50
bool pdgFilterSel
Definition: Generator.h:66
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:31
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:430
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:60
bool fFiductialCuts
Definition: Generator.h:47
bool particlePassesPrimaryCuts(const G4ThreeVector &p) const
Definition: Generator.cc:492
bool fPDGFilter
Definition: Generator.h:67
double theMinPhiCut
Definition: Generator.h:48
double weight_
Definition: Generator.h:63
double theMaxEtaCut
Definition: Generator.h:51
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:24
double theMaxPCut
Definition: Generator.h:54
math::XYZTLorentzVector * vtx_
Definition: Generator.h:62
HepMC::GenEvent * evt_
Definition: Generator.h:61
double Z_lmin
Definition: Generator.h:64
int verbose
Definition: Generator.h:59
virtual ~Generator()
Definition: Generator.cc:110
void setGenId(G4PrimaryParticle *p, int id) const
Definition: Generator.h:40
std::vector< int > pdgFilter
Definition: Generator.h:65
virtual const double eventWeight() const
Definition: Generator.h:32
bool IsInTheFilterList(int pdgcode) const
Definition: Generator.cc:539
bool fEtaCuts
Definition: Generator.h:45
double Z_hector
Definition: Generator.h:64
bool fPCuts
Definition: Generator.h:43