// get detector for this tracklet
AliTRDcluster *cl = 0x0;
- Int_t ic = 0; do; while(!(cl = tracklet->GetClusters(ic++)));
+ Int_t ic = 0; do {} while(!(cl = tracklet->GetClusters(ic++)));
Int_t idet = cl->GetDetector();
Double_t local[3];
// update calibration references using this track
if(calibra->GetHisto2d()) calibra->UpdateHistogramsV1(&track);
// save calibration object
+ if (fReconstructor->GetStreamLevel(AliTRDReconstructor::kTracker) > 0 /*&& quality TODO*/){
+ AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(track);
+ calibTrack->SetOwner();
+ seed->AddCalibObject(calibTrack);
+ }
+ //update ESD track
if ((track.GetNumberOfClusters() > 15) && (track.GetNumberOfClusters() > 0.5*expectedClr)) {
seed->UpdateTrackParams(&track, AliESDtrack::kTRDout);
-
track.UpdateESDtrack(seed);
-
- // Add TRD track to ESDfriendTrack
- if (fReconstructor->GetStreamLevel(AliTRDReconstructor::kTracker) > 0 /*&& quality TODO*/){
- AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(track);
- calibTrack->SetOwner();
- seed->AddCalibObject(calibTrack);
- }
}
}
// Get material budget
Double_t param[7];
- AliTracker::MeanMaterialBudget(xyz0, xyz1, param);
+ if(AliTracker::MeanMaterialBudget(xyz0, xyz1, param)<=0.) break;
Double_t xrho= param[0]*param[4];
Double_t xx0 = param[1]; // Get mean propagation parameters
if((x = fTrSec[sector].GetX(ilayer)) < 1.) continue;
- if (!t.GetProlongation(x, y, z)) return -nClustersExpected;
+ if (!t.GetProlongation(x, y, z)) return -1/*nClustersExpected*/;
Int_t stack = fGeom->GetStack(z, ilayer);
Int_t nCandidates = stack >= 0 ? 1 : 2;
z -= stack >= 0 ? 0. : 4.;
t.SetStopped(kTRUE);
return nClustersExpected;
}
- if(!tracklet.AttachClustersIter(chamber, 1000.)) continue;
+ if(!tracklet.AttachClustersIter(chamber, 1000./*, kTRUE*/)) continue;
tracklet.Init(&t);
if(tracklet.GetN() < fgNTimeBins*fReconstructor->GetRecoParam() ->GetFindableClusters()) continue;
}
if(!ptrTracklet->IsOK()){
if(x < 1.) continue; //temporary
- if(!PropagateToX(t, x-fgkMaxStep, fgkMaxStep)) return -nClustersExpected;
- if(!AdjustSector(&t)) return -nClustersExpected;
- if(TMath::Abs(t.GetSnp()) > fgkMaxSnp) return -nClustersExpected;
+ if(!PropagateToX(t, x-fgkMaxStep, fgkMaxStep)) return -1/*nClustersExpected*/;
+ if(!AdjustSector(&t)) return -1/*nClustersExpected*/;
+ if(TMath::Abs(t.GetSnp()) > fgkMaxSnp) return -1/*nClustersExpected*/;
continue;
}
// Propagate closer to the current chamber if neccessary
x -= clength;
- if (x > (fgkMaxStep + t.GetX()) && !PropagateToX(t, x-fgkMaxStep, fgkMaxStep)) return -nClustersExpected;
- if (!AdjustSector(&t)) return -nClustersExpected;
- if (TMath::Abs(t.GetSnp()) > fgkMaxSnp) return -nClustersExpected;
+ if (x > (fgkMaxStep + t.GetX()) && !PropagateToX(t, x-fgkMaxStep, fgkMaxStep)) return -1/*nClustersExpected*/;
+ if (!AdjustSector(&t)) return -1/*nClustersExpected*/;
+ if (TMath::Abs(t.GetSnp()) > fgkMaxSnp) return -1/*nClustersExpected*/;
// load tracklet to the tracker and the track
ptrTracklet = SetTracklet(ptrTracklet);
t.GetXYZ(xyz0);
alpha = t.GetAlpha();
x = ptrTracklet->GetX0();
- if (!t.GetProlongation(x, y, z)) return -nClustersExpected;
+ if (!t.GetProlongation(x, y, z)) return -1/*nClustersExpected*/;
Double_t xyz1[3]; // exit point
xyz1[0] = x * TMath::Cos(alpha) - y * TMath::Sin(alpha);
xyz1[1] = +x * TMath::Sin(alpha) + y * TMath::Cos(alpha);
xyz1[2] = z;
Double_t param[7];
- AliTracker::MeanMaterialBudget(xyz0, xyz1, param);
+ if(AliTracker::MeanMaterialBudget(xyz0, xyz1, param)<=0.) return -1;
// The mean propagation parameters
Double_t xrho = param[0]*param[4]; // density*length
Double_t xx0 = param[1]; // radiation length
// Propagate and update track
- if (!t.PropagateTo(x, xx0, xrho)) return -nClustersExpected;
- if (!AdjustSector(&t)) return -nClustersExpected;
+ if (!t.PropagateTo(x, xx0, xrho)) return -1/*nClustersExpected*/;
+ if (!AdjustSector(&t)) return -1/*nClustersExpected*/;
Double_t maxChi2 = t.GetPredictedChi2(ptrTracklet);
- if (!t.Update(ptrTracklet, maxChi2)) return -nClustersExpected;
+ if (!t.Update(ptrTracklet, maxChi2)) return -1/*nClustersExpected*/;
if (maxChi2<1e+10) {
nClustersExpected += ptrTracklet->GetN();
//t.SetTracklet(&tracklet, index);
Double_t c = fitter->GetParameter(2);
Double_t y0 = 1. / a;
Double_t x0 = -b * y0;
- Double_t R = TMath::Sqrt(y0*y0 + x0*x0 - c*y0);
+ Double_t tmp = y0*y0 + x0*x0 - c*y0;
+ if(tmp<=0.) return 1.E10;
+ Double_t R = TMath::Sqrt(tmp);
Double_t C = 1.0 + b*b - c*a;
if (C > 0.0) C = a / TMath::Sqrt(C);
if(!track){
for(Int_t ip = 0; ip < kNPlanes; ip++) {
x = tracklets[ip].GetX0();
- Double_t tmp = TMath::Sqrt(R*R-(x-x0)*(x-x0));
+ tmp = R*R-(x-x0)*(x-x0);
+ if(tmp <= 0.) continue;
+ tmp = TMath::Sqrt(tmp);
// y: R^2 = (x - x0)^2 + (y - y0)^2
// => y = y0 +/- Sqrt(R^2 - (x - x0)^2)
Float_t xyz[3];
for(int ip=0; ip<np; ip++){
points[ip].GetXYZ(xyz);
- xyz[1] = y0 - (y0>0.?1.:-1)*TMath::Sqrt(R*R-(xyz[0]-x0)*(xyz[0]-x0));
+ xyz[1] = y0 - (y0>0.?1.:-1.)*TMath::Sqrt(R*R-(xyz[0]-x0)*(xyz[0]-x0));
xyz[2] = z0 + dzdx * (xyz[0] - xref);
points[ip].SetXYZ(xyz);
}
}
-/* if(fReconstructor->GetStreamLevel() >=5){
- TTreeSRedirector &cstreamer = *fgDebugStreamer;
- Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber();
- Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber();
- Double_t chi2z = CalculateChi2Z(tracklets, z0, dzdx, xref);
- cstreamer << "FitRiemanTilt"
- << "EventNumber=" << eventNumber
- << "CandidateNumber=" << candidateNumber
- << "xref=" << xref
- << "Chi2Z=" << chi2z
- << "\n";
- }*/
return chi2;
}
xyz1[1] = +x * TMath::Sin(alpha) + y * TMath::Cos(alpha);
xyz1[2] = z;
Double_t param[7];
- AliTracker::MeanMaterialBudget(xyz0, xyz1, param);
+ if(AliTracker::MeanMaterialBudget(xyz0, xyz1, param)<=0.) break;
Double_t xrho = param[0]*param[4]; // density*length
Double_t xx0 = param[1]; // radiation length
// Calculate the mean material budget between start and
// end point of this prolongation step
- AliTracker::MeanMaterialBudget(xyz0, xyz1, param);
+ if(AliTracker::MeanMaterialBudget(xyz0, xyz1, param)<=0.) return 0;
// Propagate the track to the X-position after the next step
if (!t.PropagateTo(x,param[1],param[0]*param[4])) {
if(TMath::Abs(sseed[jseed].GetYfit(1) - sseed[jseed].GetYfit(1)) >= .2) continue; // check this condition with Marian
sseed[jseed].UseClusters();
if(!cl){
- Int_t ic = 0;
+ ic = 0;
while(!(cl = sseed[jseed].GetClusters(ic))) ic++;
clusterIndex = sseed[jseed].GetIndexes(ic);
}