Definition at line 59 of file TBPositionCalc.cc.
References funct::cos(), egammaForCoreTracking_cff::depth, edm::SortedCollection< T, SORT >::find(), ecaldqm::getGeometry(), cmsBatch::log, M_PI, SiStripPI::max, PV3DBase< T, PVType, FrameType >::phi(), TCMET_cfi::radius, funct::sin(), EBDetId::SMCRYSTALMODE, mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::theta(), mps_merge::weight, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by TBPositionCalc().
65 std::vector<EBDetId>::const_iterator myIt;
66 for (myIt = passedDetIds.begin(); myIt != passedDetIds.end(); myIt++) {
69 thisEne = itt->energy();
76 edm::LogError(
"NegativeClusterEnergy") <<
"cluster with negative energy: " << eTot <<
", setting depth to 0.";
84 GlobalPoint center_pos = center_cell->getPosition(depth);
88 double total_weight = 0;
89 double cluster_theta = 0;
90 double cluster_phi = 0;
91 std::vector<EBDetId>::const_iterator myIt2;
92 for (myIt2 = passedDetIds.begin(); myIt2 != passedDetIds.end(); myIt2++) {
97 double ener = itj->energy();
100 if(eTot<=0.) { weight = 0.; }
109 GlobalPoint jth_pos = jth_cell->getPosition(depth);
110 cluster_theta += weight*jth_pos.
theta();
111 cluster_phi += weight*jth_pos.
phi();
115 cluster_theta /= total_weight;
116 cluster_phi /= total_weight;
117 if (cluster_phi >
M_PI) { cluster_phi -= 2.*
M_PI; }
118 if (cluster_phi < -
M_PI){ cluster_phi += 2.*
M_PI; }
121 double radius =
sqrt(center_pos.
x()*center_pos.
x() + center_pos.
y()*center_pos.
y() + center_pos.
z()*center_pos.
z());
122 double xpos = radius*
cos(cluster_phi)*
sin(cluster_theta);
123 double ypos = radius*
sin(cluster_phi)*
sin(cluster_theta);
124 double zpos = radius*
cos(cluster_theta);
126 return CLHEP::Hep3Vector(xpos, ypos, zpos);
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
std::vector< EcalRecHit >::const_iterator const_iterator
CaloGeometry const * getGeometry()
Geom::Theta< T > theta() const
const CaloSubdetectorGeometry * theGeometry_
Cos< T >::type cos(const T &t)
virtual std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
static const int SMCRYSTALMODE