CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
BPHDecayMomentum.h
Go to the documentation of this file.
1 #ifndef HeavyFlavorAnalysis_RecoDecay_BPHDecayMomentum_h
2 #define HeavyFlavorAnalysis_RecoDecay_BPHDecayMomentum_h
3 
13 //----------------------
14 // Base Class Headers --
15 //----------------------
16 
17 //------------------------------------
18 // Collaborating Class Declarations --
19 //------------------------------------
22 class BPHRecoBuilder;
23 
24 //---------------
25 // C++ Headers --
26 //---------------
27 #include <vector>
28 #include <map>
29 #include <string>
30 
31 // ---------------------
32 // -- Class Interface --
33 // ---------------------
34 
36  friend class BPHRecoBuilder;
37 
38 public:
42  // deleted copy constructor and assignment operator
43  BPHDecayMomentum(const BPHDecayMomentum& x) = delete;
44  BPHDecayMomentum& operator=(const BPHDecayMomentum& x) = delete;
45 
48  virtual ~BPHDecayMomentum();
49 
53  virtual const pat::CompositeCandidate& composite() const;
55 
60  virtual const std::vector<std::string>& daugNames() const;
61 
66  virtual const std::vector<std::string>& compNames() const;
67 
73  virtual const std::vector<const reco::Candidate*>& daughters() const;
74 
81  virtual const std::vector<const reco::Candidate*>& daughFull() const;
82 
84  virtual const reco::Candidate* originalReco(const reco::Candidate* daug) const;
85 
90  virtual const std::vector<BPHRecoConstCandPtr>& daughComp() const;
91 
94  virtual const reco::Candidate* getDaug(const std::string& name) const;
95 
98  virtual BPHRecoConstCandPtr getComp(const std::string& name) const;
99 
100 protected:
101  struct Component {
103  double mass;
104  double msig;
106  };
107 
108  // constructors
110  BPHDecayMomentum(const std::map<std::string, Component>& daugMap);
111  BPHDecayMomentum(const std::map<std::string, Component>& daugMap,
112  const std::map<std::string, BPHRecoConstCandPtr> compMap);
113 
114  // get an object filled in the constructor
115  // to be used in the creation of other bases of BPHRecoCandidate
116  const std::vector<Component>& componentList() const;
117 
120  virtual void addP(const std::string& name, const reco::Candidate* daug, double mass = -1.0);
122  virtual void addP(const std::string& name, const BPHRecoConstCandPtr& comp);
123 
124  // utility function used to cash reconstruction results
125  virtual void setNotUpdated() const;
126 
127  // function doing the job to clone reconstructed decays:
128  // copy stable particles and clone cascade decays up to chosen level
129  virtual void fill(BPHRecoCandidate* ptr, int level) const = 0;
130 
131 private:
132  // object filled in the constructor
133  // to be used in the creation of other bases of BPHRecoCandidate
134  std::vector<Component> compList;
135 
136  // names used for simple and previously reconstructed particles
137  std::vector<std::string> nList;
138  std::vector<std::string> nComp;
139 
140  // pointers to simple and previously reconstructed particles
141  // (clones stored for simple particles)
142  std::vector<const reco::Candidate*> dList;
143  std::vector<BPHRecoConstCandPtr> cList;
144 
145  // maps linking names to decay products
146  // (simple and previously reconstructed particles)
147  std::map<std::string, const reco::Candidate*> dMap;
148  std::map<std::string, BPHRecoConstCandPtr> cMap;
149 
150  // map linking cloned particles to original ones
151  std::map<const reco::Candidate*, const reco::Candidate*> clonesMap;
152 
153  // reconstruction results cache
154  mutable bool oldMom;
155  mutable std::vector<const reco::Candidate*> dFull;
157 
158  // create clones of simple particles, store them and their names
159  void clonesList(const std::map<std::string, Component>& daugMap);
160 
161  // fill lists of previously reconstructed particles and their names
162  // and retrieve cascade decay products
163  void dCompList();
164 
165  // compute the total momentum of simple particles, produced
166  // directly or in cascade decays
167  virtual void sumMomentum(const std::vector<const reco::Candidate*> dl) const;
168 
169  // recursively fill the list of simple particles, produced
170  // directly or in cascade decays
171  virtual void fillDaug(std::vector<const reco::Candidate*>& ad) const;
172 
173  // compute the total momentum and cache it
174  virtual void computeMomentum() const;
175 };
176 
177 #endif
Analysis-level particle class.
const reco::Candidate * cand
std::vector< BPHRecoConstCandPtr > cList
virtual void sumMomentum(const std::vector< const reco::Candidate * > dl) const
BPHGenericPtr< const BPHRecoCandidate >::type BPHRecoConstCandPtr
virtual void setNotUpdated() const
virtual void computeMomentum() const
virtual ~BPHDecayMomentum()
std::map< std::string, const reco::Candidate * > dMap
virtual const std::vector< const reco::Candidate * > & daughters() const
std::vector< const reco::Candidate * > dList
const std::vector< Component > & componentList() const
std::vector< Component > compList
BPHDecayMomentum & operator=(const BPHDecayMomentum &x)=delete
std::vector< const reco::Candidate * > dFull
virtual void addP(const std::string &name, const reco::Candidate *daug, double mass=-1.0)
virtual void fillDaug(std::vector< const reco::Candidate * > &ad) const
virtual const reco::Candidate * originalReco(const reco::Candidate *daug) const
get the original particle from the clone
virtual const pat::CompositeCandidate & composite() const
get a composite by the simple sum of simple particles
void clonesList(const std::map< std::string, Component > &daugMap)
std::map< const reco::Candidate *, const reco::Candidate * > clonesMap
pat::CompositeCandidate compCand
virtual BPHRecoConstCandPtr getComp(const std::string &name) const
virtual const std::vector< BPHRecoConstCandPtr > & daughComp() const
virtual void fill(BPHRecoCandidate *ptr, int level) const =0
virtual const std::vector< const reco::Candidate * > & daughFull() const
virtual const std::vector< std::string > & compNames() const
std::vector< std::string > nList
tuple level
Definition: testEve_cfg.py:47
virtual const std::vector< std::string > & daugNames() const
virtual const reco::Candidate * getDaug(const std::string &name) const
std::vector< std::string > nComp
std::map< std::string, BPHRecoConstCandPtr > cMap