CMS 3D CMS Logo

EmbeddingHepMCFilter.h
Go to the documentation of this file.
1 #ifndef __EMBEDDINGHEPMCFILTER__
2 #define __EMBEDDINGHEPMCFILTER__
3 
4 
6 
9 
11 
12  private:
13 
14  const int tauon_neutrino_PDGID_ = 16;
15  const int tauonPDGID_ = 15;
16  const int muon_neutrino_PDGID_ = 14;
17  const int muonPDGID_ = 13;
18  const int electron_neutrino_PDGID_ = 12;
19  const int electronPDGID_ = 11;
20  const int ZPDGID_ = 23;
21 
22  enum class TauDecayMode : int
23  {
24  Unfilled = -1,
25  Muon = 0,
26  Electron = 1,
27  Hadronic = 2
28  };
29 
31  {
32  if (mode == TauDecayMode::Muon) return "Mu";
33  else if (mode == TauDecayMode::Electron) return "El";
34  else if (mode == TauDecayMode::Hadronic) return "Had";
35  else return "Undefined";
36  }
37 
38 
39  struct DecayChannel
40  {
43 
45  {
46  if (first == TauDecayMode::Unfilled) first = mode;
47  else if (second == TauDecayMode::Unfilled) second = mode;
48  };
49  void reset()
50  {
51  first = TauDecayMode::Unfilled;
52  second = TauDecayMode::Unfilled;
53  }
54  void reverse()
55  {
57  first = second;
58  second = tmp;
59  }
60  };
61 
63 
64 
66  {
67  double pt1 = -1.;
68  double pt2 = -1.;
69  double eta1 = -1.; // since we use abs eta values the -1 as default is OK
70  double eta2 = -1.;
72  };
73 
74 
75  std::vector<CutsContainer> cuts_;
77 
79  virtual void fill_cuts(std::string cut_string, EmbeddingHepMCFilter::DecayChannel &dc);
80 
82  virtual void sort_by_convention(std::vector<reco::Candidate::LorentzVector> &p4VisPair);
83  virtual bool apply_cuts(std::vector<reco::Candidate::LorentzVector> &p4VisPair);
84 
85  public:
86 
87  explicit EmbeddingHepMCFilter(const edm::ParameterSet &);
88  ~EmbeddingHepMCFilter() override;
89 
90  bool filter(const HepMC::GenEvent* evt) override;
91 
92 };
93 
94 #endif
bool filter(const HepMC::GenEvent *evt) override
U second(std::pair< T, U > const &p)
virtual void decay_and_sump4Vis(HepMC::GenParticle *particle, reco::Candidate::LorentzVector &p4Vis)
Definition: Muon.py:1
EmbeddingHepMCFilter(const edm::ParameterSet &)
virtual void fill_cut(std::string cut_string, EmbeddingHepMCFilter::DecayChannel &dc, CutsContainer &cut)
std::string return_mode(TauDecayMode mode)
std::vector< CutsContainer > cuts_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
virtual void sort_by_convention(std::vector< reco::Candidate::LorentzVector > &p4VisPair)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
virtual void fill_cuts(std::string cut_string, EmbeddingHepMCFilter::DecayChannel &dc)
virtual bool apply_cuts(std::vector< reco::Candidate::LorentzVector > &p4VisPair)