00001
00002
00003 #include "StEtaPhiCell.h"
00004
00005 #include <cmath>
00006 #include <algorithm>
00007
00008 StEtaPhiCell::StEtaPhiCell(double etaMin, double etaMax, double phiMin, double phiMax)
00009 : mNtimesUsed(0)
00010 , mEt(0.)
00011 , mUpToDate(false)
00012 , mEtaMin(etaMin)
00013 , mEtaMax(etaMax)
00014 , mPhiMin(phiMin)
00015 , mPhiMax(phiMax)
00016 {
00017
00018 }
00019
00020 StEtaPhiCell::StEtaPhiCell()
00021 : mNtimesUsed(0)
00022 , mEt(0)
00023 , mUpToDate(false)
00024 , mEtaMin(0)
00025 , mEtaMax(0)
00026 , mPhiMin(0)
00027 , mPhiMax(0)
00028 {
00029
00030 }
00031
00032 StEtaPhiCell::~StEtaPhiCell()
00033 {
00034
00035 }
00036
00037 void StEtaPhiCell::addProtoJet(const StProtoJet& pj)
00038 {
00039 mEt += pj.eT();
00040 mProtoJet.add(pj);
00041 mUpToDate = false;
00042 }
00043
00044 void StEtaPhiCell::clear()
00045 {
00046 mEt = 0;
00047 mNtimesUsed = 0;
00048 mCells.clear();
00049 mProtoJet.clear();
00050 mUpToDate = false;
00051 }
00052
00053 void StEtaPhiCell::addCell(StEtaPhiCell* cell)
00054 {
00055 mEt += cell->eT();
00056 mCells.push_back(cell);
00057 cell->setNtimesUsed( cell->nTimesUsed() + 1 );
00058 mUpToDate=false;
00059 }
00060
00061 double StEtaPhiCell::distance(const StEtaPhiCell& rhs) const
00062 {
00063 double dEta = deltaEta(rhs);
00064 double dPhi = deltaPhi(rhs);
00065 return ::sqrt(dEta*dEta + dPhi*dPhi);
00066 }
00067
00068 const StProtoJet& StEtaPhiCell::centroid()
00069 {
00070 if (!mUpToDate) {
00071
00072 mUpToDate = true;
00073 mCentroid.clear();
00074
00075
00076 mProtoJet.update();
00077
00078 mCentroid = mProtoJet;
00079
00080
00081 for (CellList::iterator it1 = mCells.begin(); it1 != mCells.end(); ++it1) {
00082
00083 if (!isSamePosition(**it1)) {
00084
00085
00086 StProtoJet& pj = (*it1)->protoJet();
00087 const StProtoJet::FourVecList& l = pj.list();
00088
00089
00090 for (StProtoJet::FourVecList::const_iterator it2=l.begin(); it2!=l.end(); ++it2) {
00091
00092 const AbstractFourVec* vec = *it2;
00093 mCentroid.add(*vec);
00094 }
00095 }
00096 }
00097 }
00098 return mCentroid;
00099 }
00100
00101