CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
EgammaTowerIsolation Class Reference

#include <EgammaTowerIsolation.h>

Public Types

enum  HcalDepth { AllDepths =-1, Undefined =0, Depth1 =1, Depth2 =2 }
 

Public Member Functions

 EgammaTowerIsolation (float extRadiusI, float intRadiusI, float etLow, signed int depth, const CaloTowerCollection *towers)
 
double getTowerESum (const reco::Candidate *cand, const std::vector< CaloTowerDetId > *detIdToExclude=0) const
 
double getTowerESum (reco::SuperCluster const *sc, const std::vector< CaloTowerDetId > *detIdToExclude=0) const
 
double getTowerEtSum (const reco::Candidate *cand, const std::vector< CaloTowerDetId > *detIdToExclude=0) const
 
double getTowerEtSum (reco::SuperCluster const *sc, const std::vector< CaloTowerDetId > *detIdToExclude=0) const
 

Private Member Functions

double getSum (bool et, reco::SuperCluster const &sc, const std::vector< CaloTowerDetId > *detIdToExclude) const
 

Private Attributes

signed int depth_
 
float extRadius
 
float intRadius
 

Detailed Description

Definition at line 206 of file EgammaTowerIsolation.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

EgammaTowerIsolation::EgammaTowerIsolation ( float  extRadiusI,
float  intRadiusI,
float  etLow,
signed int  depth,
const CaloTowerCollection towers 
)

Definition at line 35 of file EgammaTowerIsolation.cc.

References extRadius, intRadius, and edm::SortedCollection< T, SORT >::size().

39  :
40  depth_(depth),
41  extRadius(extRadiusI),
42  intRadius(intRadiusI)
43 {
44  assert(0==etLow);
45 
46  // extremely poor in quality (test of performance)
47  if (tls.newAlgo.get()==nullptr || towers!=tls.oldTowers || towers->size()!=tls.newAlgo->nt || (towers->size()>15 && (*towers)[15].id()!=tls.id15)) {
48  tls.newAlgo = std::make_unique<EgammaTowerIsolationNew<1>>(&extRadius,&intRadius,*towers);
49  tls.oldTowers=towers;
50  tls.id15 = towers->size()>15 ? (*towers)[15].id() : 0;
51  }
52 }
size_type size() const

Member Function Documentation

double EgammaTowerIsolation::getSum ( bool  et,
reco::SuperCluster const &  sc,
const std::vector< CaloTowerDetId > *  detIdToExclude 
) const
private

Definition at line 55 of file EgammaTowerIsolation.cc.

References AllDepths, Depth1, Depth2, depth_, extRadius, EgammaTowerIsolationNew< NC >::Sum::h2, EgammaTowerIsolationNew< NC >::Sum::h2BC, EgammaTowerIsolationNew< NC >::Sum::he, EgammaTowerIsolationNew< NC >::Sum::heBC, and intRadius.

55  {
56 
57  if (nullptr!=detIdToExclude) assert(0==intRadius);
58 
59  // hack
60  tls.newAlgo->setRadius(&extRadius,&intRadius);
61 
63  tls.newAlgo->compute(et, sum, sc,
64  (detIdToExclude==nullptr) ? nullptr : &((*detIdToExclude).front()),
65  (detIdToExclude==nullptr) ? nullptr : (&(*detIdToExclude).back())+1
66  );
67 
68  switch(depth_){
69  case AllDepths: return detIdToExclude==nullptr ? sum.he[0] : sum.heBC[0];
70  case Depth1: return detIdToExclude==nullptr ? sum.he[0]-sum.h2[0] : sum.heBC[0]-sum.h2BC[0];
71  case Depth2:return detIdToExclude==nullptr ? sum.h2[0] : sum.h2BC[0];
72  default: return 0;
73  }
74  return 0;
75 }
et
define resolution functions of each parameter
double EgammaTowerIsolation::getTowerESum ( const reco::Candidate cand,
const std::vector< CaloTowerDetId > *  detIdToExclude = 0 
) const
inline
double EgammaTowerIsolation::getTowerESum ( reco::SuperCluster const *  sc,
const std::vector< CaloTowerDetId > *  detIdToExclude = 0 
) const
inline

Definition at line 229 of file EgammaTowerIsolation.h.

References stringResolutionProvider_cfi::et, and SimDataFormats::CaloAnalysis::sc.

229  {
230  return getSum(false,*sc,detIdToExclude);
231  }
double getSum(bool et, reco::SuperCluster const &sc, const std::vector< CaloTowerDetId > *detIdToExclude) const
double EgammaTowerIsolation::getTowerEtSum ( const reco::Candidate cand,
const std::vector< CaloTowerDetId > *  detIdToExclude = 0 
) const
inline

Definition at line 218 of file EgammaTowerIsolation.h.

References reco::Candidate::get(), and SimDataFormats::CaloAnalysis::sc.

Referenced by PhotonIsolationCalculator::calculateHcalTowerIso(), GsfElectronAlgo::createElectron(), and EgammaHLTBcHcalIsolationProducersRegional::produce().

218  {
219  reco::SuperCluster const & sc = *cand->get<reco::SuperClusterRef>().get();
220  return getSum(true,sc,detIdToExclude);
221  }
double getSum(bool et, reco::SuperCluster const &sc, const std::vector< CaloTowerDetId > *detIdToExclude) const
T get() const
get a component
Definition: Candidate.h:217
double EgammaTowerIsolation::getTowerEtSum ( reco::SuperCluster const *  sc,
const std::vector< CaloTowerDetId > *  detIdToExclude = 0 
) const
inline

Definition at line 226 of file EgammaTowerIsolation.h.

226  {
227  return getSum(true,*sc,detIdToExclude);
228  }
double getSum(bool et, reco::SuperCluster const &sc, const std::vector< CaloTowerDetId > *detIdToExclude) const

Member Data Documentation

signed int EgammaTowerIsolation::depth_
private

Definition at line 237 of file EgammaTowerIsolation.h.

Referenced by getSum().

float EgammaTowerIsolation::extRadius
private

Definition at line 238 of file EgammaTowerIsolation.h.

Referenced by EgammaTowerIsolation(), and getSum().

float EgammaTowerIsolation::intRadius
private

Definition at line 239 of file EgammaTowerIsolation.h.

Referenced by EgammaTowerIsolation(), and getSum().