64 std::vector<EBDetId>::iterator myIt;
65 for (myIt = passedDetIds.begin(); myIt != passedDetIds.end(); myIt++) {
68 thisEne = itt->energy();
75 edm::LogError(
"NegativeClusterEnergy") <<
"cluster with negative energy: " << eTot <<
", setting depth to 0.";
88 double total_weight = 0;
89 double cluster_theta = 0;
90 double cluster_phi = 0;
91 std::vector<EBDetId>::iterator myIt2;
92 for (myIt2 = passedDetIds.begin(); myIt2 != passedDetIds.end(); myIt2++) {
97 double ener = itj->energy();
100 if(eTot<=0.) { weight = 0.; }
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< T >::const_iterator const_iterator
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
Geom::Theta< T > theta() const
const T & max(const T &a, const T &b)
const CaloSubdetectorGeometry * theGeometry_
Cos< T >::type cos(const T &t)
Log< T >::type log(const T &t)
A base class to handle the particular shape of Ecal Xtals. Taken from ORCA Calorimetry Code...
static const int SMCRYSTALMODE