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 Types | Private Member Functions | Private Attributes
ClusterShapeAlgo Class Reference

#include <ClusterShapeAlgo.h>

Public Member Functions

reco::ClusterShape Calculate (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology)
 
 ClusterShapeAlgo (const edm::ParameterSet &par)
 
 ClusterShapeAlgo ()
 

Private Types

enum  { Eta, Phi }
 

Private Member Functions

double absZernikeMoment (const reco::BasicCluster &passedCluster, int n, int m, double R0=6.6)
 
double calc_AbsZernikeMoment (const reco::BasicCluster &passedCluster, int n, int m, double R0)
 
void Calculate_2ndEnergy (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
 
void Calculate_BarrelBasketEnergyFraction (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const int EtaPhi, const CaloSubdetectorGeometry *geometry)
 
void Calculate_ComplexZernikeMoments (const reco::BasicCluster &passedCluster)
 
void Calculate_Covariances (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
 
void Calculate_e2x2 ()
 
void Calculate_e2x5Bottom ()
 
void Calculate_e2x5Left ()
 
void Calculate_e2x5Right ()
 
void Calculate_e2x5Top ()
 
void Calculate_e3x2 ()
 
void Calculate_e3x3 ()
 
void Calculate_e4x4 ()
 
void Calculate_e5x5 ()
 
void Calculate_EnergyDepTopology (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, bool logW=true)
 
void Calculate_lat (const reco::BasicCluster &passedCluster)
 
void Calculate_Polynomials (double rho)
 
void Calculate_TopEnergy (const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
 
void Create_Map (const EcalRecHitCollection *hits, const CaloSubdetectorTopology *topology)
 
double f00 (double r)
 
double f11 (double r)
 
double f20 (double r)
 
double f22 (double r)
 
double f31 (double r)
 
double f33 (double r)
 
double f40 (double r)
 
double f42 (double r)
 
double f44 (double r)
 
double f51 (double r)
 
double f53 (double r)
 
double f55 (double r)
 
double factorial (int n) const
 
double fast_AbsZernikeMoment (const reco::BasicCluster &passedCluster, int n, int m, double R0)
 

Private Attributes

double A20_
 
double A42_
 
double covEtaEta_
 
double covEtaPhi_
 
double covPhiPhi_
 
double e2nd_
 
DetId e2ndId_
 
double e2x2_
 
int e2x2_Diagonal_X_
 
int e2x2_Diagonal_Y_
 
double e2x5Bottom_
 
double e2x5Left_
 
double e2x5Right_
 
double e2x5Top_
 
double e3x2_
 
double e3x2Ratio_
 
double e3x3_
 
double e4x4_
 
double e5x5_
 
double eMax_
 
DetId eMaxId_
 
std::vector< double > energyBasketFractionEta_
 
std::vector< double > energyBasketFractionPhi_
 
std::vector
< EcalClusterEnergyDeposition
energyDistribution_
 
std::pair< DetId, double > energyMap_ [5][5]
 
double etaLat_
 
std::vector< double > fcn_
 
double lat_
 
edm::ParameterSet parameterSet_
 
double phiLat_
 

Detailed Description

calculates and creates a ClusterShape object

Author
Michael A. Balazs, UVa

Definition at line 36 of file ClusterShapeAlgo.h.

Member Enumeration Documentation

anonymous enum
private
Enumerator
Eta 
Phi 

Definition at line 109 of file ClusterShapeAlgo.h.

Constructor & Destructor Documentation

ClusterShapeAlgo::ClusterShapeAlgo ( const edm::ParameterSet par)

Definition at line 19 of file ClusterShapeAlgo.cc.

19  :
20  parameterSet_(par) {}
edm::ParameterSet parameterSet_
ClusterShapeAlgo::ClusterShapeAlgo ( )
inline

Definition at line 41 of file ClusterShapeAlgo.h.

41 { };

Member Function Documentation

double ClusterShapeAlgo::absZernikeMoment ( const reco::BasicCluster passedCluster,
int  n,
int  m,
double  R0 = 6.6 
)
private

Definition at line 500 of file ClusterShapeAlgo.cc.

References calc_AbsZernikeMoment(), and fast_AbsZernikeMoment().

Referenced by Calculate_ComplexZernikeMoments().

501  {
502  // 1. Check if n,m are correctly
503  if ((m>n) || ((n-m)%2 != 0) || (n<0) || (m<0)) return -1;
504 
505  // 2. Check if n,R0 are within validity Range :
506  // n>20 or R0<2.19cm just makes no sense !
507  if ((n>20) || (R0<=2.19)) return -1;
508  if (n<=5) return fast_AbsZernikeMoment(passedCluster,n,m,R0);
509  else return calc_AbsZernikeMoment(passedCluster,n,m,R0);
510 }
double fast_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
double calc_AbsZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0)
double ClusterShapeAlgo::calc_AbsZernikeMoment ( const reco::BasicCluster passedCluster,
int  n,
int  m,
double  R0 
)
private

Definition at line 561 of file ClusterShapeAlgo.cc.

References funct::cos(), alignCSCRings::e, energyDistribution_, factorial(), i, m, phi, funct::pow(), alignCSCRings::r, query::result, alignCSCRings::s, funct::sin(), and mathSSE::sqrt().

Referenced by absZernikeMoment().

562  {
563  double r,ph,e,Re=0,Im=0,f_nm,result;
564  double TotalEnergy = passedCluster.energy();
565  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
566  int clusterSize=energyDistribution_.size();
567  if(clusterSize<3) return 0.0;
568 
569  for (int i=0; i<clusterSize; i++)
570  {
571  r = energyDistribution_[i].r / R0;
572  if (r<1) {
573  ph = (energyDistribution_[i]).phi;
574  e = energyDistribution_[i].deposited_energy;
575  f_nm=0;
576  for (int s=0; s<=(n-m)/2; s++) {
577  if (s%2==0)
578  {
579  f_nm = f_nm + factorial(n-s)*pow(r,(double) (n-2*s))/(factorial(s)*factorial((n+m)/2-s)*factorial((n-m)/2-s));
580  }else {
581  f_nm = f_nm - factorial(n-s)*pow(r,(double) (n-2*s))/(factorial(s)*factorial((n+m)/2-s)*factorial((n-m)/2-s));
582  }
583  }
584  Re = Re + e/TotalEnergy * f_nm * cos( (double) m*ph);
585  Im = Im - e/TotalEnergy * f_nm * sin( (double) m*ph);
586  }
587  }
588  result = sqrt(Re*Re+Im*Im);
589 
590  return result;
591 }
int i
Definition: DBlmapReader.cc:9
std::vector< EcalClusterEnergyDeposition > energyDistribution_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
double factorial(int n) const
T sqrt(T t)
Definition: SSEVec.h:48
tuple result
Definition: query.py:137
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Definition: DDAxes.h:10
reco::ClusterShape ClusterShapeAlgo::Calculate ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry,
const CaloSubdetectorTopology topology 
)

Definition at line 22 of file ClusterShapeAlgo.cc.

References A20_, A42_, Calculate_2ndEnergy(), Calculate_BarrelBasketEnergyFraction(), Calculate_ComplexZernikeMoments(), Calculate_Covariances(), Calculate_e2x2(), Calculate_e2x5Bottom(), Calculate_e2x5Left(), Calculate_e2x5Right(), Calculate_e2x5Top(), Calculate_e3x2(), Calculate_e3x3(), Calculate_e4x4(), Calculate_e5x5(), Calculate_EnergyDepTopology(), Calculate_lat(), Calculate_TopEnergy(), covEtaEta_, covEtaPhi_, covPhiPhi_, Create_Map(), e2nd_, e2ndId_, e2x2_, e2x5Bottom_, e2x5Left_, e2x5Right_, e2x5Top_, e3x2_, e3x2Ratio_, e3x3_, e4x4_, e5x5_, eMax_, eMaxId_, energyBasketFractionEta_, energyBasketFractionPhi_, Eta, etaLat_, lat_, Phi, and phiLat_.

Referenced by CosmicClusterProducer::clusterizeECALPart(), IslandClusterProducer::clusterizeECALPart(), and Pi0FixedMassWindowCalibration::duringLoop().

26 {
27  Calculate_TopEnergy(passedCluster,hits);
28  Calculate_2ndEnergy(passedCluster,hits);
29  Create_Map(hits,topology);
39  Calculate_Covariances(passedCluster,hits,geometry);
40  Calculate_BarrelBasketEnergyFraction(passedCluster,hits, Eta, geometry);
41  Calculate_BarrelBasketEnergyFraction(passedCluster,hits, Phi, geometry);
42  Calculate_EnergyDepTopology (passedCluster,hits,geometry,true) ;
43  Calculate_lat(passedCluster);
44  Calculate_ComplexZernikeMoments(passedCluster);
45 
51 }
void Create_Map(const EcalRecHitCollection *hits, const CaloSubdetectorTopology *topology)
void Calculate_BarrelBasketEnergyFraction(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const int EtaPhi, const CaloSubdetectorGeometry *geometry)
void Calculate_Covariances(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
void Calculate_EnergyDepTopology(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, bool logW=true)
void Calculate_TopEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
std::vector< double > energyBasketFractionPhi_
void Calculate_ComplexZernikeMoments(const reco::BasicCluster &passedCluster)
void Calculate_lat(const reco::BasicCluster &passedCluster)
std::vector< double > energyBasketFractionEta_
void Calculate_2ndEnergy(const reco::BasicCluster &passedCluster, const EcalRecHitCollection *hits)
void ClusterShapeAlgo::Calculate_2ndEnergy ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits 
)
private

Definition at line 82 of file ClusterShapeAlgo.cc.

References e2nd_, e2ndId_, eMaxId_, edm::SortedCollection< T, SORT >::end(), EcalRecHit::energy(), edm::SortedCollection< T, SORT >::find(), and EcalRecHit::id().

Referenced by Calculate().

83 {
84  double e2nd=0;
85  DetId e2ndId(0);
86 
87  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
88  std::vector< std::pair<DetId, float> >::iterator posCurrent;
89 
90  EcalRecHit testEcalRecHit;
91 
92  for(posCurrent = clusterDetIds.begin(); posCurrent != clusterDetIds.end(); posCurrent++)
93  {
94  if (( (*posCurrent).first != DetId(0)) && (hits->find( (*posCurrent).first ) != hits->end()))
95  {
96  EcalRecHitCollection::const_iterator itt = hits->find( (*posCurrent).first );
97  testEcalRecHit = *itt;
98 
99  if(testEcalRecHit.energy() * (*posCurrent).second > e2nd && testEcalRecHit.id() != eMaxId_)
100  {
101  e2nd = testEcalRecHit.energy() * (*posCurrent).second;
102  e2ndId = testEcalRecHit.id();
103  }
104  }
105  }
106 
107  e2nd_ = e2nd;
108  e2ndId_ = e2ndId;
109 }
std::vector< EcalRecHit >::const_iterator const_iterator
float energy() const
Definition: EcalRecHit.h:68
const_iterator end() const
Definition: DetId.h:18
DetId id() const
get the id
Definition: EcalRecHit.h:76
iterator find(key_type k)
void ClusterShapeAlgo::Calculate_BarrelBasketEnergyFraction ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits,
const int  EtaPhi,
const CaloSubdetectorGeometry geometry 
)
private

Definition at line 384 of file ClusterShapeAlgo.cc.

References funct::abs(), EcalBarrel, relval_parameters_module::energy, energyBasketFractionEta_, energyBasketFractionPhi_, Eta, edm::SortedCollection< T, SORT >::find(), first, i, EBDetId::ieta(), EBDetId::iphi(), EBDetId::MAX_IPHI, EBDetId::MIN_IPHI, and Phi.

Referenced by Calculate().

388 {
389  if( (hits!=0) && ( ((*hits)[0]).id().subdetId() != EcalBarrel ) ) {
390  //std::cout << "No basket correction for endacap!" << std::endl;
391  return;
392  }
393 
394  std::map<int,double> indexedBasketEnergy;
395  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
396  const EcalBarrelGeometry* subDetGeometry = (const EcalBarrelGeometry*) geometry;
397 
398  for(std::vector< std::pair<DetId, float> >::iterator posCurrent = clusterDetIds.begin(); posCurrent != clusterDetIds.end(); posCurrent++)
399  {
400  int basketIndex = 999;
401 
402  if(EtaPhi == Eta) {
403  int unsignedIEta = abs(EBDetId( (*posCurrent).first ).ieta());
404  std::vector<int> etaBasketSize = subDetGeometry->getEtaBaskets();
405 
406  for(unsigned int i = 0; i < etaBasketSize.size(); i++) {
407  unsignedIEta -= etaBasketSize[i];
408  if(unsignedIEta - 1 < 0)
409  {
410  basketIndex = i;
411  break;
412  }
413  }
414  basketIndex = (basketIndex+1)*(EBDetId( (*posCurrent).first ).ieta() > 0 ? 1 : -1);
415 
416  } else if(EtaPhi == Phi) {
417  int halfNumBasketInPhi = (EBDetId::MAX_IPHI - EBDetId::MIN_IPHI + 1)/subDetGeometry->getBasketSizeInPhi()/2;
418 
419  basketIndex = (EBDetId( (*posCurrent).first ).iphi() - 1)/subDetGeometry->getBasketSizeInPhi()
420  - (EBDetId( (clusterDetIds[0]).first ).iphi() - 1)/subDetGeometry->getBasketSizeInPhi();
421 
422  if(basketIndex >= halfNumBasketInPhi) basketIndex -= 2*halfNumBasketInPhi;
423  else if(basketIndex < -1*halfNumBasketInPhi) basketIndex += 2*halfNumBasketInPhi;
424 
425  } else throw(std::runtime_error("\n\nOh No! Calculate_BarrelBasketEnergyFraction called on invalid index.\n\n"));
426 
427  indexedBasketEnergy[basketIndex] += (hits->find( (*posCurrent).first ))->energy();
428  }
429 
430  std::vector<double> energyFraction;
431  for(std::map<int,double>::iterator posCurrent = indexedBasketEnergy.begin(); posCurrent != indexedBasketEnergy.end(); posCurrent++)
432  {
433  energyFraction.push_back(indexedBasketEnergy[posCurrent->first]/passedCluster.energy());
434  }
435 
436  switch(EtaPhi)
437  {
438  case Eta: energyBasketFractionEta_ = energyFraction; break;
439  case Phi: energyBasketFractionPhi_ = energyFraction; break;
440  }
441 
442 }
int i
Definition: DBlmapReader.cc:9
static const int MIN_IPHI
Definition: EBDetId.h:142
int iphi() const
get the crystal iphi
Definition: EBDetId.h:53
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int ieta() const
get the crystal ieta
Definition: EBDetId.h:51
bool first
Definition: L1TdeRCT.cc:75
static const int MAX_IPHI
Definition: EBDetId.h:144
std::vector< double > energyBasketFractionPhi_
iterator find(key_type k)
std::vector< double > energyBasketFractionEta_
void ClusterShapeAlgo::Calculate_ComplexZernikeMoments ( const reco::BasicCluster passedCluster)
private

Definition at line 493 of file ClusterShapeAlgo.cc.

References A20_, A42_, and absZernikeMoment().

Referenced by Calculate().

493  {
494  // Calculate only the moments which go into the default cluster shape
495  // (moments with m>=2 are the only sensitive to azimuthal shape)
496  A20_ = absZernikeMoment(passedCluster,2,0);
497  A42_ = absZernikeMoment(passedCluster,4,2);
498 }
double absZernikeMoment(const reco::BasicCluster &passedCluster, int n, int m, double R0=6.6)
void ClusterShapeAlgo::Calculate_Covariances ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry 
)
private

Definition at line 312 of file ClusterShapeAlgo.cc.

References covEtaEta_, covEtaPhi_, covPhiPhi_, cuy::denominator, dPhi(), e5x5_, energyMap_, PV3DBase< T, PVType, FrameType >::eta(), CaloSubdetectorGeometry::getGeometry(), edm::ParameterSet::getParameter(), CaloCellGeometry::getPosition(), i, j, fff_deleter::log, max(), parameterSet_, Geom::Phi< T >::phi(), PV3DBase< T, PVType, FrameType >::phi(), Geom::pi(), position, edm::second(), Geom::twoPi(), w(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by Calculate().

314 {
315  if (e5x5_ > 0.)
316  {
317  double w0_ = parameterSet_.getParameter<double>("W0");
318 
319 
320  // first find energy-weighted mean position - doing it when filling the energy map might save time
321  math::XYZVector meanPosition(0.0, 0.0, 0.0);
322  for (int i = 0; i < 5; ++i)
323  {
324  for (int j = 0; j < 5; ++j)
325  {
326  DetId id = energyMap_[i][j].first;
327  if (id != DetId(0))
328  {
329  GlobalPoint positionGP = geometry->getGeometry(id)->getPosition();
330  math::XYZVector position(positionGP.x(),positionGP.y(),positionGP.z());
331  meanPosition = meanPosition + energyMap_[i][j].second * position;
332  }
333  }
334  }
335 
336  meanPosition /= e5x5_;
337 
338  // now we can calculate the covariances
339  double numeratorEtaEta = 0;
340  double numeratorEtaPhi = 0;
341  double numeratorPhiPhi = 0;
342  double denominator = 0;
343 
344  for (int i = 0; i < 5; ++i)
345  {
346  for (int j = 0; j < 5; ++j)
347  {
348  DetId id = energyMap_[i][j].first;
349  if (id != DetId(0))
350  {
351  GlobalPoint position = geometry->getGeometry(id)->getPosition();
352 
353  double dPhi = position.phi() - meanPosition.phi();
354  if (dPhi > + Geom::pi()) { dPhi = Geom::twoPi() - dPhi; }
355  if (dPhi < - Geom::pi()) { dPhi = Geom::twoPi() + dPhi; }
356 
357  double dEta = position.eta() - meanPosition.eta();
358  double w = 0.;
359  if ( energyMap_[i][j].second > 0.)
360  w = std::max(0.0, w0_ + log( energyMap_[i][j].second / e5x5_));
361 
362  denominator += w;
363  numeratorEtaEta += w * dEta * dEta;
364  numeratorEtaPhi += w * dEta * dPhi;
365  numeratorPhiPhi += w * dPhi * dPhi;
366  }
367  }
368  }
369 
370  covEtaEta_ = numeratorEtaEta / denominator;
371  covEtaPhi_ = numeratorEtaPhi / denominator;
372  covPhiPhi_ = numeratorPhiPhi / denominator;
373  }
374  else
375  {
376  // Warn the user if there was no energy in the cells and return zeroes.
377  // std::cout << "\ClusterShapeAlgo::Calculate_Covariances: no energy in supplied cells.\n";
378  covEtaEta_ = 0;
379  covEtaPhi_ = 0;
380  covPhiPhi_ = 0;
381  }
382 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
edm::ParameterSet parameterSet_
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
T y() const
Definition: PV3DBase.h:63
std::pair< DetId, double > energyMap_[5][5]
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
U second(std::pair< T, U > const &p)
list denominator
Definition: cuy.py:484
double dPhi(double phi1, double phi2)
Definition: JetUtil.h:30
const T & max(const T &a, const T &b)
T phi() const
Definition: Phi.h:41
T z() const
Definition: PV3DBase.h:64
int j
Definition: DBlmapReader.cc:9
Definition: DetId.h:18
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
T eta() const
Definition: PV3DBase.h:76
double pi()
Definition: Pi.h:31
double twoPi()
Definition: Pi.h:32
T w() const
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
T x() const
Definition: PV3DBase.h:62
void ClusterShapeAlgo::Calculate_e2x2 ( )
private

Definition at line 133 of file ClusterShapeAlgo.cc.

References e2x2_, e2x2_Diagonal_X_, e2x2_Diagonal_Y_, and energyMap_.

Referenced by Calculate().

134 {
135  double e2x2Max = 0;
136  double e2x2Test = 0;
137 
138  int deltaX=0, deltaY=0;
139 
140  for(int corner = 0; corner < 4; corner++)
141  {
142  switch(corner)
143  {
144  case 0: deltaX = -1; deltaY = -1; break;
145  case 1: deltaX = -1; deltaY = 1; break;
146  case 2: deltaX = 1; deltaY = -1; break;
147  case 3: deltaX = 1; deltaY = 1; break;
148  }
149 
150  e2x2Test = energyMap_[2][2].second;
151  e2x2Test += energyMap_[2+deltaY][2].second;
152  e2x2Test += energyMap_[2][2+deltaX].second;
153  e2x2Test += energyMap_[2+deltaY][2+deltaX].second;
154 
155  if(e2x2Test > e2x2Max)
156  {
157  e2x2Max = e2x2Test;
158  e2x2_Diagonal_X_ = 2+deltaX;
159  e2x2_Diagonal_Y_ = 2+deltaY;
160  }
161  }
162 
163  e2x2_ = e2x2Max;
164 
165 }
std::pair< DetId, double > energyMap_[5][5]
void ClusterShapeAlgo::Calculate_e2x5Bottom ( )
private

Definition at line 288 of file ClusterShapeAlgo.cc.

References e2x5Bottom_, energyMap_, i, and j.

Referenced by Calculate().

289 {
290 double e2x5B=0.0;
291  for(int i = 0; i <= 4; i++){
292  for(int j = 0; j <= 4; j++){
293 
294  if(i>2){e2x5B +=energyMap_[i][j].second;}
295  }
296  }
297  e2x5Bottom_=e2x5B;
298 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e2x5Left ( )
private

Definition at line 277 of file ClusterShapeAlgo.cc.

References e2x5Left_, energyMap_, i, and j.

Referenced by Calculate().

278 {
279 double e2x5L=0.0;
280  for(int i = 0; i <= 4; i++){
281  for(int j = 0; j <= 4; j++){
282  if(j<2){e2x5L +=energyMap_[i][j].second;}
283  }
284  }
285  e2x5Left_=e2x5L;
286 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e2x5Right ( )
private

Definition at line 266 of file ClusterShapeAlgo.cc.

References e2x5Right_, energyMap_, i, and j.

Referenced by Calculate().

267 {
268 double e2x5R=0.0;
269  for(int i = 0; i <= 4; i++){
270  for(int j = 0; j <= 4; j++){
271  if(j>2){e2x5R +=energyMap_[i][j].second;}
272  }
273  }
274  e2x5Right_=e2x5R;
275 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e2x5Top ( )
private

Definition at line 300 of file ClusterShapeAlgo.cc.

References e2x5Top_, energyMap_, i, and j.

Referenced by Calculate().

301 {
302 double e2x5T=0.0;
303  for(int i = 0; i <= 4; i++){
304  for(int j = 0; j <= 4; j++){
305 
306  if(i<2){e2x5T +=energyMap_[i][j].second;}
307  }
308  }
309  e2x5Top_=e2x5T;
310 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e3x2 ( )
private

Definition at line 167 of file ClusterShapeAlgo.cc.

References e3x2_, e3x2Ratio_, energyMap_, and edm::second().

Referenced by Calculate().

168 {
169  double e3x2 = 0.0;
170  double e3x2Ratio = 0.0, e3x2RatioNumerator = 0.0, e3x2RatioDenominator = 0.0;
171 
172  int e2ndX = 2, e2ndY = 2;
173  int deltaY = 0, deltaX = 0;
174 
175  double nextEnergy = -999;
176  int nextEneryDirection = -1;
177 
178  for(int cardinalDirection = 0; cardinalDirection < 4; cardinalDirection++)
179  {
180  switch(cardinalDirection)
181  {
182  case 0: deltaX = -1; deltaY = 0; break;
183  case 1: deltaX = 1; deltaY = 0; break;
184  case 2: deltaX = 0; deltaY = -1; break;
185  case 3: deltaX = 0; deltaY = 1; break;
186  }
187 
188  if(energyMap_[2+deltaY][2+deltaX].second >= nextEnergy)
189  {
190  nextEnergy = energyMap_[2+deltaY][2+deltaX].second;
191  nextEneryDirection = cardinalDirection;
192 
193  e2ndX = 2+deltaX;
194  e2ndY = 2+deltaY;
195  }
196  }
197 
198  switch(nextEneryDirection)
199  {
200  case 0: ;
201  case 1: deltaX = 0; deltaY = 1; break;
202  case 2: ;
203  case 3: deltaX = 1; deltaY = 0; break;
204  }
205 
206  for(int sign = -1; sign <= 1; sign++)
207  e3x2 += (energyMap_[2+deltaY*sign][2+deltaX*sign].second + energyMap_[e2ndY+deltaY*sign][e2ndX+deltaX*sign].second);
208 
209  e3x2RatioNumerator = energyMap_[e2ndY+deltaY][e2ndX+deltaX].second + energyMap_[e2ndY-deltaY][e2ndX-deltaX].second;
210  e3x2RatioDenominator = 0.5 + energyMap_[2+deltaY][2+deltaX].second + energyMap_[2-deltaY][2-deltaX].second;
211  e3x2Ratio = e3x2RatioNumerator / e3x2RatioDenominator;
212 
213  e3x2_ = e3x2;
214  e3x2Ratio_ = e3x2Ratio;
215 }
std::pair< DetId, double > energyMap_[5][5]
U second(std::pair< T, U > const &p)
void ClusterShapeAlgo::Calculate_e3x3 ( )
private

Definition at line 217 of file ClusterShapeAlgo.cc.

References e3x3_, energyMap_, i, j, and edm::second().

Referenced by Calculate().

218 {
219  double e3x3=0;
220 
221  for(int i = 1; i <= 3; i++)
222  for(int j = 1; j <= 3; j++)
223  e3x3 += energyMap_[j][i].second;
224 
225  e3x3_ = e3x3;
226 
227 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
U second(std::pair< T, U > const &p)
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e4x4 ( )
private

Definition at line 229 of file ClusterShapeAlgo.cc.

References e2x2_Diagonal_X_, e2x2_Diagonal_Y_, e4x4_, energyMap_, i, j, and edm::second().

Referenced by Calculate().

230 {
231  double e4x4=0;
232 
233  int startX=-1, startY=-1;
234 
235  switch(e2x2_Diagonal_X_)
236  {
237  case 1: startX = 0; break;
238  case 3: startX = 1; break;
239  }
240 
241  switch(e2x2_Diagonal_Y_)
242  {
243  case 1: startY = 0; break;
244  case 3: startY = 1; break;
245  }
246 
247  for(int i = startX; i <= startX+3; i++)
248  for(int j = startY; j <= startY+3; j++)
249  e4x4 += energyMap_[j][i].second;
250 
251  e4x4_ = e4x4;
252 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
U second(std::pair< T, U > const &p)
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_e5x5 ( )
private

Definition at line 254 of file ClusterShapeAlgo.cc.

References e5x5_, energyMap_, i, j, and edm::second().

Referenced by Calculate().

255 {
256  double e5x5=0;
257 
258  for(int i = 0; i <= 4; i++)
259  for(int j = 0; j <= 4; j++)
260  e5x5 += energyMap_[j][i].second;
261 
262  e5x5_ = e5x5;
263 
264 }
int i
Definition: DBlmapReader.cc:9
std::pair< DetId, double > energyMap_[5][5]
U second(std::pair< T, U > const &p)
int j
Definition: DBlmapReader.cc:9
void ClusterShapeAlgo::Calculate_EnergyDepTopology ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits,
const CaloSubdetectorGeometry geometry,
bool  logW = true 
)
private

Definition at line 593 of file ClusterShapeAlgo.cc.

References EcalClusterEnergyDeposition::deposited_energy, diffTreeTool::diff, edm::SortedCollection< T, SORT >::end(), EcalRecHit::energy(), energyDistribution_, edm::SortedCollection< T, SORT >::find(), CaloSubdetectorGeometry::getGeometry(), edm::ParameterSet::getParameter(), CaloCellGeometry::getPosition(), fff_deleter::log, LogDebug, M_PI, max(), parameterSet_, EcalClusterEnergyDeposition::phi, EcalClusterEnergyDeposition::r, histoStyle::weight, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by Calculate().

596  {
597  // resets the energy distribution
598  energyDistribution_.clear();
599 
600  // init a map of the energy deposition centered on the
601  // cluster centroid. This is for momenta calculation only.
602  CLHEP::Hep3Vector clVect(passedCluster.position().x(),
603  passedCluster.position().y(),
604  passedCluster.position().z());
605  CLHEP::Hep3Vector clDir(clVect);
606  clDir*=1.0/clDir.mag();
607  // in the transverse plane, axis perpendicular to clusterDir
608  CLHEP::Hep3Vector theta_axis(clDir.y(),-clDir.x(),0.0);
609  theta_axis *= 1.0/theta_axis.mag();
610  CLHEP::Hep3Vector phi_axis = theta_axis.cross(clDir);
611 
612  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
613 
615  EcalRecHit testEcalRecHit;
616  std::vector< std::pair<DetId, float> >::iterator posCurrent;
617  // loop over crystals
618  for(posCurrent=clusterDetIds.begin(); posCurrent!=clusterDetIds.end(); ++posCurrent) {
619  EcalRecHitCollection::const_iterator itt = hits->find( (*posCurrent).first );
620  testEcalRecHit=*itt;
621 
622  if(( (*posCurrent).first != DetId(0)) && (hits->find( (*posCurrent).first ) != hits->end())) {
623  clEdep.deposited_energy = testEcalRecHit.energy();
624 
625  // if logarithmic weight is requested, apply cut on minimum energy of the recHit
626  if(logW) {
627  double w0_ = parameterSet_.getParameter<double>("W0");
628 
629  if ( clEdep.deposited_energy == 0 ) {
630  LogDebug("ClusterShapeAlgo") << "Crystal has zero energy; skipping... ";
631  continue;
632  }
633  double weight = std::max(0.0, w0_ + log(fabs(clEdep.deposited_energy)/passedCluster.energy()) );
634  if(weight==0) {
635  LogDebug("ClusterShapeAlgo") << "Crystal has insufficient energy: E = "
636  << clEdep.deposited_energy << " GeV; skipping... ";
637  continue;
638  }
639  else LogDebug("ClusterShapeAlgo") << "===> got crystal. Energy = " << clEdep.deposited_energy << " GeV. ";
640  }
641  DetId id_ = (*posCurrent).first;
642  const CaloCellGeometry *this_cell = geometry->getGeometry(id_);
643  GlobalPoint cellPos = this_cell->getPosition();
644  CLHEP::Hep3Vector gblPos (cellPos.x(),cellPos.y(),cellPos.z()); //surface position?
645  // Evaluate the distance from the cluster centroid
646  CLHEP::Hep3Vector diff = gblPos - clVect;
647  // Important: for the moment calculation, only the "lateral distance" is important
648  // "lateral distance" r_i = distance of the digi position from the axis Origin-Cluster Center
649  // ---> subtract the projection on clDir
650  CLHEP::Hep3Vector DigiVect = diff - diff.dot(clDir)*clDir;
651  clEdep.r = DigiVect.mag();
652  LogDebug("ClusterShapeAlgo") << "E = " << clEdep.deposited_energy
653  << "\tdiff = " << diff.mag()
654  << "\tr = " << clEdep.r;
655  clEdep.phi = DigiVect.angle(theta_axis);
656  if(DigiVect.dot(phi_axis)<0) clEdep.phi = 2*M_PI - clEdep.phi;
657  energyDistribution_.push_back(clEdep);
658  }
659  }
660 }
#define LogDebug(id)
T getParameter(std::string const &) const
std::vector< EcalClusterEnergyDeposition > energyDistribution_
edm::ParameterSet parameterSet_
std::vector< EcalRecHit >::const_iterator const_iterator
T y() const
Definition: PV3DBase.h:63
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
const T & max(const T &a, const T &b)
T z() const
Definition: PV3DBase.h:64
float energy() const
Definition: EcalRecHit.h:68
#define M_PI
const_iterator end() const
Definition: DetId.h:18
iterator find(key_type k)
int weight
Definition: histoStyle.py:50
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
T x() const
Definition: PV3DBase.h:62
void ClusterShapeAlgo::Calculate_lat ( const reco::BasicCluster passedCluster)
private

Definition at line 444 of file ClusterShapeAlgo.cc.

References funct::cos(), reco::e1, reco::e2, energyDistribution_, etaLat_, i, lat_, n, phi, phiLat_, alignCSCRings::r, funct::sin(), and tmp.

Referenced by Calculate().

444  {
445 
446  double r,redmoment=0;
447  double phiRedmoment = 0 ;
448  double etaRedmoment = 0 ;
449  int n,n1,n2,tmp;
450  int clusterSize=energyDistribution_.size();
451  if (clusterSize<3) {
452  etaLat_ = 0.0 ;
453  lat_ = 0.0;
454  return;
455  }
456 
457  n1=0; n2=1;
458  if (energyDistribution_[1].deposited_energy >
459  energyDistribution_[0].deposited_energy)
460  {
461  tmp=n2; n2=n1; n1=tmp;
462  }
463  for (int i=2; i<clusterSize; i++) {
464  n=i;
465  if (energyDistribution_[i].deposited_energy >
466  energyDistribution_[n1].deposited_energy)
467  {
468  tmp = n2;
469  n2 = n1; n1 = i; n=tmp;
470  } else {
471  if (energyDistribution_[i].deposited_energy >
472  energyDistribution_[n2].deposited_energy)
473  {
474  tmp=n2; n2=i; n=tmp;
475  }
476  }
477 
478  r = energyDistribution_[n].r;
479  redmoment += r*r* energyDistribution_[n].deposited_energy;
480  double rphi = r * cos (energyDistribution_[n].phi) ;
481  phiRedmoment += rphi * rphi * energyDistribution_[n].deposited_energy;
482  double reta = r * sin (energyDistribution_[n].phi) ;
483  etaRedmoment += reta * reta * energyDistribution_[n].deposited_energy;
484  }
485  double e1 = energyDistribution_[n1].deposited_energy;
486  double e2 = energyDistribution_[n2].deposited_energy;
487 
488  lat_ = redmoment/(redmoment+2.19*2.19*(e1+e2));
489  phiLat_ = phiRedmoment/(phiRedmoment+2.19*2.19*(e1+e2));
490  etaLat_ = etaRedmoment/(etaRedmoment+2.19*2.19*(e1+e2));
491 }
int i
Definition: DBlmapReader.cc:9
std::vector< EcalClusterEnergyDeposition > energyDistribution_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Float e1
Definition: deltaR.h:22
Float e2
Definition: deltaR.h:23
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
Definition: DDAxes.h:10
void ClusterShapeAlgo::Calculate_Polynomials ( double  rho)
private

Definition at line 662 of file ClusterShapeAlgo.cc.

References f00(), f11(), f20(), f22(), f31(), f33(), f40(), f42(), f44(), f51(), f53(), f55(), and fcn_.

Referenced by fast_AbsZernikeMoment().

662  {
663  fcn_.push_back(f00(rho));
664  fcn_.push_back(f11(rho));
665  fcn_.push_back(f20(rho));
666  fcn_.push_back(f31(rho));
667  fcn_.push_back(f22(rho));
668  fcn_.push_back(f33(rho));
669  fcn_.push_back(f40(rho));
670  fcn_.push_back(f51(rho));
671  fcn_.push_back(f42(rho));
672  fcn_.push_back(f53(rho));
673  fcn_.push_back(f44(rho));
674  fcn_.push_back(f55(rho));
675 }
double f20(double r)
std::vector< double > fcn_
double f00(double r)
double f44(double r)
Definition: DDAxes.h:10
double f31(double r)
double f55(double r)
double f42(double r)
double f40(double r)
double f33(double r)
double f11(double r)
double f51(double r)
double f22(double r)
double f53(double r)
void ClusterShapeAlgo::Calculate_TopEnergy ( const reco::BasicCluster passedCluster,
const EcalRecHitCollection hits 
)
private

Definition at line 53 of file ClusterShapeAlgo.cc.

References eMax_, eMaxId_, edm::SortedCollection< T, SORT >::end(), EcalRecHit::energy(), edm::SortedCollection< T, SORT >::find(), and EcalRecHit::id().

Referenced by Calculate().

54 {
55  double eMax=0;
56  DetId eMaxId(0);
57 
58  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
59  std::vector< std::pair<DetId, float> >::iterator posCurrent;
60 
61  EcalRecHit testEcalRecHit;
62 
63  for(posCurrent = clusterDetIds.begin(); posCurrent != clusterDetIds.end(); posCurrent++)
64  {
65  if (((*posCurrent).first != DetId(0)) && (hits->find((*posCurrent).first) != hits->end()))
66  {
67  EcalRecHitCollection::const_iterator itt = hits->find((*posCurrent).first);
68  testEcalRecHit = *itt;
69 
70  if(testEcalRecHit.energy() * (*posCurrent).second > eMax)
71  {
72  eMax = testEcalRecHit.energy() * (*posCurrent).second;
73  eMaxId = testEcalRecHit.id();
74  }
75  }
76  }
77 
78  eMax_ = eMax;
79  eMaxId_ = eMaxId;
80 }
std::vector< EcalRecHit >::const_iterator const_iterator
float energy() const
Definition: EcalRecHit.h:68
const_iterator end() const
Definition: DetId.h:18
DetId id() const
get the id
Definition: EcalRecHit.h:76
iterator find(key_type k)
void ClusterShapeAlgo::Create_Map ( const EcalRecHitCollection hits,
const CaloSubdetectorTopology topology 
)
private

Definition at line 111 of file ClusterShapeAlgo.cc.

References eMaxId_, edm::SortedCollection< T, SORT >::end(), EcalRecHit::energy(), energyMap_, edm::SortedCollection< T, SORT >::find(), EcalRecHit::id(), ecaldqm::topology(), x, and detailsBasic3DVector::y.

Referenced by Calculate().

112 {
113  EcalRecHit tempEcalRecHit;
114  CaloNavigator<DetId> posCurrent = CaloNavigator<DetId>(eMaxId_,topology );
115 
116  for(int x = 0; x < 5; x++)
117  for(int y = 0; y < 5; y++)
118  {
119  posCurrent.home();
120  posCurrent.offsetBy(-2+x,-2+y);
121 
122  if((*posCurrent != DetId(0)) && (hits->find(*posCurrent) != hits->end()))
123  {
124  EcalRecHitCollection::const_iterator itt = hits->find(*posCurrent);
125  tempEcalRecHit = *itt;
126  energyMap_[y][x] = std::make_pair(tempEcalRecHit.id(),tempEcalRecHit.energy());
127  }
128  else
129  energyMap_[y][x] = std::make_pair(DetId(0), 0);
130  }
131 }
CaloTopology const * topology(0)
std::vector< EcalRecHit >::const_iterator const_iterator
std::pair< DetId, double > energyMap_[5][5]
float energy() const
Definition: EcalRecHit.h:68
const_iterator end() const
Definition: DetId.h:18
DetId id() const
get the id
Definition: EcalRecHit.h:76
iterator find(key_type k)
Definition: DDAxes.h:10
double ClusterShapeAlgo::f00 ( double  r)
private

Definition at line 512 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

512 { return 1; }
double ClusterShapeAlgo::f11 ( double  r)
private

Definition at line 514 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

514 { return r; }
double ClusterShapeAlgo::f20 ( double  r)
private

Definition at line 516 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

516 { return 2.0*r*r-1.0; }
double ClusterShapeAlgo::f22 ( double  r)
private

Definition at line 518 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

518 { return r*r; }
double ClusterShapeAlgo::f31 ( double  r)
private

Definition at line 520 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

520 { return 3.0*r*r*r - 2.0*r; }
double ClusterShapeAlgo::f33 ( double  r)
private

Definition at line 522 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

522 { return r*r*r; }
double ClusterShapeAlgo::f40 ( double  r)
private

Definition at line 524 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

524 { return 6.0*r*r*r*r-6.0*r*r+1.0; }
double ClusterShapeAlgo::f42 ( double  r)
private

Definition at line 526 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

526 { return 4.0*r*r*r*r-3.0*r*r; }
double ClusterShapeAlgo::f44 ( double  r)
private

Definition at line 528 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

528 { return r*r*r*r; }
double ClusterShapeAlgo::f51 ( double  r)
private

Definition at line 530 of file ClusterShapeAlgo.cc.

References funct::pow(), and alignCSCRings::r.

Referenced by Calculate_Polynomials().

530 { return 10.0*pow(r,5)-12.0*pow(r,3)+3.0*r; }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double ClusterShapeAlgo::f53 ( double  r)
private

Definition at line 532 of file ClusterShapeAlgo.cc.

References funct::pow().

Referenced by Calculate_Polynomials().

532 { return 5.0*pow(r,5) - 4.0*pow(r,3); }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double ClusterShapeAlgo::f55 ( double  r)
private

Definition at line 534 of file ClusterShapeAlgo.cc.

References funct::pow().

Referenced by Calculate_Polynomials().

534 { return pow(r,5); }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double ClusterShapeAlgo::factorial ( int  n) const
private

Definition at line 677 of file ClusterShapeAlgo.cc.

References i, and n.

Referenced by calc_AbsZernikeMoment().

677  {
678  double res=1.0;
679  for(int i=2; i<=n; i++) res*=(double) i;
680  return res;
681 }
int i
Definition: DBlmapReader.cc:9
double ClusterShapeAlgo::fast_AbsZernikeMoment ( const reco::BasicCluster passedCluster,
int  n,
int  m,
double  R0 
)
private

Definition at line 536 of file ClusterShapeAlgo.cc.

References Calculate_Polynomials(), funct::cos(), alignCSCRings::e, energyDistribution_, fcn_, i, cmsHarvester::index, phi, alignCSCRings::r, query::result, funct::sin(), and mathSSE::sqrt().

Referenced by absZernikeMoment().

537  {
538  double r,ph,e,Re=0,Im=0,result;
539  double TotalEnergy = passedCluster.energy();
540  int index = (n/2)*(n/2)+(n/2)+m;
541  int clusterSize=energyDistribution_.size();
542  if(clusterSize<3) return 0.0;
543 
544  for (int i=0; i<clusterSize; i++)
545  {
546  r = energyDistribution_[i].r / R0;
547  if (r<1) {
548  fcn_.clear();
550  ph = (energyDistribution_[i]).phi;
551  e = energyDistribution_[i].deposited_energy;
552  Re = Re + e/TotalEnergy * fcn_[index] * cos( (double) m * ph);
553  Im = Im - e/TotalEnergy * fcn_[index] * sin( (double) m * ph);
554  }
555  }
556  result = sqrt(Re*Re+Im*Im);
557 
558  return result;
559 }
int i
Definition: DBlmapReader.cc:9
std::vector< double > fcn_
std::vector< EcalClusterEnergyDeposition > energyDistribution_
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T sqrt(T t)
Definition: SSEVec.h:48
tuple result
Definition: query.py:137
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
void Calculate_Polynomials(double rho)
Definition: DDAxes.h:10

Member Data Documentation

double ClusterShapeAlgo::A20_
private

Definition at line 102 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_ComplexZernikeMoments().

double ClusterShapeAlgo::A42_
private

Definition at line 102 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_ComplexZernikeMoments().

double ClusterShapeAlgo::covEtaEta_
private

Definition at line 95 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_Covariances().

double ClusterShapeAlgo::covEtaPhi_
private

Definition at line 95 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_Covariances().

double ClusterShapeAlgo::covPhiPhi_
private

Definition at line 95 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_Covariances().

double ClusterShapeAlgo::e2nd_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_2ndEnergy().

DetId ClusterShapeAlgo::e2ndId_
private

Definition at line 105 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_2ndEnergy().

double ClusterShapeAlgo::e2x2_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e2x2().

int ClusterShapeAlgo::e2x2_Diagonal_X_
private

Definition at line 93 of file ClusterShapeAlgo.h.

Referenced by Calculate_e2x2(), and Calculate_e4x4().

int ClusterShapeAlgo::e2x2_Diagonal_Y_
private

Definition at line 93 of file ClusterShapeAlgo.h.

Referenced by Calculate_e2x2(), and Calculate_e4x4().

double ClusterShapeAlgo::e2x5Bottom_
private

Definition at line 97 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e2x5Bottom().

double ClusterShapeAlgo::e2x5Left_
private

Definition at line 97 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e2x5Left().

double ClusterShapeAlgo::e2x5Right_
private

Definition at line 97 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e2x5Right().

double ClusterShapeAlgo::e2x5Top_
private

Definition at line 97 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e2x5Top().

double ClusterShapeAlgo::e3x2_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e3x2().

double ClusterShapeAlgo::e3x2Ratio_
private

Definition at line 98 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e3x2().

double ClusterShapeAlgo::e3x3_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e3x3().

double ClusterShapeAlgo::e4x4_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_e4x4().

double ClusterShapeAlgo::e5x5_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), Calculate_Covariances(), and Calculate_e5x5().

double ClusterShapeAlgo::eMax_
private

Definition at line 96 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_TopEnergy().

DetId ClusterShapeAlgo::eMaxId_
private
std::vector<double> ClusterShapeAlgo::energyBasketFractionEta_
private

Definition at line 103 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_BarrelBasketEnergyFraction().

std::vector<double> ClusterShapeAlgo::energyBasketFractionPhi_
private

Definition at line 104 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_BarrelBasketEnergyFraction().

std::vector<EcalClusterEnergyDeposition> ClusterShapeAlgo::energyDistribution_
private
std::pair<DetId, double> ClusterShapeAlgo::energyMap_[5][5]
private
double ClusterShapeAlgo::etaLat_
private

Definition at line 100 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_lat().

std::vector<double> ClusterShapeAlgo::fcn_
private

Definition at line 107 of file ClusterShapeAlgo.h.

Referenced by Calculate_Polynomials(), and fast_AbsZernikeMoment().

double ClusterShapeAlgo::lat_
private

Definition at line 99 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_lat().

edm::ParameterSet ClusterShapeAlgo::parameterSet_
private

Definition at line 90 of file ClusterShapeAlgo.h.

Referenced by Calculate_Covariances(), and Calculate_EnergyDepTopology().

double ClusterShapeAlgo::phiLat_
private

Definition at line 101 of file ClusterShapeAlgo.h.

Referenced by Calculate(), and Calculate_lat().