CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Private Attributes
PFCandIsolatorFromDeposits Class Reference
Inheritance diagram for PFCandIsolatorFromDeposits:
edm::stream::EDProducer<>

Classes

class  SingleDeposit
 

Public Types

typedef edm::ValueMap< double > CandDoubleMap
 
enum  Mode {
  Sum, SumRelative, Sum2, Sum2Relative,
  Max, MaxRelative, Count, NearestDR
}
 
- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

 PFCandIsolatorFromDeposits (const edm::ParameterSet &)
 constructor with config More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 build deposits More...
 
 ~PFCandIsolatorFromDeposits () override
 destructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Attributes

std::vector< SingleDepositsources_
 

Detailed Description

Definition at line 33 of file PFCandIsolatorFromDeposit.cc.

Member Typedef Documentation

Definition at line 35 of file PFCandIsolatorFromDeposit.cc.

Member Enumeration Documentation

Constructor & Destructor Documentation

PFCandIsolatorFromDeposits::PFCandIsolatorFromDeposits ( const edm::ParameterSet par)

constructor with config

Definition at line 224 of file PFCandIsolatorFromDeposit.cc.

References edm::ParameterSet::getParameter(), sources_, and HistogramManager_cfi::VPSet().

224  {
225  typedef std::vector<edm::ParameterSet> VPSet;
226  VPSet depPSets = par.getParameter<VPSet>("deposits");
227  for (VPSet::const_iterator it = depPSets.begin(), ed = depPSets.end(); it != ed; ++it) {
228  sources_.push_back(SingleDeposit(*it, consumesCollector()));
229  }
230  if (sources_.empty())
231  throw cms::Exception("Configuration Error") << "Please specify at least one deposit!";
232  produces<CandDoubleMap>();
233 }
std::vector< SingleDeposit > sources_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
PFCandIsolatorFromDeposits::~PFCandIsolatorFromDeposits ( )
override

destructor

Definition at line 236 of file PFCandIsolatorFromDeposit.cc.

References SplitLinear::begin, dataset::end, and sources_.

236  {
237  std::vector<SingleDeposit>::iterator it, begin = sources_.begin(), end = sources_.end();
238  for (it = begin; it != end; ++it)
239  it->cleanup();
240 }
std::vector< SingleDeposit > sources_
string end
Definition: dataset.py:937

Member Function Documentation

void PFCandIsolatorFromDeposits::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

build deposits

Definition at line 243 of file PFCandIsolatorFromDeposit.cc.

References SplitLinear::begin, edm::View< T >::begin(), edm::ValueMap< T >::begin(), edm::ValueMap< T >::empty(), edm::ValueMap< T >::end(), dataset::end, edm::helper::Filler< Map >::fill(), edm::helper::Filler< Map >::insert(), eostools::move(), edm::View< T >::refAt(), runTheMatrix::ret, and sources_.

243  {
244  std::vector<SingleDeposit>::iterator it, begin = sources_.begin(), end = sources_.end();
245  for (it = begin; it != end; ++it)
246  it->open(event, eventSetup);
247 
248  const IsoDepositMap &map = begin->map();
249 
250  if (map.empty()) { // !!???
251  event.put(std::make_unique<CandDoubleMap>());
252  return;
253  }
254  std::unique_ptr<CandDoubleMap> ret(new CandDoubleMap());
255  CandDoubleMap::Filler filler(*ret);
256 
257  typedef reco::IsoDepositMap::const_iterator iterator_i;
259  iterator_i depI = map.begin();
260  iterator_i depIEnd = map.end();
261  for (; depI != depIEnd; ++depI) {
262  std::vector<double> retV(depI.size(), 0);
264  event.get(depI.id(), candH);
265  const edm::View<reco::Candidate> &candV = *candH;
266 
267  iterator_ii depII = depI.begin();
268  iterator_ii depIIEnd = depI.end();
269  size_t iRet = 0;
270  for (; depII != depIIEnd; ++depII, ++iRet) {
271  double sum = 0;
272  for (it = begin; it != end; ++it)
273  sum += it->compute(candV.refAt(iRet));
274  retV[iRet] = sum;
275  }
276  filler.insert(candH, retV.begin(), retV.end());
277  }
278  filler.fill();
279  event.put(std::move(ret));
280 }
bool empty() const
Definition: ValueMap.h:158
tuple ret
prodAgent to be discontinued
std::vector< SingleDeposit > sources_
const_iterator end() const
Definition: ValueMap.h:230
RefToBase< value_type > refAt(size_type i) const
const_iterator begin() const
def move
Definition: eostools.py:511
helper::Filler< ValueMap< T > > Filler
Definition: ValueMap.h:168
const_iterator begin() const
Definition: ValueMap.h:229
string end
Definition: dataset.py:937
edm::ValueMap< double > CandDoubleMap

Member Data Documentation

std::vector<SingleDeposit> PFCandIsolatorFromDeposits::sources_
private