Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:15:35

0001 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHDecayToChargedXXbarBuilder_h
0002 #define HeavyFlavorAnalysis_SpecificDecay_BPHDecayToChargedXXbarBuilder_h
0003 /** \class BPHDecayToChargedXXbarBuilder
0004  *
0005  *  Description: 
0006  *     Class to build a decay to an oppositely charged 
0007  *     particle-antiparticle pair
0008  *
0009  *  \author Paolo Ronchese INFN Padova
0010  *
0011  */
0012 
0013 //----------------------
0014 // Base Class Headers --
0015 //----------------------
0016 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayGenericBuilderBase.h"
0017 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayGenericBuilder.h"
0018 
0019 //------------------------------------
0020 // Collaborating Class Declarations --
0021 //------------------------------------
0022 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoBuilder.h"
0023 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoCandidate.h"
0024 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHPlusMinusCandidate.h"
0025 
0026 class BPHEventSetupWrapper;
0027 class BPHParticlePtSelect;
0028 class BPHParticleEtaSelect;
0029 class BPHChi2Select;
0030 class BPHMassSelect;
0031 
0032 //---------------
0033 // C++ Headers --
0034 //---------------
0035 #include <string>
0036 #include <vector>
0037 
0038 //              ---------------------
0039 //              -- Class Interface --
0040 //              ---------------------
0041 
0042 class BPHDecayToChargedXXbarBuilder : public virtual BPHDecayGenericBuilderBase,
0043                                       public virtual BPHDecayGenericBuilder<BPHPlusMinusCandidate> {
0044 public:
0045   /** Constructor
0046    */
0047   BPHDecayToChargedXXbarBuilder(const BPHEventSetupWrapper& es,
0048                                 const std::string& dPosName,
0049                                 const std::string& dNegName,
0050                                 double daugMass,
0051                                 double daugSigma,
0052                                 const BPHRecoBuilder::BPHGenericCollection* posCollection,
0053                                 const BPHRecoBuilder::BPHGenericCollection* negCollection);
0054 
0055   // deleted copy constructor and assignment operator
0056   BPHDecayToChargedXXbarBuilder(const BPHDecayToChargedXXbarBuilder& x) = delete;
0057   BPHDecayToChargedXXbarBuilder& operator=(const BPHDecayToChargedXXbarBuilder& x) = delete;
0058 
0059   /** Destructor
0060    */
0061   ~BPHDecayToChargedXXbarBuilder() override = default;
0062 
0063   /** Operations
0064    */
0065 
0066   /// set cuts
0067   void setPtMin(double pt);
0068   void setEtaMax(double eta);
0069   void setDzMax(double dz);
0070 
0071   /// get current cuts
0072   double getPtMin() const { return ptMin; }
0073   double getEtaMax() const { return etaMax; }
0074   double getDzMax() const { return dzMax; }
0075 
0076 protected:
0077   double ptMin;
0078   double etaMax;
0079   double dzMax;
0080 
0081   /// build candidates
0082   void fillRecList() override;
0083 
0084 protected:
0085   std::string pName;
0086   std::string nName;
0087   double dMass;
0088   double dSigma;
0089 
0090   const BPHRecoBuilder::BPHGenericCollection* pCollection;
0091   const BPHRecoBuilder::BPHGenericCollection* nCollection;
0092 
0093 private:
0094   class Particle {
0095   public:
0096     Particle(const reco::Candidate* c, const reco::Track* tk, double x, double y, double z, double e)
0097         : cand(c), track(tk), px(x), py(y), pz(z), en(e) {}
0098     const reco::Candidate* cand;
0099     const reco::Track* track;
0100     double px;
0101     double py;
0102     double pz;
0103     double en;
0104   };
0105   void addParticle(const BPHRecoBuilder::BPHGenericCollection* collection, int charge, std::vector<Particle*>& list);
0106 };
0107 
0108 #endif