CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
BPHPlusMinusCandidate.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * \author Paolo Ronchese INFN Padova
5  *
6  */
7 
8 //-----------------------
9 // This Class' Header --
10 //-----------------------
12 
13 //-------------------------------
14 // Collaborating Class Headers --
15 //-------------------------------
23 
24 //---------------
25 // C++ Headers --
26 //---------------
27 
28 using namespace std;
29 
30 //-------------------
31 // Initializations --
32 //-------------------
33 
34 //----------------
35 // Constructors --
36 //----------------
39 
41  : BPHDecayMomentum(compList.daugMap, compList.compMap),
42  BPHDecayVertex(this, es),
43  BPHKinematicFit(this),
45  BPHRecoCandidate(es, compList) {}
46 
47 //--------------
48 // Destructor --
49 //--------------
51 
52 //--------------
53 // Operations --
54 //--------------
55 void BPHPlusMinusCandidate::add(const string& name, const reco::Candidate* daug, double mass, double sigma) {
56  add(name, daug, "cfhpmig", mass, sigma);
57  return;
58 }
59 
61  const string& name, const reco::Candidate* daug, const string& searchList, double mass, double sigma) {
62  const vector<const reco::Candidate*>& dL = daughters();
63  bool accept = false;
64  switch (dL.size()) {
65  case 0:
66  accept = true;
67  break;
68  case 1:
69  if ((daug->charge() * dL.front()->charge()) > 0) {
70  edm::LogPrint("TooManyParticles") << "BPHPlusMinusCandidate::add: "
71  << "already containing same sign particle, add rejected";
72  return;
73  }
74  accept = true;
75  break;
76  default:
77  edm::LogPrint("TooManyParticles") << "BPHPlusMinusCandidate::add: "
78  << "complete, add rejected";
79  return;
80  }
81  if (accept)
82  addK(name, daug, searchList, mass, sigma);
83  return;
84 }
85 
86 vector<BPHPlusMinusConstCandPtr> BPHPlusMinusCandidate::build(
87  const BPHRecoBuilder& builder, const string& nPos, const string& nNeg, double mass, double msig) {
88  vector<BPHPlusMinusConstCandPtr> cList;
89  class ChargeSelect : public BPHRecoSelect {
90  public:
91  ChargeSelect(int c) : charge(c) {}
92  ~ChargeSelect() override {}
93  bool accept(const reco::Candidate& cand) const override { return ((charge * cand.charge()) > 0); }
94 
95  private:
96  int charge;
97  };
98  ChargeSelect tkPos(+1);
99  ChargeSelect tkNeg(-1);
100  builder.filter(nPos, tkPos);
101  builder.filter(nNeg, tkNeg);
102  fill<BPHPlusMinusCandidate>(cList, builder, mass, msig);
103  return cList;
104 }
105 
110  fill(ptr, level);
111  return ptr;
112 }
113 
115  static const pat::CompositeCandidate compCand;
116  static const string msg = "BPHPlusMinusCandidate incomplete, no composite available";
117  if (!chkSize(msg))
118  return compCand;
120 }
121 
123  static const string msg = "BPHPlusMinusCandidate incomplete, no cowboy/sailor classification";
124  return (chkSize(msg) && phiDiff());
125 }
126 
128  static const string msg = "BPHPlusMinusCandidate incomplete, no cowboy/sailor classification";
129  return (chkSize(msg) && !phiDiff());
130 }
131 
133  const vector<const reco::Candidate*>& dL = daughters();
134  int idPos = (dL.front()->charge() > 0 ? 0 : 1);
135  return reco::deltaPhi(dL[idPos]->phi(), dL[1 - idPos]->phi()) > 0;
136 }
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
Analysis-level particle class.
static std::vector< BPHPlusMinusConstCandPtr > build(const BPHRecoBuilder &builder, const std::string &nPos, const std::string &nNeg, double mass=-1, double msig=-1)
BPHPlusMinusCandidate(const edm::EventSetup *es)
std::vector< BPHRecoConstCandPtr > cList
const edm::EventSetup & c
const edm::EventSetup * getEventSetup() const
retrieve EventSetup
virtual void addK(const std::string &name, const reco::Candidate *daug, double mass=-1.0, double sigma=-1.0)
static bool chkSize(const T &cont, const std::string &msg)
virtual ParticleMass mass() const
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
virtual const std::vector< const reco::Candidate * > & daughters() const
const pat::CompositeCandidate & composite() const override
get a composite by the simple sum of simple particles
void add(const std::string &name, const reco::Candidate *daug, double mass=-1.0, double sigma=-1.0) override
void fill(BPHRecoCandidate *ptr, int level) const override
bool isCowboy() const
get cowboy/sailor classification
virtual int charge() const =0
electric charge
BPHRecoCandidate * clone(int level=-1) const override
Log< level::Warning, true > LogPrint
virtual const pat::CompositeCandidate & composite() const
get a composite by the simple sum of simple particles
tuple msg
Definition: mps_check.py:285
void filter(const std::string &name, const BPHRecoSelect &sel) const
pat::CompositeCandidate compCand
tuple level
Definition: testEve_cfg.py:47