]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCConfMapper.cxx
Coding violations
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCConfMapper.cxx
index 0e10dc6857d175e379d99f675801b2018ec016e9..6a42af76e9a6584ba65d919bc695c8c9dfc3b120 100644 (file)
@@ -18,7 +18,7 @@
 //* provided "as is" without express or implied warranty.                  *
 //**************************************************************************
 
-/** @file   AliHLTAltroEncoder.cxx
+/** @file   AliHLTTPCConfMapper.cxx
     @author Anders Vestbo, Matthias Richter
     @date   Conformal mapping base class.
     @brief  
@@ -75,8 +75,8 @@ AliHLTTPCConfMapper::AliHLTTPCConfMapper()
   fMaxPhi(0.0),
   fMaxEta(0.0),
   fMainVertexTracks(0),
-  fClustersUnused(0)
-
+  fClustersUnused(0),
+  fClusterCutZ(-1)
 {
   //Default constructor
   fParamSet[0]=0;
@@ -172,16 +172,52 @@ void AliHLTTPCConfMapper::InitSector(Int_t sector,Int_t *rowrange,Float_t *etara
 }
 
 Bool_t AliHLTTPCConfMapper::ReadHits(UInt_t count, AliHLTTPCSpacePointData* hits )
+{
+  //read hits with ReadHitsChecked  
+  return ReadHitsChecked(count,hits,0);
+}
+
+Bool_t AliHLTTPCConfMapper::ReadHitsChecked(UInt_t count, AliHLTTPCSpacePointData* hits, unsigned int sizeInByte )
 {
   //read hits
-  if (fHit.size()<fClustersUnused+count) fHit.resize(fClustersUnused+count);
-  assert(fHit.size()>=fClustersUnused+count);
-  for (Int_t i=0;(UInt_t)i<count;i++)
-    {  
-      fHit[i+fClustersUnused].Reset();
-      fHit[i+fClustersUnused].Read(hits[i]);
-    }
-  fClustersUnused += count;
+  if(fClusterCutZ == -1){
+    if (fHit.size()<fClustersUnused+count) fHit.resize(fClustersUnused+count);
+    assert(fHit.size()>=fClustersUnused+count);
+    for (Int_t i=0;(UInt_t)i<count;i++)
+      {        
+       AliHLTTPCSpacePointData *hit = &hits[i];
+       if (sizeInByte>0 && ((AliHLTUInt8_t*)hit)+sizeof(AliHLTTPCSpacePointData)>((AliHLTUInt8_t*)hits)+sizeInByte) {
+         LOG(AliHLTTPCLog::kWarning,"AliHLTTPCConfMapper::ReadHits","")<<"Wrong size of data (" << sizeInByte << " byte), skipping array of AliHLTTPCSpacePointData" <<ENDLOG;;
+         break;
+       }
+       fHit[i+fClustersUnused].Reset();
+       fHit[i+fClustersUnused].Read(hits[i]);
+      }
+    fClustersUnused += count;
+  }
+  else{
+    //Skipping clusters with high Z. 
+    UInt_t skipped=0;
+    
+    if (fHit.size()<fClustersUnused+count) fHit.resize(fClustersUnused+count);
+    assert(fHit.size()>=fClustersUnused+count);
+    for (Int_t i=0;(UInt_t)i<count;i++)
+      {  
+       AliHLTTPCSpacePointData *hit = &hits[i];
+       if (sizeInByte>0 && ((AliHLTUInt8_t*)hit)+sizeof(AliHLTTPCSpacePointData)>((AliHLTUInt8_t*)hits)+sizeInByte) {
+         LOG(AliHLTTPCLog::kWarning,"AliHLTTPCConfMapper::ReadHits","")<<"Wrong size of data (" << sizeInByte << " byte), skipping array of AliHLTTPCSpacePointData" <<ENDLOG;;
+         break;
+       }
+       if(hits[i].fZ > fClusterCutZ || hits[i].fZ < -1*fClusterCutZ){
+         ++skipped;
+         continue;
+       }
+       fHit[i+fClustersUnused-skipped].Reset();
+       fHit[i+fClustersUnused-skipped].Read(hits[i]);
+      }
+    fClustersUnused += count - skipped;
+    fHit.resize(fClustersUnused);
+  }
 
   LOG(AliHLTTPCLog::kDebug,"AliHLTTPCConfMapper::ReadHits","#hits")
     <<AliHLTTPCLog::kDec<<"#hits: "<<count<<" total: "<<fClustersUnused<<ENDLOG;
@@ -267,8 +303,12 @@ void AliHLTTPCConfMapper::SetPointers()
        fRow[(localrow-fRowMin)].last = (void *)thisHit;
     }
   
+  //If a cluster has an Eta outside the Eta or Phi range set in the Tracker, it will go in to
+  //the if here. This has been seen for high Eta clusters most likely from signal from the gating grid.
+  //These clusters are read in, but not used in the Tracking. 
+#ifdef PACKAGE_STRING
   if(fClustersUnused>0 && localcounter==0)
-    LOG(AliHLTTPCLog::kError,"AliHLTTPCConfMapper::SetPointers","Parameters")
+    LOG(AliHLTTPCLog::kDebug,"AliHLTTPCConfMapper::SetPointers","Parameters")
       <<AliHLTTPCLog::kDec<<"No points passed to track finder, hits out of range: "
       <<fEtaHitsOutOfRange+fPhiHitsOutOfRange<<ENDLOG;
 
@@ -276,6 +316,7 @@ void AliHLTTPCConfMapper::SetPointers()
   LOG(AliHLTTPCLog::kDebug,"AliHLTTPCConfMapper::SetPointers","Setup")
     <<"Setup finished, hits out of range: "<<fEtaHitsOutOfRange+fPhiHitsOutOfRange
     <<" hits accepted "<<hits_accepted<<ENDLOG;
+#endif //PACKAGE_STRING
 }
 
 void AliHLTTPCConfMapper::MainVertexTrackingA()