1) Serious bug fix in the backward extrapolation of tracklets (thanks to Matthias...
authorsgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 2 Jun 2009 16:08:40 +0000 (16:08 +0000)
committersgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 2 Jun 2009 16:08:40 +0000 (16:08 +0000)
2) some cosmetics

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

index e7b0d57..06fc90f 100644 (file)
@@ -106,7 +106,7 @@ AliHLTComponent *AliHLTTPCCAGlobalMergerComponent::Spawn()
 
 void AliHLTTPCCAGlobalMergerComponent::SetDefaultConfiguration()
 {
-  // Set default configuration for the CA merger component 
+  // Set default configuration for the CA merger component
   // Some parameters can be later overwritten from the OCDB
 
   fSolenoidBz = 5.;
@@ -118,7 +118,7 @@ int AliHLTTPCCAGlobalMergerComponent::ReadConfigurationString(  const char* argu
 
   int iResult = 0;
   if ( !arguments ) return iResult;
-  
+
   TString allArgs = arguments;
   TString argument;
   int bMissingParam = 0;
@@ -126,17 +126,17 @@ int AliHLTTPCCAGlobalMergerComponent::ReadConfigurationString(  const char* argu
   TObjArray* pTokens = allArgs.Tokenize( " " );
 
   int nArgs =  pTokens ? pTokens->GetEntries() : 0;
-  
+
   for ( int i = 0; i < nArgs; i++ ) {
     argument = ( ( TObjString* )pTokens->At( i ) )->GetString();
     if ( argument.IsNull() ) continue;
-    
+
     if ( argument.CompareTo( "-solenoidBz" ) == 0 ) {
       if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
       fSolenoidBz = ( ( TObjString* )pTokens->At( i ) )->GetString().Atof();
       HLTInfo( "Magnetic Field set to: %f", fSolenoidBz );
       continue;
-    }  
+    }
 
     HLTError( "Unknown option \"%s\"", argument.Data() );
     iResult = -EINVAL;
@@ -147,7 +147,7 @@ int AliHLTTPCCAGlobalMergerComponent::ReadConfigurationString(  const char* argu
     HLTError( "Specifier missed for parameter \"%s\"", argument.Data() );
     iResult = -EINVAL;
   }
-  
+
   return iResult;
 }
 
@@ -156,30 +156,30 @@ int AliHLTTPCCAGlobalMergerComponent::ReadCDBEntry( const char* cdbEntry, const
 {
   // see header file for class documentation
 
-  const char* defaultNotify="";
+  const char* defaultNotify = "";
 
-  if (!cdbEntry) {
-    cdbEntry="HLT/ConfigTPC/TPCCAGlobalMerger";
-    defaultNotify=" (default)";
+  if ( !cdbEntry ) {
+    cdbEntry = "HLT/ConfigTPC/TPCCAGlobalMerger";
+    defaultNotify = " (default)";
     chainId = 0;
   }
 
-  HLTInfo("configure from entry \"%s\"%s, chain id %s", cdbEntry, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>");
-  AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(cdbEntry);//,GetRunNo());
+  HLTInfo( "configure from entry \"%s\"%s, chain id %s", cdbEntry, defaultNotify, ( chainId != NULL && chainId[0] != 0 ) ? chainId : "<none>" );
+  AliCDBEntry *pEntry = AliCDBManager::Instance()->Get( cdbEntry );//,GetRunNo());
 
-  if( !pEntry ) {
-    HLTError("cannot fetch object \"%s\" from CDB", cdbEntry);
-    return -EINVAL;    
+  if ( !pEntry ) {
+    HLTError( "cannot fetch object \"%s\" from CDB", cdbEntry );
+    return -EINVAL;
   }
 
-  TObjString* pString=dynamic_cast<TObjString*>(pEntry->GetObject());
+  TObjString* pString = dynamic_cast<TObjString*>( pEntry->GetObject() );
 
-  if( !pString ) {
-    HLTError("configuration object \"%s\" has wrong type, required TObjString", cdbEntry);
-    return -EINVAL;        
+  if ( !pString ) {
+    HLTError( "configuration object \"%s\" has wrong type, required TObjString", cdbEntry );
+    return -EINVAL;
   }
 
-  HLTInfo("received configuration object string: \"%s\"", pString->GetString().Data());
+  HLTInfo( "received configuration object string: \"%s\"", pString->GetString().Data() );
 
   return  ReadConfigurationString( pString->GetString().Data() );
 }
@@ -188,36 +188,36 @@ int AliHLTTPCCAGlobalMergerComponent::ReadCDBEntry( const char* cdbEntry, const
 
 int AliHLTTPCCAGlobalMergerComponent::Configure( const char* cdbEntry, const char* chainId, const char *commandLine )
 {
-  // Configure the component 
-  // There are few levels of configuration, 
+  // Configure the component
+  // There are few levels of configuration,
   // parameters which are set on one step can be overwritten on the next step
-  
+
   //* read hard-coded values
 
-  SetDefaultConfiguration(); 
+  SetDefaultConfiguration();
 
   //* read the default CDB entry
-  
+
   int iResult1 = ReadCDBEntry( NULL, chainId );
-  
+
   //* read magnetic field
-  
-  int iResult2 = ReadCDBEntry( kAliHLTCDBSolenoidBz, chainId ); 
-  
+
+  int iResult2 = ReadCDBEntry( kAliHLTCDBSolenoidBz, chainId );
+
   //* read the actual CDB entry if required
-  
-  int iResult3 = ( cdbEntry ) ? ReadCDBEntry( cdbEntry, chainId ) :0; 
-  
+
+  int iResult3 = ( cdbEntry ) ? ReadCDBEntry( cdbEntry, chainId ) : 0;
+
   //* read extra parameters from input (if they are)
 
   int iResult4 = 0;
-  
-  if( commandLine && commandLine[0]!='\0' ){
-    HLTInfo("received configuration string from HLT framework: \"%s\"", commandLine );  
-    iResult4 = ReadConfigurationString( commandLine ); 
+
+  if ( commandLine && commandLine[0] != '\0' ) {
+    HLTInfo( "received configuration string from HLT framework: \"%s\"", commandLine );
+    iResult4 = ReadConfigurationString( commandLine );
   }
 
-  
+
   // Initialize the merger
 
   AliHLTTPCCAParam param;
@@ -248,11 +248,11 @@ int AliHLTTPCCAGlobalMergerComponent::Configure( const char* cdbEntry, const cha
                       inRmin, outRmax, zMin, zMax, padPitch, sigmaZ, fSolenoidBz );
     delete[] rowX;
   }
-  
+
 
   fGlobalMerger->SetSliceParam( param );
 
-  return iResult1 ? iResult1 :(iResult2 ? iResult2 :( iResult3 ? iResult3 :iResult4 ) );
+  return iResult1 ? iResult1 : ( iResult2 ? iResult2 : ( iResult3 ? iResult3 : iResult4 ) );
 }
 
 
@@ -261,7 +261,7 @@ int AliHLTTPCCAGlobalMergerComponent::Configure( const char* cdbEntry, const cha
 int AliHLTTPCCAGlobalMergerComponent::DoInit( int argc, const char** argv )
 {
   // see header file for class documentation
+
   if ( fGlobalMerger ) {
     return EINPROGRESS;
   }
@@ -273,13 +273,13 @@ int AliHLTTPCCAGlobalMergerComponent::DoInit( int argc, const char** argv )
     if ( !arguments.IsNull() ) arguments += " ";
     arguments += argv[i];
   }
-  
-  return Configure( NULL, NULL, arguments.Data()  ); 
+
+  return Configure( NULL, NULL, arguments.Data()  );
 }
 
 int AliHLTTPCCAGlobalMergerComponent::Reconfigure( const char* cdbEntry, const char* chainId )
-{  
-  // Reconfigure the component from OCDB 
+{
+  // Reconfigure the component from OCDB
 
   return Configure( cdbEntry, chainId, NULL );
 }
@@ -363,7 +363,7 @@ int AliHLTTPCCAGlobalMergerComponent::DoEvent( const AliHLTComponentEventData &e
 
       AliHLTTPCTrack out;
 
-      // first convert to AliExternalTrackParam 
+      // first convert to AliExternalTrackParam
 
       AliExternalTrackParam tp, tpEnd;
       AliHLTTPCCATrackConvertor::GetExtParam( track.InnerParam(), tp, 0 );
@@ -397,7 +397,7 @@ int AliHLTTPCCAGlobalMergerComponent::DoEvent( const AliHLTComponentEventData &e
 
       out.SetY0err( tp.GetSigmaY2() );
       out.SetZ0err( tp.GetSigmaZ2() );
-      out.SetPterr( tp.GetSigma1Pt2() );      
+      out.SetPterr( tp.GetSigma1Pt2() );
       out.SetPsierr( tp.GetSigmaSnp2() );
       out.SetTglerr( tp.GetSigmaTgl2() );
 
index c0732d9..93571e7 100644 (file)
@@ -108,7 +108,7 @@ class AliHLTTPCCAGlobalMergerComponent : public AliHLTProcessor
     int ReadConfigurationString(  const char* arguments );
     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
-      
+
     /** the global merger object */
     AliHLTTPCCAMerger *fGlobalMerger; //!
 
index 3b582d0..6d3b2de 100644 (file)
@@ -813,7 +813,7 @@ void AliHLTTPCCAMerger::Merging()
         }
       }
 
-      if ( !p.CheckNumericalQuality() ) continue;      
+      if ( !p.CheckNumericalQuality() ) continue;
 
       AliHLTTPCCAMergedTrack &mergedTrack = outTracks[nOutTracks];
       mergedTrack.SetNClusters( nHits );
index 944fffd..6d14c5f 100644 (file)
@@ -28,7 +28,7 @@ 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 ), fBzkG( 5. ),
-      fConstBz(5.*0.000299792458), fHitPickUpFactor( 1. ),
+    fConstBz( 5.*0.000299792458 ), fHitPickUpFactor( 1. ),
     fMaxTrackMatchDRow( 4 ), fTrackConnectionFactor( 3.5 ), fTrackChiCut( 3.5 ), fTrackChi2Cut( 10 )
 {
   // constructor
index 220beb0..aad494a 100644 (file)
@@ -31,8 +31,8 @@ GPUhd() int AliHLTTPCCASliceOutput::EstimateSize( int nOfTracks, int nOfTrackClu
 template<typename T> inline void AssignNoAlignment( T *&dst, char *&mem, int count )
 {
   // assign memory to the pointer dst
-  dst = (T*) mem;
-  mem = (char *)(dst + count);
+  dst = ( T* ) mem;
+  mem = ( char * )( dst + count );
 }
 
 GPUhd() void AliHLTTPCCASliceOutput::SetPointers()
index ff604e9..2ca1103 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 || (CAMath::Abs( QPt() )>1.e-4 && 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 3d3fc7f..d103c12 100644 (file)
@@ -81,7 +81,7 @@ class AliHLTTPCCATrackParam
     GPUd() void SetSinPhi( float v ) {  fP[2] = v; }
     GPUd() void SetDzDs( float v )  {  fP[3] = v; }
     GPUd() void SetQPt( float v )   {  fP[4] = v; }
-    GPUd() void SetSignCosPhi( float v ) {  fSignCosPhi = v>=0 ?1 :-1; }
+    GPUd() void SetSignCosPhi( float v ) {  fSignCosPhi = v >= 0 ? 1 : -1; }
     GPUd() void SetChi2( float v )  {  fChi2 = v; }
     GPUd() void SetNDF( int v )   { fNDF = v; }
 
index d996cec..78d85eb 100644 (file)
@@ -145,7 +145,7 @@ AliHLTComponent* AliHLTTPCCATrackerComponent::Spawn()
 
 void AliHLTTPCCATrackerComponent::SetDefaultConfiguration()
 {
-  // Set default configuration for the CA tracker component 
+  // Set default configuration for the CA tracker component
   // Some parameters can be later overwritten from the OCDB
 
   fSolenoidBz = 5.;
@@ -163,7 +163,7 @@ int AliHLTTPCCATrackerComponent::ReadConfigurationString(  const char* arguments
 
   int iResult = 0;
   if ( !arguments ) return iResult;
-  
+
   TString allArgs = arguments;
   TString argument;
   int bMissingParam = 0;
@@ -171,17 +171,17 @@ int AliHLTTPCCATrackerComponent::ReadConfigurationString(  const char* arguments
   TObjArray* pTokens = allArgs.Tokenize( " " );
 
   int nArgs =  pTokens ? pTokens->GetEntries() : 0;
-  
+
   for ( int i = 0; i < nArgs; i++ ) {
     argument = ( ( TObjString* )pTokens->At( i ) )->GetString();
     if ( argument.IsNull() ) continue;
-    
+
     if ( argument.CompareTo( "-solenoidBz" ) == 0 ) {
       if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
       fSolenoidBz = ( ( TObjString* )pTokens->At( i ) )->GetString().Atof();
       HLTInfo( "Magnetic Field set to: %f", fSolenoidBz );
       continue;
-    }  
+    }
 
     if ( argument.CompareTo( "-minNClustersOnTrack" ) == 0 ) {
       if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
@@ -189,20 +189,20 @@ int AliHLTTPCCATrackerComponent::ReadConfigurationString(  const char* arguments
       HLTInfo( "minNClustersOnTrack set to: %d", fMinNTrackClusters );
       continue;
     }
-   
+
     if ( argument.CompareTo( "-clusterZCut" ) == 0 ) {
       if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
       fClusterZCut = TMath::Abs( ( ( TObjString* )pTokens->At( i ) )->GetString().Atof() );
       HLTInfo( "ClusterZCut set to: %f", fClusterZCut );
       continue;
     }
-    
+
     if ( argument.CompareTo( "-outputTRAKSEGS" ) == 0 ) {
       fOutputTRAKSEGS = 1;
       HLTInfo( "The special output type \"TRAKSEGS\" is set" );
       continue;
-    } 
-    
+    }
+
     HLTError( "Unknown option \"%s\"", argument.Data() );
     iResult = -EINVAL;
   }
@@ -212,7 +212,7 @@ int AliHLTTPCCATrackerComponent::ReadConfigurationString(  const char* arguments
     HLTError( "Specifier missed for parameter \"%s\"", argument.Data() );
     iResult = -EINVAL;
   }
-  
+
   return iResult;
 }
 
@@ -221,30 +221,30 @@ int AliHLTTPCCATrackerComponent::ReadCDBEntry( const char* cdbEntry, const char*
 {
   // see header file for class documentation
 
-  const char* defaultNotify="";
+  const char* defaultNotify = "";
 
-  if (!cdbEntry) {
-    cdbEntry="HLT/ConfigTPC/TPCCATracker";
-    defaultNotify=" (default)";
+  if ( !cdbEntry ) {
+    cdbEntry = "HLT/ConfigTPC/TPCCATracker";
+    defaultNotify = " (default)";
     chainId = 0;
   }
 
-  HLTInfo("configure from entry \"%s\"%s, chain id %s", cdbEntry, defaultNotify,(chainId!=NULL && chainId[0]!=0)?chainId:"<none>");
-  AliCDBEntry *pEntry = AliCDBManager::Instance()->Get(cdbEntry);//,GetRunNo());
+  HLTInfo( "configure from entry \"%s\"%s, chain id %s", cdbEntry, defaultNotify, ( chainId != NULL && chainId[0] != 0 ) ? chainId : "<none>" );
+  AliCDBEntry *pEntry = AliCDBManager::Instance()->Get( cdbEntry );//,GetRunNo());
 
-  if( !pEntry ) {
-    HLTError("cannot fetch object \"%s\" from CDB", cdbEntry);
-    return -EINVAL;    
+  if ( !pEntry ) {
+    HLTError( "cannot fetch object \"%s\" from CDB", cdbEntry );
+    return -EINVAL;
   }
 
-  TObjString* pString=dynamic_cast<TObjString*>(pEntry->GetObject());
+  TObjString* pString = dynamic_cast<TObjString*>( pEntry->GetObject() );
 
-  if( !pString ) {
-    HLTError("configuration object \"%s\" has wrong type, required TObjString", cdbEntry);
-    return -EINVAL;        
+  if ( !pString ) {
+    HLTError( "configuration object \"%s\" has wrong type, required TObjString", cdbEntry );
+    return -EINVAL;
   }
 
-  HLTInfo("received configuration object string: \"%s\"", pString->GetString().Data());
+  HLTInfo( "received configuration object string: \"%s\"", pString->GetString().Data() );
 
   return  ReadConfigurationString( pString->GetString().Data() );
 }
@@ -252,38 +252,38 @@ int AliHLTTPCCATrackerComponent::ReadCDBEntry( const char* cdbEntry, const char*
 
 int AliHLTTPCCATrackerComponent::Configure( const char* cdbEntry, const char* chainId, const char *commandLine )
 {
-  // Configure the component 
-  // There are few levels of configuration, 
+  // Configure the component
+  // There are few levels of configuration,
   // parameters which are set on one step can be overwritten on the next step
-  
+
   //* read hard-coded values
 
-  SetDefaultConfiguration(); 
+  SetDefaultConfiguration();
 
   //* read the default CDB entry
-  
+
   int iResult1 = ReadCDBEntry( NULL, chainId );
-  
+
   //* read magnetic field
-  
-  int iResult2 = ReadCDBEntry( kAliHLTCDBSolenoidBz, chainId ); 
-  
+
+  int iResult2 = ReadCDBEntry( kAliHLTCDBSolenoidBz, chainId );
+
   //* read the actual CDB entry if required
-  
-  int iResult3 = ( cdbEntry ) ? ReadCDBEntry( cdbEntry, chainId ) :0; 
-  
+
+  int iResult3 = ( cdbEntry ) ? ReadCDBEntry( cdbEntry, chainId ) : 0;
+
   //* read extra parameters from input (if they are)
 
   int iResult4 = 0;
-  
-  if( commandLine && commandLine[0]!='\0' ){
-    HLTInfo("received configuration string from HLT framework: \"%s\"", commandLine );  
-    iResult4 = ReadConfigurationString( commandLine ); 
+
+  if ( commandLine && commandLine[0] != '\0' ) {
+    HLTInfo( "received configuration string from HLT framework: \"%s\"", commandLine );
+    iResult4 = ReadConfigurationString( commandLine );
   }
 
   // Initialise the tracker here
-  
-  return iResult1 ? iResult1 :(iResult2 ? iResult2 :( iResult3 ? iResult3 :iResult4 ) );
+
+  return iResult1 ? iResult1 : ( iResult2 ? iResult2 : ( iResult3 ? iResult3 : iResult4 ) );
 }
 
 
@@ -293,7 +293,7 @@ int AliHLTTPCCATrackerComponent::DoInit( int argc, const char** argv )
   // Configure the CA tracker component
 
   if ( fTracker ) return EINPROGRESS;
-  
+
   fTracker = new AliHLTTPCCATracker();
 
   TString arguments = "";
@@ -301,8 +301,8 @@ int AliHLTTPCCATrackerComponent::DoInit( int argc, const char** argv )
     if ( !arguments.IsNull() ) arguments += " ";
     arguments += argv[i];
   }
-  
-  return Configure( NULL, NULL,arguments.Data() );
+
+  return Configure( NULL, NULL, arguments.Data() );
 }
 
 
@@ -528,9 +528,9 @@ int AliHLTTPCCATrackerComponent::DoEvent
     for ( unsigned int i = 0; i < inPtrSP->fSpacePointCnt; i++ ) {
       AliHLTTPCSpacePointData *c = &( inPtrSP->fSpacePoints[i] );
       if ( CAMath::Abs( c->fZ ) > fClusterZCut ) continue;
-      if( c->fPadRow>159 ){
-       HLTError("Wrong TPC cluster with row number %d received",c->fPadRow);
-       continue;
+      if ( c->fPadRow > 159 ) {
+        HLTError( "Wrong TPC cluster with row number %d received", c->fPadRow );
+        continue;
       }
       clusterData.ReadCluster( c->fID, c->fPadRow, c->fX, c->fY, c->fZ, c->fCharge );
     }
@@ -697,7 +697,7 @@ int AliHLTTPCCATrackerComponent::DoEvent
   int hz = ( int ) ( fFullTime > 1.e-10 ? fNEvents / fFullTime : 100000 );
   int hz1 = ( int ) ( fRecoTime > 1.e-10 ? fNEvents / fRecoTime : 100000 );
   HLTInfo( "CATracker slice %d: output %d tracks;  input %d clusters, patches %d..%d, rows %d..%d; time: full %d / reco %d Hz",
-          slice, ntracks, nClustersTotal, minPatch, maxPatch, row[0], row[1], hz, hz1 );
+           slice, ntracks, nClustersTotal, minPatch, maxPatch, row[0], row[1], hz, hz1 );
 
   return ret;
 }
index ae63009..52fdbea 100644 (file)
@@ -84,7 +84,7 @@ class AliHLTTPCCATrackerComponent : public AliHLTProcessor
     double fFullTime; //* total time for DoEvent() [s]
     double fRecoTime; //* total reconstruction time [s]
     Long_t    fNEvents;  //* number of reconstructed events
-    bool fOutputTRAKSEGS; //* use old type of output 
+    bool fOutputTRAKSEGS; //* use old type of output
 
     static bool CompareClusters( AliHLTTPCSpacePointData *a, AliHLTTPCSpacePointData *b );
 
index d07296f..99dd71d 100644 (file)
@@ -52,11 +52,10 @@ GPUd() void AliHLTTPCCATrackletConstructor::Step0
     s.fItr1 = s.fItr0 + nTrPerBlock;
     if ( s.fItr1 > nTracks ) s.fItr1 = nTracks;
     s.fMinStartRow = 158;
-    s.fMaxStartRow = 0;
+    s.fMaxEndRow = 0;
   }
   if ( iThread < 32 ) {
     s.fMinStartRow32[iThread] = 158;
-    s.fMaxStartRow32[iThread] = 0;
   }
 }
 
@@ -89,7 +88,6 @@ GPUd() void AliHLTTPCCATrackletConstructor::Step1
   r.fCurrIH =  id.HitIndex();
 
   CAMath::AtomicMin( &s.fMinStartRow32[kThread], r.fStartRow );
-  CAMath::AtomicMax( &s.fMaxStartRow32[kThread], r.fStartRow );
   tParam.SetSinPhi( 0 );
   tParam.SetDzDs( 0 );
   tParam.SetQPt( 0 );
@@ -123,14 +121,11 @@ GPUd() void AliHLTTPCCATrackletConstructor::Step2
   if ( iThread == 0 ) {
     //CAMath::AtomicMinGPU(&s.fMinRow, s.fMinRow32[iThread]);
     int minStartRow = 158;
-    int maxStartRow = 0;
     int n = ( nThreads > 32 ) ? 32 : nThreads;
     for ( int i = 0; i < n; i++ ) {
       if ( s.fMinStartRow32[i] < minStartRow ) minStartRow = s.fMinStartRow32[i];
-      if ( s.fMaxStartRow32[i] > maxStartRow ) maxStartRow = s.fMaxStartRow32[i];
     }
     s.fMinStartRow = minStartRow;
-    s.fMaxStartRow = maxStartRow;
   }
 }
 
@@ -401,6 +396,9 @@ GPUd() void AliHLTTPCCATrackletConstructor::UpdateTracklet
         AliHLTTPCCADisplay::Instance().Ask();
 #endif
       }
+      if ( r.fGo ) {
+        CAMath::AtomicMax( &s.fMaxEndRow, r.fEndRow - 1 );
+      }
     }
   } else { // forward/backward searching part
     do {
@@ -650,7 +648,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::Thread
     r.fNMissed = 0;
   } else if ( iSync == 3 + 159 + 1 ) {
     r.fCurrentData = 1;
-    int nextRow = s.fMaxStartRow - 1;
+    int nextRow = s.fMaxEndRow;
     if ( nextRow < 0 ) nextRow = 0;
     ReadData( iThread, s, r, tracker, nextRow );
     r.fCurrentData = 0;
@@ -672,7 +670,7 @@ GPUd() void AliHLTTPCCATrackletConstructor::Thread
       if ( nextRow > 158 ) nextRow = 158;
     } else {
       iRow = 158 - ( iSync - 4 - 159 - 1 );
-      if ( iRow >= s.fMaxStartRow ) return;
+      if ( iRow > s.fMaxEndRow ) return;
       nextRow = iRow - 1;
       if ( nextRow < 0 ) nextRow = 0;
     }
index 43ba8d6..4d74cf0 100644 (file)
@@ -26,10 +26,10 @@ class AliHLTTPCCATrackletConstructor
       public:
 #if !defined(HLTCA_GPUCODE)
         AliHLTTPCCASharedMemory()
-            : fItr0( 0 ), fItr1( 0 ), fNRows( 0 ), fMinStartRow( 0 ), fMaxStartRow( 0 ) {}
+            : fItr0( 0 ), fItr1( 0 ), fNRows( 0 ), fMinStartRow( 0 ), fMaxEndRow( 0 ) {}
 
         AliHLTTPCCASharedMemory( const AliHLTTPCCASharedMemory& /*dummy*/ )
-            : fItr0( 0 ), fItr1( 0 ), fNRows( 0 ), fMinStartRow( 0 ), fMaxStartRow( 0 ) {}
+            : fItr0( 0 ), fItr1( 0 ), fNRows( 0 ), fMinStartRow( 0 ), fMaxEndRow( 0 ) {}
         AliHLTTPCCASharedMemory& operator=( const AliHLTTPCCASharedMemory& /*dummy*/ ) { return *this; }
 #endif
       protected:
@@ -39,8 +39,7 @@ class AliHLTTPCCATrackletConstructor
         int fNRows; // n rows
         int fMinStartRow; // min start row
         int fMinStartRow32[32]; // min start row for each thread in warp
-        int fMaxStartRow; // max start row
-        int fMaxStartRow32[32];// max start row for each thread in warp
+        int fMaxEndRow; // max start row
     };
 
     class  AliHLTTPCCAThreadMemory