CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CompositeCandidate.h
Go to the documentation of this file.
1 #ifndef Candidate_CompositeCandidate_h
2 #define Candidate_CompositeCandidate_h
4 #include <memory>
18 #include <string>
19 #include <vector>
20 
21 namespace reco {
22 
24  public:
27  typedef std::vector<std::string> role_collection;
31  template<typename P4>
32  CompositeCandidate( Charge q, const P4 & p4, const Point & vtx = Point( 0, 0, 0 ),
33  int pdgId = 0, int status = 0, bool integerCharge = true,
34  std::string name="") :
35  LeafCandidate( q, p4, vtx, pdgId, status, integerCharge ), name_(name) { }
37  explicit CompositeCandidate( const Candidate & p, const std::string& name="" );
39  explicit CompositeCandidate( const Candidate & p, const std::string& name, role_collection const & roles );
41  virtual ~CompositeCandidate();
43  std::string name() const { return name_;}
47  role_collection const & roles() const { return roles_; }
49  void setRoles( const role_collection & roles ) { roles_.clear(); roles_ = roles; }
51  virtual CompositeCandidate * clone() const;
53  virtual const_iterator begin() const;
55  virtual const_iterator end() const;
57  virtual iterator begin();
59  virtual iterator end();
61  virtual size_type numberOfDaughters() const;
63  virtual const Candidate * daughter( size_type ) const;
65  virtual Candidate * daughter( size_type );
66  // Get candidate based on role
67  virtual Candidate * daughter(const std::string& s );
68  virtual const Candidate * daughter(const std::string& s ) const;
70  void addDaughter( const Candidate &, const std::string& s="" );
72  void addDaughter( std::auto_ptr<Candidate>, const std::string& s="" );
74  void clearDaughters() { dau.clear(); }
75  // clear roles
76  void clearRoles() { roles_.clear(); }
77  // Apply the roles to the objects
78  void applyRoles();
80  virtual size_type numberOfMothers() const;
82  virtual const Candidate * mother( size_type i = 0 ) const;
83 
84  private:
85  // const iterator implementation
87  // iterator implementation
92  virtual bool overlap( const Candidate & ) const;
97  };
98 
99 }
100 
101 #endif
int Charge
electric charge type
Definition: Candidate.h:39
int i
Definition: DBlmapReader.cc:9
virtual size_type numberOfMothers() const
number of mothers (zero or one in most of but not all the cases)
std::string name_
candidate name
size_t size_type
Definition: Candidate.h:34
virtual double p() const GCC11_FINAL
magnitude of momentum vector
virtual const LorentzVector & p4() const GCC11_FINAL
four-momentum Lorentz vector
role_collection const & roles() const
get the roles
candidate::const_iterator const_iterator
Definition: Candidate.h:35
virtual int pdgId() const GCC11_FINAL
PDG identifier.
role_collection roles_
candidate roles
virtual const_iterator end() const
last daughter const_iterator
void setRoles(const role_collection &roles)
set the roles
candidate::const_iterator_imp_specific< daughters > const_iterator_imp_specific
CandidateCollection daughters
collection of daughters
virtual size_type numberOfDaughters() const
number of daughters
virtual bool overlap(const Candidate &) const
check overlap with another daughter
virtual ~CompositeCandidate()
destructor
virtual int status() const GCC11_FINAL
status word
virtual const_iterator begin() const
first daughter const_iterator
void clear()
Definition: OwnVector.h:370
CompositeCandidate(std::string name="")
default constructor
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
candidate::iterator iterator
Definition: Candidate.h:36
void clearDaughters()
clear daughters
void setName(std::string name)
set the name of the candidate
virtual const Candidate * daughter(size_type) const
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
math::XYZPoint Point
point in the space
Definition: Candidate.h:45
daughters dau
collection of daughters
virtual CompositeCandidate * clone() const
returns a clone of the candidate
std::string name() const
get the name of the candidate
std::vector< std::string > role_collection
virtual const Candidate * mother(size_type i=0) const
return pointer to mother
candidate::iterator_imp_specific< daughters > iterator_imp_specific
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:30