12 #ifndef __RAT_CentroidCalculator__
13 #define __RAT_CentroidCalculator__
27 fMoment1.SetXYZ(0.0, 0.0, 0.0);
28 fMoment2.SetXYZ(0.0, 0.0, 0.0);
32 void Fill(
const TVector3 &point,
double weight = 1.0) {
34 fMoment1 += weight * point;
35 TVector3 square(point.X() * point.X(), point.Y() * point.Y(), point.Z() * point.Z());
36 fMoment2 += weight * square;
41 fMoment0 += other.fMoment0;
42 fMoment1 += other.fMoment1;
43 fMoment2 += other.fMoment2;
47 TVector3
GetMean()
const {
return fMoment1 * (1.0 / fMoment0); };
51 TVector3 squareMoment1(fMoment1.X() * fMoment1.X(), fMoment1.Y() * fMoment1.Y(), fMoment1.Z() * fMoment1.Z());
52 TVector3 temp = fMoment0 * fMoment2 - squareMoment1;
54 return TVector3(sqrt(temp.X()), sqrt(temp.Y()), sqrt(temp.Z())) * (1.0 / fMoment0);
Definition: CentroidCalculator.hh:19
void Fill(const TVector3 &point, double weight=1.0)
Definition: CentroidCalculator.hh:32
void Reset()
Definition: CentroidCalculator.hh:25
CentroidCalculator()
Definition: CentroidCalculator.hh:22
void Add(const CentroidCalculator &other)
Definition: CentroidCalculator.hh:40
TVector3 GetMean() const
Definition: CentroidCalculator.hh:47
TVector3 GetRMS() const
Definition: CentroidCalculator.hh:50
Definition: CCCrossSecMessenger.hh:29