Improvement of the magnetic field usage.
authorsgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 May 2009 19:49:52 +0000 (19:49 +0000)
committersgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 May 2009 19:49:52 +0000 (19:49 +0000)
Coefficients for the non-homogeneous field are scaled now to the actual field value.

HLT/TPCLib/tracking-ca/AliHLTTPCCAGlobalMergerComponent.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCAMerger.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCAParam.h
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackParam.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackletConstructor.cxx
HLT/TPCLib/tracking-ca/AliTPCtrackerCA.cxx

index 7bea5c4..e7b0d57 100644 (file)
@@ -58,7 +58,7 @@ ClassImp( AliHLTTPCCAGlobalMergerComponent )
 
 
 AliHLTTPCCAGlobalMergerComponent::AliHLTTPCCAGlobalMergerComponent()
-    : fGlobalMerger( 0 ), fSolenoidBz( 5 )
+    : fGlobalMerger( 0 ), fSolenoidBz( 0 )
 {
   // see header file for class documentation
 }
@@ -360,9 +360,10 @@ int AliHLTTPCCAGlobalMergerComponent::DoEvent( const AliHLTComponentEventData &e
       // 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 );
index 5bc57e5..3b582d0 100644 (file)
@@ -369,17 +369,9 @@ bool AliHLTTPCCAMerger::FitTrack( AliHLTTPCCATrackParam &T, float &Alpha,
     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 );
@@ -821,18 +813,7 @@ void AliHLTTPCCAMerger::Merging()
         }
       }
 
-      {
-        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 );
index b7f8e19..944fffd 100644 (file)
@@ -27,8 +27,8 @@
 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
@@ -75,14 +75,6 @@ GPUd() AliHLTTPCCAParam::AliHLTTPCCAParam()
   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();
 }
@@ -108,7 +100,7 @@ GPUd() void AliHLTTPCCAParam::Initialize( int iSlice,
   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];
@@ -121,6 +113,17 @@ GPUd() void AliHLTTPCCAParam::Initialize( int iSlice,
 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.;
@@ -193,7 +196,7 @@ GPUh() void AliHLTTPCCAParam::WriteSettings( std::ostream &out ) const
   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;
@@ -230,7 +233,7 @@ GPUh() void AliHLTTPCCAParam::ReadSettings( std::istream &in )
   in >> fErrY;
   in >> fErrZ;
   in >> fPadPitch;
-  in >> fBz;
+  in >> fBzkG;
   in >> fHitPickUpFactor;
   in >> fMaxTrackMatchDRow;
   in >> fTrackConnectionFactor;
index f656461..832f0a8 100644 (file)
@@ -67,7 +67,8 @@ class AliHLTTPCCAParam
     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; }
@@ -93,7 +94,7 @@ class AliHLTTPCCAParam
     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; }
@@ -111,7 +112,8 @@ class AliHLTTPCCAParam
       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;
 
@@ -127,7 +129,8 @@ class AliHLTTPCCAParam
     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
 
index 53340d3..ff604e9 100644 (file)
@@ -676,7 +676,7 @@ GPUd() bool AliHLTTPCCATrackParam::CheckNumericalQuality() const
   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;
index 417744d..9a1b64d 100644 (file)
@@ -458,12 +458,10 @@ int AliHLTTPCCATrackerComponent::DoEvent
       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 );
index f4e952b..d07296f 100644 (file)
@@ -224,7 +224,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::StoreTracklet
       }
     }
 #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 );
@@ -329,7 +329,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::UpdateTracklet
         //#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
@@ -427,7 +427,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::UpdateTracklet
         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
@@ -659,7 +659,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::Thread
     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;
     }
   }
 
index 582e91e..cc595d0 100644 (file)
@@ -96,9 +96,7 @@ AliTPCtrackerCA::AliTPCtrackerCA( const AliTPCParam *par ):
 
   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();