//$Id$ // Author: Constantin Loizides //*-- Copyright & copy CL #include "AliL3StandardIncludes.h" #include "AliL3Logging.h" #include "AliL3HoughTransformerLUT.h" #include "AliL3Transform.h" #include "AliL3MemHandler.h" #include "AliL3DigitData.h" #include "AliL3Histogram.h" #if GCCVERSION == 3 using namespace std; #endif //_____________________________________________________________ // AliL3HoughTransformerLUT // // Hough transformation class using Look-UP-Tables // ClassImp(AliL3HoughTransformerLUT) AliL3HoughTransformerLUT::AliL3HoughTransformerLUT() : AliL3HoughBaseTransformer() { fMinRow=0; fMaxRow=0; fNRows=0; fNEtas=0; fNPhi0=0; fSector=0; fSlice=0; fSectorRow=0; fZSign=0; fZLengthPlusOff=0; fTimeWidth=0; fPadPitch=0; fEtaSlice=0; fLUTX=0; fLUTY=0; fLUTEta=0; fLUTphi0=0; fLUT2sinphi0=0; fLUT2cosphi0=0; fLUTKappa=0; fLastPad=0; fLastIndex=0; } AliL3HoughTransformerLUT::AliL3HoughTransformerLUT(Int_t slice,Int_t patch,Int_t n_eta_segments) : AliL3HoughBaseTransformer(slice,patch,n_eta_segments) { fMinRow=0; fMaxRow=0; fNRows=0; fNEtas=0; fNPhi0=0; fSector=0; fSectorRow=0; fZSign=0; fZLengthPlusOff=0; fTimeWidth=0; fPadPitch=0; fEtaSlice=0; fLUTX=0; fLUTY=0; fLUTEta=0; fLUTphi0=0; fLUT2sinphi0=0; fLUT2cosphi0=0; fLUTKappa=0; fLastPad=0; fLastIndex=0; Init(slice,patch,n_eta_segments); } AliL3HoughTransformerLUT::~AliL3HoughTransformerLUT() { DeleteHistograms(); #ifdef do_mc if(fTrackID) { for(Int_t i=0; i Error: Number of Etas must be equal!" << endl; exit(1); } AliL3Transform::Slice2Sector(slice,fMinRow,fSector,fSectorRow); fZSign = slice < 18 ? 1:-1; fSlice = slice; fZLengthPlusOff=AliL3Transform::GetZLength()+AliL3Transform::GetZOffset(); fTimeWidth=AliL3Transform::GetZWidth(); fPadPitch=0; if(fSector etas fLUTEta=new Float_t[fNEtas]; for(Int_t rr=0;rrGetNbinsX()+2)*(hist->GetNbinsY()+2); cout<<"Allocating "<Reset(); #ifdef do_mc if(fDoMC) { AliL3Histogram *hist = fParamSpace[0]; Int_t ncells = (hist->GetNbinsX()+2)*(hist->GetNbinsY()+2); for(Int_t i=0; i=0)&&(rz2>fLUTEta[index])){ index--; } } //cout << start << " - " << index << ": " << rz2 << " " << fLUTEta[index] << endl; return index; } inline AliL3Histogram *AliL3HoughTransformerLUT::GetHistogram(Int_t eta_index) { if(!fParamSpace || eta_index >= fNEtas || eta_index < 0) return 0; if(!fParamSpace[eta_index]) return 0; return fParamSpace[eta_index]; } Float_t AliL3HoughTransformerLUT::CalcRoverZ2(Float_t eta) { Float_t e=exp(2*eta); Float_t ret=(e+1)/(e-1); ret*=ret; return ret; } Float_t AliL3HoughTransformerLUT::CalcEta(Float_t roverz2) { Float_t rz=sqrt(roverz2); if(fZSign<0) rz=-rz; Float_t ret=(1+rz)/(rz-1); ret=0.5*log(ret); return ret; } Float_t AliL3HoughTransformerLUT::CalcX(Int_t row) { return fLUTX[row]; } Float_t AliL3HoughTransformerLUT::CalcY(Int_t pad,Int_t row) { return pad*fPadPitch-fLUTY[row]; } Float_t AliL3HoughTransformerLUT::CalcZ(Int_t time) { Float_t ret=time*fTimeWidth; if(fZSign>0) ret=fZLengthPlusOff-ret; else ret=ret-fZLengthPlusOff; return ret; } Double_t AliL3HoughTransformerLUT::GetEta(Int_t eta_index,Int_t slice) { if(eta_index >= fNEtas || eta_index < 0){ //LOG(AliL3Log::kWarning,"AliL3HoughTransformerLUT::GetEta","Index") << "Index out of range."<fDigitData; if(i != (Int_t)tempPt->fRow) { LOG(AliL3Log::kError,"AliL3HoughTransformerLUT::TransformCircle","Data") <<"AliL3HoughTransformerLUT::TransformCircle : Mismatching padrow numbering "<= fNEtas){ //LOG(AliL3Log::kWarning,"AliL3HoughTransformerLUT::TransformCircle","Histograms")<<"No histograms corresponding to eta index value of "<Fill(kappa,fLUTphi0[b],charge); //cout << kappa << " " << fLUTphi0[b] << " " << charge << endl; #ifdef do_mcc if(fDoMC) { Int_t bin = hist->FindBin(kappa,phi0); for(Int_t t=0; t<3; t++) { Int_t label = digPt[j].fTrackID[t]; if(label < 0) break; UInt_t c; for(c=0; c fNEtas) { cerr<<"AliL3HoughTransformer::GetTrackID : Wrong etaindex "<FindBin(kappa,psi); Int_t label=-1; Int_t max=0; for(UInt_t i=0; i max) { max = nhits; label = fTrackID[eta_index][bin].fLabel[i]; } } return label; #endif cout<<"AliL3HoughTransformer::GetTrackID : Compile with do_mc flag!"<