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 Types | Private Member Functions | Private Attributes
pat::PATPhotonProducer Class Reference

Produces the pat::Photon. More...

#include "PhysicsTools/PatAlgos/interface/PATPhotonProducer.h"

Inheritance diagram for pat::PATPhotonProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 PATPhotonProducer (const edm::ParameterSet &iConfig)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~PATPhotonProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- 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
 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
 
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 fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Types

typedef std::vector
< edm::Handle< edm::ValueMap
< IsoDeposit > > > 
IsoDepositMaps
 
typedef std::pair
< pat::IsolationKeys,
edm::InputTag
IsolationLabel
 
typedef std::vector
< IsolationLabel
IsolationLabels
 
typedef std::vector
< edm::Handle< edm::ValueMap
< double > > > 
IsolationValueMaps
 
typedef std::pair< std::string,
edm::InputTag
NameTag
 

Private Member Functions

template<typename T >
void readIsolationLabels (const edm::ParameterSet &iConfig, const char *psetName, IsolationLabels &labels, std::vector< edm::EDGetTokenT< edm::ValueMap< T > > > &tokens)
 

Private Attributes

bool addEfficiencies_
 
bool addGenMatch_
 
bool addPhotonID_
 
bool addResolutions_
 
edm::EDGetTokenT< reco::BeamSpotbeamLineToken_
 
const CaloGeometryecalGeometry_
 
const CaloTopologyecalTopology_
 
EcalClusterLocal ecl_
 
pat::helper::EfficiencyLoader efficiencyLoader_
 
edm::EDGetTokenT
< reco::GsfElectronCollection
electronToken_
 
bool embedBasicClusters_
 
bool embedGenMatch_
 
bool embedPreshowerClusters_
 
bool embedRecHits_
 
bool embedSeedCluster_
 
bool embedSuperCluster_
 
GreaterByEt< PhotoneTComparator_
 
std::vector< edm::EDGetTokenT
< edm::Association
< reco::GenParticleCollection > > > 
genMatchTokens_
 
edm::EDGetTokenT
< reco::ConversionCollection
hConversionsToken_
 
IsolationLabels isoDepositLabels_
 
std::vector< edm::EDGetTokenT
< edm::ValueMap< IsoDeposit > > > 
isoDepositTokens_
 
IsolationLabels isolationValueLabels_
 
std::vector< edm::EDGetTokenT
< edm::ValueMap< double > > > 
isolationValueTokens_
 
pat::helper::MultiIsolator isolator_
 
pat::helper::MultiIsolator::IsolationValuePairs isolatorTmpStorage_
 
std::vector< NameTagphotIDSrcs_
 
std::vector< edm::EDGetTokenT
< edm::ValueMap< Bool_t > > > 
photIDTokens_
 
edm::EDGetTokenT< edm::View
< reco::Photon > > 
photonToken_
 
edm::InputTag reducedBarrelRecHitCollection_
 
edm::EDGetTokenT
< EcalRecHitCollection
reducedBarrelRecHitCollectionToken_
 
edm::InputTag reducedEndcapRecHitCollection_
 
edm::EDGetTokenT
< EcalRecHitCollection
reducedEndcapRecHitCollectionToken_
 
pat::helper::KinResolutionsLoader resolutionLoader_
 
pat::PATUserDataHelper
< pat::Photon
userDataHelper_
 
bool useUserData_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer 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

Produces the pat::Photon.

The PATPhotonProducer produces the analysis-level pat::Photon starting from a collection of objects of PhotonType.

Author
Steven Lowette
Version
Id:
PATPhotonProducer.h,v 1.19 2009/06/25 23:49:35 gpetrucc Exp

Definition at line 54 of file PATPhotonProducer.h.

Member Typedef Documentation

Definition at line 92 of file PATPhotonProducer.h.

Definition at line 94 of file PATPhotonProducer.h.

Definition at line 95 of file PATPhotonProducer.h.

typedef std::vector< edm::Handle< edm::ValueMap<double> > > pat::PATPhotonProducer::IsolationValueMaps
private

Definition at line 93 of file PATPhotonProducer.h.

typedef std::pair<std::string, edm::InputTag> pat::PATPhotonProducer::NameTag
private

Definition at line 119 of file PATPhotonProducer.h.

Constructor & Destructor Documentation

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

Definition at line 29 of file PATPhotonProducer.cc.

References addGenMatch_, beamLineToken_, edm::EDConsumerBase::consumes(), electronToken_, embedBasicClusters_, embedGenMatch_, embedPreshowerClusters_, embedRecHits_, embedSeedCluster_, embedSuperCluster_, edm::ParameterSet::existsAs(), genMatchTokens_, edm::ParameterSet::getParameter(), hConversionsToken_, photonToken_, reducedBarrelRecHitCollection_, reducedBarrelRecHitCollectionToken_, reducedEndcapRecHitCollection_, reducedEndcapRecHitCollectionToken_, GlobalPosition_Frontier_DevDB_cff::tag, and edm::vector_transform().

29  :
30  isolator_(iConfig.exists("userIsolation") ? iConfig.getParameter<edm::ParameterSet>("userIsolation") : edm::ParameterSet(), consumesCollector(), false) ,
31  useUserData_(iConfig.exists("userData"))
32 {
33  // initialize the configurables
34  photonToken_ = consumes<edm::View<reco::Photon> >(iConfig.getParameter<edm::InputTag>("photonSource"));
35  electronToken_ = consumes<reco::GsfElectronCollection>(edm::InputTag("gedGsfElectrons"));
36  hConversionsToken_ = consumes<reco::ConversionCollection>(edm::InputTag("allConversions"));
37  beamLineToken_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamLineSrc"));
38  embedSuperCluster_ = iConfig.getParameter<bool>("embedSuperCluster");
39  embedSeedCluster_ = iConfig.getParameter<bool>( "embedSeedCluster" );
40  embedBasicClusters_ = iConfig.getParameter<bool>( "embedBasicClusters" );
41  embedPreshowerClusters_ = iConfig.getParameter<bool>( "embedPreshowerClusters" );
42  embedRecHits_ = iConfig.getParameter<bool>( "embedRecHits" );
43  reducedBarrelRecHitCollection_ = iConfig.getParameter<edm::InputTag>("reducedBarrelRecHitCollection");
44  reducedBarrelRecHitCollectionToken_ = mayConsume<EcalRecHitCollection>(reducedBarrelRecHitCollection_);
45  reducedEndcapRecHitCollection_ = iConfig.getParameter<edm::InputTag>("reducedEndcapRecHitCollection");
46  reducedEndcapRecHitCollectionToken_ = mayConsume<EcalRecHitCollection>(reducedEndcapRecHitCollection_);
47  // MC matching configurables
48  addGenMatch_ = iConfig.getParameter<bool>( "addGenMatch" );
49  if (addGenMatch_) {
50  embedGenMatch_ = iConfig.getParameter<bool>( "embedGenMatch" );
51  if (iConfig.existsAs<edm::InputTag>("genParticleMatch")) {
53  }
54  else {
55  genMatchTokens_ = edm::vector_transform(iConfig.getParameter<std::vector<edm::InputTag> >( "genParticleMatch" ), [this](edm::InputTag const & tag){return consumes<edm::Association<reco::GenParticleCollection> >(tag);});
56  }
57  }
58  // Efficiency configurables
59  addEfficiencies_ = iConfig.getParameter<bool>("addEfficiencies");
60  if (addEfficiencies_) {
62  }
63  // photon ID configurables
64  addPhotonID_ = iConfig.getParameter<bool>( "addPhotonID" );
65  if (addPhotonID_) {
66  // it might be a single photon ID
67  if (iConfig.existsAs<edm::InputTag>("photonIDSource")) {
68  photIDSrcs_.push_back(NameTag("", iConfig.getParameter<edm::InputTag>("photonIDSource")));
69  }
70  // or there might be many of them
71  if (iConfig.existsAs<edm::ParameterSet>("photonIDSources")) {
72  // please don't configure me twice
73  if (!photIDSrcs_.empty()){
74  throw cms::Exception("Configuration") << "PATPhotonProducer: you can't specify both 'photonIDSource' and 'photonIDSources'\n";
75  }
76  // read the different photon ID names
77  edm::ParameterSet idps = iConfig.getParameter<edm::ParameterSet>("photonIDSources");
78  std::vector<std::string> names = idps.getParameterNamesForType<edm::InputTag>();
79  for (std::vector<std::string>::const_iterator it = names.begin(), ed = names.end(); it != ed; ++it) {
80  photIDSrcs_.push_back(NameTag(*it, idps.getParameter<edm::InputTag>(*it)));
81  }
82  }
83  // but in any case at least once
84  if (photIDSrcs_.empty()) throw cms::Exception("Configuration") <<
85  "PATPhotonProducer: id addPhotonID is true, you must specify either:\n" <<
86  "\tInputTag photonIDSource = <someTag>\n" << "or\n" <<
87  "\tPSet photonIDSources = { \n" <<
88  "\t\tInputTag <someName> = <someTag> // as many as you want \n " <<
89  "\t}\n";
90  }
91  photIDTokens_ = edm::vector_transform(photIDSrcs_, [this](NameTag const & tag){return mayConsume<edm::ValueMap<Bool_t> >(tag.second);});
92  // Resolution configurables
93  addResolutions_ = iConfig.getParameter<bool>("addResolutions");
94  if (addResolutions_) {
96  }
97  // Check to see if the user wants to add user data
98  if ( useUserData_ ) {
100  }
101  // produces vector of photons
102  produces<std::vector<Photon> >();
103 
104  // read isoDeposit labels, for direct embedding
105  readIsolationLabels(iConfig, "isoDeposits", isoDepositLabels_, isoDepositTokens_);
106  // read isolation value labels, for direct embedding
108 
109 }
T getParameter(std::string const &) const
Assists in assimilating all pat::UserData into pat objects.
pat::PATUserDataHelper< pat::Photon > userDataHelper_
edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:184
static const HistoName names[]
std::pair< std::string, edm::InputTag > NameTag
std::vector< edm::EDGetTokenT< edm::ValueMap< Bool_t > > > photIDTokens_
edm::EDGetTokenT< reco::BeamSpot > beamLineToken_
edm::EDGetTokenT< edm::View< reco::Photon > > photonToken_
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::vector< edm::EDGetTokenT< edm::Association< reco::GenParticleCollection > > > genMatchTokens_
pat::helper::KinResolutionsLoader resolutionLoader_
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
edm::InputTag reducedEndcapRecHitCollection_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::vector< std::string > getParameterNamesForType(bool trackiness=true) const
Definition: ParameterSet.h:192
void readIsolationLabels(const edm::ParameterSet &iConfig, const char *psetName, IsolationLabels &labels, std::vector< edm::EDGetTokenT< edm::ValueMap< T > > > &tokens)
IsolationLabels isoDepositLabels_
IsolationLabels isolationValueLabels_
std::vector< edm::EDGetTokenT< edm::ValueMap< IsoDeposit > > > isoDepositTokens_
pat::helper::EfficiencyLoader efficiencyLoader_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::vector< NameTag > photIDSrcs_
pat::helper::MultiIsolator isolator_
edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
std::vector< edm::EDGetTokenT< edm::ValueMap< double > > > isolationValueTokens_
edm::InputTag reducedBarrelRecHitCollection_
edm::EDGetTokenT< reco::ConversionCollection > hConversionsToken_
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
PATPhotonProducer::~PATPhotonProducer ( )

Definition at line 111 of file PATPhotonProducer.cc.

111  {
112 }

Member Function Documentation

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

Definition at line 401 of file PATPhotonProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addNode(), edm::ParameterSetDescription::addOptional(), pat::helper::KinResolutionsLoader::fillDescription(), pat::PATUserDataHelper< ObjectType >::fillDescription(), edm::ParameterSetDescription::setAllowAnything(), edm::ParameterSetDescription::setComment(), and edm::ParameterDescriptionNode::setComment().

402 {
404  iDesc.setComment("PAT photon producer module");
405 
406  // input source
407  iDesc.add<edm::InputTag>("photonSource", edm::InputTag("no default"))->setComment("input collection");
408 
409  iDesc.add<edm::InputTag>("reducedBarrelRecHitCollection", edm::InputTag("reducedEcalRecHitsEB"));
410  iDesc.add<edm::InputTag>("reducedEndcapRecHitCollection", edm::InputTag("reducedEcalRecHitsEE"));
411 
412  iDesc.add<bool>("embedSuperCluster", true)->setComment("embed external super cluster");
413  iDesc.add<bool>("embedSeedCluster", true)->setComment("embed external seed cluster");
414  iDesc.add<bool>("embedBasicClusters", true)->setComment("embed external basic clusters");
415  iDesc.add<bool>("embedPreshowerClusters", true)->setComment("embed external preshower clusters");
416  iDesc.add<bool>("embedRecHits", true)->setComment("embed external RecHits");
417 
418  iDesc.add<edm::InputTag>("electronSource", edm::InputTag("no default"))->setComment("input collection");
419 
420  // MC matching configurables
421  iDesc.add<bool>("addGenMatch", true)->setComment("add MC matching");
422  iDesc.add<bool>("embedGenMatch", false)->setComment("embed MC matched MC information");
423  std::vector<edm::InputTag> emptySourceVector;
424  iDesc.addNode( edm::ParameterDescription<edm::InputTag>("genParticleMatch", edm::InputTag(), true) xor
425  edm::ParameterDescription<std::vector<edm::InputTag> >("genParticleMatch", emptySourceVector, true)
426  )->setComment("input with MC match information");
427 
429 
430  // photon ID configurables
431  iDesc.add<bool>("addPhotonID",true)->setComment("add photon ID variables");
432  edm::ParameterSetDescription photonIDSourcesPSet;
433  photonIDSourcesPSet.setAllowAnything();
434  iDesc.addNode( edm::ParameterDescription<edm::InputTag>("photonIDSource", edm::InputTag(), true) xor
435  edm::ParameterDescription<edm::ParameterSetDescription>("photonIDSources", photonIDSourcesPSet, true)
436  )->setComment("input with photon ID variables");
437 
438  // IsoDeposit configurables
439  edm::ParameterSetDescription isoDepositsPSet;
440  isoDepositsPSet.addOptional<edm::InputTag>("tracker");
441  isoDepositsPSet.addOptional<edm::InputTag>("ecal");
442  isoDepositsPSet.addOptional<edm::InputTag>("hcal");
443  isoDepositsPSet.addOptional<edm::InputTag>("pfAllParticles");
444  isoDepositsPSet.addOptional<edm::InputTag>("pfChargedHadrons");
445  isoDepositsPSet.addOptional<edm::InputTag>("pfChargedAll");
446  isoDepositsPSet.addOptional<edm::InputTag>("pfPUChargedHadrons");
447  isoDepositsPSet.addOptional<edm::InputTag>("pfNeutralHadrons");
448  isoDepositsPSet.addOptional<edm::InputTag>("pfPhotons");
449  isoDepositsPSet.addOptional<std::vector<edm::InputTag> >("user");
450  iDesc.addOptional("isoDeposits", isoDepositsPSet);
451 
452  // isolation values configurables
453  edm::ParameterSetDescription isolationValuesPSet;
454  isolationValuesPSet.addOptional<edm::InputTag>("tracker");
455  isolationValuesPSet.addOptional<edm::InputTag>("ecal");
456  isolationValuesPSet.addOptional<edm::InputTag>("hcal");
457  isolationValuesPSet.addOptional<edm::InputTag>("pfAllParticles");
458  isolationValuesPSet.addOptional<edm::InputTag>("pfChargedHadrons");
459  isolationValuesPSet.addOptional<edm::InputTag>("pfChargedAll");
460  isolationValuesPSet.addOptional<edm::InputTag>("pfPUChargedHadrons");
461  isolationValuesPSet.addOptional<edm::InputTag>("pfNeutralHadrons");
462  isolationValuesPSet.addOptional<edm::InputTag>("pfPhotons");
463  isolationValuesPSet.addOptional<std::vector<edm::InputTag> >("user");
464  iDesc.addOptional("isolationValues", isolationValuesPSet);
465 
466  // Efficiency configurables
467  edm::ParameterSetDescription efficienciesPSet;
468  efficienciesPSet.setAllowAnything(); // TODO: the pat helper needs to implement a description.
469  iDesc.add("efficiencies", efficienciesPSet);
470  iDesc.add<bool>("addEfficiencies", false);
471 
472  // Check to see if the user wants to add user data
473  edm::ParameterSetDescription userDataPSet;
475  iDesc.addOptional("userData", userDataPSet);
476 
477  edm::ParameterSetDescription isolationPSet;
478  isolationPSet.setAllowAnything(); // TODO: the pat helper needs to implement a description.
479  iDesc.add("userIsolation", isolationPSet);
480 
481  iDesc.addNode( edm::ParameterDescription<edm::InputTag>("beamLineSrc", edm::InputTag(), true)
482  )->setComment("input with high level selection");
483 
484  descriptions.add("PATPhotonProducer", iDesc);
485 
486 }
void setComment(std::string const &value)
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
void setAllowAnything()
allow any parameter label/value pairs
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
static void fillDescription(edm::ParameterSetDescription &iDesc)
void setComment(std::string const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescription(edm::ParameterSetDescription &iDesc)
Method for documentation and validation of PSet.
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void PATPhotonProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overridevirtual

Implements edm::EDProducer.

Definition at line 114 of file PATPhotonProducer.cc.

References addGenMatch_, pat::PATObject< ObjectType >::addGenParticleRef(), addPhotonID_, Reference_intrackfit_cff::barrel, beamLineToken_, pat::helper::MultiIsolator::beginEvent(), DetId::Ecal, EcalBarrel, EcalEndcap, ecalGeometry_, ecalTopology_, ecl_, efficiencyLoader_, electronToken_, jptDQMConfig_cff::eMax, pat::Photon::embedBasicClusters(), embedBasicClusters_, embedGenMatch_, pat::PATObject< ObjectType >::embedGenParticle(), pat::Photon::embedPreshowerClusters(), embedPreshowerClusters_, pat::Photon::embedRecHits(), embedRecHits_, pat::Photon::embedSeedCluster(), embedSeedCluster_, pat::Photon::embedSuperCluster(), embedSuperCluster_, pat::helper::EfficiencyLoader::enabled(), pat::helper::KinResolutionsLoader::enabled(), pat::helper::MultiIsolator::enabled(), edm::SortedCollection< T, SORT >::end(), pat::helper::MultiIsolator::endEvent(), eTComparator_, f, pat::helper::MultiIsolator::fill(), edm::SortedCollection< T, SORT >::find(), first, genMatchTokens_, edm::EventSetup::get(), edm::Event::getByToken(), CaloTopology::getSubdetectorTopology(), CaloSubdetectorTopology::getWindow(), ConversionTools::hasMatchedPromptElectron(), reco::Photon::hasPixelSeed(), hConversionsToken_, i, customizeTrackingMonitorSeedNumber::idx, edm::detail::isnan(), isoDepositLabels_, isoDepositTokens_, isolationValueLabels_, isolationValueTokens_, isolator_, isolatorTmpStorage_, edm::EventBase::isRealData(), edm::HandleBase::isValid(), j, EcalClusterLocal::localCoordsEB(), n, pat::helper::EfficiencyLoader::newEvent(), pat::helper::KinResolutionsLoader::newEvent(), Phi_mpi_pi(), photIDSrcs_, photIDTokens_, interactiveExample::photons, photonToken_, edm::SortedCollection< T, SORT >::push_back(), edm::Event::put(), reducedBarrelRecHitCollection_, reducedBarrelRecHitCollectionToken_, reducedEndcapRecHitCollection_, reducedEndcapRecHitCollectionToken_, resolutionLoader_, pat::Photon::setCryEta(), pat::Photon::setCryPhi(), pat::Photon::setE2nd(), pat::Photon::setE3x3(), pat::Photon::setEBottom(), pat::helper::EfficiencyLoader::setEfficiencies(), pat::Photon::setELeft(), pat::Photon::setEMax(), pat::Photon::setERight(), pat::Photon::setETop(), pat::Photon::setHasPixelSeed(), pat::Photon::setIEta(), pat::Photon::setIPhi(), pat::Photon::setIsoDeposit(), pat::Photon::setIsolation(), pat::Photon::setMaxDR(), pat::Photon::setMaxDRDEta(), pat::Photon::setMaxDRDPhi(), pat::Photon::setMaxDRRawEnergy(), pat::Photon::setPassElectronVeto(), pat::Photon::setPhotonIDs(), pat::helper::KinResolutionsLoader::setResolutions(), pat::Photon::setSee(), pat::Photon::setSeedEnergy(), pat::Photon::setSep(), pat::Photon::setSpp(), pat::Photon::setSubClusDEta1(), pat::Photon::setSubClusDEta2(), pat::Photon::setSubClusDEta3(), pat::Photon::setSubClusDPhi1(), pat::Photon::setSubClusDPhi2(), pat::Photon::setSubClusDPhi3(), pat::Photon::setSubClusRawE1(), pat::Photon::setSubClusRawE2(), pat::Photon::setSubClusRawE3(), edm::SortedCollection< T, SORT >::size(), edm::SortedCollection< T, SORT >::sort(), python.multivaluedict::sort(), mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, reco::Photon::superCluster(), userDataHelper_, and useUserData_.

115 {
116  // switch off embedding (in unschedules mode)
117  if (iEvent.isRealData()){
118  addGenMatch_ = false;
119  embedGenMatch_ = false;
120  }
121 
122  edm::ESHandle<CaloTopology> theCaloTopology;
123  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
124  ecalTopology_ = & (*theCaloTopology);
125 
126  // Get the vector of Photon's from the event
128  iEvent.getByToken(photonToken_, photons);
129 
130  edm::InputTag reducedEBRecHitCollection(std::string("reducedEcalRecHitsEB"));
131  edm::InputTag reducedEERecHitCollection(std::string("reducedEcalRecHitsEE"));
133 
134  // Get calo geometry
135  edm::ESHandle<CaloGeometry> theCaloGeometry;
136  iSetup.get<CaloGeometryRecord>().get(theCaloGeometry);
137  ecalGeometry_ = & (*theCaloGeometry);
138 
139  // for conversion veto selection
141  iEvent.getByToken(hConversionsToken_, hConversions);
142 
143  // Get the collection of electrons from the event
145  iEvent.getByToken(electronToken_, hElectrons);
146 
147  // Get the beamspot
148  edm::Handle<reco::BeamSpot> beamSpotHandle;
149  iEvent.getByToken(beamLineToken_, beamSpotHandle);
150 
151  // prepare the MC matching
152  std::vector<edm::Handle<edm::Association<reco::GenParticleCollection> > >genMatches(genMatchTokens_.size());
153  if (addGenMatch_) {
154  for (size_t j = 0, nd = genMatchTokens_.size(); j < nd; ++j) {
155  iEvent.getByToken(genMatchTokens_[j], genMatches[j]);
156  }
157  }
158 
159  if (isolator_.enabled()) isolator_.beginEvent(iEvent,iSetup);
160 
162  if (resolutionLoader_.enabled()) resolutionLoader_.newEvent(iEvent, iSetup);
163 
164  IsoDepositMaps deposits(isoDepositTokens_.size());
165  for (size_t j = 0, nd = isoDepositTokens_.size(); j < nd; ++j) {
166  iEvent.getByToken(isoDepositTokens_[j], deposits[j]);
167  }
168 
169  IsolationValueMaps isolationValues(isolationValueTokens_.size());
170  for (size_t j = 0; j<isolationValueTokens_.size(); ++j) {
171  iEvent.getByToken(isolationValueTokens_[j], isolationValues[j]);
172  }
173 
174 
175  // prepare ID extraction
176  std::vector<edm::Handle<edm::ValueMap<Bool_t> > > idhandles;
177  std::vector<pat::Photon::IdPair> ids;
178  if (addPhotonID_) {
179  idhandles.resize(photIDSrcs_.size());
180  ids.resize(photIDSrcs_.size());
181  for (size_t i = 0; i < photIDSrcs_.size(); ++i) {
182  iEvent.getByToken(photIDTokens_[i], idhandles[i]);
183  ids[i].first = photIDSrcs_[i].first;
184  }
185  }
186 
187  // loop over photons
188  std::vector<Photon> * PATPhotons = new std::vector<Photon>();
189  for (edm::View<reco::Photon>::const_iterator itPhoton = photons->begin(); itPhoton != photons->end(); itPhoton++) {
190  // construct the Photon from the ref -> save ref to original object
191  unsigned int idx = itPhoton - photons->begin();
192  edm::RefToBase<reco::Photon> photonRef = photons->refAt(idx);
193  edm::Ptr<reco::Photon> photonPtr = photons->ptrAt(idx);
194  Photon aPhoton(photonRef);
195  if (embedSuperCluster_) aPhoton.embedSuperCluster();
196  if (embedSeedCluster_) aPhoton.embedSeedCluster();
197  if (embedBasicClusters_) aPhoton.embedBasicClusters();
198  if (embedPreshowerClusters_) aPhoton.embedPreshowerClusters();
199 
200  std::vector<DetId> selectedCells;
201  bool barrel = itPhoton->isEB();
202  //loop over sub clusters
203  if (embedBasicClusters_) {
204  for (reco::CaloCluster_iterator clusIt = itPhoton->superCluster()->clustersBegin(); clusIt!=itPhoton->superCluster()->clustersEnd(); ++clusIt) {
205  //get seed (max energy xtal)
206  DetId seed = lazyTools.getMaximum(**clusIt).first;
207  //get all xtals in 5x5 window around the seed
208  std::vector<DetId> dets5x5 = (barrel) ? ecalTopology_->getSubdetectorTopology(DetId::Ecal,EcalBarrel)->getWindow(seed,5,5):
210  selectedCells.insert(selectedCells.end(), dets5x5.begin(), dets5x5.end());
211 
212  //get all xtals belonging to cluster
213  for (const std::pair<DetId, float> &hit : (*clusIt)->hitsAndFractions()) {
214  selectedCells.push_back(hit.first);
215  }
216  }
217  }
218 
219  //remove duplicates
220  std::sort(selectedCells.begin(),selectedCells.end());
221  std::unique(selectedCells.begin(),selectedCells.end());
222 
223  // Retrieve the corresponding RecHits
224 
226  float cryPhi, cryEta, thetatilt, phitilt;
227  int ieta, iphi;
228 
229  switch( photonRef->superCluster()->seed()->hitsAndFractions().at(0).first.subdetId() ) {
230  case EcalBarrel:
231  {
233  ecl_.localCoordsEB( *photonRef->superCluster()->seed(), *ecalGeometry_, cryEta, cryPhi, ieta, iphi, thetatilt, phitilt);
234  }
235  break;
236  case EcalEndcap:
237  {
239  }
240  break;
241  default:
242  edm::LogError("PFECALSuperClusterProducer::calculateRegressedEnergy") << "Supercluster seed is either EB nor EE!" << std::endl;
243  }
244 
245  EcalRecHitCollection selectedRecHits;
246  const EcalRecHitCollection *recHits = rechitsH.product();
247 
248  unsigned nSelectedCells = selectedCells.size();
249  for (unsigned icell = 0 ; icell < nSelectedCells ; ++icell) {
250  EcalRecHitCollection::const_iterator it = recHits->find( selectedCells[icell] );
251  if ( it != recHits->end() ) {
252  selectedRecHits.push_back(*it);
253  }
254  }
255  selectedRecHits.sort();
256  if (embedRecHits_) aPhoton.embedRecHits(& selectedRecHits);
257 
258  // store the match to the generated final state muons
259  if (addGenMatch_) {
260  for(size_t i = 0, n = genMatches.size(); i < n; ++i) {
261  reco::GenParticleRef genPhoton = (*genMatches[i])[photonRef];
262  aPhoton.addGenParticleRef(genPhoton);
263  }
264  if (embedGenMatch_) aPhoton.embedGenParticle();
265  }
266 
267  if (efficiencyLoader_.enabled()) {
268  efficiencyLoader_.setEfficiencies( aPhoton, photonRef );
269  }
270 
271  if (resolutionLoader_.enabled()) {
273  }
274 
275  // here comes the extra functionality
276  if (isolator_.enabled()) {
277  isolator_.fill(*photons, idx, isolatorTmpStorage_);
278  typedef pat::helper::MultiIsolator::IsolationValuePairs IsolationValuePairs;
279  // better to loop backwards, so the vector is resized less times
280  for (IsolationValuePairs::const_reverse_iterator it = isolatorTmpStorage_.rbegin(), ed = isolatorTmpStorage_.rend(); it != ed; ++it) {
281  aPhoton.setIsolation(it->first, it->second);
282  }
283  }
284 
285  for (size_t j = 0, nd = deposits.size(); j < nd; ++j) {
286  aPhoton.setIsoDeposit(isoDepositLabels_[j].first, (*deposits[j])[photonRef]);
287  }
288 
289  for (size_t j = 0; j<isolationValues.size(); ++j) {
290  aPhoton.setIsolation(isolationValueLabels_[j].first,(*isolationValues[j])[photonRef]);
291  }
292 
293  // add photon ID info
294  if (addPhotonID_) {
295  for (size_t i = 0; i < photIDSrcs_.size(); ++i) {
296  ids[i].second = (*idhandles[i])[photonRef];
297  }
298  aPhoton.setPhotonIDs(ids);
299  }
300 
301  if ( useUserData_ ) {
302  userDataHelper_.add( aPhoton, iEvent, iSetup );
303  }
304 
305  // set conversion veto selection
306  bool passelectronveto = false;
307  if( hConversions.isValid()){
308  // this is recommended method
309  passelectronveto = !ConversionTools::hasMatchedPromptElectron(photonRef->superCluster(), hElectrons, hConversions, beamSpotHandle->position());
310  }
311  aPhoton.setPassElectronVeto( passelectronveto );
312 
313  // set electron veto using pixel seed (not recommended but many analysis groups are still using since it is powerful method to remove electrons)
314  aPhoton.setHasPixelSeed( photonRef->hasPixelSeed() );
315 
316  // set seed energy
317  aPhoton.setSeedEnergy( photonRef->superCluster()->seed()->energy() );
318 
319  // prepare input variables for regression energy correction
320  float maxDR=999., maxDRDPhi=999., maxDRDEta=999., maxDRRawEnergy=0.;
321  float subClusRawE[3], subClusDPhi[3], subClusDEta[3];
322  memset(subClusRawE,0,3*sizeof(float));
323  memset(subClusDPhi,0,3*sizeof(float));
324  memset(subClusDEta,0,3*sizeof(float));
325  size_t iclus=0;
326  for( auto clus = photonRef->superCluster()->clustersBegin()+1; clus != photonRef->superCluster()->clustersEnd(); ++clus ) {
327  const float this_deta = (*clus)->eta() - photonRef->superCluster()->seed()->eta();
328  const float this_dphi = TVector2::Phi_mpi_pi((*clus)->phi() - photonRef->superCluster()->seed()->phi());
329  const float this_dr = std::hypot(this_deta,this_dphi);
330  if(this_dr > maxDR || maxDR == 999.0f) {
331  maxDR = this_dr;
332  maxDRDEta = this_deta;
333  maxDRDPhi = this_dphi;
334  maxDRRawEnergy = (*clus)->energy();
335  }
336  if( iclus++ < 3 ) {
337  subClusRawE[iclus] = (*clus)->energy();
338  subClusDEta[iclus] = this_deta;
339  subClusDPhi[iclus] = this_dphi;
340  }
341  }
342 
343  const float eMax = EcalClusterTools::eMax( *photonRef->superCluster()->seed(), &*rechitsH );
344  const float e2nd = EcalClusterTools::e2nd( *photonRef->superCluster()->seed(), &*rechitsH );
345  const float e3x3 = EcalClusterTools::e3x3( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
346  const float eTop = EcalClusterTools::eTop( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
347  const float eBottom = EcalClusterTools::eBottom( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
348  const float eLeft = EcalClusterTools::eLeft( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
349  const float eRight = EcalClusterTools::eRight( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
350  std::vector<float> vCov = EcalClusterTools::localCovariances( *photonRef->superCluster()->seed(), &*rechitsH, ecalTopology_ );
351  const float see = (isnan(vCov[0]) ? 0. : sqrt(vCov[0]));
352  const float spp = (isnan(vCov[2]) ? 0. : sqrt(vCov[2]));
353  const float sep = vCov[1];
354 
355  // set input variables for regression energy correction
356  aPhoton.setEMax( eMax );
357  aPhoton.setE2nd( e2nd );
358  aPhoton.setE3x3( e3x3 );
359  aPhoton.setETop( eTop );
360  aPhoton.setEBottom( eBottom );
361  aPhoton.setELeft( eLeft );
362  aPhoton.setERight( eRight );
363  aPhoton.setSee( see );
364  aPhoton.setSpp( spp );
365  aPhoton.setSep( sep );
366 
367  aPhoton.setMaxDR( maxDR );
368  aPhoton.setMaxDRDPhi( maxDRDPhi );
369  aPhoton.setMaxDRDEta( maxDRDEta );
370  aPhoton.setMaxDRRawEnergy( maxDRRawEnergy );
371  aPhoton.setSubClusRawE1( subClusRawE[0] );
372  aPhoton.setSubClusRawE2( subClusRawE[1] );
373  aPhoton.setSubClusRawE3( subClusRawE[2] );
374  aPhoton.setSubClusDPhi1( subClusDPhi[0] );
375  aPhoton.setSubClusDPhi2( subClusDPhi[1] );
376  aPhoton.setSubClusDPhi3( subClusDPhi[2] );
377  aPhoton.setSubClusDEta1( subClusDEta[0] );
378  aPhoton.setSubClusDEta2( subClusDEta[1] );
379  aPhoton.setSubClusDEta3( subClusDEta[2] );
380 
381  aPhoton.setCryPhi( cryPhi );
382  aPhoton.setCryEta( cryEta );
383  aPhoton.setIEta( ieta );
384  aPhoton.setIPhi( iphi );
385 
386  // add the Photon to the vector of Photons
387  PATPhotons->push_back(aPhoton);
388  }
389 
390  // sort Photons in ET
391  std::sort(PATPhotons->begin(), PATPhotons->end(), eTComparator_);
392 
393  // put genEvt object in Event
394  std::auto_ptr<std::vector<Photon> > myPhotons(PATPhotons);
395  iEvent.put(myPhotons);
397 
398 }
bool enabled() const
&#39;true&#39; if this there is at least one efficiency configured
int i
Definition: DBlmapReader.cc:9
Analysis-level Photon class.
Definition: Photon.h:47
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
pat::PATUserDataHelper< pat::Photon > userDataHelper_
edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
std::vector< edm::Handle< edm::ValueMap< double > > > IsolationValueMaps
std::vector< edm::EDGetTokenT< edm::ValueMap< Bool_t > > > photIDTokens_
edm::EDGetTokenT< reco::BeamSpot > beamLineToken_
static bool hasMatchedPromptElectron(const reco::SuperClusterRef &sc, const edm::Handle< reco::GsfElectronCollection > &eleCol, const edm::Handle< reco::ConversionCollection > &convCol, const math::XYZPoint &beamspot, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
edm::EDGetTokenT< edm::View< reco::Photon > > photonToken_
std::vector< EcalRecHit >::const_iterator const_iterator
void push_back(T const &t)
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
Definition: Photon.cc:58
std::vector< edm::EDGetTokenT< edm::Association< reco::GenParticleCollection > > > genMatchTokens_
double Phi_mpi_pi(double x)
Definition: JetUtil.h:24
pat::helper::KinResolutionsLoader resolutionLoader_
GreaterByEt< Photon > eTComparator_
const CaloGeometry * ecalGeometry_
void setResolutions(pat::PATObject< T > &obj) const
Sets the efficiencies for this object, using the reference to the original objects.
bool isRealData() const
Definition: EventBase.h:60
edm::InputTag reducedEndcapRecHitCollection_
bool enabled() const
&#39;true&#39; if this there is at least one efficiency configured
bool enabled() const
True if it has a non null configuration.
Definition: MultiIsolator.h:50
IsolationLabels isoDepositLabels_
pat::helper::MultiIsolator::IsolationValuePairs isolatorTmpStorage_
void beginEvent(const edm::Event &event, const edm::EventSetup &eventSetup)
const CaloTopology * ecalTopology_
IsolationLabels isolationValueLabels_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
bool isnan(float x)
Definition: math.h:13
std::vector< edm::EDGetTokenT< edm::ValueMap< IsoDeposit > > > isoDepositTokens_
pat::helper::EfficiencyLoader efficiencyLoader_
T sqrt(T t)
Definition: SSEVec.h:48
int j
Definition: DBlmapReader.cc:9
double f[11][100]
std::vector< NameTag > photIDSrcs_
bool first
Definition: L1TdeRCT.cc:79
bool isValid() const
Definition: HandleBase.h:76
std::vector< edm::Handle< edm::ValueMap< IsoDeposit > > > IsoDepositMaps
pat::helper::MultiIsolator isolator_
const_iterator end() const
Definition: DetId.h:18
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
bool hasPixelSeed() const
Bool flagging photons having a non-zero size vector of Ref to electornPixel seeds.
Definition: Photon.h:75
const T & get() const
Definition: EventSetup.h:55
void setEfficiencies(pat::PATObject< T > &obj, const R &originalRef) const
Sets the efficiencies for this object, using the reference to the original objects.
const CaloSubdetectorTopology * getSubdetectorTopology(const DetId &id) const
access the subdetector Topology for the given subdetector directly
Definition: CaloTopology.cc:26
void localCoordsEB(const reco::CaloCluster &bclus, const edm::EventSetup &es, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt) const
std::vector< std::pair< pat::IsolationKeys, float > > IsolationValuePairs
Definition: MultiIsolator.h:16
iterator find(key_type k)
size_type size() const
edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
std::vector< edm::EDGetTokenT< edm::ValueMap< double > > > isolationValueTokens_
void newEvent(const edm::Event &event, const edm::EventSetup &setup) const
To be called for each new event, reads in the EventSetup object.
edm::InputTag reducedBarrelRecHitCollection_
void newEvent(const edm::Event &event) const
To be called for each new event, reads in the ValueMaps for efficiencies.
edm::EDGetTokenT< reco::ConversionCollection > hConversionsToken_
void fill(const edm::View< T > &coll, int idx, IsolationValuePairs &isolations) const
Definition: MultiIsolator.h:82
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
template<typename T >
void PATPhotonProducer::readIsolationLabels ( const edm::ParameterSet iConfig,
const char *  psetName,
IsolationLabels labels,
std::vector< edm::EDGetTokenT< edm::ValueMap< T > > > &  tokens 
)
private

fill the labels vector from the contents of the parameter set, for the isodeposit or isolation values embedding

Definition at line 139 of file PATPhotonProducer.h.

References pat::EcalIso, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), pat::HcalIso, combine::key, diffTwoXMLs::label, pat::PfAllParticleIso, pat::PfChargedAllIso, pat::PfChargedHadronIso, pat::PfGammaIso, pat::PfNeutralHadronIso, pat::PfPUChargedHadronIso, pat::TrackIso, pat::UserBaseIso, and edm::vector_transform().

142  {
143 
144  labels.clear();
145 
146  if (iConfig.exists( psetName )) {
147  edm::ParameterSet depconf
148  = iConfig.getParameter<edm::ParameterSet>(psetName);
149 
150  if (depconf.exists("tracker")) labels.push_back(std::make_pair(pat::TrackIso, depconf.getParameter<edm::InputTag>("tracker")));
151  if (depconf.exists("ecal")) labels.push_back(std::make_pair(pat::EcalIso, depconf.getParameter<edm::InputTag>("ecal")));
152  if (depconf.exists("hcal")) labels.push_back(std::make_pair(pat::HcalIso, depconf.getParameter<edm::InputTag>("hcal")));
153  if (depconf.exists("pfAllParticles")) {
154  labels.push_back(std::make_pair(pat::PfAllParticleIso, depconf.getParameter<edm::InputTag>("pfAllParticles")));
155  }
156  if (depconf.exists("pfChargedHadrons")) {
157  labels.push_back(std::make_pair(pat::PfChargedHadronIso, depconf.getParameter<edm::InputTag>("pfChargedHadrons")));
158  }
159  if (depconf.exists("pfChargedAll")) {
160  labels.push_back(std::make_pair(pat::PfChargedAllIso, depconf.getParameter<edm::InputTag>("pfChargedAll")));
161  }
162  if (depconf.exists("pfPUChargedHadrons")) {
163  labels.push_back(std::make_pair(pat::PfPUChargedHadronIso, depconf.getParameter<edm::InputTag>("pfPUChargedHadrons")));
164  }
165  if (depconf.exists("pfNeutralHadrons")) {
166  labels.push_back(std::make_pair(pat::PfNeutralHadronIso, depconf.getParameter<edm::InputTag>("pfNeutralHadrons")));
167  }
168  if (depconf.exists("pfPhotons")) {
169  labels.push_back(std::make_pair(pat::PfGammaIso, depconf.getParameter<edm::InputTag>("pfPhotons")));
170  }
171  if (depconf.exists("user")) {
172  std::vector<edm::InputTag> userdeps = depconf.getParameter<std::vector<edm::InputTag> >("user");
173  std::vector<edm::InputTag>::const_iterator it = userdeps.begin(), ed = userdeps.end();
174  int key = UserBaseIso;
175  for ( ; it != ed; ++it, ++key) {
176  labels.push_back(std::make_pair(IsolationKeys(key), *it));
177  }
178  }
179  }
180 
181  tokens = edm::vector_transform(labels, [this](IsolationLabel const & label){return consumes<edm::ValueMap<T> >(label.second);});
182 
183 }
T getParameter(std::string const &) const
std::pair< pat::IsolationKeys, edm::InputTag > IsolationLabel
bool exists(std::string const &parameterName) const
checks if a parameter exists
IsolationKeys
Enum defining isolation keys.
Definition: Isolation.h:9
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
list key
Definition: combine.py:13

Member Data Documentation

bool pat::PATPhotonProducer::addEfficiencies_
private

Definition at line 112 of file PATPhotonProducer.h.

bool pat::PATPhotonProducer::addGenMatch_
private

Definition at line 85 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::addPhotonID_
private

Definition at line 118 of file PATPhotonProducer.h.

Referenced by produce().

bool pat::PATPhotonProducer::addResolutions_
private

Definition at line 115 of file PATPhotonProducer.h.

edm::EDGetTokenT<reco::BeamSpot> pat::PATPhotonProducer::beamLineToken_
private

Definition at line 72 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

const CaloGeometry* pat::PATPhotonProducer::ecalGeometry_
private

Definition at line 127 of file PATPhotonProducer.h.

Referenced by produce().

const CaloTopology* pat::PATPhotonProducer::ecalTopology_
private

Definition at line 126 of file PATPhotonProducer.h.

Referenced by produce().

EcalClusterLocal pat::PATPhotonProducer::ecl_
private

Definition at line 128 of file PATPhotonProducer.h.

Referenced by produce().

pat::helper::EfficiencyLoader pat::PATPhotonProducer::efficiencyLoader_
private

Definition at line 113 of file PATPhotonProducer.h.

Referenced by produce().

edm::EDGetTokenT<reco::GsfElectronCollection> pat::PATPhotonProducer::electronToken_
private

Definition at line 70 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedBasicClusters_
private

Definition at line 76 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedGenMatch_
private

Definition at line 86 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedPreshowerClusters_
private

Definition at line 77 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedRecHits_
private

Definition at line 78 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedSeedCluster_
private

Definition at line 75 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

bool pat::PATPhotonProducer::embedSuperCluster_
private

Definition at line 74 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

GreaterByEt<Photon> pat::PATPhotonProducer::eTComparator_
private

Definition at line 90 of file PATPhotonProducer.h.

Referenced by produce().

std::vector<edm::EDGetTokenT<edm::Association<reco::GenParticleCollection> > > pat::PATPhotonProducer::genMatchTokens_
private

Definition at line 87 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

edm::EDGetTokenT<reco::ConversionCollection> pat::PATPhotonProducer::hConversionsToken_
private

Definition at line 71 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

IsolationLabels pat::PATPhotonProducer::isoDepositLabels_
private

Definition at line 102 of file PATPhotonProducer.h.

Referenced by produce().

std::vector<edm::EDGetTokenT<edm::ValueMap<IsoDeposit> > > pat::PATPhotonProducer::isoDepositTokens_
private

Definition at line 99 of file PATPhotonProducer.h.

Referenced by produce().

IsolationLabels pat::PATPhotonProducer::isolationValueLabels_
private

Definition at line 103 of file PATPhotonProducer.h.

Referenced by produce().

std::vector<edm::EDGetTokenT<edm::ValueMap<double> > > pat::PATPhotonProducer::isolationValueTokens_
private

Definition at line 100 of file PATPhotonProducer.h.

Referenced by produce().

pat::helper::MultiIsolator pat::PATPhotonProducer::isolator_
private

Definition at line 97 of file PATPhotonProducer.h.

Referenced by produce().

pat::helper::MultiIsolator::IsolationValuePairs pat::PATPhotonProducer::isolatorTmpStorage_
private

Definition at line 98 of file PATPhotonProducer.h.

Referenced by produce().

std::vector<NameTag> pat::PATPhotonProducer::photIDSrcs_
private

Definition at line 120 of file PATPhotonProducer.h.

Referenced by produce().

std::vector<edm::EDGetTokenT<edm::ValueMap<Bool_t> > > pat::PATPhotonProducer::photIDTokens_
private

Definition at line 121 of file PATPhotonProducer.h.

Referenced by produce().

edm::EDGetTokenT<edm::View<reco::Photon> > pat::PATPhotonProducer::photonToken_
private

Definition at line 69 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

edm::InputTag pat::PATPhotonProducer::reducedBarrelRecHitCollection_
private

Definition at line 80 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> pat::PATPhotonProducer::reducedBarrelRecHitCollectionToken_
private

Definition at line 81 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

edm::InputTag pat::PATPhotonProducer::reducedEndcapRecHitCollection_
private

Definition at line 82 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> pat::PATPhotonProducer::reducedEndcapRecHitCollectionToken_
private

Definition at line 83 of file PATPhotonProducer.h.

Referenced by PATPhotonProducer(), and produce().

pat::helper::KinResolutionsLoader pat::PATPhotonProducer::resolutionLoader_
private

Definition at line 116 of file PATPhotonProducer.h.

Referenced by produce().

pat::PATUserDataHelper<pat::Photon> pat::PATPhotonProducer::userDataHelper_
private

Definition at line 124 of file PATPhotonProducer.h.

Referenced by produce().

bool pat::PATPhotonProducer::useUserData_
private

Definition at line 123 of file PATPhotonProducer.h.

Referenced by produce().