]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCSliceTrackerComponent.cxx
robustness
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCSliceTrackerComponent.cxx
index 49b82ca57078a59562e178d358f1bbd301be2523..8f2981adbc014e1f2f4b53474a8ea028f14565f0 100644 (file)
@@ -1,11 +1,12 @@
 // $Id$
 
 /**************************************************************************
 // $Id$
 
 /**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
  *                                                                        *
  *                                                                        *
- * Authors: Matthias Richter <Matthias.Richter@ift.uib.no>                *
- *          Timm Steinbeck <timm@kip.uni-heidelberg.de>                   *
- *          for The ALICE Off-line Project.                               *
+ * Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+ *                  Timm Steinbeck <timm@kip.uni-heidelberg.de>           *
+ *                  for The ALICE HLT Project.                            *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
     @brief  The TPC conformal mapping tracker component.
 */
 
     @brief  The TPC conformal mapping tracker component.
 */
 
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
 #if __GNUC__>= 3
 using namespace std;
 #endif
 #if __GNUC__>= 3
 using namespace std;
 #endif
@@ -57,10 +64,8 @@ AliHLTTPCSliceTrackerComponent::AliHLTTPCSliceTrackerComponent()
   fDoPP(false),
   fMultiplicity(4000),
   fBField(0.4),
   fDoPP(false),
   fMultiplicity(4000),
   fBField(0.4),
-// BEGINN ############################################## MODIFIY JMT
   fnonvertextracking(kFALSE),
   fmainvertextracking(kTRUE),
   fnonvertextracking(kFALSE),
   fmainvertextracking(kTRUE),
-// END ################################################# MODIFIY JMT
   fpInterMerger(NULL)
 {
   // see header file for class documentation
   fpInterMerger(NULL)
 {
   // see header file for class documentation
@@ -72,31 +77,6 @@ AliHLTTPCSliceTrackerComponent::AliHLTTPCSliceTrackerComponent()
   fEta[1] = 1.1;
 }
 
   fEta[1] = 1.1;
 }
 
-AliHLTTPCSliceTrackerComponent::AliHLTTPCSliceTrackerComponent(const AliHLTTPCSliceTrackerComponent& src)
-  :
-  fTracker(NULL),
-  fVertex(NULL),
-  fDoNonVertex(false),
-  fDoPP(false),
-  fMultiplicity(4000),
-  fBField(0.4),
-// BEGINN ############################################## MODIFIY JMT
-  fnonvertextracking(kFALSE),
-  fmainvertextracking(kTRUE),
-// END ################################################# MODIFIY JMT
-  fpInterMerger(NULL)
-{
-  // see header file for class documentation
-  HLTFatal("copy constructor untested");
-}
-
-AliHLTTPCSliceTrackerComponent& AliHLTTPCSliceTrackerComponent::operator=(const AliHLTTPCSliceTrackerComponent& src)
-{ 
-  // see header file for class documentation
-  HLTFatal("assignment operator untested");
-  return *this;
-}
-
 AliHLTTPCSliceTrackerComponent::~AliHLTTPCSliceTrackerComponent()
 {
   // see header file for class documentation
 AliHLTTPCSliceTrackerComponent::~AliHLTTPCSliceTrackerComponent()
 {
   // see header file for class documentation
@@ -112,7 +92,7 @@ const char* AliHLTTPCSliceTrackerComponent::GetComponentID()
   return "TPCSliceTracker";
 }
 
   return "TPCSliceTracker";
 }
 
-void AliHLTTPCSliceTrackerComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list)
+void AliHLTTPCSliceTrackerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list)
 {
   // see header file for class documentation
   list.clear();
 {
   // see header file for class documentation
   list.clear();
@@ -146,7 +126,7 @@ void AliHLTTPCSliceTrackerComponent::SetTrackerParam(Int_t phiSegments, Int_t et
                                   Double_t minPtFit, Double_t maxangle,
                                   Double_t goodDist, Double_t hitChi2Cut,
                                   Double_t goodHitChi2, Double_t trackChi2Cut,
                                   Double_t minPtFit, Double_t maxangle,
                                   Double_t goodDist, Double_t hitChi2Cut,
                                   Double_t goodHitChi2, Double_t trackChi2Cut,
-                                  Int_t maxdist, Double_t maxphi,Double_t maxeta, bool vertexConstraints )
+                                  Int_t maxdist, Double_t maxphi,Double_t maxeta, bool /*vertexConstraints*/ )
     {
   // see header file for class documentation
     //fTracker->SetClusterFinderParam( fXYClusterError, fZClusterError, kTRUE ); // ??
     {
   // see header file for class documentation
     //fTracker->SetClusterFinderParam( fXYClusterError, fZClusterError, kTRUE ); // ??
@@ -157,8 +137,6 @@ void AliHLTTPCSliceTrackerComponent::SetTrackerParam(Int_t phiSegments, Int_t et
     fTracker->SetMaxDca(minPtFit);
     //   fTracker->MainVertexSettings(trackletlength,tracklength,rowscopetracklet,rowscopetrack);
 
     fTracker->SetMaxDca(minPtFit);
     //   fTracker->MainVertexSettings(trackletlength,tracklength,rowscopetracklet,rowscopetrack);
 
-// BEGINN ############################################## MODIFIY JMT
-#if 1
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::SetTrackerParam", "Tracking", "==============================" );
 
     if ( fmainvertextracking == kTRUE && fnonvertextracking == kFALSE){
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::SetTrackerParam", "Tracking", "==============================" );
 
     if ( fmainvertextracking == kTRUE && fnonvertextracking == kFALSE){
@@ -185,17 +163,7 @@ void AliHLTTPCSliceTrackerComponent::SetTrackerParam(Int_t phiSegments, Int_t et
        fTracker->NonVertexSettings( trackletlength, tracklength, rowscopetracklet, rowscopetrack);
        Logging( kHLTLogDebug, "HLT::TPCSliceTracker::SetTrackerParam", "Tracking", "NONVERTEXTRACKING" );
     }
        fTracker->NonVertexSettings( trackletlength, tracklength, rowscopetracklet, rowscopetrack);
        Logging( kHLTLogDebug, "HLT::TPCSliceTracker::SetTrackerParam", "Tracking", "NONVERTEXTRACKING" );
     }
-#else
-    fTracker->SetTrackCuts(hitChi2Cut,goodHitChi2,trackChi2Cut,maxdist,vertexConstraints);
-    fTracker->SetTrackletCuts(maxangle,goodDist,vertexConstraints);
     
     
-    if( vertexConstraints )
-       fTracker->MainVertexSettings( trackletlength, tracklength, rowscopetracklet, rowscopetrack, maxphi, maxeta);
-    else
-       fTracker->NonVertexSettings( trackletlength, tracklength, rowscopetracklet, rowscopetrack);
-#endif
-// END ################################################# MODIFIY JMT
-
     //fTracker->SetParamDone(true);
     /* Matthias 13.12.2006
      * the global variable AliHLTTPCS::fgDoVertexFit has never been used so far
     //fTracker->SetParamDone(true);
     /* Matthias 13.12.2006
      * the global variable AliHLTTPCS::fgDoVertexFit has never been used so far
@@ -213,6 +181,7 @@ void AliHLTTPCSliceTrackerComponent::SetTrackerParam(Int_t phiSegments, Int_t et
 
 void AliHLTTPCSliceTrackerComponent::SetTrackerParam( bool doPP, int multiplicity, double bField )
     {
 
 void AliHLTTPCSliceTrackerComponent::SetTrackerParam( bool doPP, int multiplicity, double bField )
     {
+  // see header file for class documentation
     AliHLTTPCTransform::SetBField( bField );
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoInit", "BField", "Setting b field to %f T\n", bField );
 
     AliHLTTPCTransform::SetBField( bField );
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoInit", "BField", "Setting b field to %f T\n", bField );
 
@@ -228,7 +197,7 @@ void AliHLTTPCSliceTrackerComponent::SetTrackerParam( bool doPP, int multiplicit
          SetTrackerParam( 50,        // phi_segments:     Devide the space into phi_segments                                      
                           100,       // ets_segments:     Devide the space into eta_segments                                       
                           3,         // trackletlength:   Number of hits a tracklet has to have                                   
          SetTrackerParam( 50,        // phi_segments:     Devide the space into phi_segments                                      
                           100,       // ets_segments:     Devide the space into eta_segments                                       
                           3,         // trackletlength:   Number of hits a tracklet has to have                                   
-                          10,         // tracklength:      Number of hits a track has to have                                      
+                          50,         // tracklength:      Number of hits a track has to have                                      
                           6,         // rowscopetracklet: Search range of rows for a tracklet                                     
                           6,         // rowscopetrack:    Search range of rows for a track                                       
                           0,         // min_pt_fit:       Cut for moment fit, use:SetMaxDca(min_pt_fit)                           
                           6,         // rowscopetracklet: Search range of rows for a tracklet                                     
                           6,         // rowscopetrack:    Search range of rows for a track                                       
                           0,         // min_pt_fit:       Cut for moment fit, use:SetMaxDca(min_pt_fit)                           
@@ -434,46 +403,42 @@ int AliHLTTPCSliceTrackerComponent::DoInit( int argc, const char** argv )
            continue;
            }
 
            continue;
            }
 
-// BEGINN ############################################## MODIFIY JMT
        if ( !strcmp( argv[i], "nonvertextracking" ) ){
        if ( !strcmp( argv[i], "nonvertextracking" ) ){
-           fnonvertextracking = kTRUE;
-           i++;
-           continue;       
+         fnonvertextracking = kTRUE;
+         i++;
+         continue;         
        }
        
        if ( !strcmp( argv[i], "mainvertextrackingoff" ) ){     
        }
        
        if ( !strcmp( argv[i], "mainvertextrackingoff" ) ){     
-           fmainvertextracking = kFALSE;
-           i++;
-           continue;       
+         fmainvertextracking = kFALSE;
+         i++;
+         continue;         
        }
        }
-
+       
        if ( !strcmp( argv[i], "etarange" ) ){  
        if ( !strcmp( argv[i], "etarange" ) ){  
-           if ( argc <= i+1 ){
-               Logging( kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Missing Eta range", "Missing Eta-range specifiers." );
-               return ENOTSUP;
-           }
-           fEta[1] = strtod( argv[i+1], &cpErr );
-           if ( *cpErr ){
-               Logging( kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Missing Eta range", "Cannot convert Eta-range specifier '%s'.", argv[i+1] );
-               return EINVAL;
-           }
-   
-           i += 2;
-           continue;
+         if ( argc <= i+1 ){
+           Logging( kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Missing Eta range", "Missing Eta-range specifiers." );
+           return ENOTSUP;
+         }
+         fEta[1] = strtod( argv[i+1], &cpErr );
+         if ( *cpErr ){
+           Logging( kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Missing Eta range", "Cannot convert Eta-range specifier '%s'.", argv[i+1] );
+           return EINVAL;
+         }
+         
+         i += 2;
+         continue;
        }
        }
-// END ################################################# MODIFIY JMT
        Logging(kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Unknown Option", "Unknown option '%s'", argv[i] );
        return EINVAL;
        }
        Logging(kHLTLogError, "HLT::TPCSliceTracker::DoInit", "Unknown Option", "Unknown option '%s'", argv[i] );
        return EINVAL;
        }
-// #### -B0-CHANGE-START == JMT
     if (fBField == 0.){
     if (fBField == 0.){
-       // parameter for B=0 T 
-       fDoPP = kTRUE;
-       fnonvertextracking = kTRUE;
-       fmainvertextracking = kFALSE;
+      // parameter for B=0 T 
+      fDoPP = kTRUE;
+      fnonvertextracking = kTRUE;
+      fmainvertextracking = kFALSE;
     }
     }
-// #### -B0-CHANGE-END == JMT
-
+        
     if (bDoMerger)
       fpInterMerger = new AliHLTTPCInterMerger();
 
     if (bDoMerger)
       fpInterMerger = new AliHLTTPCInterMerger();
 
@@ -498,8 +463,8 @@ int AliHLTTPCSliceTrackerComponent::DoDeinit()
 }
 
 int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
 }
 
 int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
-                                             AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
-                                             AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks )
+                                             AliHLTComponentTriggerData& /*trigData*/, AliHLTUInt8_t* outputPtr, 
+                                             AliHLTUInt32_t& size, AliHLTComponentBlockDataList& outputBlocks )
     {
   // see header file for class documentation
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "DoEvent", "DoEvent()" );
     {
   // see header file for class documentation
     Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "DoEvent", "DoEvent()" );
@@ -537,6 +502,11 @@ int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evt
        {
        iter = blocks+ndx;
 
        {
        iter = blocks+ndx;
 
+       if(iter->fDataType!=AliHLTTPCDefinitions::fgkClustersDataType){
+         HLTDebug("Data block type is not of type AliHLTTPCDefinitions::fgkClustersDataType");
+         continue;
+       }
+
        slice = AliHLTTPCDefinitions::GetMinSliceNr( *iter );
        found = false;
        slIter = slices.begin();
        slice = AliHLTTPCDefinitions::GetMinSliceNr( *iter );
        found = false;
        slIter = slices.begin();
@@ -673,38 +643,27 @@ int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evt
        }
 
     outPtr = (AliHLTTPCTrackletData*)(outBPtr);
        }
 
     outPtr = (AliHLTTPCTrackletData*)(outBPtr);
-// BEGINN ############################################## MODIFIY JMT
-#if 1
-    fTracker->SetPointers();
+
     if ( fmainvertextracking == kTRUE && fnonvertextracking == kFALSE){        
     if ( fmainvertextracking == kTRUE && fnonvertextracking == kFALSE){        
-       Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---MAINVERTEXTRACKING---");
-       fTracker->MainVertexTrackingA();
-       fTracker->MainVertexTrackingB();
-       fTracker->FillTracks();
+      Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---MAINVERTEXTRACKING---");
+      fTracker->MainVertexTrackingA();
+      fTracker->MainVertexTrackingB();
+      fTracker->FillTracks();
     }
     else if ( fmainvertextracking == kTRUE && fnonvertextracking == kTRUE){    
     }
     else if ( fmainvertextracking == kTRUE && fnonvertextracking == kTRUE){    
-       Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---MAINVERTEXTRACKING---");
-       fTracker->MainVertexTrackingA();
-       fTracker->MainVertexTrackingB();
-       fTracker->FillTracks(); 
-       Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---NONVERTEXTRACKING---");
-       fTracker->NonVertexTracking();
+      Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---MAINVERTEXTRACKING---");
+      fTracker->MainVertexTrackingA();
+      fTracker->MainVertexTrackingB();
+      fTracker->FillTracks();  
+      Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---NONVERTEXTRACKING---");
+      fTracker->NonVertexTracking();
     }
     else if ( fmainvertextracking == kFALSE && fnonvertextracking == kTRUE){
     }
     else if ( fmainvertextracking == kFALSE && fnonvertextracking == kTRUE){
-       Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---NONVERTEXTRACKING---");
-       fTracker->NonVertexTracking();  
-       fTracker->FillTracks(); 
+      Logging( kHLTLogDebug, "HLT::TPCSliceTracker::DoEvent", "Tracking", " ---NONVERTEXTRACKING---");
+      fTracker->NonVertexTracking();   
+      fTracker->FillTracks();  
     }
     }
-#else
-    fTracker->MainVertexTracking_a();
-    fTracker->MainVertexTracking_b();
-    fTracker->FillTracks();
-    
-    if ( fDoNonVertex )
-       fTracker->NonVertexTracking();//Do a second pass for nonvertex tracks
-#endif
-// END ################################################# MODIFIY JMT
-    
+
     UInt_t ntracks0 =0;
     if(fpInterMerger){
       AliHLTTPCMemHandler memory;
     UInt_t ntracks0 =0;
     if(fpInterMerger){
       AliHLTTPCMemHandler memory;
@@ -725,6 +684,8 @@ int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evt
             "Input: Number of tracks: %lu Slice/MinPatch/MaxPatch/RowMin/RowMax: %lu/%lu/%lu/%lu/%lu.", 
             ntracks0, slice, minPatch, maxPatch, row[0], row[1] );
 
             "Input: Number of tracks: %lu Slice/MinPatch/MaxPatch/RowMin/RowMax: %lu/%lu/%lu/%lu/%lu.", 
             ntracks0, slice, minPatch, maxPatch, row[0], row[1] );
 
+    fTracker->Reset();
+
     tSize += mysize+sizeof(AliHLTTPCTrackletData);
     outBPtr += mysize+sizeof(AliHLTTPCTrackletData);
     
     tSize += mysize+sizeof(AliHLTTPCTrackletData);
     outBPtr += mysize+sizeof(AliHLTTPCTrackletData);
     
@@ -750,6 +711,7 @@ int AliHLTTPCSliceTrackerComponent::DoEvent( const AliHLTComponentEventData& evt
 
 void AliHLTTPCSliceTrackerComponent::SetTrackerParam1()
 {
 
 void AliHLTTPCSliceTrackerComponent::SetTrackerParam1()
 {
+  // see header file for class documentation
   SetTrackerParam( 10, 20, 5, 10, 2,2,
                   0, 1.31, 5, 100,
                   50, 100, 50, 0.1, 0.1,
   SetTrackerParam( 10, 20, 5, 10, 2,2,
                   0, 1.31, 5, 100,
                   50, 100, 50, 0.1, 0.1,