ClassImp(AliL3HoughTransformerRow)
-Float_t AliL3HoughTransformerRow::fgBeta1 = 1.0/AliL3Transform::Row2X(79);
+Float_t AliL3HoughTransformerRow::fgBeta1 = 1.0/AliL3Transform::Row2X(84);
Float_t AliL3HoughTransformerRow::fgBeta2 = 1.0/(AliL3Transform::Row2X(158)*(1.0+tan(AliL3Transform::Pi()*10/180)*tan(AliL3Transform::Pi()*10/180)));
AliL3HoughTransformerRow::AliL3HoughTransformerRow()
AliL3HoughTransformerRow::~AliL3HoughTransformerRow()
{
//Destructor
- DeleteHistograms();
if(fLastTransformer) return;
+ DeleteHistograms();
#ifdef do_mc
if(fTrackID)
{
//nxbin = #bins in X
//nybin = #bins in Y
//xmin xmax ymin ymax = histogram limits in X and Y
+ if(fLastTransformer) {
+ SetTransformerArrays((AliL3HoughTransformerRow *)fLastTransformer);
+ return;
+ }
fParamSpace = new AliL3Histogram*[GetNEtaSegments()];
Char_t histname[256];
sprintf(histname,"paramspace_%d",i);
fParamSpace[i] = new AliL3Histogram(histname,"",nxbin,xmin,xmax,nybin,ymin,ymax);
}
-
- if(fLastTransformer) {
- SetTransformerArrays((AliL3HoughTransformerRow *)fLastTransformer);
- return;
- }
#ifdef do_mc
{
AliL3Histogram *hist = fParamSpace[0];
Float_t psi = atan((xtrack-ytrack)/(fgBeta1-fgBeta2));
Float_t kappa = 2.0*(xtrack*cos(psi)-fgBeta1*sin(psi));
track.SetTrackParameters(kappa,psi,1);
- Bool_t firstrow = kFALSE;
- UInt_t curfirstrow = 0;
- UInt_t curlastrow = 0;
+ maxtrackpt = track.GetPt();
+ if(maxtrackpt < 0.9*0.1*AliL3Transform::GetSolenoidField())
+ {
+ maxfirstrow = maxlastrow = 0;
+ curtracklength->fIsFilled = kTRUE;
+ curtracklength->fFirstRow = maxfirstrow;
+ curtracklength->fLastRow = maxlastrow;
+ curtracklength->fTrackPt = maxtrackpt;
+ }
+ else
+ {
+ Bool_t firstrow = kFALSE;
+ UInt_t curfirstrow = 0;
+ UInt_t curlastrow = 0;
- Double_t centerx = track.GetCenterX();
- Double_t centery = track.GetCenterY();
- Double_t radius = track.GetRadius();
+ Double_t centerx = track.GetCenterX();
+ Double_t centery = track.GetCenterY();
+ Double_t radius = track.GetRadius();
- for(Int_t j=AliL3Transform::GetFirstRow(0); j<=AliL3Transform::GetLastRow(5); j++)
- {
- Float_t hit[3];
- // if(!track.GetCrossingPoint(j,hit)) continue;
- hit[0] = AliL3Transform::Row2X(j);
- Double_t aa = (hit[0] - centerx)*(hit[0] - centerx);
- Double_t r2 = radius*radius;
- if(aa > r2)
- continue;
-
- Double_t aa2 = sqrt(r2 - aa);
- Double_t y1 = centery + aa2;
- Double_t y2 = centery - aa2;
- hit[1] = y1;
- if(fabs(y2) < fabs(y1)) hit[1] = y2;
+ for(Int_t j=AliL3Transform::GetFirstRow(0); j<=AliL3Transform::GetLastRow(5); j++)
+ {
+ Float_t hit[3];
+ // if(!track.GetCrossingPoint(j,hit)) continue;
+ hit[0] = AliL3Transform::Row2X(j);
+ Double_t aa = (hit[0] - centerx)*(hit[0] - centerx);
+ Double_t r2 = radius*radius;
+ if(aa > r2)
+ continue;
+
+ Double_t aa2 = sqrt(r2 - aa);
+ Double_t y1 = centery + aa2;
+ Double_t y2 = centery - aa2;
+ hit[1] = y1;
+ if(fabs(y2) < fabs(y1)) hit[1] = y2;
- hit[2] = 0;
+ hit[2] = 0;
- AliL3Transform::LocHLT2Raw(hit,0,j);
- hit[1] += 0.5;
- if(hit[1]>=0 && hit[1]<AliL3Transform::GetNPads(j))
- {
- if(!firstrow) {
- curfirstrow = j;
- firstrow = kTRUE;
- }
- curlastrow = j;
- }
- else {
- if(firstrow) {
- firstrow = kFALSE;
- if((curlastrow-curfirstrow) >= (maxlastrow-maxfirstrow)) {
- maxfirstrow = curfirstrow;
- maxlastrow = curlastrow;
+ AliL3Transform::LocHLT2Raw(hit,0,j);
+ hit[1] += 0.5;
+ if(hit[1]>=0 && hit[1]<AliL3Transform::GetNPads(j))
+ {
+ if(!firstrow) {
+ curfirstrow = j;
+ firstrow = kTRUE;
+ }
+ curlastrow = j;
+ }
+ else {
+ if(firstrow) {
+ firstrow = kFALSE;
+ if((curlastrow-curfirstrow) >= (maxlastrow-maxfirstrow)) {
+ maxfirstrow = curfirstrow;
+ maxlastrow = curlastrow;
+ }
+ }
}
}
+ if((curlastrow-curfirstrow) >= (maxlastrow-maxfirstrow)) {
+ maxfirstrow = curfirstrow;
+ maxlastrow = curlastrow;
}
- }
- if((curlastrow-curfirstrow) >= (maxlastrow-maxfirstrow)) {
- maxfirstrow = curfirstrow;
- maxlastrow = curlastrow;
- }
-
- maxtrackpt = track.GetPt();
- curtracklength->fIsFilled = kTRUE;
- curtracklength->fFirstRow = maxfirstrow;
- curtracklength->fLastRow = maxlastrow;
- curtracklength->fTrackPt = maxtrackpt;
-
+ curtracklength->fIsFilled = kTRUE;
+ curtracklength->fFirstRow = maxfirstrow;
+ curtracklength->fLastRow = maxlastrow;
+ curtracklength->fTrackPt = maxtrackpt;
+ }
}
if((maxlastrow-maxfirstrow) < fTrackNRows[xbin + ybin*nxbins]) {
fTrackNRows[xbin + ybin*nxbins] = maxlastrow-maxfirstrow;
void AliL3HoughTransformerRow::Reset()
{
//Reset all the histograms. Should be done when processing new slice
-
+ if(fLastTransformer) return;
if(!fParamSpace)
{
LOG(AliL3Log::kWarning,"AliL3HoughTransformer::Reset","Histograms")
fLUTbackwardZ = tr->fLUTbackwardZ;
fLUTbackwardZ2 = tr->fLUTbackwardZ2;
+ fParamSpace = tr->fParamSpace;
+
return;
}