//* 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
fMaxPhi(0.0),
fMaxEta(0.0),
fMainVertexTracks(0),
- fClustersUnused(0)
-
+ fClustersUnused(0),
+ fClusterCutZ(-1)
{
//Default constructor
fParamSet[0]=0;
}
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;
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;
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()