CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Photon.h
Go to the documentation of this file.
1 //
2 //
3 
4 #ifndef DataFormats_PatCandidates_Photon_h
5 #define DataFormats_PatCandidates_Photon_h
6 
28 
29 
30 // Define typedefs for convenience
31 namespace pat {
32  class Photon;
33  typedef std::vector<Photon> PhotonCollection;
36 }
37 
38 namespace reco {
40  std::ostream& operator<<(std::ostream& out, const pat::Photon& obj);
41 }
42 
43 // Class definition
44 namespace pat {
45  class PATPhotonSlimmer;
46 
47  class Photon : public PATObject<reco::Photon> {
48 
49  public:
50 
51  typedef std::pair<std::string,Bool_t> IdPair;
52 
54  Photon();
56  Photon(const reco::Photon & aPhoton);
58  Photon(const edm::RefToBase<reco::Photon> & aPhotonRef);
60  Photon(const edm::Ptr<reco::Photon> & aPhotonRef);
62  virtual ~Photon();
63 
65  virtual Photon * clone() const { return new Photon(*this); }
66 
67  // ---- methods for content embedding ----
71  reco::CaloClusterPtr seed() const;
72 
73  //method to access the basic clusters
74  const std::vector<reco::CaloCluster>& basicClusters() const { return basicClusters_ ; }
75  //method to access the preshower clusters
76  const std::vector<reco::CaloCluster>& preshowerClusters() const { return preshowerClusters_ ; }
77 
78  //method to access embedded ecal RecHits
79  const EcalRecHitCollection * recHits() const { return &recHits_;}
80 
82  void embedSuperCluster();
84  void embedSeedCluster();
86  void embedBasicClusters();
91 
92 
93  // ---- methods for access the generated photon ----
95  const reco::Candidate * genPhoton() const { return genParticle(); }
97  void setGenPhoton(const reco::GenParticleRef & gp, bool embed=false) { setGenParticleRef(gp, embed); }
98 
99  // ---- methods for photon ID ----
102  Bool_t photonID(const std::string & name) const;
104  bool isPhotonIDAvailable(const std::string & name) const;
107  const std::vector<IdPair> & photonIDs() const { return photonIDs_; }
110  void setPhotonIDs(const std::vector<IdPair> & ids) { photonIDs_ = ids; }
111 
112 
113  // ---- methods for photon isolation ----
116  float trackIso() const { return trkSumPtSolidConeDR04(); }
119  float ecalIso() const { return ecalRecHitSumEtConeDR04(); }
122  float hcalIso() const { return hcalTowerSumEtConeDR04(); }
125  float caloIso() const { return ecalIso()+hcalIso(); }
126 
138  float photonIso() const { return userIsolation(pat::PfGammaIso); }
142 
144  float userIso(uint8_t index=0) const { return userIsolation(IsolationKeys(UserBaseIso + index)); }
148  if (key >= 0) {
149  //if (key >= isolations_.size()) throw cms::Excepton("Missing Data")
150  //<< "Isolation corresponding to key " << key
151  //<< " was not stored for this particle.";
152  if (size_t(key) >= isolations_.size()) return -1.0;
153  return isolations_[key];
154  } else switch (key) {
155  case pat::CaloIso:
156  //if (isolations_.size() <= pat::HcalIso) throw cms::Excepton("Missing Data")
157  //<< "CalIsoo Isolation was not stored for this particle.";
158  if (isolations_.size() <= pat::HcalIso) return -1.0;
160  default:
161  return -1.0;
162  //throw cms::Excepton("Missing Data") << "Isolation corresponding to key "
163  //<< key << " was not stored for this particle.";
164  }
165  }
169  if (key >= 0) {
170  if (size_t(key) >= isolations_.size()) isolations_.resize(key+1, -1.0);
171  isolations_[key] = value;
172  } else {
173  throw cms::Exception("Illegal Argument") <<
174  "The key for which you're setting isolation does not correspond " <<
175  "to an individual isolation but to the sum of more independent isolations " <<
176  "(e.g. Calo = Ecal + Hcal), so you can't SET the value, just GET it.\n" <<
177  "Please set up each component independly.\n";
178  }
179  }
181  void setTrackIso(float trackIso) { setIsolation(TrackIso, trackIso); }
183  void setEcalIso(float caloIso) { setIsolation(EcalIso, caloIso); }
185  void setHcalIso(float caloIso) { setIsolation(HcalIso, caloIso); }
187  void setUserIso(float value, uint8_t index=0) { setIsolation(IsolationKeys(UserBaseIso + index), value); }
188 
189  // ---- methods for photon isolation deposits ----
192  for (IsoDepositPairs::const_iterator it = isoDeposits_.begin(), ed = isoDeposits_.end();
193  it != ed; ++it)
194  {
195  if (it->first == key) return & it->second;
196  }
197  return 0;
198  }
200  const IsoDeposit * trackIsoDeposit() const { return isoDeposit(pat::TrackIso); }
202  const IsoDeposit * ecalIsoDeposit() const { return isoDeposit(pat::EcalIso ); }
204  const IsoDeposit * hcalIsoDeposit() const { return isoDeposit(pat::HcalIso ); }
206  const IsoDeposit * userIsoDeposit(uint8_t index=0) const { return isoDeposit(IsolationKeys(UserBaseIso + index)); }
209  IsoDepositPairs::iterator it = isoDeposits_.begin(), ed = isoDeposits_.end();
210  for (; it != ed; ++it) {
211  if (it->first == key) { it->second = dep; return; }
212  }
213  isoDeposits_.push_back(std::make_pair(key,dep));
214  }
222  void userIsoDeposit(const IsoDeposit &dep, uint8_t index=0) { setIsoDeposit(IsolationKeys(UserBaseIso + index), dep); }
224  bool passElectronVeto() const { return passElectronVeto_; }
226  //pixel seed to veto electron (not recommended by EGM POG but it seems very efficient)
227  bool hasPixelSeed() const { return hasPixelSeed_; }
229 
231  float seedEnergy() const { return seedEnergy_;}
232  void setSeedEnergy( float e ){ seedEnergy_ = e; }
233 
234  float eMax() const { return eMax_;}
235  void setEMax( float e ){ eMax_ = e;}
236  float e2nd() const { return e2nd_;}
237  void setE2nd( float e ){ e2nd_ = e;}
238  float e3x3() const { return e3x3_;}
239  void setE3x3( float e ){ e3x3_ = e;}
240  float eTop() const { return eTop_;}
241  void setETop( float e ){ eTop_ = e;}
242  float eBottom() const { return eBottom_;}
243  void setEBottom( float e ){ eBottom_ = e;}
244  float eLeft() const { return eLeft_;}
245  void setELeft( float e ){ eLeft_ = e;}
246  float eRight() const { return eRight_;}
247  void setERight( float e ){ eRight_ = e;}
248 
249  float see() const { return see_;}
250  void setSee( float s ){ see_ = s;}
251  float spp() const { return spp_;}
252  void setSpp( float s ){ spp_ = s;}
253  float sep() const { return sep_;}
254  void setSep( float s ){ sep_ = s;}
255 
256  float maxDR() const { return maxDR_;}
257  void setMaxDR( float m ){ maxDR_ = m;}
258  float maxDRDPhi() const { return maxDRDPhi_;}
259  void setMaxDRDPhi( float m ){ maxDRDPhi_ = m;}
260  float maxDRDEta() const { return maxDRDEta_;}
261  void setMaxDRDEta( float m ){ maxDRDEta_ = m;}
262  float maxDRRawEnergy() const { return maxDRRawEnergy_;}
264 
265  float subClusRawE1() const { return subClusRawE1_;}
266  void setSubClusRawE1( float s ){ subClusRawE1_ = s;}
267  float subClusRawE2() const { return subClusRawE2_;}
268  void setSubClusRawE2( float s ){ subClusRawE2_ = s;}
269  float subClusRawE3() const { return subClusRawE3_;}
270  void setSubClusRawE3( float s ){ subClusRawE3_ = s;}
271 
272  float subClusDPhi1() const { return subClusDPhi1_;}
273  void setSubClusDPhi1( float s ){ subClusDPhi1_ = s;}
274  float subClusDPhi2() const { return subClusDPhi2_;}
275  void setSubClusDPhi2( float s ){ subClusDPhi2_ = s;}
276  float subClusDPhi3() const { return subClusDPhi3_;}
277  void setSubClusDPhi3( float s ){ subClusDPhi3_ = s;}
278 
279  float subClusDEta1() const { return subClusDEta1_;}
280  void setSubClusDEta1( float s ){ subClusDEta1_ = s;}
281  float subClusDEta2() const { return subClusDEta2_;}
282  void setSubClusDEta2( float s ){ subClusDEta2_ = s;}
283  float subClusDEta3() const { return subClusDEta3_;}
284  void setSubClusDEta3( float s ){ subClusDEta3_ = s;}
285 
286  float cryPhi() const { return cryPhi_;}
287  void setCryPhi( float c ){ cryPhi_ = c;}
288  float cryEta() const { return cryEta_;}
289  void setCryEta( float c ){ cryEta_ = c;}
290 
291  float iPhi() const { return iPhi_;}
292  void setIPhi( float i ){ iPhi_ = i;}
293  float iEta() const { return iEta_;}
294  void setIEta( float i ){ iEta_ = i;}
295 
297  friend std::ostream& reco::operator<<(std::ostream& out, const pat::Photon& obj);
298 
305 
310 
311  friend class PATPhotonSlimmer;
312 
313  protected:
314 
315  // ---- for content embedding ----
317  std::vector<reco::SuperCluster> superCluster_;
321  std::vector<reco::CaloCluster> basicClusters_;
323  std::vector<reco::CaloCluster> preshowerClusters_;
327  std::vector<reco::CaloCluster> seedCluster_;
332  // ---- photon ID's holder ----
333  std::vector<IdPair> photonIDs_;
334  // ---- Isolation and IsoDeposit related datamebers ----
335  typedef std::vector<std::pair<IsolationKeys, pat::IsoDeposit> > IsoDepositPairs;
337  std::vector<float> isolations_;
338 
342 
344  float seedEnergy_;
345  float eMax_;
346  float e2nd_;
347  float e3x3_;
348  float eTop_;
349  float eBottom_;
350  float eLeft_;
351  float eRight_;
352 
353  float see_;
354  float spp_;
355  float sep_;
356 
357  float maxDR_;
358  float maxDRDPhi_;
359  float maxDRDEta_;
361 
365 
369 
373 
374  float cryEta_;
375  float cryPhi_;
376  float iEta_;
377  float iPhi_;
378 
379  // ---- link to PackedPFCandidates
381  std::vector<uint16_t> associatedPackedFCandidateIndices_;
382  };
383 
384 
385 }
386 
387 #endif
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
float subClusDPhi2() const
Definition: Photon.h:274
float subClusDEta3_
Definition: Photon.h:372
float subClusDPhi1_
Definition: Photon.h:366
void setSpp(float s)
Definition: Photon.h:252
int i
Definition: DBlmapReader.cc:9
float hcalTowerSumEtConeDR04() const
Hcal isolation sum.
Definition: Photon.h:342
Analysis-level Photon class.
Definition: Photon.h:47
edm::RefVector< PhotonCollection > PhotonRefVector
Definition: Photon.h:35
void setIEta(float i)
Definition: Photon.h:294
float cryEta_
Definition: Photon.h:374
float trackIso() const
Definition: Photon.h:116
float eLeft_
Definition: Photon.h:350
void setEcalIso(float caloIso)
Sets ecal isolation variable.
Definition: Photon.h:183
float neutralHadronIso() const
Definition: Photon.h:135
void setSubClusDPhi3(float s)
Definition: Photon.h:277
void setTrackIso(float trackIso)
Sets tracker isolation variable.
Definition: Photon.h:181
size_t size_type
Definition: Candidate.h:34
void setE2nd(float e)
Definition: Photon.h:237
const reco::GenParticle * genParticle(size_t idx=0) const
Definition: PATObject.h:236
void setSee(float s)
Definition: Photon.h:250
Photon()
default constructor
Definition: Photon.cc:12
bool passElectronVeto_
-— conversion veto -—
Definition: Photon.h:340
void trackIsoDeposit(const IsoDeposit &dep)
Sets tracker IsoDeposit.
Definition: Photon.h:216
virtual Photon * clone() const
required reimplementation of the Candidate&#39;s clone method
Definition: Photon.h:65
edm::Ref< PhotonCollection > PhotonRef
Definition: Photon.h:34
void setMaxDRRawEnergy(float m)
Definition: Photon.h:263
float subClusDEta3() const
Definition: Photon.h:283
reco::CaloClusterPtr seed() const
direct access to the seed cluster
Definition: Photon.cc:224
float subClusDEta2() const
Definition: Photon.h:281
float trkSumPtSolidConeDR04() const
Definition: Photon.h:354
float puChargedHadronIso() const
Definition: Photon.h:141
void embedBasicClusters()
method to store the electron&#39;s basic clusters
Definition: Photon.cc:251
float sep_
Definition: Photon.h:355
void ecalIsoDeposit(const IsoDeposit &dep)
Sets ecal IsoDeposit.
Definition: Photon.h:218
void setSubClusDPhi2(float s)
Definition: Photon.h:275
float eMax() const
Definition: Photon.h:234
float spp_
Definition: Photon.h:354
float eRight_
Definition: Photon.h:351
float eBottom() const
Definition: Photon.h:242
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:340
float maxDRDPhi() const
Definition: Photon.h:258
bool hasPixelSeed_
Definition: Photon.h:341
float subClusDPhi1() const
Definition: Photon.h:272
void embedSuperCluster()
method to store the photon&#39;s supercluster internally
Definition: Photon.cc:233
float see_
Definition: Photon.h:353
float subClusDPhi3_
Definition: Photon.h:368
const std::vector< reco::CaloCluster > & basicClusters() const
Definition: Photon.h:74
std::vector< reco::SuperCluster > superCluster_
Definition: Photon.h:317
IsolationKeys
Enum defining isolation keys.
Definition: Isolation.h:9
float hcalIso() const
Definition: Photon.h:122
float iEta() const
Definition: Photon.h:293
std::vector< reco::CaloCluster > preshowerClusters_
Place to store electron&#39;s preshower clusters internally.
Definition: Photon.h:323
void setUserIso(float value, uint8_t index=0)
Sets user isolation variable index.
Definition: Photon.h:187
void setIPhi(float i)
Definition: Photon.h:292
float eLeft() const
Definition: Photon.h:244
void setGenParticleRef(const reco::GenParticleRef &ref, bool embed=false)
Set the generator level particle reference.
float subClusRawE2_
Definition: Photon.h:363
std::vector< reco::CaloCluster > seedCluster_
Place to store electron&#39;s seed cluster internally.
Definition: Photon.h:327
float e2nd() const
Definition: Photon.h:236
#define embed
Definition: AMPTWrapper.h:178
void setHcalIso(float caloIso)
Sets hcal isolation variable.
Definition: Photon.h:185
void setIsolation(IsolationKeys key, float value)
Definition: Photon.h:168
float chargedHadronIso() const
Definition: Photon.h:132
float subClusRawE1_
Definition: Photon.h:362
void setELeft(float e)
Definition: Photon.h:245
float subClusRawE3_
Definition: Photon.h:364
edm::RefVector< pat::PackedCandidateCollection > associatedPackedPFCandidates() const
References to PFCandidates linked to this object (e.g. for isolation vetos or masking before jet recl...
Definition: Photon.cc:310
void setIsoDeposit(IsolationKeys key, const IsoDeposit &dep)
Sets the IsoDeposit associated with some key; if it is already existent, it is overwritten.
Definition: Photon.h:208
void userIsoDeposit(const IsoDeposit &dep, uint8_t index=0)
Sets user-level IsoDeposit.
Definition: Photon.h:222
void setEMax(float e)
Definition: Photon.h:235
slimmer of PAT Taus
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:71
const EcalRecHitCollection * recHits() const
Definition: Photon.h:79
float seedEnergy() const
input variables for regression energy corrections
Definition: Photon.h:231
const reco::Candidate * genPhoton() const
return the match to the generated photon
Definition: Photon.h:95
void setERight(float e)
Definition: Photon.h:247
void setMaxDRDEta(float m)
Definition: Photon.h:261
float eMax_
Definition: Photon.h:345
float subClusRawE1() const
Definition: Photon.h:265
void setPhotonIDs(const std::vector< IdPair > &ids)
Definition: Photon.h:110
float eTop() const
Definition: Photon.h:240
float e3x3() const
Definition: Photon.h:238
edm::RefProd< pat::PackedCandidateCollection > packedPFCandidates_
Definition: Photon.h:380
const IsoDeposit * hcalIsoDeposit() const
Return the hcal IsoDeposit.
Definition: Photon.h:204
float subClusRawE3() const
Definition: Photon.h:269
void setPassElectronVeto(bool flag)
Definition: Photon.h:225
void setETop(float e)
Definition: Photon.h:241
void embedSeedCluster()
method to store the electron&#39;s seedcluster internally
Definition: Photon.cc:242
void embedPreshowerClusters()
method to store the electron&#39;s preshower clusters
Definition: Photon.cc:263
bool isPhotonIDAvailable(const std::string &name) const
Returns true if a specific ID is available in this pat::Photon.
Definition: Photon.cc:297
float subClusDPhi3() const
Definition: Photon.h:276
float userIso(uint8_t index=0) const
Returns a user defined isolation value.
Definition: Photon.h:144
void setSeedEnergy(float e)
Definition: Photon.h:232
Bool_t photonID(const std::string &name) const
Definition: Photon.cc:283
void setSubClusDPhi1(float s)
Definition: Photon.h:273
void hcalIsoDeposit(const IsoDeposit &dep)
Sets hcal IsoDeposit.
Definition: Photon.h:220
float maxDR() const
Definition: Photon.h:256
void setSubClusDEta1(float s)
Definition: Photon.h:280
float see() const
Definition: Photon.h:249
std::vector< IdPair > photonIDs_
Definition: Photon.h:333
bool embeddedSuperCluster_
Definition: Photon.h:316
void setCryEta(float c)
Definition: Photon.h:289
const IsoDeposit * ecalIsoDeposit() const
Return the ecal IsoDeposit.
Definition: Photon.h:202
tuple out
Definition: dbtoconf.py:99
edm::AtomicPtrCache< std::vector< reco::SuperCluster > > superClusterRelinked_
Place to temporarily store the electron&#39;s supercluster after relinking the seed to it...
Definition: Photon.h:319
float e2nd_
Definition: Photon.h:346
float iEta_
Definition: Photon.h:376
EcalRecHitCollection recHits_
Place to store electron&#39;s RecHits internally (5x5 around seed+ all RecHits)
Definition: Photon.h:331
bool embeddedRecHits_
True if RecHits stored internally.
Definition: Photon.h:329
unsigned int index
index type
Definition: Candidate.h:55
bool hasPixelSeed() const
Definition: Photon.h:227
void setCryPhi(float c)
Definition: Photon.h:287
float e3x3_
Definition: Photon.h:347
std::pair< std::string, Bool_t > IdPair
Definition: Photon.h:51
void setHasPixelSeed(bool flag)
Definition: Photon.h:228
float ecalIso() const
Definition: Photon.h:119
const std::vector< IdPair > & photonIDs() const
Definition: Photon.h:107
float cryPhi_
Definition: Photon.h:375
float subClusDEta2_
Definition: Photon.h:371
void setSubClusDEta2(float s)
Definition: Photon.h:282
void setMaxDR(float m)
Definition: Photon.h:257
size_t numberOfSourceCandidatePtrs() const
get the number of non-null PFCandidates
Definition: Photon.h:307
float subClusDEta1_
Definition: Photon.h:370
float particleIso() const
Definition: Photon.h:129
IsoDepositPairs isoDeposits_
Definition: Photon.h:336
reco::SuperClusterRef superCluster() const
override the superCluster method from CaloJet, to access the internal storage of the supercluster ...
Definition: Photon.cc:190
float eBottom_
Definition: Photon.h:349
void setSubClusRawE2(float s)
Definition: Photon.h:268
float iPhi() const
Definition: Photon.h:291
bool passElectronVeto() const
vertex fit method
Definition: Photon.h:224
void setEBottom(float e)
Definition: Photon.h:243
float maxDRRawEnergy() const
Definition: Photon.h:262
float caloIso() const
Definition: Photon.h:125
float photonIso() const
Definition: Photon.h:138
const IsoDeposit * trackIsoDeposit() const
Return the tracker IsoDeposit.
Definition: Photon.h:200
float seedEnergy_
-— input variables for regression energy corrections -—
Definition: Photon.h:344
void setMaxDRDPhi(float m)
Definition: Photon.h:259
float maxDRDEta() const
Definition: Photon.h:260
float spp() const
Definition: Photon.h:251
list key
Definition: combine.py:13
void setSubClusDEta3(float s)
Definition: Photon.h:284
float cryEta() const
Definition: Photon.h:288
virtual ~Photon()
destructor
Definition: Photon.cc:168
float subClusDPhi2_
Definition: Photon.h:367
bool embeddedSeedCluster_
True if seed cluster is stored internally.
Definition: Photon.h:325
void setSubClusRawE1(float s)
Definition: Photon.h:266
Templated PAT object container.
Definition: PATObject.h:41
float userIsolation(IsolationKeys key) const
Definition: Photon.h:147
float iPhi_
Definition: Photon.h:377
float sep() const
Definition: Photon.h:253
const IsoDeposit * userIsoDeposit(uint8_t index=0) const
Return a specified user-level IsoDeposit.
Definition: Photon.h:206
void setSubClusRawE3(float s)
Definition: Photon.h:270
std::vector< uint16_t > associatedPackedFCandidateIndices_
Definition: Photon.h:381
float maxDRDEta_
Definition: Photon.h:359
void setPackedPFCandidateCollection(const edm::RefProd< pat::PackedCandidateCollection > &refprod)
References to PFCandidates (e.g. to recompute isolation)
Definition: Photon.cc:305
float subClusDEta1() const
Definition: Photon.h:279
float maxDRRawEnergy_
Definition: Photon.h:360
const IsoDeposit * isoDeposit(IsolationKeys key) const
Returns the IsoDeposit associated with some key, or a null pointer if it is not available.
Definition: Photon.h:191
float eTop_
Definition: Photon.h:348
float eRight() const
Definition: Photon.h:246
float maxDRDPhi_
Definition: Photon.h:358
float subClusRawE2() const
Definition: Photon.h:267
float maxDR_
Definition: Photon.h:357
std::vector< std::pair< IsolationKeys, pat::IsoDeposit > > IsoDepositPairs
Definition: Photon.h:335
void embedRecHits(const EcalRecHitCollection *rechits)
method to store the RecHits internally - can be called from the PATElectronProducer ...
Definition: Photon.cc:275
void setGenPhoton(const reco::GenParticleRef &gp, bool embed=false)
method to set the generated photon
Definition: Photon.h:97
reco::CandidatePtr sourceCandidatePtr(size_type i) const
get the source candidate pointer with index i
Definition: Photon.cc:334
std::vector< Photon > PhotonCollection
Definition: Photon.h:32
float cryPhi() const
Definition: Photon.h:286
void setE3x3(float e)
Definition: Photon.h:239
std::vector< reco::CaloCluster > basicClusters_
Place to store electron&#39;s basic clusters internally.
Definition: Photon.h:321
std::vector< float > isolations_
Definition: Photon.h:337
void setSep(float s)
Definition: Photon.h:254
const std::vector< reco::CaloCluster > & preshowerClusters() const
Definition: Photon.h:76