]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/src/AliL3TrackArray.cxx
L3 becomes HLT
[u/mrichter/AliRoot.git] / HLT / src / AliL3TrackArray.cxx
diff --git a/HLT/src/AliL3TrackArray.cxx b/HLT/src/AliL3TrackArray.cxx
deleted file mode 100644 (file)
index 935094c..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-// @(#) $Id$
-
-// Author: Uli Frankenfeld <mailto:franken@fi.uib.no>
-//*-- Copyright &copy ALICE HLT Group
-
-#include "AliL3StandardIncludes.h"
-
-#include "AliL3Logging.h"
-#include "AliL3TrackArray.h"
-#include "AliL3HoughTrack.h"
-#include "AliL3ModelTrack.h"
-#include "AliL3ConfMapTrack.h"
-#include "AliL3TrackSegmentData.h"
-#include "AliL3Transform.h"
-#include "AliL3ConfMapPoint.h"
-
-/** \class AliL3TrackArray
-<pre>
-//_____________________________________________________________
-// AliL3TrackArray
-//
-// Track array class 
-//
-</pre>
-*/
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliL3TrackArray)
-
-AliL3TrackArray::AliL3TrackArray()
-{
-  //Default constructor
-  fSize = 0;
-  fNTracks=0;
-  fNAbsent=0;
-  fTrackType='t';
-  SetSize();
-}
-
-
-AliL3TrackArray::AliL3TrackArray(Int_t ntrack)
-{
-  //Constructor.
-  fSize = 0;
-  fNTracks=0;
-  fNAbsent=0;
-  fTrackType='t';
-  SetSize(ntrack);
-}
-
-AliL3TrackArray::AliL3TrackArray(char* tracktype,Int_t ntrack)
-{
-  //Constructor.
-  fSize = 0;
-  fNTracks=0;
-  fNAbsent=0;
-  if(strcmp(tracktype,"AliL3Track")==0) fTrackType='t';
-  if(strcmp(tracktype,"AliL3ConfMapTrack")==0) fTrackType='c';
-  if(strcmp(tracktype,"AliL3HoughTrack")==0) fTrackType='h';
-  if(strcmp(tracktype,"AliL3ModelTrack")==0) fTrackType='m';
-  SetSize(ntrack);
-}
-
-AliL3TrackArray::AliL3TrackArray(char* tracktype)
-{
-  //Constructor.
-  fSize = 0;
-  fNTracks=0;
-  fNAbsent=0;
-  if(strcmp(tracktype,"AliL3Track")==0) fTrackType='t';
-  if(strcmp(tracktype,"AliL3ConfMapTrack")==0) fTrackType='c';
-  if(strcmp(tracktype,"AliL3HoughTrack")==0) fTrackType='h';
-  if(strcmp(tracktype,"AliL3ModelTrack")==0) fTrackType='m';
-  SetSize();
-}
-
-AliL3TrackArray::~AliL3TrackArray()
-{
-  //Destructor
-  DeleteArray();
-}
-
-
-AliL3Track *AliL3TrackArray::NextTrack()
-{
-  //next track in array
-  if(fNTracks<fSize) return fTrack[fNTracks++];
-  SetSize(fSize+100);
-   return fTrack[fNTracks++]; 
-}
-
-void AliL3TrackArray::DeleteArray()
-{
-  //delete array
-  for(Int_t i=0; i<fSize;i++)
-    delete fTrack[i];
-  delete[] fIsPresent;
-  delete[] fTrack;
-}
-
-Bool_t AliL3TrackArray::SetSize(Int_t newsize)
-{
-  //set size
-  if(newsize<=fSize) return kFALSE; //shrink comes later!! 
-  if(!fSize){
-    fSize = newsize;
-    fTrack = new AliL3Track*[fSize];
-    fIsPresent = new Bool_t[fSize];
-    switch(fTrackType){
-      case 't':
-        for(Int_t i=0;i<fSize;i++){
-          fTrack[i]   = new AliL3Track();
-          fIsPresent[i] = kTRUE;
-        }
-        break;
-      case 'c':  
-        for(Int_t i=0;i<fSize;i++){
-          fTrack[i]   = new AliL3ConfMapTrack();
-          fIsPresent[i] = kTRUE;
-        }
-        break;
-      case 'h':
-        for(Int_t i=0;i<fSize;i++){
-          fTrack[i]   = new AliL3HoughTrack();
-          fIsPresent[i] = kTRUE;
-        }
-        break;
-       case 'm':
-        for(Int_t i=0;i<fSize;i++){
-          fTrack[i]   = new AliL3ModelTrack();
-          fIsPresent[i] = kTRUE;
-        }
-        break;
-      default: 
-        return kFALSE;
-    }
-    return kTRUE;
-  }
-  AliL3Track **tmp = new AliL3Track*[fSize];
-  Bool_t *pre = new Bool_t[fSize];
-  for(Int_t i=0; i<fSize;i++){
-    tmp[i] = fTrack[i];
-    pre[i] = fIsPresent[i];
-  }
-  delete[]  fTrack;
-  delete[] fIsPresent;
-  fTrack =  new AliL3Track*[newsize];
-  fIsPresent = new Bool_t[newsize];
-  for(Int_t i=0; i<fSize;i++){
-    fTrack[i]   = tmp[i];
-    fIsPresent[i] = pre[i];
-  }
-  delete[] tmp;
-  delete[] pre;
-  switch(fTrackType){
-    case 't':
-      for(Int_t i=fSize;i<newsize;i++){
-        fTrack[i]   = new AliL3Track();
-        fIsPresent[i] = kTRUE;
-      }
-      break;
-    case 'c':  
-      for(Int_t i=fSize;i<newsize;i++){
-        fTrack[i]   = new AliL3ConfMapTrack();
-        fIsPresent[i] = kTRUE;
-      }
-      break;
-    case 'h':
-      for(Int_t i=fSize;i<newsize;i++){
-        fTrack[i]   = new AliL3HoughTrack();
-        fIsPresent[i] = kTRUE;
-      }
-      break;
-    case 'm':
-      for(Int_t i=fSize;i<newsize;i++){
-        fTrack[i]   = new AliL3ModelTrack();
-        fIsPresent[i] = kTRUE;
-      }
-      break;
-    default: 
-      return kFALSE;
-  }
-  fSize = newsize;
-  return kTRUE;
-}
-
-void AliL3TrackArray::Reset()
-{
-  //reset
-  fNTracks=0;
-  fNAbsent=0;
-  for(Int_t i=0; i<fSize;i++)
-    fIsPresent[i] = kTRUE; 
-}
-
-void AliL3TrackArray::Remove(Int_t track)
-{
-  //remove track
-  if(fIsPresent[track]){
-    fIsPresent[track]=kFALSE;
-    fNAbsent++;
-  }
-}
-
-void AliL3TrackArray::FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr){
-  //Read tracks from shared memory (or memory)
-  AliL3TrackSegmentData *trs = tr;
-   for(Int_t i=0; i<ntracks; i++){
-    AliL3Track *track = NextTrack(); 
-    track->SetPt(trs->fPt);
-    track->SetPsi(trs->fPsi);
-    track->SetTgl(trs->fTgl);
-    track->SetPterr(trs->fPterr);
-    track->SetPsierr(trs->fPsierr);
-    track->SetTglerr(trs->fTglerr);
-    track->SetNHits(trs->fNPoints);
-    track->SetCharge(trs->fCharge);
-    track->SetFirstPoint(trs->fX,trs->fY,trs->fZ);
-    track->SetLastPoint(trs->fLastX,trs->fLastY,trs->fLastZ);
-    track->SetHits( trs->fNPoints, trs->fPointIDs );
-#ifdef ROWHOUGHPARAMS
-    if(GetTrackType()=='h') {
-      ((AliL3HoughTrack *)track)->SetWeight(trs->fWeight);
-      ((AliL3HoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
-    }
-    track->SetMCid(trs->fTrackID);
-    track->SetRowRange(trs->fRowRange1,trs->fRowRange2);
-    track->SetSector(trs->fSector);
-    track->SetPID(trs->fPID);
-#endif
-    UChar_t *tmpP = (UChar_t*)trs;
-    tmpP += sizeof(AliL3TrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
-    trs = (AliL3TrackSegmentData*)tmpP;
-  }
-}
-
-void AliL3TrackArray::FillTracks(Int_t ntracks, AliL3TrackSegmentData* tr,Int_t slice)
-{
-  //Read tracks from shared memory (or memory)
-  AliL3TrackSegmentData *trs = tr;
-  for(Int_t i=0; i<ntracks; i++){
-    AliL3Track *track = NextTrack(); 
-    track->SetPt(trs->fPt);
-    track->SetPterr(trs->fPterr);
-    Float_t psi[1];
-    psi[0]=trs->fPsi;
-    AliL3Transform::Local2GlobalAngle(psi,slice);
-    track->SetPsi(psi[0]);
-    track->SetTgl(trs->fTgl);
-    track->SetPsierr(trs->fPsierr);
-    track->SetTglerr(trs->fTglerr);
-    track->SetNHits(trs->fNPoints);
-    track->SetCharge(trs->fCharge);
-    Float_t first[3];
-    first[0]=trs->fX;first[1]=trs->fY;first[2]=trs->fZ;
-    AliL3Transform::Local2Global(first,slice);
-    track->SetFirstPoint(first[0],first[1],first[2]);
-    Float_t last[3];
-    last[0]=trs->fLastX;last[1]=trs->fLastY;last[2]=trs->fLastZ;
-    AliL3Transform::Local2Global(last,slice);
-    track->SetLastPoint(last[0],last[1],last[2]);
-    track->SetHits( trs->fNPoints, trs->fPointIDs );
-#ifdef ROWHOUGHPARAMS
-    if(GetTrackType()=='h') {
-      ((AliL3HoughTrack *)track)->SetWeight(trs->fWeight);
-      ((AliL3HoughTrack *)track)->SetBinXY(trs->fBinX,trs->fBinY,trs->fBinXSize,trs->fBinYSize);
-    }
-    track->SetMCid(trs->fTrackID);
-    track->SetRowRange(trs->fRowRange1,trs->fRowRange2);
-    track->SetSector(slice);
-    track->SetPID(trs->fPID);
-#endif
-    UChar_t *tmpP = (UChar_t*)trs;
-    tmpP += sizeof(AliL3TrackSegmentData)+trs->fNPoints*sizeof(UInt_t);
-    trs = (AliL3TrackSegmentData*)tmpP;
-  }
-}
-
-UInt_t AliL3TrackArray::GetOutSize()
-{
-  //get size for IO
-  UInt_t count = GetOutCount();   //use only present tracks
-  UInt_t tHits = 0;
-  for(Int_t i=0;i<fNTracks;i++){  //loop over all tracks
-    AliL3Track *track = GetCheckedTrack(i);  //use only present tracks
-    if(track)                                       //use only present tracks
-      tHits += track->GetNHits();
-  }
-
-  //calculate size of track
-  return count*sizeof(AliL3TrackSegmentData)+sizeof(UInt_t)*tHits;
-}
-
-UInt_t AliL3TrackArray::WriteTracks(UInt_t & ntracks,AliL3TrackSegmentData* tr)
-{
-  //write tracks
-  ntracks = GetOutCount();
-  return WriteTracks(tr);
-}
-
-UInt_t AliL3TrackArray::WriteTracks(AliL3TrackSegmentData* tr)
-{
-  //if(GetTrackType()=='c') return WriteConfMapTracks(tr);
-  AliL3TrackSegmentData *tP = tr;
-  UInt_t *pP;
-  UInt_t size = 0;
-  for(Int_t i=0; i<fNTracks; i++){  //loop over all tracks
-    AliL3Track *track = GetCheckedTrack(i); //use only present tracks
-    if(!track) continue;                           //use only present tracks
-    tP->fX = track->GetFirstPointX();
-    tP->fY = track->GetFirstPointY();
-    tP->fZ = track->GetFirstPointZ();
-    tP->fPt = track->GetPt();
-    tP->fPterr = track->GetPterr();
-    tP->fLastX = track->GetLastPointX();
-    tP->fLastY = track->GetLastPointY();
-    tP->fLastZ = track->GetLastPointZ();
-    tP->fPsi = track->GetPsi();
-    tP->fTgl = track->GetTgl();
-    tP->fPsierr = track->GetPsierr();
-    tP->fTglerr = track->GetTglerr();
-    tP->fCharge = track->GetCharge();
-    tP->fNPoints = track->GetNHits();
-#ifdef ROWHOUGHPARAMS
-    if(GetTrackType()=='h') {
-      tP->fWeight = ((AliL3HoughTrack *)track)->GetWeight();
-      tP->fBinX = ((AliL3HoughTrack *)track)->GetBinX();
-      tP->fBinY = ((AliL3HoughTrack *)track)->GetBinY();
-      tP->fBinXSize = ((AliL3HoughTrack *)track)->GetSizeX();
-      tP->fBinYSize = ((AliL3HoughTrack *)track)->GetSizeY();
-    }
-    tP->fTrackID = track->GetMCid();
-    tP->fRowRange1 = track->GetFirstRow();
-    tP->fRowRange2 = track->GetLastRow();
-    tP->fSector = track->GetSector();
-    tP->fPID = track->GetPID();
-#endif
-    pP = (UInt_t*)track->GetHitNumbers();
-    for (UInt_t j=0;j<tP->fNPoints;j++){
-      tP->fPointIDs[j] = pP[j];
-    }
-    Byte_t *tmpP = (Byte_t *)tP;
-    tmpP += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
-    size += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
-    tP = (AliL3TrackSegmentData*)tmpP;
-  }
-  return size;
-}
-
-UInt_t AliL3TrackArray::WriteConfMapTracks(AliL3TrackSegmentData* tr)
-{
-  // use first and last point objects
-  AliL3TrackSegmentData *tP = tr;
-  UInt_t *pP;
-  UInt_t size = 0;
-  for(Int_t i=0; i<fNTracks; i++){  //loop over all tracks
-    AliL3ConfMapTrack *track =(AliL3ConfMapTrack *) GetCheckedTrack(i); //use only present tracks
-    if(!track) continue;                           //use only present tracks
-    AliL3ConfMapPoint *hit = (AliL3ConfMapPoint*)track->GetLastHit();
-    AliL3ConfMapPoint *lastHit = (AliL3ConfMapPoint*)track->GetFirstHit();
-    tP->fX = hit->GetX();
-    tP->fY = hit->GetY();
-    tP->fZ = hit->GetZ();
-    tP->fLastX = lastHit->GetX();
-    tP->fLastY = lastHit->GetY();
-    tP->fLastZ = lastHit->GetZ();
-   
-//    tP->fX = track->GetFirstPointX();
-//    tP->fY = track->GetFirstPointY();
-//    tP->fZ = track->GetFirstPointZ();
-    tP->fPt = track->GetPt();
-    tP->fPterr = track->GetPterr();
-//    tP->fLastX = track->GetLastPointX();
-//    tP->fLastY = track->GetLastPointY();
-//    tP->fLastZ = track->GetLastPointZ();
-    tP->fPsi = track->GetPsi();
-    tP->fTgl = track->GetTgl();
-    tP->fPsierr = track->GetPsierr();
-    tP->fTglerr = track->GetTglerr();
-    tP->fCharge = track->GetCharge();
-#ifdef ROWHOUGHPARAMS
-    tP->fTrackID = track->GetMCid();
-    tP->fRowRange1 = track->GetFirstRow();
-    tP->fRowRange2 = track->GetLastRow();
-    tP->fSector = track->GetSector();
-    tP->fPID = track->GetPID();
-#endif
-    tP->fNPoints = track->GetNHits();
-    pP = (UInt_t*)track->GetHitNumbers();
-    for (UInt_t j=0;j<tP->fNPoints;j++){
-      tP->fPointIDs[j] = pP[j];
-    }
-    Byte_t *tmpP = (Byte_t *)tP;
-    tmpP += sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
-    size +=sizeof(AliL3TrackSegmentData)+tP->fNPoints*sizeof(UInt_t);
-    tP = (AliL3TrackSegmentData*)tmpP;
-  }
-  return size;
-}
-
-void AliL3TrackArray::AddLast(AliL3Track *track)
-{
-  //add track to last position
-  AliL3Track *tpt = NextTrack();
-  tpt->Set(track);
-  
-}
-
-void AliL3TrackArray::AddTracks(AliL3TrackArray *newtrack,Bool_t remove_old,Int_t slice)
-{
-  //add tracks
-  if(GetTrackType() != newtrack->GetTrackType() && GetTrackType()!='t')
-    {
-      LOG(AliL3Log::kError,"AliL3TrackArray::AddTracks","Track types")
-       <<"Bad idea to add tracks of different types"<<ENDLOG;
-      return;
-    }
-  if(fSize < fNTracks+newtrack->GetNPresent())
-    SetSize(fSize+newtrack->GetSize());
-  for(Int_t i =0;i<newtrack->GetNTracks();i++){
-    AliL3Track *tpt = newtrack->GetCheckedTrack(i);
-    if(!tpt) continue;
-    if(remove_old)
-      newtrack->Remove(i);
-    AliL3Track *track = NextTrack();
-    track->Set(tpt);
-    if(slice>=0)
-      track->Rotate(slice); //Rotate track to global coordinates
-    /*
-      AliL3Track *track;
-      if(GetTrackType()=='h')
-      track = (AliL3HoughTrack*)NextTrack();
-      else
-      track = NextTrack();
-      track->Set(tpt);
-    */
-  }
-}
-
-void AliL3TrackArray::Compress()
-{
-  //compress array
-  if(GetNPresent()==GetNTracks()) return;
-  AliL3Track **tmp =  new AliL3Track *[fNTracks];
-  Int_t present=0;
-  Int_t absent=GetNPresent();
-  for(Int_t i=0;i<GetNTracks();i++){
-    if(fIsPresent[i]) tmp[present++] = fTrack[i];
-    else tmp[absent++] = fTrack[i];
-  }
-  for(Int_t i=0;i<GetNTracks();i++)
-    fIsPresent[i]=kTRUE;
-
-  //Copy pointers back
-  for(Int_t i=0; i<GetNTracks();i++){
-    fTrack[i]=tmp[i];
-  }
-
-  delete[] tmp;
-
-  fNTracks = GetNPresent();
-  fNAbsent = 0;
-}
-
-void AliL3TrackArray::QSort()
-{
-  // compress and sort
-  Compress();
-  QSort(fTrack,0,fNTracks);
-}
-
-void AliL3TrackArray::QSort( AliL3Track **a, Int_t first, Int_t last)
-{
-   // Sort array of AliL3Track pointers using a quicksort algorithm.
-   // Uses TrackCompare() to compare objects.
-   // Thanks to Root! 
-
-   static AliL3Track *tmp;
-   static int i;           // "static" to save stack space
-   int j;
-
-   while (last - first > 1) {
-      i = first;
-      j = last;
-      for (;;) {
-       while (++i < last && TrackCompare(a[i], a[first]) < 0)
-         ;
-       while (--j > first && TrackCompare(a[j], a[first]) > 0)
-         ;
-         if (i >= j)
-            break;
-
-         tmp  = a[i];
-         a[i] = a[j];
-         a[j] = tmp;
-      }
-      if (j == first) {
-         ++first;
-         continue;
-      }
-      tmp = a[first];
-      a[first] = a[j];
-      a[j] = tmp;
-      if (j - first < last - (j + 1)) {
-         QSort(a, first, j);
-         first = j + 1;   // QSort(j + 1, last);
-      } else {
-         QSort(a, j + 1, last);
-         last = j;        // QSort(first, j);
-      }
-   }
-}
-
-Int_t AliL3TrackArray::TrackCompare(AliL3Track *a, AliL3Track *b) const
-{
-   // Compare the two tracks.
-  
-  return b->Compare(a);
-  
-  /*
-    if(fTrackType=='h')
-    {
-    AliL3HoughTrack *tra = (AliL3HoughTrack*)a;
-    AliL3HoughTrack *trb = (AliL3HoughTrack*)b;
-    if(tra->GetWeight() < trb->GetWeight()) return 1;
-    if(tra->GetWeight() > trb->GetWeight()) return -1;
-    }
-    else
-    {
-    if(a->GetNHits() < b->GetNHits()) return 1;
-    if(a->GetNHits() > b->GetNHits()) return -1;
-    }
-    
-    return 0;
-  */
-}
-
-