Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-07-08 01:45:54

0001 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHDecayToResTrkBuilder_h
0002 #define HeavyFlavorAnalysis_SpecificDecay_BPHDecayToResTrkBuilder_h
0003 /** \class BPHDecayToResTrkBuilder
0004  *
0005  *  Description: 
0006  *     Class to build a particle decaying to a particle, decaying itself
0007  *     in cascade, and an additional track, for generic particle types
0008  *
0009  *  \author Paolo Ronchese INFN Padova
0010  *
0011  */
0012 
0013 //----------------------
0014 // Base Class Headers --
0015 //----------------------
0016 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayToResTrkBuilderBase.h"
0017 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayConstrainedBuilder.h"
0018 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecaySpecificBuilder.h"
0019 
0020 //------------------------------------
0021 // Collaborating Class Declarations --
0022 //------------------------------------
0023 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHParticlePtSelect.h"
0024 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHParticleEtaSelect.h"
0025 
0026 #include "FWCore/Framework/interface/EventSetup.h"
0027 
0028 class BPHEventSetupWrapper;
0029 class BPHParticleNeutralVeto;
0030 
0031 //---------------
0032 // C++ Headers --
0033 //---------------
0034 #include <string>
0035 #include <vector>
0036 
0037 //              ---------------------
0038 //              -- Class Interface --
0039 //              ---------------------
0040 
0041 template <class ProdType, class ResType>
0042 class BPHDecayToResTrkBuilder : public BPHDecayToResTrkBuilderBase,
0043                                 public BPHDecayConstrainedBuilder<ProdType, ResType>,
0044                                 public BPHDecaySpecificBuilder<ProdType> {
0045 public:
0046   using typename BPHDecayGenericBuilder<ProdType>::prod_ptr;
0047   using typename BPHDecayConstrainedBuilder<ProdType, ResType>::res_ptr;
0048 
0049   /** Constructor
0050    */
0051   BPHDecayToResTrkBuilder(const BPHEventSetupWrapper& es,
0052                           const std::string& resName,
0053                           double resMass,
0054                           double resWidth,
0055                           const std::vector<res_ptr>& resCollection,
0056                           const std::string& trkName,
0057                           double trkMass,
0058                           double trkSigma,
0059                           const BPHRecoBuilder::BPHGenericCollection* trkCollection)
0060       : BPHDecayGenericBuilderBase(es, nullptr),
0061         BPHDecayConstrainedBuilderBase(resName, resMass, resWidth),
0062         BPHDecayToResTrkBuilderBase(trkName, trkMass, trkSigma, trkCollection),
0063         BPHDecayConstrainedBuilder<ProdType, ResType>(resCollection) {}
0064 
0065   // deleted copy constructor and assignment operator
0066   BPHDecayToResTrkBuilder(const BPHDecayToResTrkBuilder& x) = delete;
0067   BPHDecayToResTrkBuilder& operator=(const BPHDecayToResTrkBuilder& x) = delete;
0068 
0069   /** Destructor
0070    */
0071   ~BPHDecayToResTrkBuilder() override = default;
0072 
0073 protected:
0074   BPHDecayToResTrkBuilder(const std::vector<res_ptr>& resCollection,
0075                           const std::string& trkName,
0076                           double trkMass,
0077                           double trkSigma,
0078                           const BPHRecoBuilder::BPHGenericCollection* trkCollection)
0079       : BPHDecayToResTrkBuilderBase(trkName, trkMass, trkSigma, trkCollection),
0080         BPHDecayConstrainedBuilder<ProdType, ResType>(resCollection) {}
0081 };
0082 
0083 #endif