28 for (
int i = 0; i != 3; i++) {
38 Seed::Seed(
double* Pt,
double* Dir,
double* PtErr,
double* DirErr)
40 for (
int i = 0; i != 3; i++) {
67 for (
size_t n = 0;
n != 3; ++
n) {
82 for (
int i = 0; i != 3; i++) {
91 for (
int i = 0; i != 3; i++) {
100 double Empty[3] = {0, 0, 0};
107 double Empty[3] = {0, 0, 0};
114 for (
int i = 0; i != 3; i++) {
124 for (
int i = 0; i != 3; i++) {
142 double OtherPtErr[3];
144 AnotherSeed.
GetPoint(OtherPt, OtherPtErr);
146 TVector3 OtherPtV(OtherPt[0], OtherPt[1], OtherPt[2]);
150 return (OtherPtV - ThisPtV).Angle(ThisDirV.Unit());
156 double xyzother[3], err[3];
157 AnotherSeed.
GetPoint(xyzother, err);
160 xyz[1] = xyzother[1] - fSeedPoint[1];
161 xyz[2] = xyzother[2] - fSeedPoint[2];
168 double OtherDirErr[3];
171 double OtherMag = AnotherSeed.
GetLength();
185 double eta = 0.00001;
189 (ThisMag * OtherMag));
196 double OtherPtErr[3];
198 AnotherSeed.
GetPoint(OtherPt, OtherPtErr);
200 TVector3 OtherPtV(OtherPt[0], OtherPt[1], OtherPt[2]);
204 return ((OtherPtV - ThisPtV) - ThisDirV.Unit() * (ThisDirV.Unit().Dot(OtherPtV - ThisPtV)))
212 double OtherPtErr[3];
214 AnotherSeed.
GetPoint(OtherPt, OtherPtErr);
225 SPxyz[0] = SomePoint.
XYZ()[0];
226 SPxyz[1] = SomePoint.
XYZ()[1];
227 SPxyz[2] = SomePoint.
XYZ()[2];
231 double ThisSeedLength =
242 if (SPProjOnSeed > (ThisSeedLength)) {
249 else if (SPProjOnSeed < (0 - ThisSeedLength)) {
269 return pow(pow(crossprod[0], 2) + pow(crossprod[1], 2) + pow(crossprod[2], 2), 0.5) /
278 double OtherPos[3], OtherErr[3];
279 AnotherSeed.
GetPoint(OtherPos, OtherErr);
283 return ((DotProd > 0) - (DotProd < 0));
297 out1 = (x2 * y3 - x3 *
y2);
298 out2 = (x3 * y1 - x1 *
y3);
299 out3 = (x1 * y2 - x2 *
y1);
friend std::ostream & operator<<(std::ostream &stream, Seed const &a)
double GetDistanceFrom(SpacePoint const &SomePoint) const
Reconstruction base classes.
Float_t y1[n_points_granero]
double GetProjAngleDiscrepancy(Seed const &AnotherSeed) const
Float_t x1[n_points_granero]
double GetAngle(Seed const &AnotherSeed) const
void GetPoint(double *Pt, double *Err) const
Float_t x3[n_points_geant4]
Float_t y2[n_points_geant4]
double GetProjDiscrepancy(Seed const &AnotherSeed) const
friend bool operator<(const Seed &a, const Seed &b)
void CrossProd(double x1, double x2, double x3, double y1, double y2, double y3, double &out1, double &out2, double &out3)
void SetPoint(double *Pt, double *Err)
double fSeedDirectionError[3]
const Double32_t * XYZ() const
double GetDistance(Seed const &AnotherSeed) const
int GetPointingSign(Seed const &AnotherSeed) const
double DotProd(const Vector3_t &v1, const Vector3_t &v2)
void GetVectorBetween(Seed const &AnotherSeed, double *xyz) const
Float_t x2[n_points_geant4]
Float_t y3[n_points_geant4]
void SetValidity(bool Validity)
void GetDirection(double *Dir, double *Err) const
double fSeedPointError[3]
void SetDirection(double *Dir, double *Err)