CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
JetConstituentSelector< T, C > Class Template Reference
Inheritance diagram for JetConstituentSelector< T, C >:
edm::stream::EDProducer<>

Public Types

using ConstituentsOutput = C
 
using JetsOutput = std::vector< T >
 
using ValueType = typename C::value_type
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

ConstituentsOutput::value_type const initptr (edm::Ptr< reco::Candidate > const &dau) const
 
template<>
edm::Ptr< pat::PackedCandidate > const initptr (edm::Ptr< reco::Candidate > const &dau) const
 
template<>
edm::Ptr< pat::PackedGenParticle > const initptr (edm::Ptr< reco::Candidate > const &dau) const
 
 JetConstituentSelector (edm::ParameterSet const &params)
 
void produce (edm::Event &iEvent, edm::EventSetup const &iSetup) override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

StringCutObjectSelector< T > const selector_
 
edm::EDGetTokenT< edm::View< T > > const srcToken_
 
bool unpackAK8_
 

Detailed Description

template<class T, typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
class JetConstituentSelector< T, C >

Definition at line 35 of file JetConstituentSelector.cc.

Member Typedef Documentation

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
using JetConstituentSelector< T, C >::ConstituentsOutput = C

Definition at line 39 of file JetConstituentSelector.cc.

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
using JetConstituentSelector< T, C >::JetsOutput = std::vector<T>

Definition at line 38 of file JetConstituentSelector.cc.

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
using JetConstituentSelector< T, C >::ValueType = typename C::value_type

Definition at line 40 of file JetConstituentSelector.cc.

Constructor & Destructor Documentation

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
JetConstituentSelector< T, C >::JetConstituentSelector ( edm::ParameterSet const &  params)
inline

Definition at line 42 of file JetConstituentSelector.cc.

References edm::ParameterSet::getParameter(), JetConstituentSelector< T, C >::selector_, AlCaHLTBitMon_QueryRunRegistry::string, and JetConstituentSelector< T, C >::unpackAK8_.

42  :
43  srcToken_{consumes<edm::View<T>>(params.getParameter<edm::InputTag>("src"))},
44  selector_{params.getParameter<std::string>("cut")},
45  unpackAK8_{params.getParameter<bool>("unpackAK8")}
46  {
47  produces<JetsOutput>();
48  produces<ConstituentsOutput>("constituents");
49  }
StringCutObjectSelector< T > const selector_
edm::EDGetTokenT< edm::View< T > > const srcToken_

Member Function Documentation

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
static void JetConstituentSelector< T, C >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
inlinestatic

Definition at line 51 of file JetConstituentSelector.cc.

References edm::ParameterSetDescription::add(), edm::ConfigurationDescriptions::addDefault(), and AlCaHLTBitMon_QueryRunRegistry::string.

52  {
54  desc.add<edm::InputTag>("src")->setComment("InputTag used for retrieving jets in event.");
55  desc.add<std::string>("cut")->setComment("Cut used by which to select jets. For example:\n"
56  " \"pt > 100.0 && abs(rapidity()) < 2.4\".");
57  desc.add<bool>("unpackAK8", false)->setComment("Assume the jets are AK8 jets from miniAOD and need to be unpacked.");
58 
59  // addDefault must be used here instead of add unless this function is specialized
60  // for different sets of template parameter types. Each specialization would need
61  // a different module label. Otherwise the generated cfi filenames will conflict
62  // for the different plugins.
63  descriptions.addDefault(desc);
64  }
void addDefault(ParameterSetDescription const &psetDescription)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
ConstituentsOutput::value_type const JetConstituentSelector< T, C >::initptr ( edm::Ptr< reco::Candidate > const &  dau) const
inline

Definition at line 67 of file JetConstituentSelector.cc.

Referenced by JetConstituentSelector< T, C >::produce().

67  {
68  return typename ConstituentsOutput::value_type( dau, dau );
69  }
template<>
edm::Ptr< pat::PackedCandidate > const JetConstituentSelector< pat::Jet, std::vector< edm::Ptr< pat::PackedCandidate > > >::initptr ( edm::Ptr< reco::Candidate > const &  dau) const

Definition at line 122 of file JetConstituentSelector.cc.

122  {
123  edm::Ptr<pat::PackedCandidate> retval( dau );
124  return retval;
125 }
template<>
edm::Ptr< pat::PackedGenParticle > const JetConstituentSelector< reco::GenJet, std::vector< edm::Ptr< pat::PackedGenParticle > > >::initptr ( edm::Ptr< reco::Candidate > const &  dau) const

Definition at line 129 of file JetConstituentSelector.cc.

129  {
130  edm::Ptr<pat::PackedGenParticle> retval( dau );
131  return retval;
132 }
template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
void JetConstituentSelector< T, C >::produce ( edm::Event iEvent,
edm::EventSetup const &  iSetup 
)
inlineoverride

Definition at line 71 of file JetConstituentSelector.cc.

References edm::Event::getByToken(), JetConstituentSelector< T, C >::initptr(), metsig::jet, fwrapper::jets, eostools::move(), edm::Event::put(), JetConstituentSelector< T, C >::selector_, JetConstituentSelector< T, C >::srcToken_, and JetConstituentSelector< T, C >::unpackAK8_.

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

72  {
73  auto jets = std::make_unique<JetsOutput>();
74  auto candsOut = std::make_unique<ConstituentsOutput>();
75 
77  iEvent.getByToken(srcToken_, h_jets);
78 
79 
80  // Now set the Ptrs with the orphan handles.
81  for (auto const& jet : *h_jets) {
82  // Check the selection
83  if (selector_(jet)) {
84  // Add the jets that pass to the output collection
85  jets->push_back(jet);
86 
87  if ( !unpackAK8_) {
88  for (unsigned int ida {}; ida < jet.numberOfDaughters(); ++ida) {
89  candsOut->emplace_back( initptr(jet.daughterPtr(ida)) );
90  }
91  }
92  else {
93  // Special case for AK8 pat::Jets from miniAOD, which store the subjets in the first two
94  // daughter links, and then the rest of the daughters that do not satisfy the jet groomer.
95  for (unsigned int ida {}; ida < jet.numberOfDaughters(); ++ida) {
96  auto const & dau = jet.daughterPtr(ida);
97  if ( dau->numberOfDaughters() == 0 ) {
98  candsOut->emplace_back( initptr(dau) );
99  } else {
100  auto const * dauJet = dynamic_cast<pat::Jet const *>(dau.get());
101  for ( unsigned int jda {}; jda < dauJet->numberOfDaughters(); ++jda ) {
102  candsOut->emplace_back( initptr(dauJet->daughterPtr(jda)) );
103  }
104  }
105  }
106  }
107  }
108  }
109 
110  iEvent.put(std::move(jets));
111  iEvent.put(std::move(candsOut), "constituents");
112  }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:136
StringCutObjectSelector< T > const selector_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
vector< PseudoJet > jets
edm::EDGetTokenT< edm::View< T > > const srcToken_
Analysis-level calorimeter jet class.
Definition: Jet.h:80
def move(src, dest)
Definition: eostools.py:510
ConstituentsOutput::value_type const initptr(edm::Ptr< reco::Candidate > const &dau) const

Member Data Documentation

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
StringCutObjectSelector<T> const JetConstituentSelector< T, C >::selector_
private
template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
edm::EDGetTokenT<edm::View<T> > const JetConstituentSelector< T, C >::srcToken_
private

Definition at line 115 of file JetConstituentSelector.cc.

Referenced by JetConstituentSelector< T, C >::produce().

template<class T , typename C = std::vector<typename T::ConstituentTypeFwdPtr>>
bool JetConstituentSelector< T, C >::unpackAK8_
private