]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Made Compare() and Set virtual in AliL3Track and derived classes
authorvestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Nov 2001 13:11:46 +0000 (13:11 +0000)
committervestbo <vestbo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Nov 2001 13:11:46 +0000 (13:11 +0000)
HLT/src/AliL3HoughTrack.cxx
HLT/src/AliL3HoughTrack.h
HLT/src/AliL3Track.cxx
HLT/src/AliL3Track.h
HLT/src/AliL3TrackArray.cxx

index 754c861f23b86724adedc5c019a6dcc70e64fa04..ab973a241bd779afff56ff752a9525632a7ba7df 100644 (file)
@@ -31,10 +31,16 @@ AliL3HoughTrack::~AliL3HoughTrack()
 
 void AliL3HoughTrack::Set(AliL3Track *track)
 {
-
+  
   AliL3HoughTrack *tpt = (AliL3HoughTrack*)track;
   SetTrackParameters(tpt->GetKappa(),tpt->GetPhi0(),tpt->GetWeight());
   SetEtaIndex(tpt->GetEtaIndex());
+  SetEta(tpt->GetEta());
+  SetPsi(tpt->GetPsi());
+  SetCenterX(tpt->GetCenterX());
+  SetCenterY(tpt->GetCenterY());
+  SetFirstPoint(tpt->GetFirstPointX(),tpt->GetFirstPointY(),tpt->GetFirstPointZ());
+  SetCharge(tpt->GetCharge());
   return;
 
   fWeight = tpt->GetWeight();
@@ -47,6 +53,14 @@ void AliL3HoughTrack::Set(AliL3Track *track)
 
 }
 
+Int_t AliL3HoughTrack::Compare(const AliL3Track *tpt) const
+{
+  AliL3HoughTrack *track = (AliL3HoughTrack*)tpt;
+  if(track->GetWeight() < GetWeight()) return 1;
+  if(track->GetWeight() > GetWeight()) return -1;
+  return 0;
+}
+
 void AliL3HoughTrack::SetTrackParameters(Double_t kappa,Double_t phi,Int_t weight)
 {
 
@@ -58,7 +72,9 @@ void AliL3HoughTrack::SetTrackParameters(Double_t kappa,Double_t phi,Int_t weigh
   SetPt(pt);
   Double_t radius = 1/fabs(kappa);
   SetRadius(radius);
-  
+  SetFirstPoint(0,0,0);
+  SetPsi(phi);
+
   //set nhits for sorting.
   SetNHits(weight);
     
index 55cb61d6d1cce5e4c5066a9b3185232361d23cac..d52453923341641ed3dec073641d0084e1b5ac87 100644 (file)
@@ -13,31 +13,32 @@ class AliL3HoughTrack : public AliL3Track {
   Double_t fMinDist;
   Int_t fWeight;
   Int_t fEtaIndex;
+  Double_t fEta;
 
   Double_t fDLine;
   Double_t fPsiLine;
-
   Bool_t fIsHelix;
 
  public:
   AliL3HoughTrack(); 
   virtual ~AliL3HoughTrack();
   
-  void Set(AliL3Track *track);
-  
+  virtual void Set(AliL3Track *track);
+  virtual Int_t Compare(const AliL3Track *track) const;
+
   void SetTrackParameters(Double_t kappa,Double_t phi,Int_t weight);  
   void SetLineParameters(Double_t psi,Double_t D,Int_t weight,Int_t *rowrange,Int_t ref_row);
-  Int_t GetWeight()  {return fWeight;}
-  Double_t GetPsiLine() {return fPsiLine;}
-  Double_t GetDLine() {return fDLine;}
+  Int_t GetWeight()  const {return fWeight;}
+  Double_t GetPsiLine() const {return fPsiLine;}
+  Double_t GetDLine() const {return fDLine;}
 
-  Int_t GetEtaIndex() {return fEtaIndex;}
+  Int_t GetEtaIndex() const {return fEtaIndex;}
+  Double_t GetEta() const {return fEta;}
   void GetLineCrossingPoint(Int_t padrow,Double_t *xy);
-  //Bool_t GetCrossingPoint(Int_t slice,Int_t padrow,Float_t *xyz);
-  
-  //Double_t GetCrossingAngle(Int_t padrow);
-  //Bool_t GetCrossingPoint(Int_t padrow,Float_t *xyz);
   
+  void SetEta(Double_t f) {fEta = f;}
+  void SetWeight(Int_t i,Bool_t update=kFALSE) {if(update) fWeight+= i; else fWeight = i;}
   void SetEtaIndex(Int_t f) {fEtaIndex = f;}
   void SetBestMCid(Int_t f,Double_t min_dist);
   void SetDLine(Double_t f) {fDLine=f;}
index 6b05205eca2a75ece7b55f4b51671f9605a1dae9..47330b52f6f182be46542b955c675ace4d2b994f 100644 (file)
@@ -70,16 +70,21 @@ void AliL3Track::Set(AliL3Track *tpt){
 
 }
 
+Int_t AliL3Track::Compare(const AliL3Track *track) const
+{
+  if(track->GetNHits() < GetNHits()) return 1;
+  if(track->GetNHits() > GetNHits()) return -1;
+  return 0;
+}
 
 AliL3Track::~AliL3Track()
 {
-
+  //Nothing to do
 }
 
 Double_t AliL3Track::GetP() const
 {
-  // Returns total momentum.
-  
+  // Returns total momentum.  
   return fabs(GetPt())*sqrt(1. + GetTgl()*GetTgl());
 
 }
@@ -88,42 +93,56 @@ Double_t AliL3Track::GetPseudoRapidity() const
 {
   return 0.5 * log((GetP() + GetPz()) / (GetP() - GetPz()));
 }
-
+/*
 Double_t AliL3Track::GetEta() const
 {
   return GetPseudoRapidity();
 }
-
+*/
 Double_t AliL3Track::GetRapidity() const
 {
   Double_t m_pi = 0.13957;
   return 0.5 * log((m_pi + GetPz()) / (m_pi - GetPz()));
 }
 
-void AliL3Track::Rotate(Int_t slice)
+void AliL3Track::Rotate(Int_t slice,Bool_t tolocal)
 {
-
   //Rotate track to global parameters
+  //If flag tolocal is set, the track is rotated
+  //to local coordinates.
 
   AliL3Transform *transform = new AliL3Transform();
   
   Float_t psi[1] = {GetPsi()};
-  transform->Local2GlobalAngle(psi,slice);
+  if(!tolocal)
+    transform->Local2GlobalAngle(psi,slice);
+  else
+    transform->Global2LocalAngle(psi,slice);
   SetPsi(psi[0]);
   Float_t first[3];
   first[0] = GetFirstPointX();
   first[1] = GetFirstPointY();
   first[2] = GetFirstPointZ();
-  transform->Local2Global(first,slice);
+  if(!tolocal)
+    transform->Local2Global(first,slice);
+  else
+    transform->Global2Local(first,slice,kTRUE);
+  
   SetFirstPoint(first[0],first[1],first[2]);
   Float_t last[3];
   last[0] = GetLastPointX();
   last[1] = GetLastPointY();
   last[2] = GetLastPointZ();
-  transform->Local2Global(last,slice);
+  if(!tolocal)
+    transform->Local2Global(last,slice);
+  else
+    transform->Global2Local(last,slice,kTRUE);
   SetLastPoint(last[0],last[1],last[2]);
-
-  fIsLocal=false;
+  
+  if(!tolocal)
+    fIsLocal=kFALSE;
+  else
+    fIsLocal=kTRUE;
   delete transform;
 }
 
index 4f87e97e9f5eec9055d6a78534e417bf7465c384..f544daddd68f2987ded3b2da25e7899ed030023f 100644 (file)
@@ -61,6 +61,7 @@ class AliL3Track {
   virtual ~AliL3Track();
   
   virtual void Set(AliL3Track* track);
+  virtual Int_t Compare(const AliL3Track *track) const;
   
   Bool_t CalculateReferencePoint(Double_t angle);//Calculate Reference Point
   Bool_t CalculateEdgePoint(Double_t angle);//Calculate crossing point with line
@@ -71,7 +72,7 @@ class AliL3Track {
   Bool_t GetCrossingPoint(Int_t padrow,Float_t *xyz);
   Double_t GetDistance(Double_t x0,Double_t x1){return 0;}
   
-  void Rotate(Int_t slice);
+  void Rotate(Int_t slice,Bool_t tolocal=kFALSE);
   Bool_t IsLocal() {return fIsLocal;}
 
   // getter
@@ -99,7 +100,7 @@ class AliL3Track {
   Double_t   GetCenterX()          const { return fCenterX;}
   Double_t   GetCenterY()          const { return fCenterY;}
 
-  Int_t GetNHits() {return fNHits;}
+  Int_t GetNHits() const {return fNHits;}
   Int_t   GetNumberOfPoints()   const {return fNHits;}
   Bool_t  ComesFromMainVertex() const { return fFromMainVertex;}
     
@@ -109,7 +110,7 @@ class AliL3Track {
   
   Double_t   GetP() const;
   Double_t   GetPseudoRapidity() const;
-  Double_t   GetEta() const; 
+  //Double_t   GetEta() const; 
   Double_t   GetRapidity() const;
   
   Int_t   GetCharge()           const { return fQ;}
@@ -122,6 +123,7 @@ class AliL3Track {
   UInt_t *GetHitNumbers() {return fHitNumbers;}
 
   // setter   
+  
   void SetMCid(Int_t f) {fMCid = f;}
   void SetFirstPoint(Double_t f,Double_t g,Double_t h) {fFirstPoint[0]=f; fFirstPoint[1]=g; fFirstPoint[2]=h;}
   void SetLastPoint(Double_t f,Double_t g,Double_t h) {fLastPoint[0]=f; fLastPoint[1]=g; fLastPoint[2]=h;}
index 0d3333950e12bf171d93a642d9380c9bb8189e93..b945c890ff07b09300ab87ab301e0b54c9c5eb16 100644 (file)
@@ -321,7 +321,14 @@ void AliL3TrackArray::AddTracks(AliL3TrackArray *newtrack,Bool_t remove_old){
       newtrack->Remove(i);
     AliL3Track *track = NextTrack();
     track->Set(tpt);
-
+    /*
+      AliL3Track *track;
+      if(GetTrackType()=='h')
+      track = (AliL3HoughTrack*)NextTrack();
+      else
+      track = NextTrack();
+      track->Set(tpt);
+    */
   }
 }
 
@@ -355,7 +362,7 @@ void AliL3TrackArray::QSort(){
   QSort(fTrack,0,fNTracks);
 }
 
- void AliL3TrackArray::QSort( AliL3Track **a, Int_t first, Int_t last){
+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.
@@ -369,10 +376,10 @@ void AliL3TrackArray::QSort(){
       i = first;
       j = last;
       for (;;) {
-         while (++i < last && TrackCompare(a[i], a[first]) < 0)
-            ;
-         while (--j > first && TrackCompare(a[j], a[first]) > 0)
-            ;
+       while (++i < last && TrackCompare(a[i], a[first]) < 0)
+         ;
+       while (--j > first && TrackCompare(a[j], a[first]) > 0)
+         ;
          if (i >= j)
             break;
 
@@ -399,10 +406,25 @@ void AliL3TrackArray::QSort(){
 
 Int_t AliL3TrackArray::TrackCompare(AliL3Track *a, AliL3Track *b){
    // Compare the two tracks.
-
-  if(a->GetNHits() < b->GetNHits()) return 1;
-  if(a->GetNHits() > b->GetNHits()) return -1;
-  return 0;
+  
+  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;
+  */
 }