20 #ifndef PNDRIEMANNTRACK_HH 21 #define PNDRIEMANNTRACK_HH 53 const TVectorD &
n()
const {
return fn; }
54 double c()
const {
return fc; }
55 const TVectorD &
av()
const {
return fav; }
57 TVectorD
orig()
const;
78 std::vector<PndRiemannHit>
getHits()
const {
return fHits; };
93 void sortHits() { std::sort(fHits.begin(), fHits.end()); }
95 double weight()
const {
return fweight; };
99 double m()
const {
return fm; }
100 double mError()
const {
return fmError; }
101 double t()
const {
return ft; }
102 double tError()
const {
return ftError; }
107 void init(
double x0,
double y0,
double R,
double dip,
double z0);
110 void refit(
bool withErrorCalc =
true);
115 void szFit(
bool withErrorCalc =
true);
131 virtual void Print(std::ostream &out = std::cout)
134 out << std::setprecision(6) <<
"Riemann Track: Radius " <<
r() <<
" +/- " <<
dR() <<
" Origin: " <<
orig()[0] <<
" +/- " <<
dX() <<
" / " <<
orig()[1] <<
" +/- " <<
dY()
136 out <<
"RiemannTrack: Normal: " <<
n()[0] <<
"/" <<
n()[1] <<
"/" <<
n()[2] <<
" c: " <<
c() << std::endl;
137 out <<
"Dip: " <<
dip() <<
" +/- " <<
dDip() <<
" StartAlpha: " << fStartAlpha <<
" StopAlpha: " << fStopAlpha << std::endl;
172 std::vector<PndRiemannHit> fHits;
173 Double_t fStartAlpha;
176 std::map<TString, Int_t> fBranchNameMap;
184 TVectorD calcErrorXY1XY2(TVector3 &line, TVector3 &dLine, TVector3 &offset, TVector3 &dOffset);
187 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)