CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
PFEGammaProducer Class Reference

Producer for particle flow reconstructed particles (PFCandidates) More...

#include <PFEGammaProducer.h>

Inheritance diagram for PFEGammaProducer:
edm::stream::EDProducer< edm::GlobalCache< pfEGHelpers::HeavyObjectCache > > edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void beginRun (const edm::Run &, const edm::EventSetup &) override
 
 PFEGammaProducer (const edm::ParameterSet &, const pfEGHelpers::HeavyObjectCache *)
 
virtual void produce (edm::Event &, const edm::EventSetup &) override
 
 ~PFEGammaProducer ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< pfEGHelpers::HeavyObjectCache > >
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void globalEndJob (pfEGHelpers::HeavyObjectCache const *)
 
static std::unique_ptr
< pfEGHelpers::HeavyObjectCache
initializeGlobalCache (const edm::ParameterSet &conf)
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void createSingleLegConversions (reco::PFCandidateEGammaExtraCollection &extras, reco::ConversionCollection &oneLegConversions, const edm::RefProd< reco::ConversionCollection > &convProd)
 
void setPFEGParameters (PFEGammaAlgo::PFEGConfigInfo &)
 
void setPFVertexParameters (bool useVertex, const reco::VertexCollection *primaryVertices)
 

Private Attributes

bool applyCrackCorrectionsElectrons_
 
double coneEcalIsoForEgammaSC_
 
double coneTrackIsoForEgammaSC_
 
std::string ebeeClustersCollection_
 
edm::EDGetTokenT
< reco::PFCluster::EEtoPSAssociation
eetopsSrc_
 
std::auto_ptr
< reco::PFCandidateCollection
egCandidates_
 
std::auto_ptr
< reco::PFCandidateEGammaExtraCollection
egExtra_
 
std::string esClustersCollection_
 
edm::EDGetTokenT
< reco::PFBlockCollection
inputTagBlocks_
 
double mvaEleCut_
 
std::string mvaWeightFileEleID_
 Variables for PFEGamma. More...
 
unsigned int nTrackIsoForEgammaSC_
 
std::unique_ptr< PFEGammaAlgopfeg_
 the unfiltered electron collection More...
 
reco::Vertex primaryVertex_
 
const GBRForestReaderGC_
 
const GBRForestReaderLC_
 
const GBRForestReaderRes_
 
std::auto_ptr
< reco::SuperClusterCollection
sClusters_
 
std::vector< double > setchi2Values_
 
std::auto_ptr
< reco::ConversionCollection
singleLegConv_
 
double sumEtEcalIsoForEgammaSC_barrel_
 
double sumEtEcalIsoForEgammaSC_endcap_
 
double sumPtTrackIsoForEgammaSC_barrel_
 
double sumPtTrackIsoForEgammaSC_endcap_
 
std::shared_ptr
< PFSCEnergyCalibration
thePFSCEnergyCalibration_
 
bool useCalibrationsFromDB_
 
bool useEGammaElectrons_
 
bool useEGammaSupercluster_
 
bool useEGElectrons_
 
bool usePFElectrons_
 
bool usePFPhotons_
 
bool usePFSCEleCalib_
 
bool usePhotonReg_
 
bool useRegressionFromDB_
 
bool useVerticesForNeutral_
 
bool verbose_
 verbose ? More...
 
edm::EDGetTokenT
< reco::VertexCollection
vertices_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< pfEGHelpers::HeavyObjectCache > >
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Producer for particle flow reconstructed particles (PFCandidates)

This producer makes use of PFAlgo, the particle flow algorithm.

Author
Colin Bernet
Date
July 2006

Definition at line 51 of file PFEGammaProducer.h.

Constructor & Destructor Documentation

PFEGammaProducer::PFEGammaProducer ( const edm::ParameterSet iConfig,
const pfEGHelpers::HeavyObjectCache  
)
explicit

Definition at line 45 of file PFEGammaProducer.cc.

References HLT_25ns14e33_v1_cff::algoType, PFEGammaAlgo::PFEGConfigInfo::applyCrackCorrections, assert(), HLT_25ns14e33_v1_cff::calibPFSCEle_barrel, HLT_25ns14e33_v1_cff::calibPFSCEle_endcap, HLT_25ns14e33_v1_cff::calibPFSCEle_Fbrem_barrel, HLT_25ns14e33_v1_cff::calibPFSCEle_Fbrem_endcap, PFEGammaAlgo::PFEGConfigInfo::coneEcalIsoForEgammaSC, PFEGammaAlgo::PFEGConfigInfo::coneTrackIsoForEgammaSC, ebeeClustersCollection_, eetopsSrc_, esClustersCollection_, contentValuesFiles::fullPath, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HLT_25ns14e33_v1_cff::iCfgCandConnector, inputTagBlocks_, LogDebug, PFEGammaAlgo::PFEGConfigInfo::mvaConvCut, PFEGammaAlgo::PFEGConfigInfo::mvaEleCut, PFEGammaAlgo::PFEGConfigInfo::mvaweightfile, PFEGammaAlgo::PFEGConfigInfo::nTrackIsoForEgammaSC, PFEGammaAlgo::PFEGConfigInfo::produceEGCandsWithNoSuperCluster, ReaderGC_, ReaderLC_, ReaderRes_, setPFEGParameters(), AlCaHLTBitMon_QueryRunRegistry::string, PFEGammaAlgo::PFEGConfigInfo::sumEtEcalIsoForEgammaSC_barrel, PFEGammaAlgo::PFEGConfigInfo::sumEtEcalIsoForEgammaSC_endcap, PFEGammaAlgo::PFEGConfigInfo::sumPtTrackIsoForEgammaSC_barrel, PFEGammaAlgo::PFEGConfigInfo::sumPtTrackIsoForEgammaSC_endcap, PFEGammaAlgo::PFEGConfigInfo::sumPtTrackIsoForPhoton, PFEGammaAlgo::PFEGConfigInfo::sumPtTrackIsoSlopeForPhoton, useCalibrationsFromDB_, PFEGammaAlgo::PFEGConfigInfo::useEGammaSupercluster, PFEGammaAlgo::PFEGConfigInfo::usePFSCEleCalib, PFEGammaAlgo::PFEGConfigInfo::useReg, useRegressionFromDB_, useVerticesForNeutral_, verbose_, vertices_, and PFEGammaAlgo::PFEGConfigInfo::X0_Map.

46  :
48  ebeeClustersCollection_("EBEEClusters"),
49  esClustersCollection_("ESClusters") {
50 
51  PFEGammaAlgo::PFEGConfigInfo algo_config;
52 
54  = consumes<reco::PFBlockCollection>(iConfig.getParameter<edm::InputTag>("blocks"));
55 
56  eetopsSrc_ = consumes<reco::PFCluster::EEtoPSAssociation>(iConfig.getParameter<edm::InputTag>("EEtoPS_source"));
57 
58  algo_config.useReg
59  = iConfig.getParameter<bool>("usePhotonReg");
60 
62  = iConfig.getParameter<bool>("useVerticesForNeutral");
63 
65  = iConfig.getParameter<bool>("useRegressionFromDB");
66 
67 
68  std::vector<double> calibPFSCEle_Fbrem_barrel;
69  std::vector<double> calibPFSCEle_Fbrem_endcap;
70  std::vector<double> calibPFSCEle_barrel;
71  std::vector<double> calibPFSCEle_endcap;
72  algo_config.usePFSCEleCalib = iConfig.getParameter<bool>("usePFSCEleCalib");
73  calibPFSCEle_Fbrem_barrel = iConfig.getParameter<std::vector<double> >("calibPFSCEle_Fbrem_barrel");
74  calibPFSCEle_Fbrem_endcap = iConfig.getParameter<std::vector<double> >("calibPFSCEle_Fbrem_endcap");
75  calibPFSCEle_barrel = iConfig.getParameter<std::vector<double> >("calibPFSCEle_barrel");
76  calibPFSCEle_endcap = iConfig.getParameter<std::vector<double> >("calibPFSCEle_endcap");
77  std::shared_ptr<PFSCEnergyCalibration>
80 
81  algo_config.useEGammaSupercluster =
82  iConfig.getParameter<bool>("useEGammaSupercluster");
83  algo_config.produceEGCandsWithNoSuperCluster =
84  iConfig.getParameter<bool>("produceEGCandsWithNoSuperCluster");
85  algo_config.sumEtEcalIsoForEgammaSC_barrel =
86  iConfig.getParameter<double>("sumEtEcalIsoForEgammaSC_barrel");
87  algo_config.sumEtEcalIsoForEgammaSC_endcap =
88  iConfig.getParameter<double>("sumEtEcalIsoForEgammaSC_endcap");
89  algo_config.coneEcalIsoForEgammaSC =
90  iConfig.getParameter<double>("coneEcalIsoForEgammaSC");
91  algo_config.sumPtTrackIsoForEgammaSC_barrel =
92  iConfig.getParameter<double>("sumPtTrackIsoForEgammaSC_barrel");
93  algo_config.sumPtTrackIsoForEgammaSC_endcap =
94  iConfig.getParameter<double>("sumPtTrackIsoForEgammaSC_endcap");
95  algo_config.coneTrackIsoForEgammaSC =
96  iConfig.getParameter<double>("coneTrackIsoForEgammaSC");
97  algo_config.nTrackIsoForEgammaSC =
98  iConfig.getParameter<unsigned int>("nTrackIsoForEgammaSC");
99 
100 
101  // register products
102  produces<reco::PFCandidateCollection>();
103  produces<reco::PFCandidateEGammaExtraCollection>();
104  produces<reco::SuperClusterCollection>();
105  produces<reco::CaloClusterCollection>(ebeeClustersCollection_);
106  produces<reco::CaloClusterCollection>(esClustersCollection_);
107  produces<reco::ConversionCollection>();
108 
109  //PFElectrons Configuration
110  algo_config.mvaEleCut
111  = iConfig.getParameter<double>("pf_electron_mvaCut");
112 
113 
114  algo_config. mvaWeightFileEleID
115  = iConfig.getParameter<edm::FileInPath>("pf_electronID_mvaWeightFile").fullPath();
116 
117  algo_config.applyCrackCorrections
118  = iConfig.getParameter<bool>("pf_electronID_crackCorrection");
119 
120  //PFPhoton Configuration
121 
122  std::string path_mvaWeightFileConvID;
123  std::string mvaWeightFileConvID;
124  std::string path_mvaWeightFileGCorr;
125  std::string path_mvaWeightFileLCorr;
126  std::string path_X0_Map;
127  std::string path_mvaWeightFileRes;
128 
129  algo_config.mvaweightfile =
130  iConfig.getParameter<edm::FileInPath>("pf_convID_mvaWeightFile").fullPath();
131  algo_config.mvaConvCut = iConfig.getParameter<double>("pf_conv_mvaCut");
132  algo_config.sumPtTrackIsoForPhoton =
133  iConfig.getParameter<double>("sumPtTrackIsoForPhoton");
134  algo_config.sumPtTrackIsoSlopeForPhoton =
135  iConfig.getParameter<double>("sumPtTrackIsoSlopeForPhoton");
136 
137  algo_config.X0_Map = iConfig.getParameter<std::string>("X0_Map");
138  algo_config.X0_Map =
139  edm::FileInPath( algo_config.X0_Map.c_str() ).fullPath();
140 
141  if(!useRegressionFromDB_) {
142  std::string mvaWeightFileLCorr=iConfig.getParameter<std::string>("pf_locC_mvaWeightFile");
143  path_mvaWeightFileLCorr = edm::FileInPath( mvaWeightFileLCorr.c_str() ).fullPath();
144  std::string mvaWeightFileGCorr=iConfig.getParameter<std::string>("pf_GlobC_mvaWeightFile");
145  path_mvaWeightFileGCorr = edm::FileInPath( mvaWeightFileGCorr.c_str() ).fullPath();
146  std::string mvaWeightFileRes=iConfig.getParameter<std::string>("pf_Res_mvaWeightFile");
147  path_mvaWeightFileRes=edm::FileInPath(mvaWeightFileRes.c_str()).fullPath();
148 
149  TFile *fgbr = new TFile(path_mvaWeightFileGCorr.c_str(),"READ");
150  ReaderGC_ =(const GBRForest*)fgbr->Get("GBRForest");
151  TFile *fgbr2 = new TFile(path_mvaWeightFileLCorr.c_str(),"READ");
152  ReaderLC_ = (const GBRForest*)fgbr2->Get("GBRForest");
153  TFile *fgbr3 = new TFile(path_mvaWeightFileRes.c_str(),"READ");
154  ReaderRes_ = (const GBRForest*)fgbr3->Get("GBRForest");
155  LogDebug("PFEGammaProducer")<<"Will set regressions from binary files " <<std::endl;
156  }
157 
159  = iConfig.getParameter<edm::ParameterSet>("iCfgCandConnector");
160 
161 
162  // fToRead = iConfig.getUntrackedParameter<std::vector<std::string> >("toRead");
163 
165  = iConfig.getParameter<bool>("useCalibrationsFromDB");
166 
167  std::shared_ptr<PFEnergyCalibration> calibration(new PFEnergyCalibration());
168 
169  int algoType
170  = iConfig.getParameter<unsigned>("algoType");
171 
172  switch(algoType) {
173  case 0:
174  //pfAlgo_.reset( new PFAlgo);
175  break;
176  default:
177  assert(0);
178  }
179 
180  //PFEGamma
181  setPFEGParameters(algo_config);
182 
183  //MIKE: Vertex Parameters
184  vertices_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("vertexCollection"));
185 
186  verbose_ =
187  iConfig.getUntrackedParameter<bool>("verbose",false);
188 
189 // bool debug_ =
190 // iConfig.getUntrackedParameter<bool>("debug",false);
191 
192 }
#define LogDebug(id)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const GBRForest * ReaderRes_
edm::EDGetTokenT< reco::VertexCollection > vertices_
assert(m_qm.get())
reco::Vertex primaryVertex_
std::string ebeeClustersCollection_
std::string esClustersCollection_
void setPFEGParameters(PFEGammaAlgo::PFEGConfigInfo &)
bool verbose_
verbose ?
edm::EDGetTokenT< reco::PFCluster::EEtoPSAssociation > eetopsSrc_
const GBRForest * ReaderLC_
const GBRForest * ReaderGC_
edm::EDGetTokenT< reco::PFBlockCollection > inputTagBlocks_
PFEGammaProducer::~PFEGammaProducer ( )

Definition at line 196 of file PFEGammaProducer.cc.

196 {}

Member Function Documentation

void PFEGammaProducer::beginRun ( const edm::Run run,
const edm::EventSetup es 
)
overridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 199 of file PFEGammaProducer.cc.

201 {
202 
203  /* // kept for historical reasons
204  if(useRegressionFromDB_) {
205 
206  edm::ESHandle<GBRForest> readerPFLCEB;
207  edm::ESHandle<GBRForest> readerPFLCEE;
208  edm::ESHandle<GBRForest> readerPFGCEB;
209  edm::ESHandle<GBRForest> readerPFGCEEHR9;
210  edm::ESHandle<GBRForest> readerPFGCEELR9;
211  edm::ESHandle<GBRForest> readerPFRes;
212  es.get<GBRWrapperRcd>().get("PFLCorrectionBar",readerPFLCEB);
213  ReaderLCEB_=readerPFLCEB.product();
214  es.get<GBRWrapperRcd>().get("PFLCorrectionEnd",readerPFLCEE);
215  ReaderLCEE_=readerPFLCEE.product();
216  es.get<GBRWrapperRcd>().get("PFGCorrectionBar",readerPFGCEB);
217  ReaderGCBarrel_=readerPFGCEB.product();
218  es.get<GBRWrapperRcd>().get("PFGCorrectionEndHighR9",readerPFGCEEHR9);
219  ReaderGCEndCapHighr9_=readerPFGCEEHR9.product();
220  es.get<GBRWrapperRcd>().get("PFGCorrectionEndLowR9",readerPFGCEELR9);
221  ReaderGCEndCapLowr9_=readerPFGCEELR9.product();
222  es.get<GBRWrapperRcd>().get("PFEcalResolution",readerPFRes);
223  ReaderEcalRes_=readerPFRes.product();
224 
225 
226  LogDebug("PFEGammaProducer")<<"setting regressions from DB "<<std::endl;
227 
228  }
229  */
230 
231  //pfAlgo_->setPFPhotonRegWeights(ReaderLC_, ReaderGC_, ReaderRes_);
232 
233 }
void PFEGammaProducer::createSingleLegConversions ( reco::PFCandidateEGammaExtraCollection extras,
reco::ConversionCollection oneLegConversions,
const edm::RefProd< reco::ConversionCollection > &  convProd 
)
private

Definition at line 576 of file PFEGammaProducer.cc.

References reco::TrackBase::d0(), relativeConstraints::error, reco::Track::innerMomentum(), reco::Track::innerPosition(), reco::Track::outerMomentum(), reco::Track::outerPosition(), reco::Conversion::pflow, edm::PtrVector< T >::push_back(), edm::refToPtr(), and reco::Conversion::setOneLegMVA().

Referenced by produce().

576  {
577 
579  for (auto &extra : extras){
580  for (const auto &tkrefmva : extra.singleLegConvTrackRefMva()) {
581  const reco::Track &trk = *tkrefmva.first;
582 
583  const reco::Vertex convVtx(trk.innerPosition(), error);
584  std::vector<reco::TrackRef> OneLegConvVector;
585  OneLegConvVector.push_back(tkrefmva.first);
586  std::vector< float > OneLegMvaVector;
587  OneLegMvaVector.push_back(tkrefmva.second);
588  std::vector<reco::CaloClusterPtr> dummymatchingBC;
590  scPtrVec.push_back(edm::refToPtr(extra.superClusterRef()));
591 
592  std::vector<math::XYZPointF>trackPositionAtEcalVec;
593  std::vector<math::XYZPointF>innPointVec;
594  std::vector<math::XYZVectorF>trackPinVec;
595  std::vector<math::XYZVectorF>trackPoutVec;
596  math::XYZPointF trackPositionAtEcal(trk.outerPosition().X(), trk.outerPosition().Y(), trk.outerPosition().Z());
597  trackPositionAtEcalVec.push_back(trackPositionAtEcal);
598 
599  math::XYZPointF innPoint(trk.innerPosition().X(), trk.innerPosition().Y(), trk.innerPosition().Z());
600  innPointVec.push_back(innPoint);
601 
602  math::XYZVectorF trackPin(trk.innerMomentum().X(), trk.innerMomentum().Y(), trk.innerMomentum().Z());
603  trackPinVec.push_back(trackPin);
604 
605  math::XYZVectorF trackPout(trk.outerMomentum().X(), trk.outerMomentum().Y(), trk.outerMomentum().Z());
606  trackPoutVec.push_back( trackPout );
607 
608  float DCA = trk.d0() ;
609  float mvaval = tkrefmva.second;
610  reco::Conversion singleLegConvCandidate(scPtrVec,
611  OneLegConvVector,
612  trackPositionAtEcalVec,
613  convVtx,
614  dummymatchingBC,
615  DCA,
616  innPointVec,
617  trackPinVec,
618  trackPoutVec,
619  mvaval,
621  singleLegConvCandidate.setOneLegMVA(OneLegMvaVector);
622  oneLegConversions.push_back(singleLegConvCandidate);
623 
624  reco::ConversionRef convref(convProd,oneLegConversions.size()-1);
625  extra.addSingleLegConversionRef(convref);
626 
627  }
628 
629  }
630 
631 }
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:550
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:139
ErrorD< N >::type type
Definition: Error.h:39
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:65
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:55
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:17
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:70
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:60
static void PFEGammaProducer::globalEndJob ( pfEGHelpers::HeavyObjectCache const *  )
inlinestatic

Definition at line 61 of file PFEGammaProducer.h.

61  {
62  }
static std::unique_ptr<pfEGHelpers::HeavyObjectCache> PFEGammaProducer::initializeGlobalCache ( const edm::ParameterSet conf)
inlinestatic

Definition at line 57 of file PFEGammaProducer.h.

57  {
58  return std::unique_ptr<pfEGHelpers::HeavyObjectCache>(new pfEGHelpers::HeavyObjectCache(conf));
59  }
void PFEGammaProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::stream::EDProducerBase.

Definition at line 237 of file PFEGammaProducer.cc.

References assert(), gather_cfg::blocks, HLT_25ns14e33_v1_cff::clusters, createSingleLegConversions(), TauDecayModes::dec, ebeeClustersCollection_, reco::PFBlockElement::ECAL, eetopsSrc_, egCandidates_, egExtra_, asciidump::elements, esClustersCollection_, edm::EventID::event(), edm::hlt::Exception, newFWLiteAna::found, edm::Event::getByToken(), edm::Event::getRefBeforePut(), reco::PFBlockElement::HCAL, reco::PFBlockElement::HFEM, reco::PFBlockElement::HFHAD, reco::PFBlockElement::HO, i, edm::EventBase::id(), edm::EDGetTokenT< T >::index(), inputTagBlocks_, LOGDRESSED, eostools::move(), pfeg_, edm::Handle< T >::product(), reco::PFBlockElement::PS1, reco::PFBlockElement::PS2, edm::PtrVector< T >::push_back(), edm::Event::put(), edm::EventID::run(), reco::PFBlockElement::SC, sClusters_, reco::PFCandidate::setPFEGammaExtraRef(), setPFVertexParameters(), reco::PFCandidateEGammaExtra::setSuperClusterRef(), reco::PFCandidate::setSuperClusterRef(), singleLegConv_, edm::OwnVector< T, P >::size(), funct::true, useVerticesForNeutral_, HLT_25ns14e33_v1_cff::vertices, and vertices_.

238  {
239 
240  LOGDRESSED("PFEGammaProducer")
241  <<"START event: "
242  <<iEvent.id().event()
243  <<" in run "<<iEvent.id().run()<<std::endl;
244 
245 
246  // reset output collection
250 
251  // Get the EE-PS associations
253  iEvent.getByToken(eetopsSrc_,eetops);
254  pfeg_->setEEtoPSAssociation(eetops);
255 
256  // Get The vertices from the event
257  // and assign dynamic vertex parameters
259  bool gotVertices = iEvent.getByToken(vertices_,vertices);
260  if(!gotVertices) {
261  std::ostringstream err;
262  err<<"Cannot find vertices for this event.Continuing Without them ";
263  edm::LogError("PFEGammaProducer")<<err.str()<<std::endl;
264  }
265 
266  //Assign the PFAlgo Parameters
268 
269  // get the collection of blocks
270 
272 
273  LOGDRESSED("PFEGammaProducer")<<"getting blocks"<<std::endl;
274  bool found = iEvent.getByToken( inputTagBlocks_, blocks );
275 
276  if(!found ) {
277 
278  std::ostringstream err;
279  err<<"cannot find blocks: (tag index)"
280  << std::hex<< inputTagBlocks_.index() << std::dec;
281  edm::LogError("PFEGammaProducer")<<err.str()<<std::endl;
282 
283  throw cms::Exception( "MissingProduct", err.str());
284  }
285 
286  LOGDRESSED("PFEGammaProducer")
287  <<"EGPFlow is starting..."<<std::endl;
288 
289 #ifdef PFLOW_DEBUG
290  assert( blocks.isValid() && "edm::Handle to blocks was null!");
291  std::ostringstream str;
292  //str<<(*pfAlgo_)<<std::endl;
293  // cout << (*pfAlgo_) << std::endl;
294  LOGDRESSED("PFEGammaProducer") <<str.str()<<std::endl;
295 #endif
296 
297  // sort elements in three lists:
298  std::list< reco::PFBlockRef > hcalBlockRefs;
299  std::list< reco::PFBlockRef > ecalBlockRefs;
300  std::list< reco::PFBlockRef > hoBlockRefs;
301  std::list< reco::PFBlockRef > otherBlockRefs;
302 
303  for( unsigned i=0; i<blocks->size(); ++i ) {
304  // reco::PFBlockRef blockref( blockh,i );
305  //reco::PFBlockRef blockref = createBlockRef( *blocks, i);
306  reco::PFBlockRef blockref(blocks, i);
307 
309  elements = blockref->elements();
310 
311  LOGDRESSED("PFEGammaProducer")
312  << "Found " << elements.size()
313  << " PFBlockElements in block: " << i << std::endl;
314 
315  bool singleEcalOrHcal = false;
316  if( elements.size() == 1 ){
317  switch( elements[0].type() ) {
319  edm::LogError("PFEGammaProducer")
320  << "PFBLOCKALGO BUG!!!! Found a SuperCluster in a block by itself!";
324  ecalBlockRefs.push_back( blockref );
325  singleEcalOrHcal = true;
326  break;
330  hcalBlockRefs.push_back( blockref );
331  singleEcalOrHcal = true;
332  break;
334  // Single HO elements are likely to be noise. Not considered for now.
335  hoBlockRefs.push_back( blockref );
336  singleEcalOrHcal = true;
337  break;
338  default:
339  break;
340  }
341  }
342 
343  if(!singleEcalOrHcal) {
344  otherBlockRefs.push_back( blockref );
345  }
346  }//loop blocks
347 
348  // loop on blocks that are not single ecal, single ps1, single ps2 , or
349  // single hcal and produce unbiased collection of EGamma Candidates
350 
351  //printf("loop over blocks\n");
352  unsigned nblcks = 0;
353 
354  // this auto is a const reco::PFBlockRef&
355  for( const auto& blockref : otherBlockRefs ) {
356  ++nblcks;
357  // this auto is a: const edm::OwnVector< reco::PFBlockElement >&
358  const auto& elements = blockref->elements();
359  // make a copy of the link data, which will be edited.
360  //PFBlock::LinkData linkData = block.linkData();
361 
362  // keep track of the elements which are still active.
363  std::vector<bool> active( elements.size(), true );
364 
365  pfeg_->RunPFEG(globalCache(),blockref,active);
366 
367  if( pfeg_->getCandidates().size() ) {
368  LOGDRESSED("PFEGammaProducer")
369  << "Block with " << elements.size()
370  << " elements produced "
371  << pfeg_->getCandidates().size()
372  << " e-g candidates!" << std::endl;
373  }
374 
375  const size_t egsize = egCandidates_->size();
376  egCandidates_->resize(egsize + pfeg_->getCandidates().size());
377  reco::PFCandidateCollection::iterator eginsertfrom =
378  egCandidates_->begin() + egsize;
379  std::move(pfeg_->getCandidates().begin(),
380  pfeg_->getCandidates().end(),
381  eginsertfrom);
382 
383  const size_t egxsize = egExtra_->size();
384  egExtra_->resize(egxsize + pfeg_->getEGExtra().size());
385  reco::PFCandidateEGammaExtraCollection::iterator egxinsertfrom =
386  egExtra_->begin() + egxsize;
387  std::move(pfeg_->getEGExtra().begin(),
388  pfeg_->getEGExtra().end(),
389  egxinsertfrom);
390 
391  const size_t rscsize = sClusters_->size();
392  sClusters_->resize(rscsize + pfeg_->getRefinedSCs().size());
393  reco::SuperClusterCollection::iterator rscinsertfrom =
394  sClusters_->begin() + rscsize;
395  std::move(pfeg_->getRefinedSCs().begin(),
396  pfeg_->getRefinedSCs().end(),
397  rscinsertfrom);
398  }
399 
400  LOGDRESSED("PFEGammaProducer")
401  << "Running PFEGammaAlgo on all blocks produced = "
402  << egCandidates_->size() << " e-g candidates!"
403  << std::endl;
404 
407 
410 
411  //set the correct references to refined SC and EG extra using the refprods
412  for (unsigned int i=0; i < egCandidates_->size(); ++i) {
413  reco::PFCandidate &cand = egCandidates_->at(i);
415 
416  reco::PFCandidateEGammaExtraRef extraref(egXtraProd,i);
417  reco::SuperClusterRef refinedSCRef(sClusterProd,i);
418 
419  xtra.setSuperClusterRef(refinedSCRef);
420  cand.setSuperClusterRef(refinedSCRef);
421  cand.setPFEGammaExtraRef(extraref);
422  }
423 
424  //build collections of output CaloClusters from the used PFClusters
425  std::auto_ptr<reco::CaloClusterCollection> caloClustersEBEE(new reco::CaloClusterCollection);
426  std::auto_ptr<reco::CaloClusterCollection> caloClustersES(new reco::CaloClusterCollection);
427 
428  std::map<edm::Ptr<reco::CaloCluster>, unsigned int> pfClusterMapEBEE; //maps of pfclusters to caloclusters
429  std::map<edm::Ptr<reco::CaloCluster>, unsigned int> pfClusterMapES;
430 
431  for( const auto& sc : *sClusters_ ) {
432  for (reco::CaloCluster_iterator pfclus = sc.clustersBegin(); pfclus!=sc.clustersEnd(); ++pfclus) {
433  if (!pfClusterMapEBEE.count(*pfclus)) {
434  reco::CaloCluster caloclus(**pfclus);
435  caloClustersEBEE->push_back(caloclus);
436  pfClusterMapEBEE[*pfclus] = caloClustersEBEE->size() - 1;
437  }
438  else {
439  throw cms::Exception("PFEgammaProducer::produce")
440  << "Found an EB/EE pfcluster matched to more than one supercluster!"
441  << std::dec << std::endl;
442  }
443  }
444  for (reco::CaloCluster_iterator pfclus = sc.preshowerClustersBegin(); pfclus!=sc.preshowerClustersEnd(); ++pfclus) {
445  if (!pfClusterMapES.count(*pfclus)) {
446  reco::CaloCluster caloclus(**pfclus);
447  caloClustersES->push_back(caloclus);
448  pfClusterMapES[*pfclus] = caloClustersES->size() - 1;
449  }
450  else {
451  throw cms::Exception("PFEgammaProducer::produce")
452  << "Found an ES pfcluster matched to more than one supercluster!"
453  << std::dec << std::endl;
454  }
455  }
456  }
457 
458  //put calocluster output collections in event and get orphan handles to create ptrs
459  const edm::OrphanHandle<reco::CaloClusterCollection> &caloClusHandleEBEE = iEvent.put(caloClustersEBEE,ebeeClustersCollection_);
460  const edm::OrphanHandle<reco::CaloClusterCollection> &caloClusHandleES = iEvent.put(caloClustersES,esClustersCollection_);
461 
462  //relink superclusters to output caloclusters
463  for( auto& sc : *sClusters_ ) {
464  edm::Ptr<reco::CaloCluster> seedptr(caloClusHandleEBEE,pfClusterMapEBEE[sc.seed()]);
465  sc.setSeed(seedptr);
466 
468  for (reco::CaloCluster_iterator pfclus = sc.clustersBegin(); pfclus!=sc.clustersEnd(); ++pfclus) {
469  edm::Ptr<reco::CaloCluster> clusptr(caloClusHandleEBEE,pfClusterMapEBEE[*pfclus]);
470  clusters.push_back(clusptr);
471  }
472  sc.setClusters(clusters);
473 
474  reco::CaloClusterPtrVector psclusters;
475  for (reco::CaloCluster_iterator pfclus = sc.preshowerClustersBegin(); pfclus!=sc.preshowerClustersEnd(); ++pfclus) {
476  edm::Ptr<reco::CaloCluster> clusptr(caloClusHandleES,pfClusterMapES[*pfclus]);
477  psclusters.push_back(clusptr);
478  }
479  sc.setPreshowerClusters(psclusters);
480  }
481 
482  //create and fill references to single leg conversions
486 
487  // release our demonspawn into the wild to cause havoc
488  iEvent.put(sClusters_);
489  iEvent.put(egExtra_);
490  iEvent.put(singleLegConv_);
491  iEvent.put(egCandidates_);
492 }
RunNumber_t run() const
Definition: EventID.h:39
type
Definition: HCALResponse.h:21
EventNumber_t event() const
Definition: EventID.h:41
int i
Definition: DBlmapReader.cc:9
void createSingleLegConversions(reco::PFCandidateEGammaExtraCollection &extras, reco::ConversionCollection &oneLegConversions, const edm::RefProd< reco::ConversionCollection > &convProd)
void setSuperClusterRef(reco::SuperClusterRef sc)
set reference to the corresponding supercluster
edm::EDGetTokenT< reco::VertexCollection > vertices_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:139
assert(m_qm.get())
unsigned int index() const
Definition: EDGetToken.h:70
size_type size() const
Definition: OwnVector.h:254
list elements
Definition: asciidump.py:414
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
void setPFVertexParameters(bool useVertex, const reco::VertexCollection *primaryVertices)
std::vector< reco::PFCandidateEGammaExtra > PFCandidateEGammaExtraCollection
collection of PFCandidateEGammaExtras
def move
Definition: eostools.py:508
std::auto_ptr< reco::PFCandidateEGammaExtraCollection > egExtra_
std::vector< CaloCluster > CaloClusterCollection
collection of CaloCluster objects
std::string ebeeClustersCollection_
std::string esClustersCollection_
std::auto_ptr< reco::PFCandidateCollection > egCandidates_
edm::EDGetTokenT< reco::PFCluster::EEtoPSAssociation > eetopsSrc_
RefProd< PROD > getRefBeforePut()
Definition: Event.h:133
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
T const * product() const
Definition: Handle.h:81
list blocks
Definition: gather_cfg.py:90
std::unique_ptr< PFEGammaAlgo > pfeg_
the unfiltered electron collection
edm::EDGetTokenT< reco::PFBlockCollection > inputTagBlocks_
edm::EventID id() const
Definition: EventBase.h:60
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:39
#define LOGDRESSED(x)
void setPFEGammaExtraRef(const reco::PFCandidateEGammaExtraRef &ref)
set the PF EGamma Extra Ref
Definition: PFCandidate.cc:641
void setSuperClusterRef(const reco::SuperClusterRef &scRef)
Definition: PFCandidate.cc:620
std::auto_ptr< reco::ConversionCollection > singleLegConv_
std::auto_ptr< reco::SuperClusterCollection > sClusters_
void PFEGammaProducer::setPFEGParameters ( PFEGammaAlgo::PFEGConfigInfo cfg)
private

Definition at line 496 of file PFEGammaProducer.cc.

References alignCSCRings::e, PFEGammaAlgo::PFEGConfigInfo::mvaweightfile, PFEGammaAlgo::PFEGConfigInfo::mvaWeightFileEleID, AlCaHLTBitMon_ParallelJobs::p, pfeg_, primaryVertex_, PFEGammaAlgo::PFEGConfigInfo::primaryVtx, AlCaHLTBitMon_QueryRunRegistry::string, and useVerticesForNeutral_.

Referenced by PFEGammaProducer().

496  {
497 
498  FILE * fileEleID = fopen(cfg.mvaWeightFileEleID.c_str(), "r");
499  if (fileEleID) {
500  fclose(fileEleID);
501  }
502  else {
503  std::string err = "PFAlgo: cannot open weight file '";
504  err += cfg.mvaWeightFileEleID;
505  err += "'";
506  throw std::invalid_argument( err );
507  }
508 
509  //for MVA pass PV if there is one in the collection otherwise pass a dummy
510  if(!useVerticesForNeutral_) { // create a dummy PV
512  e(0, 0) = 0.0015 * 0.0015;
513  e(1, 1) = 0.0015 * 0.0015;
514  e(2, 2) = 15. * 15.;
515  reco::Vertex::Point p(0, 0, 0);
516  primaryVertex_ = reco::Vertex(p, e, 0, 0, 0);
517  }
518  // pv=&dummy;
519  //if(! usePFPhotons_) return;
520  FILE * filePhotonConvID = fopen(cfg.mvaweightfile.c_str(), "r");
521  if (filePhotonConvID) {
522  fclose(filePhotonConvID);
523  }
524  else {
525  std::string err = "PFAlgo: cannot open weight file '";
526  err += cfg.mvaweightfile;
527  err += "'";
528  throw std::invalid_argument( err );
529  }
530  cfg.primaryVtx = &primaryVertex_;
531  pfeg_.reset(new PFEGammaAlgo(cfg));
532 }
math::Error< dimension >::type Error
covariance error matrix (3x3)
Definition: Vertex.h:43
const reco::Vertex * primaryVtx
Definition: PFEGammaAlgo.h:126
reco::Vertex primaryVertex_
math::XYZPoint Point
point in the space
Definition: Vertex.h:39
std::unique_ptr< PFEGammaAlgo > pfeg_
the unfiltered electron collection
void PFEGammaProducer::setPFVertexParameters ( bool  useVertex,
const reco::VertexCollection primaryVertices 
)
private

Definition at line 546 of file PFEGammaProducer.cc.

References i, pfeg_, primaryVertex_, HLT_25ns14e33_v1_cff::useVertex, and useVerticesForNeutral_.

Referenced by produce().

547  {
549 
550  //Set the vertices for muon cleaning
551 // pfmu_->setInputsForCleaning(primaryVertices);
552 
553 
554  //Now find the primary vertex!
555  //bool primaryVertexFound = false;
556  int nVtx=primaryVertices->size();
557  pfeg_->setnPU(nVtx);
558 // if(usePFPhotons_){
559 // pfpho_->setnPU(nVtx);
560 // }
561  primaryVertex_ = primaryVertices->front();
562  for (unsigned short i=0 ;i<primaryVertices->size();++i)
563  {
564  if(primaryVertices->at(i).isValid()&&(!primaryVertices->at(i).isFake()))
565  {
567  //primaryVertexFound = true;
568  break;
569  }
570  }
571 
572  pfeg_->setPhotonPrimaryVtx(primaryVertex_ );
573 
574 }
int i
Definition: DBlmapReader.cc:9
reco::Vertex primaryVertex_
std::unique_ptr< PFEGammaAlgo > pfeg_
the unfiltered electron collection

Member Data Documentation

bool PFEGammaProducer::applyCrackCorrectionsElectrons_
private

Definition at line 115 of file PFEGammaProducer.h.

double PFEGammaProducer::coneEcalIsoForEgammaSC_
private

Definition at line 121 of file PFEGammaProducer.h.

double PFEGammaProducer::coneTrackIsoForEgammaSC_
private

Definition at line 124 of file PFEGammaProducer.h.

std::string PFEGammaProducer::ebeeClustersCollection_
private

Definition at line 143 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer(), and produce().

edm::EDGetTokenT<reco::PFCluster::EEtoPSAssociation> PFEGammaProducer::eetopsSrc_
private

Definition at line 78 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer(), and produce().

std::auto_ptr< reco::PFCandidateCollection > PFEGammaProducer::egCandidates_
private

Definition at line 129 of file PFEGammaProducer.h.

Referenced by produce().

std::auto_ptr<reco::PFCandidateEGammaExtraCollection> PFEGammaProducer::egExtra_
private

Definition at line 130 of file PFEGammaProducer.h.

Referenced by produce().

std::string PFEGammaProducer::esClustersCollection_
private

Definition at line 144 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer(), and produce().

edm::EDGetTokenT<reco::PFBlockCollection> PFEGammaProducer::inputTagBlocks_
private

Definition at line 77 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer(), and produce().

double PFEGammaProducer::mvaEleCut_
private

Definition at line 112 of file PFEGammaProducer.h.

std::string PFEGammaProducer::mvaWeightFileEleID_
private

Variables for PFEGamma.

Definition at line 110 of file PFEGammaProducer.h.

unsigned int PFEGammaProducer::nTrackIsoForEgammaSC_
private

Definition at line 125 of file PFEGammaProducer.h.

std::unique_ptr<PFEGammaAlgo> PFEGammaProducer::pfeg_
private

the unfiltered electron collection

particle flow algorithm

Definition at line 141 of file PFEGammaProducer.h.

Referenced by produce(), setPFEGParameters(), and setPFVertexParameters().

reco::Vertex PFEGammaProducer::primaryVertex_
private

Definition at line 127 of file PFEGammaProducer.h.

Referenced by setPFEGParameters(), and setPFVertexParameters().

const GBRForest* PFEGammaProducer::ReaderGC_
private

Definition at line 89 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

const GBRForest* PFEGammaProducer::ReaderLC_
private

Definition at line 90 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

const GBRForest* PFEGammaProducer::ReaderRes_
private

Definition at line 91 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

std::auto_ptr< reco::SuperClusterCollection > PFEGammaProducer::sClusters_
private

Definition at line 132 of file PFEGammaProducer.h.

Referenced by produce().

std::vector<double> PFEGammaProducer::setchi2Values_
private

Definition at line 111 of file PFEGammaProducer.h.

std::auto_ptr<reco::ConversionCollection> PFEGammaProducer::singleLegConv_
private

Definition at line 131 of file PFEGammaProducer.h.

Referenced by produce().

double PFEGammaProducer::sumEtEcalIsoForEgammaSC_barrel_
private

Definition at line 119 of file PFEGammaProducer.h.

double PFEGammaProducer::sumEtEcalIsoForEgammaSC_endcap_
private

Definition at line 120 of file PFEGammaProducer.h.

double PFEGammaProducer::sumPtTrackIsoForEgammaSC_barrel_
private

Definition at line 122 of file PFEGammaProducer.h.

double PFEGammaProducer::sumPtTrackIsoForEgammaSC_endcap_
private

Definition at line 123 of file PFEGammaProducer.h.

std::shared_ptr<PFSCEnergyCalibration> PFEGammaProducer::thePFSCEnergyCalibration_
private

Definition at line 107 of file PFEGammaProducer.h.

bool PFEGammaProducer::useCalibrationsFromDB_
private

Definition at line 105 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

bool PFEGammaProducer::useEGammaElectrons_
private

Definition at line 99 of file PFEGammaProducer.h.

bool PFEGammaProducer::useEGammaSupercluster_
private

Definition at line 118 of file PFEGammaProducer.h.

bool PFEGammaProducer::useEGElectrons_
private

Definition at line 117 of file PFEGammaProducer.h.

bool PFEGammaProducer::usePFElectrons_
private

Definition at line 113 of file PFEGammaProducer.h.

bool PFEGammaProducer::usePFPhotons_
private

Definition at line 114 of file PFEGammaProducer.h.

bool PFEGammaProducer::usePFSCEleCalib_
private

Definition at line 116 of file PFEGammaProducer.h.

bool PFEGammaProducer::usePhotonReg_
private

Definition at line 87 of file PFEGammaProducer.h.

bool PFEGammaProducer::useRegressionFromDB_
private

Definition at line 88 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

bool PFEGammaProducer::useVerticesForNeutral_
private
bool PFEGammaProducer::verbose_
private

verbose ?

Definition at line 84 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer().

edm::EDGetTokenT<reco::VertexCollection> PFEGammaProducer::vertices_
private

Definition at line 79 of file PFEGammaProducer.h.

Referenced by PFEGammaProducer(), and produce().