32 #ifndef PNDRIEMANNTRACK_HH 33 #define PNDRIEMANNTRACK_HH 65 const TVectorD &
n()
const {
return fn; }
66 double c()
const {
return fc; }
67 const TVectorD &
av()
const {
return fav; }
69 TVectorD
orig()
const;
90 std::vector<PndRiemannHit>
getHits()
const {
return fHits; };
105 void sortHits() { std::sort(fHits.begin(), fHits.end()); }
107 double weight()
const {
return fweight; };
111 double m()
const {
return fm; }
112 double mError()
const {
return fmError; }
113 double t()
const {
return ft; }
114 double tError()
const {
return ftError; }
119 void init(
double x0,
double y0,
double R,
double dip,
double z0);
122 void refit(
bool withErrorCalc =
true);
127 void szFit(
bool withErrorCalc =
true);
143 virtual void Print(std::ostream &out = std::cout)
146 out << std::setprecision(6) <<
"Riemann Track: Radius " <<
r() <<
" +/- " <<
dR() <<
" Origin: " <<
orig()[0] <<
" +/- " <<
dX() <<
" / " <<
orig()[1] <<
" +/- " <<
dY()
148 out <<
"RiemannTrack: Normal: " <<
n()[0] <<
"/" <<
n()[1] <<
"/" <<
n()[2] <<
" c: " <<
c() << std::endl;
149 out <<
"Dip: " <<
dip() <<
" +/- " <<
dDip() <<
" StartAlpha: " << fStartAlpha <<
" StopAlpha: " << fStopAlpha << std::endl;
184 std::vector<PndRiemannHit> fHits;
185 Double_t fStartAlpha;
188 std::map<TString, Int_t> fBranchNameMap;
196 TVectorD calcErrorXY1XY2(TVector3 &line, TVector3 &dLine, TVector3 &offset, TVector3 &dOffset);
199 Int_t GetBranchId(TString branchName);
PndRiemannHit * getLastHit()
unsigned int getNumHits()
double calcSZChi2(PndRiemannHit *hit)
double distError(PndRiemannHit *hit)
PndRiemannHit correctSttSkewedHit(PndSttHit *mySttHit, PndSttTube *myTube)
void init(double x0, double y0, double R, double dip, double z0)
double calcZPosByS(double s)
std::vector< PndRiemannHit > getHits() const
PndRiemannHit correctSttHit(PndSttHit *mySttHit)
static T Sqrt(const T &x)
double distCircle(PndRiemannHit *hit)
double szDist(PndRiemannHit *hit)
friend std::ostream & operator<<(std::ostream &out, PndRiemannTrack &track)
const TVectorD & av() const
double dist(PndRiemannHit *hit)
TMatrixD covPlane() const
TVector3 calcErrorPosByS(Double_t s, Double_t dS)
FairTrackParP getTrackParPForHit(Int_t i, Double_t B)
Int_t getCharge(Double_t B)
const TVectorD & n() const
void addPndTrackCand(PndTrackCand *trackCand)
void SetVertexCut(double cut)
void refit(bool withErrorCalc=true)
void calcStartStopAlpha()
double ChiSquareDistCircle()
int calcIntersection(PndRiemannTrack &track, TVector3 &p1, TVector3 &p2)
virtual void Print(std::ostream &out=std::cout)
void szFit(bool withErrorCalc=true)
void addHit(PndRiemannHit &hit)
TVector3 getPforHit(int i, double B)
PndTrack getPndTrack(Double_t B)
double calcAlpha(PndRiemannHit *myHit)
TVector3 calcPosByS(double s)
PndRiemannHit * getHit(unsigned int i)
TMatrixT< double > TMatrixD
double szError(PndRiemannHit *hit)