Coefficients for the non-homogeneous field are scaled now to the actual field value.
AliHLTTPCCAGlobalMergerComponent::AliHLTTPCCAGlobalMergerComponent()
- : fGlobalMerger( 0 ), fSolenoidBz( 5 )
+ : fGlobalMerger( 0 ), fSolenoidBz( 0 )
{
// see header file for class documentation
}
// convert AliHLTTPCCAMergedTrack to AliHLTTPCTrack
const AliHLTTPCCAMergedTrack &track = mergerOutput->Track( itr );
+
AliHLTTPCTrack out;
- // first convert to AliExternalTrackParam ( Kappa to Pt )
+ // first convert to AliExternalTrackParam
AliExternalTrackParam tp, tpEnd;
AliHLTTPCCATrackConvertor::GetExtParam( track.InnerParam(), tp, 0 );
hitsNew[nHitsNew++] = hits[jhit];
}
- if ( CAMath::Abs( t.QPt() ) < 1.e-8 ) t.SetQPt( 1.e-8 );
+ if ( CAMath::Abs( t.QPt() ) < 1.e-4 ) t.SetQPt( 1.e-4 );
- bool ok = 1;
-
- const float *c = t.Cov();
- for ( int i = 0; i < 15; i++ ) ok = ok && finite( c[i] );
- for ( int i = 0; i < 5; i++ ) ok = ok && finite( t.Par()[i] );
- ok = ok && ( t.GetX() > 50 );
-
- if ( c[0] <= 0 || c[2] <= 0 || c[5] <= 0 || c[9] <= 0 || c[14] <= 0 ) ok = 0;
- if ( c[0] > 5. || c[2] > 5. || c[5] > 2. || c[9] > 2 || c[14] > 2. ) ok = 0;
+ bool ok = t.CheckNumericalQuality();
if ( CAMath::Abs( t.SinPhi() ) > .99 ) ok = 0;
else if ( l.CosPhi() >= 0 ) t.SetSignCosPhi( 1 );
}
}
- {
- bool ok = 1;
-
- const float *c = p.Cov();
- for ( int i = 0; i < 15; i++ ) ok = ok && finite( c[i] );
- for ( int i = 0; i < 5; i++ ) ok = ok && finite( p.Par()[i] );
- ok = ok && ( p.GetX() > 50 );
-
- if ( c[0] <= 0 || c[2] <= 0 || c[5] <= 0 || c[9] <= 0 || c[14] <= 0 ) ok = 0;
- if ( c[0] > 5. || c[2] > 5. || c[5] > 2. || c[9] > 2 || c[14] > 2 ) ok = 0;
- if ( !ok ) continue;
- }
+ if ( !p.CheckNumericalQuality() ) continue;
AliHLTTPCCAMergedTrack &mergedTrack = outTracks[nOutTracks];
mergedTrack.SetNClusters( nHits );
GPUd() AliHLTTPCCAParam::AliHLTTPCCAParam()
: fISlice( 0 ), fNRows( 63 ), fAlpha( 0.174533 ), fDAlpha( 0.349066 ),
fCosAlpha( 0 ), fSinAlpha( 0 ), fAngleMin( 0 ), fAngleMax( 0 ), fRMin( 83.65 ), fRMax( 133.3 ),
- fZMin( 0.0529937 ), fZMax( 249.778 ), fErrX( 0 ), fErrY( 0 ), fErrZ( 0.228808 ), fPadPitch( 0.4 ), fBz( -5. ),
- fHitPickUpFactor( 1. ),
+ fZMin( 0.0529937 ), fZMax( 249.778 ), fErrX( 0 ), fErrY( 0 ), fErrZ( 0.228808 ), fPadPitch( 0.4 ), fBzkG( 5. ),
+ fConstBz(5.*0.000299792458), fHitPickUpFactor( 1. ),
fMaxTrackMatchDRow( 4 ), fTrackConnectionFactor( 3.5 ), fTrackChiCut( 3.5 ), fTrackChi2Cut( 10 )
{
// constructor
fParamS0Par[1][2][5] = 0.000425504;
fParamS0Par[1][2][6] = 20.9294;
- const double kCLight = 0.000299792458;
-
- fPolinomialFieldBz[0] = kCLight * 4.99643;
- fPolinomialFieldBz[1] = kCLight * -2.27193e-06;
- fPolinomialFieldBz[2] = kCLight * 0.000116475;
- fPolinomialFieldBz[3] = kCLight * -1.49956e-06;
- fPolinomialFieldBz[4] = kCLight * -1.01721e-07;
- fPolinomialFieldBz[5] = kCLight * 4.85701e-07;
Update();
}
fPadPitch = padPitch;
fErrY = 1.; // not in use
fErrZ = zSigma;
- fBz = bz;
+ fBzkG = bz;
fNRows = nRows;
for ( int irow = 0; irow < nRows; irow++ ) {
fRowX[irow] = rowX[irow];
GPUd() void AliHLTTPCCAParam::Update()
{
// update of calculated values
+
+ const double kCLight = 0.000299792458;
+ fConstBz = fBzkG * kCLight;
+
+ fPolinomialFieldBz[0] = fConstBz * ( 0.999286 );
+ fPolinomialFieldBz[1] = fConstBz * ( -4.54386e-7 );
+ fPolinomialFieldBz[2] = fConstBz * ( 2.32950e-5 );
+ fPolinomialFieldBz[3] = fConstBz * ( -2.99912e-7 );
+ fPolinomialFieldBz[4] = fConstBz * ( -2.03442e-8 );
+ fPolinomialFieldBz[5] = fConstBz * ( 9.71402e-8 );
+
fCosAlpha = CAMath::Cos( fAlpha );
fSinAlpha = CAMath::Sin( fAlpha );
fAngleMin = fAlpha - fDAlpha / 2.;
out << fErrY << std::endl;
out << fErrZ << std::endl;
out << fPadPitch << std::endl;
- out << fBz << std::endl;
+ out << fBzkG << std::endl;
out << fHitPickUpFactor << std::endl;
out << fMaxTrackMatchDRow << std::endl;
out << fTrackConnectionFactor << std::endl;
in >> fErrY;
in >> fErrZ;
in >> fPadPitch;
- in >> fBz;
+ in >> fBzkG;
in >> fHitPickUpFactor;
in >> fMaxTrackMatchDRow;
in >> fTrackConnectionFactor;
GPUd() float ErrZ() const { return fErrZ;}
GPUd() float ErrX() const { return fErrX;}
GPUd() float ErrY() const { return fErrY;}
- GPUd() float Bz() const { return fBz;}
+ GPUd() float BzkG() const { return fBzkG;}
+ GPUd() float ConstBz() const { return fConstBz;}
GPUd() float TrackConnectionFactor() const { return fTrackConnectionFactor; }
GPUd() float TrackChiCut() const { return fTrackChiCut; }
GPUd() void SetErrZ( float v ) { fErrZ = v;}
GPUd() void SetErrX( float v ) { fErrX = v;}
GPUd() void SetErrY( float v ) { fErrY = v;}
- GPUd() void SetBz( float v ) { fBz = v;}
+ GPUd() void SetBzkG( float v ) { fBzkG = v;}
GPUd() void SetTrackConnectionFactor( float v ) { fTrackConnectionFactor = v;}
GPUd() void SetTrackChiCut( float v ) { fTrackChiCut = v; }
GPUd() void SetTrackChi2Cut( float v ) { fTrackChi2Cut = v; }
fParamS0Par[i][j][k] = val;
}
- GPUd() float GetBz() const { return fBz;}
+ GPUd() float GetBzkG() const { return fBzkG;}
+ GPUd() float GetConstBz() const { return fConstBz;}
GPUd() float GetBz( float x, float y, float z ) const;
GPUd() float GetBz( const AliHLTTPCCATrackParam &t ) const;
float fZMin, fZMax;// slice Z range
float fErrX, fErrY, fErrZ;// default cluster errors
float fPadPitch; // pad pitch
- float fBz; // magnetic field value (only constant field can be used)
+ float fBzkG; // constant magnetic field value in kG
+ float fConstBz; // constant magnetic field value in kG*clight
float fHitPickUpFactor;// multiplier for the chi2 window for hit pick up procedure
for ( int i = 0; i < 5; i++ ) ok = ok && finite( Par()[i] );
if ( c[0] <= 0 || c[2] <= 0 || c[5] <= 0 || c[9] <= 0 || c[14] <= 0 ) ok = 0;
- if ( c[0] > 5. || c[2] > 5. || c[5] > 2. || c[9] > 2 || c[14] > 2. ) ok = 0;
+ if ( c[0] > 5. || c[2] > 5. || c[5] > 2. || c[9] > 2 || (CAMath::Abs( QPt() )>1.e-4 && c[14] > 2.) ) ok = 0;
if ( CAMath::Abs( SinPhi() ) > .99 ) ok = 0;
if ( CAMath::Abs( QPt() ) > 1. / 0.05 ) ok = 0;
rowX[irow] = AliHLTTPCTransform::Row2X( irow );
}
- const double kCLight = 0.000299792458;
-
AliHLTTPCCAParam param;
param.Initialize( iSec, nRows, rowX, alpha, dalpha,
- inRmin, outRmax, zMin, zMax, padPitch, sigmaZ, fSolenoidBz*kCLight );
+ inRmin, outRmax, zMin, zMax, padPitch, sigmaZ, fSolenoidBz );
param.SetHitPickUpFactor( 2 );
param.Update();
fTracker->Initialize( param );
}
}
#endif
- if ( CAMath::Abs( tParam.Par()[4] ) < 1.e-8 ) tParam.SetPar( 4, 1.e-8 );
+ if ( CAMath::Abs( tParam.Par()[4] ) < 1.e-4 ) tParam.SetPar( 4, 1.e-4 );
tracklet.SetFirstRow( r.fFirstRow );
tracklet.SetLastRow( r.fLastRow );
tracklet.SetParam( tParam );
//#ifdef DRAW
if ( drawFit ) std::cout << "sinPhi0 = " << sinPhi << ", cosPhi0 = " << cosPhi << std::endl;
//#endif
- if ( !tParam.TransportToX( x, sinPhi, cosPhi, tracker.Param().Bz(), -1 ) ) {
+ if ( !tParam.TransportToX( x, sinPhi, cosPhi, tracker.Param().ConstBz(), -1 ) ) {
//#ifdef DRAW
if ( drawFit ) std::cout << " tracklet " << r.fItr << ", row " << iRow << ": can not transport!!" << std::endl;
//#endif
tParam.Print();
//#endif
}
- if ( !tParam.TransportToX( x, tParam.SinPhi(), tParam.GetCosPhi(), tracker.Param().Bz(), .99 ) ) {
+ if ( !tParam.TransportToX( x, tParam.SinPhi(), tParam.GetCosPhi(), tracker.Param().ConstBz(), .99 ) ) {
//#ifdef DRAW
if ( drawSearch ) std::cout << " tracklet " << r.fItr << ", row " << iRow << ": can not transport!!" << std::endl;
//#endif
if ( r.fGo ) {
const AliHLTTPCCARow &row = tracker.Row( r.fEndRow );
float x = row.X();
- if ( !tParam.TransportToX( x, tracker.Param().Bz(), .999 ) ) r.fGo = 0;
+ if ( !tParam.TransportToX( x, tracker.Param().ConstBz(), .999 ) ) r.fGo = 0;
}
}
for ( int iSlice = 0; iSlice < hlt.NSlices(); iSlice++ ) {
- const double kCLight = 0.000299792458;
-
- float bz = AliTracker::GetBz() * kCLight;
+ float bz = AliTracker::GetBz();
float inRmin = fkParam->GetInnerRadiusLow();
//float inRmax = fkParam->GetInnerRadiusUp();