Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:21:47

0001 #ifndef RecoTauTag_RecoTau_PFRecoTauChargedHadronPlugins_h
0002 #define RecoTauTag_RecoTau_PFRecoTauChargedHadronPlugins_h
0003 
0004 /*
0005  * PFRecoTauChargedHadronPlugins
0006  *
0007  * Author: Christian Veelken, LLR
0008  *
0009  * Base classes for plugins that construct and rank PFRecoTauChargedHadron
0010  * objects from a jet.  The builder plugin has an abstract function
0011  * that takes a Jet and returns a list of reconstructed photons in
0012  * the jet.
0013  *
0014  * The quality plugin has an abstract function that takes a reference
0015  * to a PFRecoTauChargedHadron and returns a double indicating the quality of
0016  * the candidate.  Lower numbers are better.
0017  *
0018  */
0019 
0020 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0021 #include "FWCore/Framework/interface/ConsumesCollector.h"
0022 #include "RecoTauTag/RecoTau/interface/RecoTauPluginsCommon.h"
0023 
0024 #include <vector>
0025 
0026 namespace reco {
0027 
0028   // Forward declarations
0029   class Jet;
0030   class PFRecoTauChargedHadron;
0031 
0032   namespace tau {
0033 
0034     class PFRecoTauChargedHadronBuilderPlugin : public RecoTauEventHolderPlugin {
0035     public:
0036       // Return a vector of pointers
0037       typedef std::vector<std::unique_ptr<PFRecoTauChargedHadron>> ChargedHadronVector;
0038       typedef ChargedHadronVector return_type;
0039       explicit PFRecoTauChargedHadronBuilderPlugin(const edm::ParameterSet& pset, edm::ConsumesCollector&& iC)
0040           : RecoTauEventHolderPlugin(pset) {}
0041       ~PFRecoTauChargedHadronBuilderPlugin() override {}
0042       /// Build a collection of chargedHadrons from objects in the input jet
0043       virtual return_type operator()(const Jet&) const = 0;
0044       /// Hook called at the beginning of the event.
0045       void beginEvent() override {}
0046     };
0047 
0048     class PFRecoTauChargedHadronQualityPlugin : public RecoTauNamedPlugin {
0049     public:
0050       explicit PFRecoTauChargedHadronQualityPlugin(const edm::ParameterSet& pset) : RecoTauNamedPlugin(pset) {}
0051       ~PFRecoTauChargedHadronQualityPlugin() override {}
0052       /// Return a number indicating the quality of this chargedHadron
0053       virtual double operator()(const PFRecoTauChargedHadron&) const = 0;
0054     };
0055 
0056   }  // namespace tau
0057 }  // namespace reco
0058 
0059 #include "FWCore/PluginManager/interface/PluginFactory.h"
0060 
0061 typedef edmplugin::PluginFactory<reco::tau::PFRecoTauChargedHadronQualityPlugin*(const edm::ParameterSet&)>
0062     PFRecoTauChargedHadronQualityPluginFactory;
0063 typedef edmplugin::PluginFactory<reco::tau::PFRecoTauChargedHadronBuilderPlugin*(const edm::ParameterSet&,
0064                                                                                  edm::ConsumesCollector&& iC)>
0065     PFRecoTauChargedHadronBuilderPluginFactory;
0066 
0067 #endif