]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/hough/AliL3HoughTransformer.cxx
- check for AliRoot features/libs/files and corresponding conditional
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughTransformer.cxx
index cca5afcd32a615a06ef636ee4d185e95e6ab124b..da5a65016e4430d87a2fa0ff49158ba3ec1f9f20 100644 (file)
@@ -3,6 +3,16 @@
 // Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
 //*-- Copyright &copy ALICE HLT Group
 
+/** \class AliL3HoughTransformer
+<pre>
+//_____________________________________________________________
+// AliL3HoughTransformer
+//
+// Hough transformation class
+//
+</pre>
+*/
+
 #include "AliL3StandardIncludes.h"
 
 #include "AliL3Logging.h"
 #include "AliL3DigitData.h"
 #include "AliL3HistogramAdaptive.h"
 
-#if __GNUC__ == 3
+#if __GNUC__ >= 3
 using namespace std;
 #endif
 
-/** \class AliL3HoughTransformer
-<pre>
-//_____________________________________________________________
-// AliL3HoughTransformer
-//
-// Hough transformation class
-//
-</pre>
-*/
-
 ClassImp(AliL3HoughTransformer)
 
 AliL3HoughTransformer::AliL3HoughTransformer()
@@ -39,7 +39,7 @@ AliL3HoughTransformer::AliL3HoughTransformer()
 #endif
 }
 
-AliL3HoughTransformer::AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t n_eta_segments,Bool_t DoEtaOverlap,Bool_t /*DoMC*/) : AliL3HoughBaseTransformer(slice,patch,n_eta_segments)
+AliL3HoughTransformer::AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t netasegments,Bool_t DoEtaOverlap,Bool_t /*DoMC*/) : AliL3HoughBaseTransformer(slice,patch,netasegments)
 {
   //Normal constructor
   fParamSpace = 0;
@@ -53,6 +53,7 @@ AliL3HoughTransformer::AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t n_eta
 
 AliL3HoughTransformer::~AliL3HoughTransformer()
 {
+  // Dtor
   DeleteHistograms();
 #ifdef do_mc
   if(fTrackID)
@@ -69,6 +70,7 @@ AliL3HoughTransformer::~AliL3HoughTransformer()
 
 void AliL3HoughTransformer::DeleteHistograms()
 {
+  // Clean up
   if(!fParamSpace)
     return;
   for(Int_t i=0; i<GetNEtaSegments(); i++)
@@ -77,6 +79,7 @@ void AliL3HoughTransformer::DeleteHistograms()
       delete fParamSpace[i];
     }
   delete [] fParamSpace;
+  fParamSpace = 0;
 }
 
 void AliL3HoughTransformer::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t ptres,
@@ -107,7 +110,7 @@ void AliL3HoughTransformer::CreateHistograms(Float_t ptmin,Float_t ptmax,Float_t
     }
 }
 
-void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t pt_min,
+void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t ptmin,
                                             Int_t nybin,Float_t phimin,Float_t phimax)
 {
   //Create the histograms (parameter space).
@@ -115,11 +118,11 @@ void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t pt_min,
   //The arguments give the range and binning; 
   //nxbin = #bins in kappa
   //nybin = #bins in phi0
-  //pt_min = mimium Pt of track (corresponding to maximum kappa)
-  //phi_min = mimimum phi0 
-  //phi_max = maximum phi0 
+  //ptmin = mimium Pt of track (corresponding to maximum kappa)
+  //phimin = mimimum phi0 
+  //phimax = maximum phi0 
     
-  Double_t x = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/pt_min;
+  Double_t x = AliL3Transform::GetBFact()*AliL3Transform::GetBField()/ptmin;
   //Double_t torad = AliL3Transform::Pi()/180;
   
   CreateHistograms(nxbin,-1.*x,x,nybin,phimin/**torad*/,phimax/**torad*/);
@@ -128,6 +131,10 @@ void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t pt_min,
 void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xmax,
                                             Int_t nybin,Float_t ymin,Float_t ymax)
 {
+  //Create the histograms (parameter space).
+  //nxbin = #bins in X
+  //nybin = #bins in Y
+  //xmin xmax ymin ymax = histogram limits in X and Y
   
   fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
   
@@ -144,10 +151,10 @@ void AliL3HoughTransformer::CreateHistograms(Int_t nxbin,Float_t xmin,Float_t xm
     {
       AliL3Histogram *hist = fParamSpace[0];
       Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
-      cout<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(TrackIndex)<<" bytes to fTrackID"<<endl;
-      fTrackID = new TrackIndex*[GetNEtaSegments()];
+      cout<<"Transformer: Allocating "<<GetNEtaSegments()*ncells*sizeof(AliL3TrackIndex)<<" bytes to fTrackID"<<endl;
+      fTrackID = new AliL3TrackIndex*[GetNEtaSegments()];
       for(Int_t i=0; i<GetNEtaSegments(); i++)
-       fTrackID[i] = new TrackIndex[ncells];
+       fTrackID[i] = new AliL3TrackIndex[ncells];
     }
 #endif
 }
@@ -172,12 +179,12 @@ void AliL3HoughTransformer::Reset()
       AliL3Histogram *hist = fParamSpace[0];
       Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
       for(Int_t i=0; i<GetNEtaSegments(); i++)
-       memset(fTrackID[i],0,ncells*sizeof(TrackIndex));
+       memset(fTrackID[i],0,ncells*sizeof(AliL3TrackIndex));
     }
 #endif
 }
 
-Int_t AliL3HoughTransformer::GetEtaIndex(Double_t eta)
+Int_t AliL3HoughTransformer::GetEtaIndex(Double_t eta) const
 {
   //Return the histogram index of the corresponding eta. 
 
@@ -186,7 +193,7 @@ Int_t AliL3HoughTransformer::GetEtaIndex(Double_t eta)
   return (Int_t)index;
 }
 
-void AliL3HoughTransformer::GetEtaIndexes(Double_t eta,Int_t *indexes)
+void AliL3HoughTransformer::GetEtaIndexes(Double_t eta,Int_t *indexes) const
 {
   //Return histogram indexes in case of overlapping etaslices.
   
@@ -204,26 +211,28 @@ void AliL3HoughTransformer::GetEtaIndexes(Double_t eta,Int_t *indexes)
     }
 }
 
-inline AliL3Histogram *AliL3HoughTransformer::GetHistogram(Int_t eta_index)
+AliL3Histogram *AliL3HoughTransformer::GetHistogram(Int_t etaindex)
 {
-  if(!fParamSpace || eta_index >= GetNEtaSegments() || eta_index < 0)
+  // Return a pointer to the histogram which contains etaindex eta slice
+  if(!fParamSpace || etaindex >= GetNEtaSegments() || etaindex < 0)
     return 0;
-  if(!fParamSpace[eta_index])
+  if(!fParamSpace[etaindex])
     return 0;
-  return fParamSpace[eta_index];
+  return fParamSpace[etaindex];
 }
 
-Double_t AliL3HoughTransformer::GetEta(Int_t eta_index,Int_t /*slice*/)
+Double_t AliL3HoughTransformer::GetEta(Int_t etaindex,Int_t /*slice*/) const
 {
-  Double_t eta_slice = (GetEtaMax()-GetEtaMin())/GetNEtaSegments();
+  // Return eta calculated in the middle of the eta slice
+  Double_t etaslice = (GetEtaMax()-GetEtaMin())/GetNEtaSegments();
   Double_t eta=0;
   if(fEtaOverlap)
     {
-      Int_t index = eta_index + 1;
-      eta=(Double_t)((index)*eta_slice);
+      Int_t index = etaindex + 1;
+      eta=(Double_t)((index)*etaslice);
     }
   else
-    eta=(Double_t)((eta_index+0.5)*eta_slice);
+    eta=(Double_t)((etaindex+0.5)*etaslice);
   return eta;
 }
 
@@ -232,9 +241,9 @@ void AliL3HoughTransformer::TransformCircle()
   //Transform the input data with a circle HT.
   //The function loops over all the data, and transforms each pixel with the equations:
   // 
-  //kappa = 2/R*sin(phi - phi0)
+  //kappa = 2/r*sin(phi - phi0)
   //
-  //where R = sqrt(x*x +y*y), and phi = arctan(y/x)
+  //where r = sqrt(x*x +y*y), and phi = arctan(y/x)
   //
   //Each pixel then transforms into a curve in the (kappa,phi0)-space. In order to find
   //which histogram in which the pixel should be transformed, the eta-value is calculated
@@ -283,21 +292,21 @@ void AliL3HoughTransformer::TransformCircle()
          Double_t eta = AliL3Transform::GetEta(xyz);
          
          //Get the corresponding index, which determines which histogram to fill:
-         Int_t eta_index = GetEtaIndex(eta);
+         Int_t etaindex = GetEtaIndex(eta);
                  
-         if(eta_index < 0 || eta_index >= GetNEtaSegments())
+         if(etaindex < 0 || etaindex >= GetNEtaSegments())
            continue;
          
          //Get the correct histogrampointer:
-         AliL3Histogram *hist = fParamSpace[eta_index];
+         AliL3Histogram *hist = fParamSpace[etaindex];
          if(!hist)
            {
-             cerr<<"AliL3HoughTransformer::TransformCircle : Error getting histogram in index "<<eta_index<<endl;
+             cerr<<"AliL3HoughTransformer::TransformCircle : Error getting histogram in index "<<etaindex<<endl;
              continue;
            }
          
          //Do the transformation:
-         Float_t R = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]); 
+         Float_t r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]); 
          Float_t phi = AliL3Transform::GetPhi(xyz);
          
          
@@ -305,7 +314,7 @@ void AliL3HoughTransformer::TransformCircle()
          for(Int_t b=hist->GetFirstYbin(); b<=hist->GetLastYbin(); b++)
            {
              Float_t phi0 = hist->GetBinCenterY(b);
-             Float_t kappa = 2*sin(phi - phi0)/R;
+             Float_t kappa = 2*sin(phi - phi0)/r;
              //hist->Fill(kappa,phi0,(int)rint(log((Float_t)charge)));
              hist->Fill(kappa,phi0,charge);
              //hist->Fill(kappa,phi0,1);
@@ -319,11 +328,11 @@ void AliL3HoughTransformer::TransformCircle()
                      if(label < 0) break;
                      UInt_t c;
                      for(c=0; c<MaxTrack; c++)
-                       if(fTrackID[eta_index][bin].fLabel[c] == label || fTrackID[eta_index][bin].fNHits[c] == 0)
+                       if(fTrackID[etaindex][bin].fLabel[c] == label || fTrackID[etaindex][bin].fNHits[c] == 0)
                          break;
                      if(c == MaxTrack-1) cerr<<"AliL3HoughTransformer::TransformCircle : Array reached maximum!! "<<c<<endl;
-                     fTrackID[eta_index][bin].fLabel[c] = label;
-                     fTrackID[eta_index][bin].fNHits[c]++;
+                     fTrackID[etaindex][bin].fLabel[c] = label;
+                     fTrackID[etaindex][bin].fNHits[c]++;
                    }
                }
 #endif
@@ -335,20 +344,20 @@ void AliL3HoughTransformer::TransformCircle()
     }
 }
 
-struct Digit {
-  Int_t row;
-  Double_t r;
-  Double_t phi;
-  Int_t charge;
-  Digit *next;
+struct AliL3Digit {
+  Int_t fRow; // Digit padrow
+  Double_t fR; // Digit radius in local coordinate system
+  Double_t fPhi; // Digit Phi angle in local coordinate system
+  Int_t fCharge; // Digit charge
+  AliL3Digit *fNext; // Next digit
 };
 
-struct EtaContainer {
-  Digit *first;
-  Digit *last;
+struct AliL3EtaContainer {
+  AliL3Digit *fFirst; //First digit
+  AliL3Digit *fLast; //Last digit
 };
 
-void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
+void AliL3HoughTransformer::TransformCircleC(Int_t *rowrange,Int_t every)
 {
   //Circle transform, using combinations of every 2 points lying
   //on different padrows and within the same etaslice.
@@ -360,10 +369,10 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
   
   Int_t minrow = AliL3Transform::GetFirstRow(GetPatch());
   Int_t maxrow = AliL3Transform::GetLastRow(GetPatch());
-  if(row_range)
+  if(rowrange)
     {
-      minrow = row_range[0];
-      maxrow = row_range[1];
+      minrow = rowrange[0];
+      maxrow = rowrange[1];
       if(minrow < AliL3Transform::GetFirstRow(GetPatch()) || minrow >= AliL3Transform::GetLastRow(GetPatch()))
        minrow = AliL3Transform::GetFirstRow(GetPatch());
       if(maxrow < AliL3Transform::GetFirstRow(GetPatch()) || maxrow >= AliL3Transform::GetLastRow(GetPatch()))
@@ -388,15 +397,15 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
     }
   
   Int_t bound = (GetNEtaSegments()+1)*(AliL3Transform::GetNRows(GetPatch())+1);
-  EtaContainer *etaPt = new EtaContainer[bound];
-  memset(etaPt,0,bound*sizeof(EtaContainer));  
+  AliL3EtaContainer *etaPt = new AliL3EtaContainer[bound];
+  memset(etaPt,0,bound*sizeof(AliL3EtaContainer));  
   
-  Digit *digits = new Digit[counter];
-  cout<<"Allocating "<<counter*sizeof(Digit)<<" bytes to digitsarray"<<endl;
-  memset(digits,0,counter*sizeof(Digit));
+  AliL3Digit *digits = new AliL3Digit[counter];
+  cout<<"Allocating "<<counter*sizeof(AliL3Digit)<<" bytes to digitsarray"<<endl;
+  memset(digits,0,counter*sizeof(AliL3Digit));
 
-  Int_t sector,row,tot_charge,pad,time,charge;
-  Double_t r1,r2,phi1,phi2,eta,kappa,phi_0;
+  Int_t sector,row,totcharge,pad,time,charge;
+  Double_t r1,r2,phi1,phi2,eta,kappa,phi0;
   Float_t xyz[3];
   
   counter=0;
@@ -415,33 +424,33 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
          AliL3Transform::Raw2Local(xyz,sector,row,(Int_t)pad,(Int_t)time);
          eta = AliL3Transform::GetEta(xyz);
          
-         digits[counter].row = i;
-         digits[counter].r = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
-         digits[counter].phi = atan2(xyz[1],xyz[0]);
-         digits[counter].charge = charge;
+         digits[counter].fRow = i;
+         digits[counter].fR = sqrt(xyz[0]*xyz[0] + xyz[1]*xyz[1]);
+         digits[counter].fPhi = atan2(xyz[1],xyz[0]);
+         digits[counter].fCharge = charge;
 
          if(!fEtaOverlap)
            {
-             Int_t eta_index = GetEtaIndex(eta);
+             Int_t etaindex = GetEtaIndex(eta);
              
-             Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + eta_index;
+             Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex;
              
              if(index > 0 && index < bound) 
                {
-                 if(etaPt[index].first == 0)
-                   etaPt[index].first = &digits[counter];
+                 if(etaPt[index].fFirst == 0)
+                   etaPt[index].fFirst = &digits[counter];
                  else
-                   (etaPt[index].last)->next = &digits[counter];
-                 etaPt[index].last = &digits[counter];
+                   (etaPt[index].fLast)->fNext = &digits[counter];
+                 etaPt[index].fLast = &digits[counter];
                }
            }
          else
            {
-             Int_t eta_index[2];
-             GetEtaIndexes(eta,eta_index);
+             Int_t etaindex[2];
+             GetEtaIndexes(eta,etaindex);
              Int_t index[2];
-             index[0] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + eta_index[0];
-             index[1] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + eta_index[1];
+             index[0] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex[0];
+             index[1] = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex[1];
              if(index[0] == index[1])
                {
                  cerr<<"Same etaindexes "<<index[0]<<" "<<index[1]<<endl;
@@ -451,21 +460,21 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
              Int_t ind = index[0];
              if(ind > 0 && ind < bound)
                {
-                 if(etaPt[ind].first == 0)
-                   etaPt[ind].first = &digits[counter];
+                 if(etaPt[ind].fFirst == 0)
+                   etaPt[ind].fFirst = &digits[counter];
                  else
-                   (etaPt[ind].last)->next = &digits[counter];
-                 etaPt[ind].last = &digits[counter];
+                   (etaPt[ind].fLast)->fNext = &digits[counter];
+                 etaPt[ind].fLast = &digits[counter];
                }
              
              ind = index[1];
              if(ind > 0 && ind < bound)
                {
-                 if(etaPt[ind].first == 0)
-                   etaPt[ind].first = &digits[counter];
+                 if(etaPt[ind].fFirst == 0)
+                   etaPt[ind].fFirst = &digits[counter];
                  else
-                   (etaPt[ind].last)->next = &digits[counter];
-                 etaPt[ind].last = &digits[counter];
+                   (etaPt[ind].fLast)->fNext = &digits[counter];
+                 etaPt[ind].fLast = &digits[counter];
                }
            }
 
@@ -476,7 +485,7 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
   
   cout<<"Doing the combinatorics"<<endl;
   
-  Digit *dPt1,*dPt2;
+  AliL3Digit *dPt1,*dPt2;
   
   for(Int_t e=0; e<GetNEtaSegments(); e++)
     {
@@ -484,15 +493,15 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
        {
          Int_t index1 = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + e;
          
-         for(dPt1 = (Digit*)etaPt[index1].first; dPt1 != 0; dPt1 = (Digit*)dPt1->next)
+         for(dPt1 = (AliL3Digit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliL3Digit*)dPt1->fNext)
            {
              for(Int_t j=i+every; j<=maxrow; j+=every)
                {
                  Int_t index2 = (GetNEtaSegments()+1)*(j-AliL3Transform::GetFirstRow(GetPatch())) + e;
                  
-                 for(dPt2 = (Digit*)etaPt[index2].first; dPt2 != 0; dPt2 = (Digit*)dPt2->next)
+                 for(dPt2 = (AliL3Digit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliL3Digit*)dPt2->fNext)
                    {
-                     if(dPt1->row == dPt2->row)
+                     if(dPt1->fRow == dPt2->fRow)
                        {
                          cerr<<"same row; indexes "<<index1<<" "<<index2<<endl;
                          exit(5);
@@ -507,14 +516,14 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
                        }
                      
                      //Do the transform:
-                     r1 = dPt1->r;
-                     phi1 = dPt1->phi;
-                     r2 = dPt2->r;
-                     phi2 = dPt2->phi;
-                     phi_0 = atan( (r2*sin(phi1)-r1*sin(phi2))/(r2*cos(phi1)-r1*cos(phi2)) );
-                     kappa = 2*sin(phi2-phi_0)/r2;
-                     tot_charge = dPt1->charge + dPt2->charge;
-                     hist->Fill(kappa,phi_0,tot_charge);
+                     r1 = dPt1->fR;
+                     phi1 = dPt1->fPhi;
+                     r2 = dPt2->fR;
+                     phi2 = dPt2->fPhi;
+                     phi0 = atan( (r2*sin(phi1)-r1*sin(phi2))/(r2*cos(phi1)-r1*cos(phi2)) );
+                     kappa = 2*sin(phi2-phi0)/r2;
+                     totcharge = dPt1->fCharge + dPt2->fCharge;
+                     hist->Fill(kappa,phi0,totcharge);
                      
                    }
                }
@@ -528,7 +537,7 @@ void AliL3HoughTransformer::TransformCircleC(Int_t *row_range,Int_t every)
 
 }
 
-void AliL3HoughTransformer::TransformLine(Int_t *row_range,Float_t *phirange)
+void AliL3HoughTransformer::TransformLine(Int_t *rowrange,Float_t *phirange)
 {
   //Do a line transform on the data.
 
@@ -543,10 +552,10 @@ void AliL3HoughTransformer::TransformLine(Int_t *row_range,Float_t *phirange)
   
   Int_t minrow = AliL3Transform::GetFirstRow(GetPatch());
   Int_t maxrow = AliL3Transform::GetLastRow(GetPatch());
-  if(row_range)
+  if(rowrange)
     {
-      minrow = row_range[0];
-      maxrow = row_range[1];
+      minrow = rowrange[0];
+      maxrow = rowrange[1];
       if(minrow < AliL3Transform::GetFirstRow(GetPatch()) || minrow >= AliL3Transform::GetLastRow(GetPatch()))
        minrow = AliL3Transform::GetFirstRow(GetPatch());
       if(maxrow < AliL3Transform::GetFirstRow(GetPatch()) || maxrow >= AliL3Transform::GetLastRow(GetPatch()))
@@ -585,17 +594,17 @@ void AliL3HoughTransformer::TransformLine(Int_t *row_range,Float_t *phirange)
                continue;
            }
          Float_t eta = AliL3Transform::GetEta(xyz);
-         Int_t eta_index = GetEtaIndex(eta);//(Int_t)(eta/etaslice);
-         if(eta_index < 0 || eta_index >= GetNEtaSegments())
+         Int_t etaindex = GetEtaIndex(eta);//(Int_t)(eta/etaslice);
+         if(etaindex < 0 || etaindex >= GetNEtaSegments())
            continue;
          
          xyz[0] = xyz[0] - AliL3Transform::Row2X(minrow);
          
          //Get the correct histogram:
-         AliL3Histogram *hist = fParamSpace[eta_index];
+         AliL3Histogram *hist = fParamSpace[etaindex];
          if(!hist)
            {
-             printf("AliL3HoughTransformer::TransformLine : Error getting histogram in index %d\n",eta_index);
+             printf("AliL3HoughTransformer::TransformLine : Error getting histogram in index %d\n",etaindex);
              continue;
            }
          for(Int_t xbin=hist->GetFirstXbin(); xbin<hist->GetLastXbin(); xbin++)
@@ -610,18 +619,19 @@ void AliL3HoughTransformer::TransformLine(Int_t *row_range,Float_t *phirange)
   
 }
 
-struct LDigit {
-  Int_t row;
-  Int_t charge;
-  Float_t y;
-  LDigit *next;
+struct AliL3LDigit {
+  Int_t fRow; // Digit rowpad
+  Int_t fCharge; // Digit charge
+  Float_t fY; // Y position of the digit in the local coor system
+  AliL3LDigit *fNext; // Next digit
 };
-struct LEtaContainer {
-  LDigit *first;
-  LDigit *last;
+struct AliL3LEtaContainer {
+  AliL3LDigit *fFirst; //First digit
+  AliL3LDigit *fLast; //Last digit
 };
 void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
 {
+  //Circle transform ??
   AliL3DigitRowData *tempPt = GetDataPointer();
   if(!tempPt)
     LOG(AliL3Log::kError,"AliL3HoughTransformer::TransformCircleC","Data")
@@ -636,12 +646,12 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
     }
   
   Int_t bound = (GetNEtaSegments()+1)*(AliL3Transform::GetNRows(GetPatch())+1);
-  LEtaContainer *etaPt = new LEtaContainer[bound];
-  memset(etaPt,0,bound*sizeof(LEtaContainer));  
+  AliL3LEtaContainer *etaPt = new AliL3LEtaContainer[bound];
+  memset(etaPt,0,bound*sizeof(AliL3LEtaContainer));  
   
-  LDigit *digits = new LDigit[counter];
-  cout<<"Allocating "<<counter*sizeof(LDigit)<<" bytes to digitsarray"<<endl;
-  memset(digits,0,counter*sizeof(LDigit));
+  AliL3LDigit *digits = new AliL3LDigit[counter];
+  cout<<"Allocating "<<counter*sizeof(AliL3LDigit)<<" bytes to digitsarray"<<endl;
+  memset(digits,0,counter*sizeof(AliL3LDigit));
 
   Int_t sector,row;
   Float_t xyz[3];
@@ -665,20 +675,20 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
          Float_t phi = atan2(xyz[1],xyz[0]);
          if(phi < phirange[0] || phi > phirange[1]) continue;
          
-         digits[counter].row = i;
-         digits[counter].y = xyz[1];
-         digits[counter].charge = charge;
+         digits[counter].fRow = i;
+         digits[counter].fY = xyz[1];
+         digits[counter].fCharge = charge;
          
-         Int_t eta_index = GetEtaIndex(eta);
-         Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + eta_index;
+         Int_t etaindex = GetEtaIndex(eta);
+         Int_t index = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + etaindex;
          
          if(index > 0 && index < bound) 
            {
-             if(etaPt[index].first == 0)
-               etaPt[index].first = &digits[counter];
+             if(etaPt[index].fFirst == 0)
+               etaPt[index].fFirst = &digits[counter];
              else
-               (etaPt[index].last)->next = &digits[counter];
-             etaPt[index].last = &digits[counter];
+               (etaPt[index].fLast)->fNext = &digits[counter];
+             etaPt[index].fLast = &digits[counter];
            }
          counter++;
        }
@@ -687,7 +697,7 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
   
   cout<<"Doing the combinatorics"<<endl;
   
-  LDigit *dPt1,*dPt2;
+  AliL3LDigit *dPt1,*dPt2;
   
   for(Int_t e=0; e<GetNEtaSegments(); e++)
     {
@@ -695,15 +705,15 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
        {
          Int_t index1 = (GetNEtaSegments()+1)*(i-AliL3Transform::GetFirstRow(GetPatch())) + e;
          
-         for(dPt1 = (LDigit*)etaPt[index1].first; dPt1 != 0; dPt1 = (LDigit*)dPt1->next)
+         for(dPt1 = (AliL3LDigit*)etaPt[index1].fFirst; dPt1 != 0; dPt1 = (AliL3LDigit*)dPt1->fNext)
            {
              for(Int_t j=i+1; j<=rowrange[1]; j++)
                {
                  Int_t index2 = (GetNEtaSegments()+1)*(j-AliL3Transform::GetFirstRow(GetPatch())) + e;
                  
-                 for(dPt2 = (LDigit*)etaPt[index2].first; dPt2 != 0; dPt2 = (LDigit*)dPt2->next)
+                 for(dPt2 = (AliL3LDigit*)etaPt[index2].fFirst; dPt2 != 0; dPt2 = (AliL3LDigit*)dPt2->fNext)
                    {
-                     if(dPt1->row == dPt2->row)
+                     if(dPt1->fRow == dPt2->fRow)
                        {
                          cerr<<"same row; indexes "<<index1<<" "<<index2<<endl;
                          exit(5);
@@ -718,10 +728,10 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
                        }
                      
                      //Do the transform:
-                     float x1 = AliL3Transform::Row2X(dPt1->row) - AliL3Transform::Row2X(rowrange[0]);
-                     float x2 = AliL3Transform::Row2X(dPt2->row) - AliL3Transform::Row2X(rowrange[0]);
-                     float y1 = dPt1->y;
-                     float y2 = dPt2->y;
+                     float x1 = AliL3Transform::Row2X(dPt1->fRow) - AliL3Transform::Row2X(rowrange[0]);
+                     float x2 = AliL3Transform::Row2X(dPt2->fRow) - AliL3Transform::Row2X(rowrange[0]);
+                     float y1 = dPt1->fY;
+                     float y2 = dPt2->fY;
                      float theta = atan2(x2-x1,y1-y2);
                      float rho = x1*cos(theta)+y1*sin(theta);
                      hist->Fill(theta,rho,1);//dPt1->charge+dPt2->charge);
@@ -736,38 +746,49 @@ void AliL3HoughTransformer::TransformLineC(Int_t *rowrange,Float_t *phirange)
   delete [] digits;
 }
 
-Int_t AliL3HoughTransformer::GetTrackID(Int_t eta_index,Double_t kappa,Double_t psi)
+#ifdef do_mc
+Int_t AliL3HoughTransformer::GetTrackID(Int_t etaindex,Double_t kappa,Double_t psi) const
 {
+  // Returns the MC label for a given peak found in the Hough space
   if(!fDoMC)
     {
       cerr<<"AliL3HoughTransformer::GetTrackID : Flag switched off"<<endl;
       return -1;
     }
   
-#ifdef do_mc
-  if(eta_index < 0 || eta_index > GetNEtaSegments())
+  if(etaindex < 0 || etaindex > GetNEtaSegments())
     {
-      cerr<<"AliL3HoughTransformer::GetTrackID : Wrong etaindex "<<eta_index<<endl;
+      cerr<<"AliL3HoughTransformer::GetTrackID : Wrong etaindex "<<etaindex<<endl;
       return -1;
     }
-  AliL3Histogram *hist = fParamSpace[eta_index];
+  AliL3Histogram *hist = fParamSpace[etaindex];
   Int_t bin = hist->FindBin(kappa,psi);
   Int_t label=-1;
   Int_t max=0;
   for(UInt_t i=0; i<MaxTrack; i++)
     {
-      Int_t nhits=fTrackID[eta_index][bin].fNHits[i];
+      Int_t nhits=fTrackID[etaindex][bin].fNHits[i];
       if(nhits == 0) break;
       if(nhits > max)
        {
          max = nhits;
-         label = fTrackID[eta_index][bin].fLabel[i];
+         label = fTrackID[etaindex][bin].fLabel[i];
        }
     }
   //nhits = max;
   return label;
-#endif
+#else
+  Int_t AliL3HoughTransformer::GetTrackID(Int_t /*etaindex*/,Double_t /*kappa*/,Double_t /*psi*/) const
+{
+  // Returns the MC label for a given peak found in the Hough space
+  if(!fDoMC)
+    {
+      cerr<<"AliL3HoughTransformer::GetTrackID : Flag switched off"<<endl;
+      return -1;
+    }
+  
   cout<<"AliL3HoughTransformer::GetTrackID : Compile with do_mc flag!"<<endl;
   return -1;
+#endif
 }