return GetBin(xbin,ybin);
}
+Int_t AliL3Histogram::FindLabelBin(Double_t x,Double_t y) const
+{
+ Int_t xbin = FindXbin(x);
+ Int_t ybin = FindYbin(y);
+#ifdef _IFON_
+ if(!xbin || !ybin)
+ return -1;
+#endif
+
+ return GetLabelBin(xbin,ybin);
+}
+
Int_t AliL3Histogram::FindXbin(Double_t x) const
{
if(x < fXmin || x > fXmax)
return xbin + ybin*(fNxbins+2);
}
+Int_t AliL3Histogram::GetLabelBin(Int_t xbin,Int_t ybin) const
+{
+ if(xbin < fFirstXbin || xbin > fLastXbin)
+ return -1;
+ if(ybin < fFirstYbin || ybin > fLastYbin)
+ return -1;
+
+ return (Int_t)(xbin/2) + ((Int_t)(ybin/2))*((Int_t)((fNxbins+3)/2));
+}
+
Int_t AliL3Histogram::GetBinContent(Int_t bin) const
{
if(bin >= fNcells)
virtual void Fill(Int_t xbin,Double_t y,Int_t weight=1);
virtual void Fill(Int_t xbin,Int_t ybin,Int_t weight=1);
virtual Int_t FindBin(Double_t x,Double_t y) const;
+ virtual Int_t FindLabelBin(Double_t x,Double_t y) const;
virtual Int_t FindXbin(Double_t x) const;
virtual Int_t FindYbin(Double_t y) const;
Int_t GetBin(Int_t xbin,Int_t ybin) const;
+ Int_t GetLabelBin(Int_t xbin,Int_t ybin) const;
Int_t GetBinContent(Int_t bin) const;
void SetBinContent(Int_t xbin,Int_t ybin,Int_t value);
void SetBinContent(Int_t bin,Int_t value);
if(fDoMC)
{
AliL3Histogram *hist = fParamSpace[0];
- Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
+ Int_t ncellsx = (hist->GetNbinsX()+3)/2;
+ Int_t ncellsy = (hist->GetNbinsY()+3)/2;
+ Int_t ncells = ncellsx*ncellsy;
if(!fTrackID)
{
LOG(AliL3Log::kInformational,"AliL3HoughTransformerRow::CreateHistograms()","")
if(fDoMC)
{
AliL3Histogram *hist = fParamSpace[0];
- Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2);
+ Int_t ncellsx = (hist->GetNbinsX()+3)/2;
+ Int_t ncellsy = (hist->GetNbinsY()+3)/2;
+ Int_t ncells = ncellsx*ncellsy;
for(Int_t i=0; i<GetNEtaSegments(); i++)
memset(fTrackID[i],0,ncells*sizeof(TrackIndex));
}
Int_t label = eta_clust[eta_index].mc_labels[t];
if(label == 0) break;
UInt_t c;
- Int_t temp_bin2 = b*nbinx + bin;
+ Int_t temp_bin2 = ((Int_t)(b/2))*((Int_t)((nbinx+1)/2)) + (Int_t)(bin/2);
for(c=0; c<(MaxTrack-1); c++)
if(fTrackID[eta_index][temp_bin2].fLabel[c] == label || fTrackID[eta_index][temp_bin2].fNHits[c] == 0)
break;
Int_t label = eta_clust[eta_index].mc_labels[t];
if(label == 0) break;
UInt_t c;
- Int_t temp_bin2 = b*nbinx + bin;
+ Int_t temp_bin2 = ((Int_t)(b/2))*((Int_t)((nbinx+1)/2)) + (Int_t)(bin/2);
for(c=0; c<(MaxTrack-1); c++)
if(fTrackID[eta_index][temp_bin2].fLabel[c] == label || fTrackID[eta_index][temp_bin2].fNHits[c] == 0)
break;
return -1;
}
AliL3Histogram *hist = fParamSpace[eta_index];
- Int_t bin = hist->FindBin(kappa,psi);
+ Int_t bin = hist->FindLabelBin(kappa,psi);
+ if(bin==-1) {
+ LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackID()","")
+ <<"Track candidate outside Hough space boundaries: "<<kappa<<" "<<psi<<ENDLOG;
+ return -1;
+ }
Int_t label=-1;
Int_t max=0;
for(UInt_t i=0; i<(MaxTrack-1); i++)
}
}
}
- // cout<<" TrackID label "<<label<<" max "<<max<<" label2 "<<label2<<" max2 "<<max2<<" "<<(Float_t)max2/(Float_t)max<<" "<<fTrackID[eta_index][bin].fLabel[MaxTrack-1]<<" "<<(Int_t)fTrackID[eta_index][bin].fNHits[MaxTrack-1]<<endl;
+ LOG(AliL3Log::kDebug,"AliL3HoughTransformerRow::GetTrackID()","")
+ <<" TrackID"<<" label "<<label<<" max "<<max<<" label2 "<<label2<<" max2 "<<max2<<" "<<(Float_t)max2/(Float_t)max<<" "<<fTrackID[eta_index][bin].fLabel[MaxTrack-1]<<" "<<(Int_t)fTrackID[eta_index][bin].fNHits[MaxTrack-1]<<ENDLOG;
return label;
#endif
LOG(AliL3Log::kWarning,"AliL3HoughTransformerRow::GetTrackID()","")