53 Double_t refx, Double_t refy,
54 Double_t refz, Double_t TDip,
55 Double_t phii, Double_t phio,
56 Float_t Chi2, Int_t NDoF,
58 Double_t RangeMin, Double_t RangeMax) :
62 if ( gDebug ) cout <<
"ZHelix normal ctor called" << endl;
82 SetRange(RangeType, RangeMin, RangeMax);
130 TString opt = option;
144 Double_t degrad = TMath::Pi() / 180.0;
145 Double_t segment = 1. * degrad;
159 Int_t nSeg = Int_t(TMath::Abs(df) / segment) + 1;
164 segment = 0.01 * degrad;
165 nSeg = Int_t(TMath::Abs(df) / segment) + 1;
170 segment = TMath::Abs(df) / nSeg;
172 Double_t phi,
x,
y, z, r;
173 TPolyLine3D::SetPolyLine(nSeg+1);
175 if ( opt.Contains(
"3D") ) {
177 for ( Int_t i = 0; i <= nSeg; i++ ) {
178 phi =
fRange[0] + segment * i * sign;
180 TPolyLine3D::SetPoint(i,
x,
y, z);
182 }
else if ( opt.Contains(
"XY") ) {
184 for ( Int_t i = 0; i <= nSeg; i++ ) {
185 phi =
fRange[0] + segment * i * sign;
187 TPolyLine3D::SetPoint(i,
x,
y, 0);
189 }
else if ( opt.Contains(
"ZR") ) {
197 for ( Int_t i = 0; i <= nSeg; i++ ) {
200 phi =
fRange[0] + segment * i * sign;
204 TPolyLine3D::SetPoint(i, z, r, 0);
210 if ( isgn != 0 )
fRSign = TMath::Sign(1, isgn);
215 Float_t z, r, rref, rdisp;
222 for ( Int_t i = 0; i <= nSeg; i++ ) {
230 for ( Int_t i = 0; i <= nSeg; i++ ) {
234 if (
fRSign < 0) rdisp += 2*rref;