CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | Static Private Attributes
citk::PFIsolationSumProducer Class Reference
Inheritance diagram for citk::PFIsolationSumProducer:
edm::stream::EDProducer<>

Public Member Functions

void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) final
 
 PFIsolationSumProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) final
 
 ~PFIsolationSumProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Types

typedef edm::View< reco::CandidateCandView
 
typedef std::vector< std::unique_ptr< IsolationConeDefinitionBase > > IsoTypes
 
typedef std::unordered_map< std::string, int > TypeMap
 

Private Attributes

edm::EDGetTokenT< CandView_isolate_with
 
std::array< IsoTypes, kNPFTypes_isolation_types
 
std::array< std::vector< std::string >, kNPFTypes_product_names
 
edm::EDGetTokenT< CandView_to_isolate
 
const TypeMap _typeMap
 

Static Private Attributes

static constexpr unsigned kNPFTypes = 8
 

Additional Inherited Members

- 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
 

Detailed Description

Definition at line 36 of file CITKPFIsolationSumProducer.cc.

Member Typedef Documentation

◆ CandView

Definition at line 53 of file CITKPFIsolationSumProducer.cc.

◆ IsoTypes

typedef std::vector<std::unique_ptr<IsolationConeDefinitionBase> > citk::PFIsolationSumProducer::IsoTypes
private

Definition at line 52 of file CITKPFIsolationSumProducer.cc.

◆ TypeMap

typedef std::unordered_map<std::string, int> citk::PFIsolationSumProducer::TypeMap
private

Definition at line 51 of file CITKPFIsolationSumProducer.cc.

Constructor & Destructor Documentation

◆ PFIsolationSumProducer()

citk::PFIsolationSumProducer::PFIsolationSumProducer ( const edm::ParameterSet c)

Definition at line 67 of file CITKPFIsolationSumProducer.cc.

68  : _typeMap({{"h+", 1}, {"h0", 5}, {"gamma", 4}, {"electron", 2}, {"muon", 3}, {"HFh", 6}, {"HFgamma", 7}}) {
69  _to_isolate = consumes<CandView>(c.getParameter<edm::InputTag>("srcToIsolate"));
70  _isolate_with = consumes<CandView>(c.getParameter<edm::InputTag>("srcForIsolationCone"));
71  const std::vector<edm::ParameterSet>& isoDefs = c.getParameterSetVector("isolationConeDefinitions");
72  for (const auto& isodef : isoDefs) {
73  const std::string& name = isodef.getParameter<std::string>("isolationAlgo");
74  const float coneSize = isodef.getParameter<double>("coneSize");
75  char buf[50];
76  sprintf(buf, "DR%.2f", coneSize);
77  std::string coneName(buf);
78  auto decimal = coneName.find('.');
79  if (decimal != std::string::npos)
80  coneName.erase(decimal, 1);
81  const std::string& isotype = isodef.getParameter<std::string>("isolateAgainst");
82  auto theisolator = CITKIsolationConeDefinitionFactory::get()->create(name, isodef);
83  theisolator->setConsumes(consumesCollector());
84  const auto thetype = _typeMap.find(isotype);
85  if (thetype == _typeMap.end()) {
86  throw cms::Exception("InvalidIsolationType") << "Isolation type: " << isotype << " is not available in the "
87  << "list of allowed isolations!.";
88  }
89  const std::string dash("-");
90  std::string pname = isotype + dash + coneName + dash + theisolator->additionalCode();
91  _product_names[thetype->second].emplace_back(pname);
92  produces<edm::ValueMap<float>>(pname);
93  _isolation_types[thetype->second].emplace_back(std::move(theisolator));
94  }
95  }

◆ ~PFIsolationSumProducer()

citk::PFIsolationSumProducer::~PFIsolationSumProducer ( )
inlineoverride

Definition at line 40 of file CITKPFIsolationSumProducer.cc.

40 {}

Member Function Documentation

◆ beginLuminosityBlock()

void citk::PFIsolationSumProducer::beginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup es 
)
final

Definition at line 97 of file CITKPFIsolationSumProducer.cc.

97  {
98  for (const auto& isolators_for_type : _isolation_types) {
99  for (const auto& isolator : isolators_for_type) {
100  isolator->getEventSetupInfo(es);
101  }
102  }
103  }

References _isolation_types.

◆ fillDescriptions()

void citk::PFIsolationSumProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 164 of file CITKPFIsolationSumProducer.cc.

164  {
166  iDesc.setComment("isolation sum producer");
167 
168  iDesc.add<edm::InputTag>("srcToIsolate", edm::InputTag("no default"))
169  ->setComment("calculate isolation for this collection");
170  iDesc.add<edm::InputTag>("srcForIsolationCone", edm::InputTag("no default"))
171  ->setComment("collection for the isolation calculation: like particleFlow ");
172 
173  edm::ParameterSetDescription descIsoConeDefinitions;
174  descIsoConeDefinitions.add<std::string>("isolationAlgo", "no default");
175  descIsoConeDefinitions.add<double>("coneSize", 0.3);
176  descIsoConeDefinitions.add<std::string>("isolateAgainst", "no default");
177  descIsoConeDefinitions.add<std::vector<unsigned>>("miniAODVertexCodes", {2, 3});
178  descIsoConeDefinitions.addOptional<double>("VetoConeSizeBarrel", 0.0);
179  descIsoConeDefinitions.addOptional<double>("VetoConeSizeEndcaps", 0.0);
180  descIsoConeDefinitions.addOptional<int>("vertexIndex", 0);
181  descIsoConeDefinitions.addOptional<edm::InputTag>("particleBasedIsolation", edm::InputTag("no default"))
182  ->setComment("map for footprint removal that is used for photons");
183 
184  std::vector<edm::ParameterSet> isolationConeDefinitions;
185  edm::ParameterSet chargedHadrons, neutralHadrons, photons;
186  isolationConeDefinitions.push_back(chargedHadrons);
187  isolationConeDefinitions.push_back(neutralHadrons);
189  iDesc.addVPSet("isolationConeDefinitions", descIsoConeDefinitions, isolationConeDefinitions);
190 
191  descriptions.add("CITKPFIsolationSumProducer", iDesc);
192  }

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addOptional(), edm::ParameterSetDescription::addVPSet(), HLT_2018_cff::InputTag, egmElectronIsolationPUPPI_cff::isolationConeDefinitions, BPHMonitor_cfi::photons, edm::ParameterSetDescription::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

◆ produce()

void citk::PFIsolationSumProducer::produce ( edm::Event ev,
const edm::EventSetup es 
)
final

Definition at line 105 of file CITKPFIsolationSumProducer.cc.

105  {
106  typedef std::unique_ptr<edm::ValueMap<float>> product_type;
107  typedef std::vector<float> product_values;
108  edm::Handle<CandView> to_isolate;
109  edm::Handle<CandView> isolate_with;
110  ev.getByToken(_to_isolate, to_isolate);
111  ev.getByToken(_isolate_with, isolate_with);
112  // the list of value vectors indexed as "to_isolate"
113  std::array<std::vector<product_values>, kNPFTypes> the_values;
114  // get extra event info and setup value cache
115  unsigned i = 0;
116  for (const auto& isolators_for_type : _isolation_types) {
117  the_values[i++].resize(isolators_for_type.size());
118  for (const auto& isolator : isolators_for_type) {
119  isolator->getEventInfo(ev);
120  }
121  }
122  reco::PFCandidate helper; // to translate pdg id to type
123  // loop over the candidates we are isolating and fill the values
124  for (size_t c = 0; c < to_isolate->size(); ++c) {
125  auto cand_to_isolate = to_isolate->ptrAt(c);
126  std::array<std::vector<float>, kNPFTypes> cand_values;
127  unsigned k = 0;
128  for (const auto& isolators_for_type : _isolation_types) {
129  cand_values[k].resize(isolators_for_type.size());
130  for (auto& value : cand_values[k])
131  value = 0.0;
132  ++k;
133  }
134  for (size_t ic = 0; ic < isolate_with->size(); ++ic) {
135  auto isocand = isolate_with->ptrAt(ic);
136  auto isotype = helper.translatePdgIdToType(isocand->pdgId());
137  const auto& isolations = _isolation_types[isotype];
138  for (unsigned i = 0; i < isolations.size(); ++i) {
139  if (isolations[i]->isInIsolationCone(cand_to_isolate, isocand)) {
140  cand_values[isotype][i] += isocand->pt();
141  }
142  }
143  }
144  // add this candidate to isolation value list
145  for (unsigned i = 0; i < kNPFTypes; ++i) {
146  for (unsigned j = 0; j < cand_values[i].size(); ++j) {
147  the_values[i][j].push_back(cand_values[i][j]);
148  }
149  }
150  }
151  // fill and put all products
152  for (unsigned i = 0; i < kNPFTypes; ++i) {
153  for (unsigned j = 0; j < the_values[i].size(); ++j) {
154  product_type the_product(new edm::ValueMap<float>);
155  edm::ValueMap<float>::Filler fillerprod(*the_product);
156  fillerprod.insert(to_isolate, the_values[i][j].begin(), the_values[i][j].end());
157  fillerprod.fill();
158  ev.put(std::move(the_product), _product_names[i][j]);
159  }
160  }
161  }

References _isolate_with, _isolation_types, _product_names, _to_isolate, begin, HltBtagPostValidation_cff::c, end, ev, edm::helper::Filler< Map >::fill(), mps_fire::i, edm::helper::Filler< Map >::insert(), dqmiolumiharvest::j, dqmdumpme::k, kNPFTypes, eostools::move(), edm::View< T >::ptrAt(), and edm::View< T >::size().

Member Data Documentation

◆ _isolate_with

edm::EDGetTokenT<CandView> citk::PFIsolationSumProducer::_isolate_with
private

Definition at line 55 of file CITKPFIsolationSumProducer.cc.

Referenced by produce().

◆ _isolation_types

std::array<IsoTypes, kNPFTypes> citk::PFIsolationSumProducer::_isolation_types
private

Definition at line 57 of file CITKPFIsolationSumProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ _product_names

std::array<std::vector<std::string>, kNPFTypes> citk::PFIsolationSumProducer::_product_names
private

Definition at line 58 of file CITKPFIsolationSumProducer.cc.

Referenced by produce().

◆ _to_isolate

edm::EDGetTokenT<CandView> citk::PFIsolationSumProducer::_to_isolate
private

Definition at line 55 of file CITKPFIsolationSumProducer.cc.

Referenced by produce().

◆ _typeMap

const TypeMap citk::PFIsolationSumProducer::_typeMap
private

Definition at line 54 of file CITKPFIsolationSumProducer.cc.

◆ kNPFTypes

constexpr unsigned citk::PFIsolationSumProducer::kNPFTypes = 8
staticconstexprprivate

Definition at line 50 of file CITKPFIsolationSumProducer.cc.

Referenced by produce().

egmElectronIsolationPUPPI_cff.isolationConeDefinitions
isolationConeDefinitions
Definition: egmElectronIsolationPUPPI_cff.py:27
citk::PFIsolationSumProducer::_typeMap
const TypeMap _typeMap
Definition: CITKPFIsolationSumProducer.cc:54
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
citk::PFIsolationSumProducer::kNPFTypes
static constexpr unsigned kNPFTypes
Definition: CITKPFIsolationSumProducer.cc:50
edm::Handle
Definition: AssociativeIterator.h:50
citk::PFIsolationSumProducer::_to_isolate
edm::EDGetTokenT< CandView > _to_isolate
Definition: CITKPFIsolationSumProducer.cc:55
end
#define end
Definition: vmac.h:39
HLT_2018_cff.coneSize
coneSize
Definition: HLT_2018_cff.py:49353
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
dqmdumpme.k
k
Definition: dqmdumpme.py:60
unpackData-CaloStage2.pname
pname
Definition: unpackData-CaloStage2.py:76
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View::size
size_type size() const
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
citk::PFIsolationSumProducer::_isolate_with
edm::EDGetTokenT< CandView > _isolate_with
Definition: CITKPFIsolationSumProducer.cc:55
edm::ParameterSet
Definition: ParameterSet.h:36
edm::ParameterSetDescription::setComment
void setComment(std::string const &value)
Definition: ParameterSetDescription.cc:33
helper
Definition: helper.py:1
value
Definition: value.py:1
BPHMonitor_cfi.photons
photons
Definition: BPHMonitor_cfi.py:91
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
get
#define get
visDQMUpload.buf
buf
Definition: visDQMUpload.py:154
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::ValueMap< float >
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
Exception
Definition: hltDiff.cc:246
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:40
edm::helper::Filler
Definition: ValueMap.h:22
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
citk::PFIsolationSumProducer::_product_names
std::array< std::vector< std::string >, kNPFTypes > _product_names
Definition: CITKPFIsolationSumProducer.cc:58
edm::View::ptrAt
Ptr< value_type > ptrAt(size_type i) const
edm::InputTag
Definition: InputTag.h:15
begin
#define begin
Definition: vmac.h:32
citk::PFIsolationSumProducer::_isolation_types
std::array< IsoTypes, kNPFTypes > _isolation_types
Definition: CITKPFIsolationSumProducer.cc:57