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>
30  CompositeCandidate( Charge q, const P4 & p4, const Point & vtx = Point( 0, 0, 0 ),
31  int pdgId = 0, int status = 0, bool integerCharge = true,
32  std::string name="") :
33  LeafCandidate( q, p4, vtx, pdgId, status, integerCharge ), name_(name) { }
35  explicit CompositeCandidate( const Candidate & p, const std::string& name="" );
37  explicit CompositeCandidate( const Candidate & p, const std::string& name, role_collection const & roles );
39  ~CompositeCandidate() override;
41  std::string name() const { return name_;}
43  void setName(std::string name) { name_ = name;}
45  role_collection const & roles() const { return roles_; }
47  void setRoles( const role_collection & roles ) { roles_.clear(); roles_ = roles; }
49  CompositeCandidate * clone() const override;
51  size_type numberOfDaughters() const override;
53  const Candidate * daughter( size_type ) const override;
55  Candidate * daughter( size_type ) override;
56  // Get candidate based on role
57  Candidate * daughter(const std::string& s ) override;
58  const Candidate * daughter(const std::string& s ) const override;
60  void addDaughter( const Candidate &, const std::string& s="" );
62  void addDaughter( std::unique_ptr<Candidate>, const std::string& s="" );
64  void clearDaughters() { dau.clear(); }
65  // clear roles
66  void clearRoles() { roles_.clear(); }
67  // Apply the roles to the objects
68  void applyRoles();
70  size_type numberOfMothers() const override;
72  const Candidate * mother( size_type i = 0 ) const override;
73 
74  private:
76  daughters dau;
78  bool overlap( const Candidate & ) const override;
82  role_collection roles_;
83  };
84 
85 }
86 
87 #endif
~CompositeCandidate() override
destructor
int pdgId() const final
PDG identifier.
int Charge
electric charge type
Definition: Candidate.h:35
std::string name_
candidate name
size_t size_type
Definition: Candidate.h:30
role_collection const & roles() const
get the roles
CompositeCandidate * clone() const override
returns a clone of the candidate
role_collection roles_
candidate roles
void setRoles(const role_collection &roles)
set the roles
const Candidate * mother(size_type i=0) const override
return pointer to mother
CandidateCollection daughters
collection of daughters
void clear()
Definition: OwnVector.h:445
CompositeCandidate(std::string name="")
default constructor
const LorentzVector & p4() const final
four-momentum Lorentz vector
Definition: LeafCandidate.h:99
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
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
double p() const final
magnitude of momentum vector
void clearDaughters()
clear daughters
void setName(std::string name)
set the name of the candidate
fixed size matrix
int status() const final
status word
math::XYZPoint Point
point in the space
Definition: Candidate.h:41
daughters dau
collection of daughters
size_type numberOfDaughters() const override
number of daughters
std::string name() const
get the name of the candidate
bool overlap(const Candidate &) const override
check overlap with another daughter
std::vector< std::string > role_collection
size_type numberOfMothers() const override
number of mothers (zero or one in most of but not all the cases)
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:27