CMS 3D CMS Logo

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

slimmer of PAT Taus More...

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

Public Member Functions

 PATPhotonSlimmer (const edm::ParameterSet &iConfig)
 
virtual void produce (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
virtual ~PATPhotonSlimmer ()
 
- 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 ()
 

Private Attributes

StringCutObjectSelector
< pat::Photon
dropBasicClusters_
 
StringCutObjectSelector
< pat::Photon
dropPreshowerClusters_
 
StringCutObjectSelector
< pat::Photon
dropRecHits_
 
StringCutObjectSelector
< pat::Photon
dropSeedCluster_
 
StringCutObjectSelector
< pat::Photon
dropSuperClusters_
 
bool linkToPackedPF_
 
edm::EDGetTokenT
< pat::PackedCandidateCollection
pc_
 
edm::EDGetTokenT
< edm::Association
< pat::PackedCandidateCollection > > 
pf2pc_
 
edm::EDGetTokenT
< edm::ValueMap< std::vector
< reco::PFCandidateRef > > > 
reco2pf_
 
StringCutObjectSelector
< pat::Photon
saveNonZSClusterShapes_
 
edm::EDGetTokenT< edm::View
< pat::Photon > > 
src_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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

slimmer of PAT Taus

Definition at line 26 of file PATPhotonSlimmer.cc.

Constructor & Destructor Documentation

pat::PATPhotonSlimmer::PATPhotonSlimmer ( const edm::ParameterSet iConfig)
explicit

Definition at line 47 of file PATPhotonSlimmer.cc.

References edm::ParameterSet::getParameter(), linkToPackedPF_, pc_, pf2pc_, and reco2pf_.

47  :
49  dropSuperClusters_(iConfig.getParameter<std::string>("dropSuperCluster")),
50  dropBasicClusters_(iConfig.getParameter<std::string>("dropBasicClusters")),
51  dropPreshowerClusters_(iConfig.getParameter<std::string>("dropPreshowerClusters")),
52  dropSeedCluster_(iConfig.getParameter<std::string>("dropSeedCluster")),
53  dropRecHits_(iConfig.getParameter<std::string>("dropRecHits")),
54  linkToPackedPF_(iConfig.getParameter<bool>("linkToPackedPFCandidates")),
55  saveNonZSClusterShapes_(iConfig.getParameter<std::string>("saveNonZSClusterShapes"))
56 {
57  produces<std::vector<pat::Photon> >();
58  if (linkToPackedPF_) {
59  reco2pf_ = consumes<edm::ValueMap<std::vector<reco::PFCandidateRef>>>(iConfig.getParameter<edm::InputTag>("recoToPFMap"));
60  pf2pc_ = consumes<edm::Association<pat::PackedCandidateCollection>>(iConfig.getParameter<edm::InputTag>("packedPFCandidates"));
61  pc_ = consumes<pat::PackedCandidateCollection>(iConfig.getParameter<edm::InputTag>("packedPFCandidates"));
62  }
63  mayConsume<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEB"));
64  mayConsume<EcalRecHitCollection>(edm::InputTag("reducedEcalRecHitsEE"));
65 }
T getParameter(std::string const &) const
StringCutObjectSelector< pat::Photon > dropSeedCluster_
StringCutObjectSelector< pat::Photon > dropPreshowerClusters_
edm::EDGetTokenT< edm::View< pat::Photon > > src_
StringCutObjectSelector< pat::Photon > dropSuperClusters_
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
StringCutObjectSelector< pat::Photon > dropRecHits_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > pf2pc_
edm::EDGetTokenT< pat::PackedCandidateCollection > pc_
StringCutObjectSelector< pat::Photon > saveNonZSClusterShapes_
StringCutObjectSelector< pat::Photon > dropBasicClusters_
virtual pat::PATPhotonSlimmer::~PATPhotonSlimmer ( )
inlinevirtual

Definition at line 29 of file PATPhotonSlimmer.cc.

29 { }

Member Function Documentation

void pat::PATPhotonSlimmer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 68 of file PATPhotonSlimmer.cc.

References pat::Photon::basicClusters_, EcalClusterLazyToolsT< EcalClusterToolsImpl >::covariances(), EcalClusterLazyToolsT< EcalClusterToolsImpl >::e1x5(), reco::Photon::ShowerShape::e1x5, reco::Photon::ShowerShape::e2x5, EcalClusterLazyToolsT< EcalClusterToolsImpl >::e2x5Max(), EcalClusterLazyToolsT< EcalClusterToolsImpl >::e3x3(), reco::Photon::ShowerShape::e3x3, EcalClusterLazyToolsT< EcalClusterToolsImpl >::e5x5(), reco::Photon::ShowerShape::e5x5, EcalClusterLazyToolsT< EcalClusterToolsImpl >::eMax(), pat::Photon::embeddedRecHits_, pat::Photon::embeddedSeedCluster_, pat::Photon::embeddedSuperCluster_, pat::Photon::full5x5_setShowerShape(), edm::Event::getByToken(), edm::isNotFinite(), EcalClusterLazyToolsT< EcalClusterToolsImpl >::localCovariances(), reco::Photon::ShowerShape::maxEnergyXtal, dbtoconf::out, pat::Photon::preshowerClusters_, edm::RefVector< C, T, F >::push_back(), edm::Event::put(), pat::Photon::recHits_, pat::PATObject< ObjectType >::refToOrig_, edm::refToPtr(), pat::Photon::seedCluster_, pat::Photon::setAssociatedPackedPFCandidates(), pat::Photon::setPackedPFCandidateCollection(), reco::Photon::ShowerShape::sigmaEtaEta, reco::Photon::ShowerShape::sigmaIetaIeta, edm::RefVector< C, T, F >::size(), mathSSE::sqrt(), alcazmumu_cfi::src, pat::Photon::superCluster(), and pat::Photon::superCluster_.

68  {
69  using namespace edm;
70  using namespace std;
71 
73  iEvent.getByToken(src_, src);
74 
78  if (linkToPackedPF_) {
79  iEvent.getByToken(reco2pf_, reco2pf);
80  iEvent.getByToken(pf2pc_, pf2pc);
81  iEvent.getByToken(pc_, pc);
82  }
83  edm::InputTag reducedBarrelRecHitCollection("reducedEcalRecHitsEB");
84  edm::InputTag reducedEndcapRecHitCollection("reducedEcalRecHitsEE");
85  noZS::EcalClusterLazyTools lazyToolsNoZS(iEvent, iSetup, reducedBarrelRecHitCollection, reducedEndcapRecHitCollection);
86 
87  auto_ptr<vector<pat::Photon> > out(new vector<pat::Photon>());
88  out->reserve(src->size());
89 
90  for (View<pat::Photon>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
91  out->push_back(*it);
92  pat::Photon & photon = out->back();
93 
94  if (dropSuperClusters_(photon)) { photon.superCluster_.clear(); photon.embeddedSuperCluster_ = false; }
95  if (dropBasicClusters_(photon)) { photon.basicClusters_.clear(); }
96  if (dropPreshowerClusters_(photon)) { photon.preshowerClusters_.clear(); }
97  if (dropSeedCluster_(photon)) { photon.seedCluster_.clear(); photon.embeddedSeedCluster_ = false; }
98  if (dropRecHits_(photon)) { photon.recHits_ = EcalRecHitCollection(); photon.embeddedRecHits_ = false; }
99 
100  if (linkToPackedPF_) {
102  //std::cout << " PAT photon in " << src.id() << " comes from " << photon.refToOrig_.id() << ", " << photon.refToOrig_.key() << std::endl;
104  for (const reco::PFCandidateRef & pf : (*reco2pf)[photon.refToOrig_]) {
105  if (pf2pc->contains(pf.id())) {
106  origs.push_back((*pf2pc)[pf]);
107  } //else std::cerr << " Photon linked to a PFCand in " << pf.id() << " while we expect them in " << pf2pc->ids().front().first << "\n";
108  }
109  //std::cout << "Photon with pt " << photon.pt() << " associated to " << origs.size() << " PF Candidates\n";
110  photon.setAssociatedPackedPFCandidates(origs);
111  //if there's just one PF Cand then it's me, otherwise I have no univoque parent so my ref will be null
112  if (origs.size() == 1) {
113  photon.refToOrig_ = refToPtr(origs[0]);
114  } else {
115  photon.refToOrig_ = reco::CandidatePtr(pc.id());
116  }
117  }
118  if (saveNonZSClusterShapes_(photon)) {
120  const auto & seedCluster = *photon.superCluster()->seed();
121  std::vector<float> vCov = lazyToolsNoZS.localCovariances(seedCluster);
122  std::vector<float> Cov = lazyToolsNoZS.covariances(seedCluster);
123  ss.sigmaEtaEta = ( !edm::isNotFinite(Cov[0]) ) ? sqrt(Cov[0]) : 0;
124  ss.sigmaIetaIeta = ( !edm::isNotFinite(vCov[0]) ) ? sqrt(vCov[0]) : 0;
125  //float sigmaIphiIphi = ( !edm::isNotFinite(vCov[2]) ) ? sqrt(vCov[2]) : 0;
126  //float sigmaIetaIphi = vCov[1]; // this is missing in the struct
127  ss.e1x5 = lazyToolsNoZS.e1x5(seedCluster);
128  ss.e2x5 = lazyToolsNoZS.e2x5Max(seedCluster);
129  ss.e3x3 = lazyToolsNoZS.e3x3(seedCluster);
130  ss.e5x5 = lazyToolsNoZS.e5x5(seedCluster);
131  ss.maxEnergyXtal = lazyToolsNoZS.eMax(seedCluster);
132  // hcal stuff is not filled
133  photon.full5x5_setShowerShape(ss);
134  //electron.full5x5_setSigmaIphiIphi(sigmaIphiIphi);
135  //electron.full5x5_setSigmaIetaIphi(sigmaIetaIphi);
136  }
137  }
138 
139  iEvent.put(out);
140 }
void setAssociatedPackedPFCandidates(const edm::RefVector< pat::PackedCandidateCollection > &refvector)
References to PFCandidates linked to this object (e.g. for isolation vetos or masking before jet recl...
Definition: Photon.cc:318
StringCutObjectSelector< pat::Photon > dropSeedCluster_
Analysis-level Photon class.
Definition: Photon.h:47
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
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
StringCutObjectSelector< pat::Photon > dropPreshowerClusters_
edm::EDGetTokenT< edm::View< pat::Photon > > src_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
StringCutObjectSelector< pat::Photon > dropSuperClusters_
void full5x5_setShowerShape(const ShowerShape &s)
Definition: Photon.h:321
std::vector< reco::SuperCluster > superCluster_
Definition: Photon.h:348
std::vector< reco::CaloCluster > preshowerClusters_
Place to store electron&#39;s preshower clusters internally.
Definition: Photon.h:354
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > reco2pf_
std::vector< reco::CaloCluster > seedCluster_
Place to store electron&#39;s seed cluster internally.
Definition: Photon.h:358
StringCutObjectSelector< pat::Photon > dropRecHits_
bool isNotFinite(T x)
Definition: isFinite.h:10
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
T sqrt(T t)
Definition: SSEVec.h:48
bool embeddedSuperCluster_
Definition: Photon.h:347
tuple out
Definition: dbtoconf.py:99
EcalRecHitCollection recHits_
Place to store electron&#39;s RecHits internally (5x5 around seed+ all RecHits)
Definition: Photon.h:362
bool embeddedRecHits_
True if RecHits stored internally.
Definition: Photon.h:360
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
reco::SuperClusterRef superCluster() const
override the superCluster method from CaloJet, to access the internal storage of the supercluster ...
Definition: Photon.cc:190
edm::EDGetTokenT< edm::Association< pat::PackedCandidateCollection > > pf2pc_
edm::EDGetTokenT< pat::PackedCandidateCollection > pc_
StringCutObjectSelector< pat::Photon > saveNonZSClusterShapes_
bool embeddedSeedCluster_
True if seed cluster is stored internally.
Definition: Photon.h:356
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
void setPackedPFCandidateCollection(const edm::RefProd< pat::PackedCandidateCollection > &refprod)
References to PFCandidates (e.g. to recompute isolation)
Definition: Photon.cc:305
StringCutObjectSelector< pat::Photon > dropBasicClusters_
edm::Ptr< reco::Candidate > refToOrig_
Definition: PATObject.h:407
std::vector< reco::CaloCluster > basicClusters_
Place to store electron&#39;s basic clusters internally.
Definition: Photon.h:352
edm::SortedCollection< EcalRecHit > EcalRecHitCollection

Member Data Documentation

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::dropBasicClusters_
private

Definition at line 36 of file PATPhotonSlimmer.cc.

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::dropPreshowerClusters_
private

Definition at line 36 of file PATPhotonSlimmer.cc.

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::dropRecHits_
private

Definition at line 36 of file PATPhotonSlimmer.cc.

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::dropSeedCluster_
private

Definition at line 36 of file PATPhotonSlimmer.cc.

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::dropSuperClusters_
private

Definition at line 36 of file PATPhotonSlimmer.cc.

bool pat::PATPhotonSlimmer::linkToPackedPF_
private

Definition at line 41 of file PATPhotonSlimmer.cc.

Referenced by PATPhotonSlimmer().

edm::EDGetTokenT<pat::PackedCandidateCollection> pat::PATPhotonSlimmer::pc_
private

Definition at line 40 of file PATPhotonSlimmer.cc.

Referenced by PATPhotonSlimmer().

edm::EDGetTokenT<edm::Association<pat::PackedCandidateCollection> > pat::PATPhotonSlimmer::pf2pc_
private

Definition at line 39 of file PATPhotonSlimmer.cc.

Referenced by PATPhotonSlimmer().

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

Definition at line 38 of file PATPhotonSlimmer.cc.

Referenced by PATPhotonSlimmer().

StringCutObjectSelector<pat::Photon> pat::PATPhotonSlimmer::saveNonZSClusterShapes_
private

Definition at line 42 of file PATPhotonSlimmer.cc.

edm::EDGetTokenT<edm::View<pat::Photon> > pat::PATPhotonSlimmer::src_
private

Definition at line 34 of file PATPhotonSlimmer.cc.