CMS 3D CMS Logo

NamedCandCombinerBase.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_CandUtils_CandCombinerBase_h
00002 #define PhysicsTools_CandUtils_CandCombinerBase_h
00003 
00008 #include "DataFormats/Candidate/interface/OverlapChecker.h"
00009 #include "DataFormats/Candidate/interface/NamedCompositeCandidate.h"
00010 #include <vector>
00011 #include <string>
00012 
00013 class NamedCandCombinerBase {
00014 public:
00015   typedef std::vector<std::string>  string_coll;
00017   NamedCandCombinerBase(std::string name);
00019   NamedCandCombinerBase(std::string name, int, int);
00021   NamedCandCombinerBase(std::string name, int, int, int);
00023   NamedCandCombinerBase(std::string name, int, int, int, int);
00025   NamedCandCombinerBase(std::string name, bool checkCharge, const std::vector <int> &);
00027   virtual ~NamedCandCombinerBase();
00029   std::auto_ptr<reco::NamedCompositeCandidateCollection> 
00030   combine(const std::vector<reco::CandidatePtrVector> &, string_coll const &) const;
00032   std::auto_ptr<reco::NamedCompositeCandidateCollection> 
00033   combine(const reco::CandidatePtrVector &, 
00034           string_coll const &) const;
00036   std::auto_ptr<reco::NamedCompositeCandidateCollection> 
00037   combine(const reco::CandidatePtrVector &, 
00038           const reco::CandidatePtrVector &, 
00039           string_coll const &) const;
00041   std::auto_ptr<reco::NamedCompositeCandidateCollection> 
00042   combine(const reco::CandidatePtrVector &, 
00043           const reco::CandidatePtrVector &, 
00044           const reco::CandidatePtrVector &, 
00045           string_coll const &) const;
00047   std::auto_ptr<reco::NamedCompositeCandidateCollection> 
00048   combine(const reco::CandidatePtrVector &, 
00049           const reco::CandidatePtrVector &, 
00050           const reco::CandidatePtrVector &, 
00051           const reco::CandidatePtrVector &, 
00052           string_coll const &) const;
00053 
00054 private:
00056   bool preselect(const reco::Candidate &, const reco::Candidate &) const;
00058   void combine(reco::NamedCompositeCandidate &, 
00059                const reco::CandidatePtr &, 
00060                const reco::CandidatePtr &,
00061                std::string,
00062                std::string ) const;
00064   typedef std::vector<std::pair<std::pair<reco::CandidatePtr, size_t>, 
00065                                 std::vector<reco::CandidatePtrVector>::const_iterator> > CandStack;
00066   typedef std::vector<int> ChargeStack;
00068   void combine(size_t collectionIndex, CandStack &, ChargeStack &,
00069                string_coll const & names,
00070                std::vector<reco::CandidatePtrVector>::const_iterator begin,
00071                std::vector<reco::CandidatePtrVector>::const_iterator end,
00072                std::auto_ptr<reco::NamedCompositeCandidateCollection> & comps
00073                ) const;
00075   virtual bool select(const reco::Candidate &) const = 0;
00077   virtual bool selectPair(const reco::Candidate & c1, const reco::Candidate & c2) const = 0;
00079   virtual void setup(reco::NamedCompositeCandidate &) const = 0;
00081   virtual void addDaughter(reco::NamedCompositeCandidate & cmp, const reco::CandidatePtr & c, std::string name) const = 0;
00083   bool checkCharge_;
00085   std::vector<int> dauCharge_;
00087   OverlapChecker overlap_;
00089   std::string name_;
00090 };
00091 
00092 #endif

Generated on Tue Jun 9 17:41:04 2009 for CMSSW by  doxygen 1.5.4