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 498 of file ClusterShapeAlgo.cc.

References calc_AbsZernikeMoment(), and fast_AbsZernikeMoment().

Referenced by Calculate_ComplexZernikeMoments().

499  {
500  // 1. Check if n,m are correctly
501  if ((m>n) || ((n-m)%2 != 0) || (n<0) || (m<0)) return -1;
502 
503  // 2. Check if n,R0 are within validity Range :
504  // n>20 or R0<2.19cm just makes no sense !
505  if ((n>20) || (R0<=2.19)) return -1;
506  if (n<=5) return fast_AbsZernikeMoment(passedCluster,n,m,R0);
507  else return calc_AbsZernikeMoment(passedCluster,n,m,R0);
508 }
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 559 of file ClusterShapeAlgo.cc.

References funct::cos(), alignCSCRings::e, energyDistribution_, factorial(), i, visualization-live-secondInstance_cfg::m, phi, funct::pow(), alignCSCRings::r, mps_fire::result, alignCSCRings::s, funct::sin(), and mathSSE::sqrt().

Referenced by absZernikeMoment().

560  {
561  double r,ph,e,Re=0,Im=0,f_nm,result;
562  double TotalEnergy = passedCluster.energy();
563  std::vector< std::pair<DetId, float> > clusterDetIds = passedCluster.hitsAndFractions();
564  int clusterSize=energyDistribution_.size();
565  if(clusterSize<3) return 0.0;
566 
567  for (int i=0; i<clusterSize; i++)
568  {
569  r = energyDistribution_[i].r / R0;
570  if (r<1) {
571  ph = (energyDistribution_[i]).phi;
572  e = energyDistribution_[i].deposited_energy;
573  f_nm=0;
574  for (int s=0; s<=(n-m)/2; s++) {
575  if (s%2==0)
576  {
577  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));
578  }else {
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  }
581  }
582  Re = Re + e/TotalEnergy * f_nm * cos( (double) m*ph);
583  Im = Im - e/TotalEnergy * f_nm * sin( (double) m*ph);
584  }
585  }
586  result = sqrt(Re*Re+Im*Im);
587 
588  return result;
589 }
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
tuple result
Definition: mps_fire.py:84
T sqrt(T t)
Definition: SSEVec.h:18
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
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 81 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().

82 {
83  double e2nd=0;
84  DetId e2ndId(0);
85 
86  const std::vector< std::pair<DetId, float> >& clusterDetIds = passedCluster.hitsAndFractions();
87 
88  EcalRecHit testEcalRecHit;
89 
90  for(auto const& posCurrent : clusterDetIds)
91  {
92  if (( posCurrent.first != DetId(0)) && (hits->find( posCurrent.first ) != hits->end()))
93  {
94  EcalRecHitCollection::const_iterator itt = hits->find( posCurrent.first );
95  testEcalRecHit = *itt;
96 
97  if(testEcalRecHit.energy() * posCurrent.second > e2nd && testEcalRecHit.id() != eMaxId_)
98  {
99  e2nd = testEcalRecHit.energy() * posCurrent.second;
100  e2ndId = testEcalRecHit.id();
101  }
102  }
103  }
104 
105  e2nd_ = e2nd;
106  e2ndId_ = e2ndId;
107 }
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 382 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

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

Definition at line 491 of file ClusterShapeAlgo.cc.

References A20_, A42_, and absZernikeMoment().

Referenced by Calculate().

491  {
492  // Calculate only the moments which go into the default cluster shape
493  // (moments with m>=2 are the only sensitive to azimuthal shape)
494  A20_ = absZernikeMoment(passedCluster,2,0);
495  A42_ = absZernikeMoment(passedCluster,4,2);
496 }
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 310 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, dqm-mbProfile::log, bookConverter::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().

312 {
313  if (e5x5_ > 0.)
314  {
315  double w0_ = parameterSet_.getParameter<double>("W0");
316 
317 
318  // first find energy-weighted mean position - doing it when filling the energy map might save time
319  math::XYZVector meanPosition(0.0, 0.0, 0.0);
320  for (int i = 0; i < 5; ++i)
321  {
322  for (int j = 0; j < 5; ++j)
323  {
324  DetId id = energyMap_[i][j].first;
325  if (id != DetId(0))
326  {
327  GlobalPoint positionGP = geometry->getGeometry(id)->getPosition();
328  math::XYZVector position(positionGP.x(),positionGP.y(),positionGP.z());
329  meanPosition = meanPosition + energyMap_[i][j].second * position;
330  }
331  }
332  }
333 
334  meanPosition /= e5x5_;
335 
336  // now we can calculate the covariances
337  double numeratorEtaEta = 0;
338  double numeratorEtaPhi = 0;
339  double numeratorPhiPhi = 0;
340  double denominator = 0;
341 
342  for (int i = 0; i < 5; ++i)
343  {
344  for (int j = 0; j < 5; ++j)
345  {
346  DetId id = energyMap_[i][j].first;
347  if (id != DetId(0))
348  {
349  GlobalPoint position = geometry->getGeometry(id)->getPosition();
350 
351  double dPhi = position.phi() - meanPosition.phi();
352  if (dPhi > + Geom::pi()) { dPhi = Geom::twoPi() - dPhi; }
353  if (dPhi < - Geom::pi()) { dPhi = Geom::twoPi() + dPhi; }
354 
355  double dEta = position.eta() - meanPosition.eta();
356  double w = 0.;
357  if ( energyMap_[i][j].second > 0.)
358  w = std::max(0.0, w0_ + log( energyMap_[i][j].second / e5x5_));
359 
360  denominator += w;
361  numeratorEtaEta += w * dEta * dEta;
362  numeratorEtaPhi += w * dEta * dPhi;
363  numeratorPhiPhi += w * dPhi * dPhi;
364  }
365  }
366  }
367 
368  covEtaEta_ = numeratorEtaEta / denominator;
369  covEtaPhi_ = numeratorEtaPhi / denominator;
370  covPhiPhi_ = numeratorPhiPhi / denominator;
371  }
372  else
373  {
374  // Warn the user if there was no energy in the cells and return zeroes.
375  // std::cout << "\ClusterShapeAlgo::Calculate_Covariances: no energy in supplied cells.\n";
376  covEtaEta_ = 0;
377  covEtaPhi_ = 0;
378  covPhiPhi_ = 0;
379  }
380 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
const double w
Definition: UKUtility.cc:23
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]
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
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
static int position[264][3]
Definition: ReadPGInfo.cc:509
constexpr double pi()
Definition: Pi.h:31
const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
constexpr double twoPi()
Definition: Pi.h:32
T x() const
Definition: PV3DBase.h:62
void ClusterShapeAlgo::Calculate_e2x2 ( )
private

Definition at line 131 of file ClusterShapeAlgo.cc.

References e2x2_, e2x2_Diagonal_X_, e2x2_Diagonal_Y_, and energyMap_.

Referenced by Calculate().

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

Definition at line 286 of file ClusterShapeAlgo.cc.

References e2x5Bottom_, energyMap_, i, and j.

Referenced by Calculate().

287 {
288 double e2x5B=0.0;
289  for(int i = 0; i <= 4; i++){
290  for(int j = 0; j <= 4; j++){
291 
292  if(i>2){e2x5B +=energyMap_[i][j].second;}
293  }
294  }
295  e2x5Bottom_=e2x5B;
296 }
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 275 of file ClusterShapeAlgo.cc.

References e2x5Left_, energyMap_, i, and j.

Referenced by Calculate().

276 {
277 double e2x5L=0.0;
278  for(int i = 0; i <= 4; i++){
279  for(int j = 0; j <= 4; j++){
280  if(j<2){e2x5L +=energyMap_[i][j].second;}
281  }
282  }
283  e2x5Left_=e2x5L;
284 }
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 264 of file ClusterShapeAlgo.cc.

References e2x5Right_, energyMap_, i, and j.

Referenced by Calculate().

265 {
266 double e2x5R=0.0;
267  for(int i = 0; i <= 4; i++){
268  for(int j = 0; j <= 4; j++){
269  if(j>2){e2x5R +=energyMap_[i][j].second;}
270  }
271  }
272  e2x5Right_=e2x5R;
273 }
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 298 of file ClusterShapeAlgo.cc.

References e2x5Top_, energyMap_, i, and j.

Referenced by Calculate().

299 {
300 double e2x5T=0.0;
301  for(int i = 0; i <= 4; i++){
302  for(int j = 0; j <= 4; j++){
303 
304  if(i<2){e2x5T +=energyMap_[i][j].second;}
305  }
306  }
307  e2x5Top_=e2x5T;
308 }
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 165 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

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

Definition at line 215 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

216 {
217  double e3x3=0;
218 
219  for(int i = 1; i <= 3; i++)
220  for(int j = 1; j <= 3; j++)
221  e3x3 += energyMap_[j][i].second;
222 
223  e3x3_ = e3x3;
224 
225 }
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 227 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

228 {
229  double e4x4=0;
230 
231  int startX=-1, startY=-1;
232 
233  switch(e2x2_Diagonal_X_)
234  {
235  case 1: startX = 0; break;
236  case 3: startX = 1; break;
237  }
238 
239  switch(e2x2_Diagonal_Y_)
240  {
241  case 1: startY = 0; break;
242  case 3: startY = 1; break;
243  }
244 
245  for(int i = startX; i <= startX+3; i++)
246  for(int j = startY; j <= startY+3; j++)
247  e4x4 += energyMap_[j][i].second;
248 
249  e4x4_ = e4x4;
250 }
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 252 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

253 {
254  double e5x5=0;
255 
256  for(int i = 0; i <= 4; i++)
257  for(int j = 0; j <= 4; j++)
258  e5x5 += energyMap_[j][i].second;
259 
260  e5x5_ = e5x5;
261 
262 }
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 591 of file ClusterShapeAlgo.cc.

References EcalClusterEnergyDeposition::deposited_energy, mps_update::diff, edm::SortedCollection< T, SORT >::end(), EcalRecHit::energy(), energyDistribution_, edm::SortedCollection< T, SORT >::find(), CaloSubdetectorGeometry::getGeometry(), edm::ParameterSet::getParameter(), CaloCellGeometry::getPosition(), dqm-mbProfile::log, LogDebug, M_PI, bookConverter::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().

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

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

Referenced by Calculate().

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

Definition at line 659 of file ClusterShapeAlgo.cc.

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

Referenced by fast_AbsZernikeMoment().

659  {
660  fcn_.push_back(f00(rho));
661  fcn_.push_back(f11(rho));
662  fcn_.push_back(f20(rho));
663  fcn_.push_back(f31(rho));
664  fcn_.push_back(f22(rho));
665  fcn_.push_back(f33(rho));
666  fcn_.push_back(f40(rho));
667  fcn_.push_back(f51(rho));
668  fcn_.push_back(f42(rho));
669  fcn_.push_back(f53(rho));
670  fcn_.push_back(f44(rho));
671  fcn_.push_back(f55(rho));
672 }
double f20(double r)
std::vector< double > fcn_
double f00(double r)
double f44(double r)
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  const std::vector< std::pair<DetId, float> >& clusterDetIds = passedCluster.hitsAndFractions();
59 
60  EcalRecHit testEcalRecHit;
61 
62  for(auto const& posCurrent : clusterDetIds)
63  {
64  if ((posCurrent.first != DetId(0)) && (hits->find(posCurrent.first) != hits->end()))
65  {
66  EcalRecHitCollection::const_iterator itt = hits->find(posCurrent.first);
67  testEcalRecHit = *itt;
68 
69  if(testEcalRecHit.energy() * posCurrent.second > eMax)
70  {
71  eMax = testEcalRecHit.energy() * posCurrent.second;
72  eMaxId = testEcalRecHit.id();
73  }
74  }
75  }
76 
77  eMax_ = eMax;
78  eMaxId_ = eMaxId;
79 }
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 109 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate().

110 {
111  EcalRecHit tempEcalRecHit;
113 
114  for(int x = 0; x < 5; x++)
115  for(int y = 0; y < 5; y++)
116  {
117  posCurrent.home();
118  posCurrent.offsetBy(-2+x,-2+y);
119 
120  if((*posCurrent != DetId(0)) && (hits->find(*posCurrent) != hits->end()))
121  {
122  EcalRecHitCollection::const_iterator itt = hits->find(*posCurrent);
123  tempEcalRecHit = *itt;
124  energyMap_[y][x] = std::make_pair(tempEcalRecHit.id(),tempEcalRecHit.energy());
125  }
126  else
127  energyMap_[y][x] = std::make_pair(DetId(0), 0);
128  }
129 }
CaloTopology const * topology(0)
std::vector< EcalRecHit >::const_iterator const_iterator
std::pair< DetId, double > energyMap_[5][5]
T offsetBy(int deltaX, int deltaY) const
Free movement of arbitray steps.
Definition: CaloNavigator.h:80
float energy() const
Definition: EcalRecHit.h:68
const_iterator end() const
void home() const
move the navigator back to the starting point
Definition: DetId.h:18
DetId id() const
get the id
Definition: EcalRecHit.h:76
iterator find(key_type k)
double ClusterShapeAlgo::f00 ( double  r)
private

Definition at line 510 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

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

Definition at line 512 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 514 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

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

Definition at line 516 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 518 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 520 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 522 of file ClusterShapeAlgo.cc.

Referenced by Calculate_Polynomials().

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

Definition at line 524 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 526 of file ClusterShapeAlgo.cc.

References alignCSCRings::r.

Referenced by Calculate_Polynomials().

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

Definition at line 528 of file ClusterShapeAlgo.cc.

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

Referenced by Calculate_Polynomials().

528 { 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 530 of file ClusterShapeAlgo.cc.

References funct::pow().

Referenced by Calculate_Polynomials().

530 { 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 532 of file ClusterShapeAlgo.cc.

References funct::pow().

Referenced by Calculate_Polynomials().

532 { 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 674 of file ClusterShapeAlgo.cc.

References i, and gen::n.

Referenced by calc_AbsZernikeMoment().

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

Definition at line 534 of file ClusterShapeAlgo.cc.

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

Referenced by absZernikeMoment().

535  {
536  double r,ph,e,Re=0,Im=0,result;
537  double TotalEnergy = passedCluster.energy();
538  int index = (n/2)*(n/2)+(n/2)+m;
539  int clusterSize=energyDistribution_.size();
540  if(clusterSize<3) return 0.0;
541 
542  for (int i=0; i<clusterSize; i++)
543  {
544  r = energyDistribution_[i].r / R0;
545  if (r<1) {
546  fcn_.clear();
548  ph = (energyDistribution_[i]).phi;
549  e = energyDistribution_[i].deposited_energy;
550  Re = Re + e/TotalEnergy * fcn_[index] * cos( (double) m * ph);
551  Im = Im - e/TotalEnergy * fcn_[index] * sin( (double) m * ph);
552  }
553  }
554  result = sqrt(Re*Re+Im*Im);
555 
556  return result;
557 }
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
tuple result
Definition: mps_fire.py:84
T sqrt(T t)
Definition: SSEVec.h:18
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
void Calculate_Polynomials(double rho)

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().