CMS 3D CMS Logo

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

Public Types

typedef edm::View< reco::CandidateCandidateView
 
typedef math::XYZTLorentzVector LorentzVector
 
typedef std::vector< LorentzVectorLorentzVectorCollection
 
typedef std::vector< reco::PFCandidatePFOutputCollection
 
typedef edm::View< reco::PFCandidatePFView
 
- 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

 PuppiPhoton (const edm::ParameterSet &)
 
 ~PuppiPhoton () override
 
- 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Member Functions

bool matchPFCandidate (const reco::Candidate *iPF, const reco::Candidate *iPho)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::unique_ptr< PFOutputCollectioncorrCandidates_
 
std::vector< double > dRMatch_
 
double eta_
 
std::vector< int32_t > pdgIds_
 
double pt_
 
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
 
bool runOnMiniAOD_
 
edm::EDGetTokenT< CandidateViewtokenPFCandidates_
 
edm::EDGetTokenT< CandidateViewtokenPhotonCandidates_
 
edm::EDGetTokenT< edm::ValueMap< bool > > tokenPhotonId_
 
edm::EDGetTokenT< CandidateViewtokenPuppiCandidates_
 
edm::EDGetTokenT< edm::ValueMap< float > > tokenWeights_
 
bool usePFphotons_
 
bool usePFRef_
 
bool usePhotonId_
 
bool useValueMap_
 
double weight_
 

Detailed Description

Definition at line 26 of file PuppiPhoton.cc.

Member Typedef Documentation

◆ CandidateView

Definition at line 34 of file PuppiPhoton.cc.

◆ LorentzVector

Definition at line 32 of file PuppiPhoton.cc.

◆ LorentzVectorCollection

Definition at line 33 of file PuppiPhoton.cc.

◆ PFOutputCollection

Definition at line 35 of file PuppiPhoton.cc.

◆ PFView

Definition at line 36 of file PuppiPhoton.cc.

Constructor & Destructor Documentation

◆ PuppiPhoton()

PuppiPhoton::PuppiPhoton ( const edm::ParameterSet iConfig)
explicit

Definition at line 61 of file PuppiPhoton.cc.

References dRMatch_, eta_, edm::ParameterSet::getParameter(), pdgIds_, pt_, reco2pf_, runOnMiniAOD_, tokenPFCandidates_, tokenPhotonCandidates_, tokenPhotonId_, tokenPuppiCandidates_, tokenWeights_, usePFphotons_, usePFRef_, usePhotonId_, useValueMap_, and weight_.

61  {
62  tokenPFCandidates_ = consumes<CandidateView>(iConfig.getParameter<edm::InputTag>("candName"));
63  tokenPuppiCandidates_ = consumes<CandidateView>(iConfig.getParameter<edm::InputTag>("puppiCandName"));
64  usePFphotons_ = iConfig.getParameter<bool>("usePFphotons");
65  if (!usePFphotons_)
66  tokenPhotonCandidates_ = consumes<CandidateView>(iConfig.getParameter<edm::InputTag>("photonName"));
67  usePhotonId_ = !(iConfig.getParameter<edm::InputTag>("photonId")).label().empty();
68  if (usePhotonId_)
69  tokenPhotonId_ = consumes<edm::ValueMap<bool>>(iConfig.getParameter<edm::InputTag>("photonId"));
70  runOnMiniAOD_ = iConfig.getParameter<bool>("runOnMiniAOD");
71  if (!runOnMiniAOD_)
72  reco2pf_ =
73  consumes<edm::ValueMap<std::vector<reco::PFCandidateRef>>>(iConfig.getParameter<edm::InputTag>("recoToPFMap"));
74  useValueMap_ = iConfig.getParameter<bool>("useValueMap");
75  if (useValueMap_)
76  tokenWeights_ = consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("weightsName"));
77 
78  pt_ = iConfig.getParameter<double>("pt");
79  eta_ = iConfig.getParameter<double>("eta");
80  dRMatch_ = iConfig.getParameter<std::vector<double>>("dRMatch");
81  pdgIds_ = iConfig.getParameter<std::vector<int32_t>>("pdgids");
82  usePFRef_ = iConfig.getParameter<bool>("useRefs");
83  weight_ = iConfig.getParameter<double>("weight");
84  produces<PFOutputCollection>();
85  produces<edm::ValueMap<reco::CandidatePtr>>();
86 }
std::vector< int32_t > pdgIds_
Definition: PuppiPhoton.cc:54
double pt_
Definition: PuppiPhoton.cc:47
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
bool runOnMiniAOD_
Definition: PuppiPhoton.cc:51
bool usePFRef_
Definition: PuppiPhoton.cc:49
bool usePFphotons_
Definition: PuppiPhoton.cc:50
edm::EDGetTokenT< edm::ValueMap< float > > tokenWeights_
Definition: PuppiPhoton.cc:45
edm::EDGetTokenT< edm::ValueMap< bool > > tokenPhotonId_
Definition: PuppiPhoton.cc:46
edm::EDGetTokenT< CandidateView > tokenPFCandidates_
Definition: PuppiPhoton.cc:41
bool usePhotonId_
Definition: PuppiPhoton.cc:52
double weight_
Definition: PuppiPhoton.cc:56
double eta_
Definition: PuppiPhoton.cc:48
edm::EDGetTokenT< CandidateView > tokenPuppiCandidates_
Definition: PuppiPhoton.cc:42
std::vector< double > dRMatch_
Definition: PuppiPhoton.cc:53
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
Definition: PuppiPhoton.cc:44
bool useValueMap_
Definition: PuppiPhoton.cc:57
edm::EDGetTokenT< CandidateView > tokenPhotonCandidates_
Definition: PuppiPhoton.cc:43

◆ ~PuppiPhoton()

PuppiPhoton::~PuppiPhoton ( )
override

Definition at line 88 of file PuppiPhoton.cc.

88 {}

Member Function Documentation

◆ fillDescriptions()

void PuppiPhoton::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 270 of file PuppiPhoton.cc.

References edm::ConfigurationDescriptions::addDefault(), and submitPVResolutionJobs::desc.

270  {
271  //The following says we do not know what parameters are allowed so do no validation
272  // Please change this to state exactly what you do use, even if it is no parameters
274  desc.setUnknown();
275  descriptions.addDefault(desc);
276 }
void addDefault(ParameterSetDescription const &psetDescription)

◆ matchPFCandidate()

bool PuppiPhoton::matchPFCandidate ( const reco::Candidate iPF,
const reco::Candidate iPho 
)
private

Definition at line 259 of file PuppiPhoton.cc.

References funct::abs(), PbPb_ZMuSkimMuonDPG_cff::deltaR, dRMatch_, reco::Candidate::eta(), reco::Candidate::pdgId(), pdgIds_, and reco::Candidate::phi().

Referenced by produce().

259  {
260  if (iPF->pdgId() != iPho->pdgId())
261  return false;
262  double lDR = deltaR(iPF->eta(), iPF->phi(), iPho->eta(), iPho->phi());
263  for (unsigned int i0 = 0; i0 < pdgIds_.size(); i0++) {
264  if (std::abs(iPF->pdgId()) == pdgIds_[i0] && lDR < dRMatch_[i0])
265  return true;
266  }
267  return false;
268 }
std::vector< int32_t > pdgIds_
Definition: PuppiPhoton.cc:54
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual int pdgId() const =0
PDG identifier.
std::vector< double > dRMatch_
Definition: PuppiPhoton.cc:53
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity

◆ produce()

void PuppiPhoton::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 90 of file PuppiPhoton.cc.

References funct::abs(), pat::Electron::associatedPackedPFCandidates(), pat::Photon::associatedPackedPFCandidates(), edm::View< T >::begin(), ALCARECOTkAlJpsiMuMu_cff::charge, corrCandidates_, edm::View< T >::end(), HCALHighEnergyHPDFilter_cfi::energy, eta_, trigObjTnPSource_cfi::filler, triggerObjects_cff::id, iEvent, matchPFCandidate(), eostools::move(), EgammaValidation_cff::pdgId, edm::Handle< T >::product(), DiDispStaMuonMonitor_cfi::pt, pt_, edm::View< T >::ptrAt(), multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, reco2pf_, edm::View< T >::refAt(), runOnMiniAOD_, reco::LeafCandidate::setP4(), reco::PFCandidate::setSourceCandidatePtr(), edm::View< T >::size(), tokenPFCandidates_, tokenPhotonCandidates_, tokenPhotonId_, tokenPuppiCandidates_, tokenWeights_, reco::PFCandidate::translatePdgIdToType(), usePFphotons_, usePFRef_, usePhotonId_, useValueMap_, contentValuesCheck::values, and weight_.

90  {
91  int iC = -1;
92  std::vector<const reco::Candidate *> phoCands;
93  std::vector<uint16_t> phoIndx;
94 
96  if (!runOnMiniAOD_)
97  iEvent.getByToken(reco2pf_, reco2pf);
98 
99  // Get PFCandidate Collection
100  edm::Handle<CandidateView> hPFProduct;
101  iEvent.getByToken(tokenPFCandidates_, hPFProduct);
102  const CandidateView *pfCol = hPFProduct.product();
103 
104  edm::Handle<CandidateView> hPuppiProduct;
105  iEvent.getByToken(tokenPuppiCandidates_, hPuppiProduct);
106  const CandidateView *pupCol = hPuppiProduct.product();
107  if (usePFphotons_) {
108  for (const auto &pho : *pfCol) {
109  iC++;
110  if (pho.pt() < pt_)
111  continue;
112  if (std::abs(pho.pdgId()) != 22)
113  continue;
114  if (fabs(pho.eta()) < eta_) {
115  phoIndx.push_back(iC);
116  phoCands.push_back(&pho);
117  }
118  }
119  } else {
120  edm::Handle<CandidateView> hPhoProduct;
121  iEvent.getByToken(tokenPhotonCandidates_, hPhoProduct);
122  const CandidateView *phoCol = hPhoProduct.product();
123 
125  if (usePhotonId_)
126  iEvent.getByToken(tokenPhotonId_, photonId);
127 
128  for (CandidateView::const_iterator itPho = phoCol->begin(); itPho != phoCol->end(); itPho++) {
129  iC++;
130  bool passObject = false;
131  if (itPho->isPhoton() && usePhotonId_)
132  passObject = (*photonId)[phoCol->ptrAt(iC)];
133  if (itPho->pt() < pt_)
134  continue;
135  if (!passObject && usePhotonId_)
136  continue;
137  if (runOnMiniAOD_) {
138  const pat::Photon *pPho = dynamic_cast<const pat::Photon *>(&(*itPho));
139  if (pPho != nullptr) {
141  if (fabs(ref->eta()) < eta_) {
142  phoIndx.push_back(ref.key());
143  phoCands.push_back(&(*(pfCol->ptrAt(ref.key()))));
144  }
145  }
146  continue;
147  }
148  const pat::Electron *pElectron = dynamic_cast<const pat::Electron *>(&(*itPho));
149  if (pElectron != nullptr) {
151  if (fabs(ref->eta()) < eta_) {
152  phoIndx.push_back(ref.key());
153  phoCands.push_back(&(*(pfCol->ptrAt(ref.key()))));
154  }
155  }
156  } else {
157  for (const edm::Ref<std::vector<reco::PFCandidate>> &ref : (*reco2pf)[phoCol->ptrAt(iC)]) {
158  if (fabs(ref->eta()) < eta_) {
159  phoIndx.push_back(ref.key());
160  phoCands.push_back(&(*(pfCol->ptrAt(ref.key()))));
161  }
162  }
163  }
164  }
165  }
166  //Get Weights
168  if (useValueMap_)
169  iEvent.getByToken(tokenWeights_, pupWeights);
170  std::unique_ptr<edm::ValueMap<LorentzVector>> p4PupOut(new edm::ValueMap<LorentzVector>());
171  LorentzVectorCollection puppiP4s;
172  std::vector<reco::CandidatePtr> values(hPFProduct->size());
173  int iPF = 0;
174  std::vector<float> lWeights;
175  static const reco::PFCandidate dummySinceTranslateIsNotStatic;
176  corrCandidates_ = std::make_unique<PFOutputCollection>();
177  std::set<int> foundPhoIndex;
178  for (CandidateView::const_iterator itPF = pupCol->begin(); itPF != pupCol->end(); itPF++) {
179  auto id = dummySinceTranslateIsNotStatic.translatePdgIdToType(itPF->pdgId());
180  const reco::PFCandidate *pPF = dynamic_cast<const reco::PFCandidate *>(&(*itPF));
181  reco::PFCandidate pCand(pPF ? *pPF : reco::PFCandidate(itPF->charge(), itPF->p4(), id));
182  LorentzVector pVec = itPF->p4();
183  float pWeight = 1.;
184  if (useValueMap_)
185  pWeight = (*pupWeights)[pupCol->ptrAt(iPF)];
186  if (!usePFRef_) {
187  int iPho = -1;
188  for (std::vector<const reco::Candidate *>::iterator itPho = phoCands.begin(); itPho != phoCands.end(); itPho++) {
189  iPho++;
190  if ((!matchPFCandidate(&(*itPF), *itPho)) || (foundPhoIndex.count(iPho) != 0))
191  continue;
192  pWeight = weight_;
193  if (!useValueMap_ && itPF->pt() != 0)
194  pWeight = pWeight * (phoCands[iPho]->pt() / itPF->pt());
195  if (!useValueMap_ && itPF->pt() == 0)
196  pVec.SetPxPyPzE(phoCands[iPho]->px() * pWeight,
197  phoCands[iPho]->py() * pWeight,
198  phoCands[iPho]->pz() * pWeight,
199  phoCands[iPho]->energy() * pWeight);
200  foundPhoIndex.insert(iPho);
201  }
202  } else {
203  int iPho = -1;
204  for (std::vector<uint16_t>::const_iterator itPho = phoIndx.begin(); itPho != phoIndx.end(); itPho++) {
205  iPho++;
206  if (pupCol->refAt(iPF).key() != *itPho)
207  continue;
208  pWeight = weight_;
209  if (!useValueMap_ && itPF->pt() != 0)
210  pWeight = pWeight * (phoCands[iPho]->pt() / itPF->pt());
211  if (!useValueMap_ && itPF->pt() == 0)
212  pVec.SetPxPyPzE(phoCands[iPho]->px() * pWeight,
213  phoCands[iPho]->py() * pWeight,
214  phoCands[iPho]->pz() * pWeight,
215  phoCands[iPho]->energy() * pWeight);
216  foundPhoIndex.insert(iPho);
217  }
218  }
219  if (itPF->pt() != 0)
220  pVec.SetPxPyPzE(itPF->px() * pWeight, itPF->py() * pWeight, itPF->pz() * pWeight, itPF->energy() * pWeight);
221 
222  lWeights.push_back(pWeight);
223  pCand.setP4(pVec);
224  puppiP4s.push_back(pVec);
225  pCand.setSourceCandidatePtr(itPF->sourceCandidatePtr(0));
226  corrCandidates_->push_back(pCand);
227  iPF++;
228  }
229  //Add the missing pfcandidates
230  for (unsigned int iPho = 0; iPho < phoCands.size(); iPho++) {
231  if (foundPhoIndex.count(iPho) != 0)
232  continue;
233  auto id = dummySinceTranslateIsNotStatic.translatePdgIdToType(phoCands[iPho]->pdgId());
234  reco::PFCandidate pCand(reco::PFCandidate(phoCands[iPho]->charge(), phoCands[iPho]->p4(), id));
235  pCand.setSourceCandidatePtr(phoCands[iPho]->sourceCandidatePtr(0));
236  LorentzVector pVec = phoCands[iPho]->p4();
237  pVec.SetPxPyPzE(phoCands[iPho]->px() * weight_,
238  phoCands[iPho]->py() * weight_,
239  phoCands[iPho]->pz() * weight_,
240  phoCands[iPho]->energy() * weight_);
241  pCand.setP4(pVec);
242  lWeights.push_back(weight_);
243  puppiP4s.push_back(pVec);
244  corrCandidates_->push_back(pCand);
245  }
246  //Fill it into the event
248  for (unsigned int ic = 0, nc = pupCol->size(); ic < nc; ++ic) {
249  reco::CandidatePtr pkref(oh, ic);
250  values[ic] = pkref;
251  }
252  std::unique_ptr<edm::ValueMap<reco::CandidatePtr>> pfMap_p(new edm::ValueMap<reco::CandidatePtr>());
254  filler.insert(hPFProduct, values.begin(), values.end());
255  filler.fill();
256  iEvent.put(std::move(pfMap_p));
257 }
double pt_
Definition: PuppiPhoton.cc:47
Analysis-level Photon class.
Definition: Photon.h:46
bool runOnMiniAOD_
Definition: PuppiPhoton.cc:51
T const * product() const
Definition: Handle.h:70
edm::View< reco::Candidate > CandidateView
Definition: PuppiPhoton.cc:34
bool usePFRef_
Definition: PuppiPhoton.cc:49
edm::RefVector< pat::PackedCandidateCollection > associatedPackedPFCandidates() const
References to PFCandidates linked to this object (e.g. for isolation vetos or masking before jet recl...
size_type size() const
bool usePFphotons_
Definition: PuppiPhoton.cc:50
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< edm::ValueMap< float > > tokenWeights_
Definition: PuppiPhoton.cc:45
edm::EDGetTokenT< edm::ValueMap< bool > > tokenPhotonId_
Definition: PuppiPhoton.cc:46
edm::EDGetTokenT< CandidateView > tokenPFCandidates_
Definition: PuppiPhoton.cc:41
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
math::XYZTLorentzVector LorentzVector
bool matchPFCandidate(const reco::Candidate *iPF, const reco::Candidate *iPho)
Definition: PuppiPhoton.cc:259
bool usePhotonId_
Definition: PuppiPhoton.cc:52
std::vector< LorentzVector > LorentzVectorCollection
double weight_
Definition: PuppiPhoton.cc:56
double eta_
Definition: PuppiPhoton.cc:48
Analysis-level electron class.
Definition: Electron.h:51
edm::EDGetTokenT< CandidateView > tokenPuppiCandidates_
Definition: PuppiPhoton.cc:42
std::unique_ptr< PFOutputCollection > corrCandidates_
Definition: PuppiPhoton.cc:55
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
ParticleType translatePdgIdToType(int pdgid) const
Definition: PFCandidate.cc:231
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
Definition: PuppiPhoton.cc:44
def move(src, dest)
Definition: eostools.py:511
bool useValueMap_
Definition: PuppiPhoton.cc:57
edm::RefVector< pat::PackedCandidateCollection > associatedPackedPFCandidates() const
References to PFCandidates linked to this object (e.g. for isolation vetos or masking before jet recl...
edm::EDGetTokenT< CandidateView > tokenPhotonCandidates_
Definition: PuppiPhoton.cc:43

Member Data Documentation

◆ corrCandidates_

std::unique_ptr<PFOutputCollection> PuppiPhoton::corrCandidates_
private

Definition at line 55 of file PuppiPhoton.cc.

Referenced by produce().

◆ dRMatch_

std::vector<double> PuppiPhoton::dRMatch_
private

Definition at line 53 of file PuppiPhoton.cc.

Referenced by matchPFCandidate(), and PuppiPhoton().

◆ eta_

double PuppiPhoton::eta_
private

Definition at line 48 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ pdgIds_

std::vector<int32_t> PuppiPhoton::pdgIds_
private

Definition at line 54 of file PuppiPhoton.cc.

Referenced by matchPFCandidate(), and PuppiPhoton().

◆ pt_

double PuppiPhoton::pt_
private

Definition at line 47 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ reco2pf_

edm::EDGetTokenT<edm::ValueMap<std::vector<reco::PFCandidateRef> > > PuppiPhoton::reco2pf_
private

Definition at line 44 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ runOnMiniAOD_

bool PuppiPhoton::runOnMiniAOD_
private

Definition at line 51 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ tokenPFCandidates_

edm::EDGetTokenT<CandidateView> PuppiPhoton::tokenPFCandidates_
private

Definition at line 41 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ tokenPhotonCandidates_

edm::EDGetTokenT<CandidateView> PuppiPhoton::tokenPhotonCandidates_
private

Definition at line 43 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ tokenPhotonId_

edm::EDGetTokenT<edm::ValueMap<bool> > PuppiPhoton::tokenPhotonId_
private

Definition at line 46 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ tokenPuppiCandidates_

edm::EDGetTokenT<CandidateView> PuppiPhoton::tokenPuppiCandidates_
private

Definition at line 42 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ tokenWeights_

edm::EDGetTokenT<edm::ValueMap<float> > PuppiPhoton::tokenWeights_
private

Definition at line 45 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ usePFphotons_

bool PuppiPhoton::usePFphotons_
private

Definition at line 50 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ usePFRef_

bool PuppiPhoton::usePFRef_
private

Definition at line 49 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ usePhotonId_

bool PuppiPhoton::usePhotonId_
private

Definition at line 52 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ useValueMap_

bool PuppiPhoton::useValueMap_
private

Definition at line 57 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().

◆ weight_

double PuppiPhoton::weight_
private

Definition at line 56 of file PuppiPhoton.cc.

Referenced by produce(), and PuppiPhoton().