CMS 3D CMS Logo

CompositeCandidate.h
Go to the documentation of this file.
1 #ifndef Candidate_CompositeCandidate_h
2 #define Candidate_CompositeCandidate_h
4 #include <memory>
16 #include <string>
17 #include <vector>
18 
19 namespace reco {
20 
22  public:
25  typedef std::vector<std::string> role_collection;
29  template <typename P4>
31  const P4& p4,
32  const Point& vtx = Point(0, 0, 0),
33  int pdgId = 0,
34  int status = 0,
35  bool integerCharge = true,
36  std::string name = "")
37  : LeafCandidate(q, p4, vtx, pdgId, status, integerCharge), name_(name) {}
39  explicit CompositeCandidate(const Candidate& p, const std::string& name = "");
41  explicit CompositeCandidate(const Candidate& p, const std::string& name, role_collection const& roles);
43  ~CompositeCandidate() override;
45  std::string name() const { return name_; }
49  role_collection const& roles() const { return roles_; }
52  roles_.clear();
53  roles_ = roles;
54  }
56  CompositeCandidate* clone() const override;
58  size_type numberOfDaughters() const override;
60  const Candidate* daughter(size_type) const override;
62  Candidate* daughter(size_type) override;
63  // Get candidate based on role
64  Candidate* daughter(const std::string& s) override;
65  const Candidate* daughter(const std::string& s) const override;
67  void addDaughter(const Candidate&, const std::string& s = "");
69  void addDaughter(std::unique_ptr<Candidate>, const std::string& s = "");
71  void clearDaughters() { dau.clear(); }
72  // clear roles
73  void clearRoles() { roles_.clear(); }
74  // Apply the roles to the objects
75  void applyRoles();
77  size_type numberOfMothers() const override;
79  const Candidate* mother(size_type i = 0) const override;
80 
81  private:
85  bool overlap(const Candidate&) const override;
90  };
91 
92 } // namespace reco
93 
94 #endif
~CompositeCandidate() override
destructor
int Charge
electric charge type
Definition: Candidate.h:34
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
std::string name_
candidate name
size_t size_type
Definition: Candidate.h:29
role_collection roles_
candidate roles
int status() const final
status word
void setRoles(const role_collection &roles)
set the roles
CandidateCollection daughters
collection of daughters
const LorentzVector & p4() const final
four-momentum Lorentz vector
int pdgId() const final
PDG identifier.
bool overlap(const Candidate &) const override
check overlap with another daughter
double p() const final
magnitude of momentum vector
const Candidate * mother(size_type i=0) const override
return pointer to mother
size_type numberOfMothers() const override
number of mothers (zero or one in most of but not all the cases)
role_collection const & roles() const
get the roles
void clear()
Definition: OwnVector.h:481
CompositeCandidate(std::string name="")
default constructor
std::string name() const
get the name of the candidate
void addDaughter(const Candidate &, const std::string &s="")
add a clone of the passed candidate as daughter
CompositeCandidate(Charge q, const P4 &p4, const Point &vtx=Point(0, 0, 0), int pdgId=0, int status=0, bool integerCharge=true, std::string name="")
constructor from values
CompositeCandidate * clone() const override
returns a clone of the candidate
void clearDaughters()
clear daughters
void setName(std::string name)
set the name of the candidate
size_type numberOfDaughters() const override
number of daughters
fixed size matrix
Structure Point Contains parameters of Gaussian fits to DMRs.
daughters dau
collection of daughters
std::vector< std::string > role_collection
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:27