X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TRD%2FAliTRDtrackerV1.cxx;h=cca2e272c60cdff952b2577fc3d13ea8ca7fa72c;hb=f3c8e1f4b06d3388003b532098b09c685ebd6d1e;hp=3dbadd98800202a14b7d34539dce5b6b1b7162d2;hpb=0706fcbe50db4d8163cf297c5c5bb07af3f44094;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDtrackerV1.cxx b/TRD/AliTRDtrackerV1.cxx index 3dbadd98800..cca2e272c60 100644 --- a/TRD/AliTRDtrackerV1.cxx +++ b/TRD/AliTRDtrackerV1.cxx @@ -374,7 +374,7 @@ Int_t AliTRDtrackerV1::PropagateBack(AliESDEvent *event) // update calibration references using this track if(calibra->GetHisto2d()) calibra->UpdateHistogramsV1(&track); // save calibration object - if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0) { + if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ) { AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(track); calibTrack->SetOwner(); seed->AddCalibObject(calibTrack); @@ -516,7 +516,7 @@ Int_t AliTRDtrackerV1::RefitInward(AliESDEvent *event) Double_t xTPC = 250.0; if(FollowProlongation(track)){ // Update the friend track - if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){ + if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ){ TObject *o = NULL; Int_t ic = 0; AliTRDtrackV1 *calibTrack = NULL; while((o = seed->GetCalibObject(ic++))){ @@ -624,6 +624,7 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t) Double_t cov[3]; tracklet->GetCovAt(x, cov); Double_t p[2] = { tracklet->GetY(), tracklet->GetZ()}; Double_t chi2 = ((AliExternalTrackParam)t).GetPredictedChi2(p, cov); + if(fkReconstructor->IsDebugStreaming()){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); @@ -638,11 +639,19 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t) << "vcov.="<<&vcov << "vpar.="<<&vpar << "tracklet.=" << tracklet + << "chi2="<< chi2 << "param0.=" << ¶m0 << "param1.=" << ¶m1 << "\n"; } - if (chi2 < 1e+10 && ((AliExternalTrackParam&)t).Update(p, cov)){ + /* + AliInfo(Form("Pl:%d X:%+e : %+e P: %+e %+e Cov:%+e %+e %+e -> dXY: %+e %+e | chi2:%.2f pT:%.2f alp:%.3f", + iplane,x,t.GetX(),p[0],p[1],cov[0],cov[1],cov[2], + p[0]-t.GetY(),p[1]-t.GetZ(), + chi2,t.Pt()*t.Charge(),t.GetAlpha())); + */ + if (chi2 < fkRecoParam->GetChi2Cut() && ((AliExternalTrackParam&)t).Update(p, cov)){ // MI parameterizad chi2 cut 03.05.2014 + // if (chi2 < 1e+10 && ((AliExternalTrackParam&)t).Update(p, cov)){ // Register info to track t.SetNumberOfClusters(); t.UpdateChi2(chi2); @@ -650,7 +659,7 @@ Int_t AliTRDtrackerV1::FollowProlongation(AliTRDtrackV1 &t) } } - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1){ + if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 || AliTRDReconstructor::GetStreamLevel()>1){ Int_t index; for(int iplane=0; iplaneIsDebugStreaming() ? fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) : 0; + if ( AliTRDReconstructor::GetStreamLevel()>0) debugLevel= AliTRDReconstructor::GetStreamLevel(); TTreeSRedirector *cstreamer = fkReconstructor->IsDebugStreaming() ? fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker) : 0x0; Bool_t kStoreIn(kTRUE), // toggel store track params. at TRD entry @@ -865,6 +875,7 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) continue; } + Float_t prod(t.GetBz()*t.Charge()); ptrTracklet = tracklets[ily]; if(!ptrTracklet){ // BUILD TRACKLET AliDebug(3, Form("Building tracklet det[%d]", det)); @@ -898,6 +909,8 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) ptrTracklet->SetKink(t.IsKink()); ptrTracklet->SetPrimary(t.IsPrimary()); ptrTracklet->SetPadPlane(fGeom->GetPadPlane(ily, stk)); + //set first approximation of radial position of anode wire corresponding to middle chamber y=0, z=0 + // the uncertainty is given by the actual position of the tracklet (y,z) and chamber inclination ptrTracklet->SetX0(glb[0]+driftLength); if(!ptrTracklet->Init(&t)){ n=-1; @@ -908,7 +921,6 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) // Select attachment base on track to B field sign not only track charge which is buggy // mark kFALSE same sign tracks and kTRUE opposite sign tracks // A.Bercuci 3.11.2011 - Float_t prod(t.GetBz()*t.Charge()); if(!ptrTracklet->AttachClusters(chamber, kTRUE, prod<0.?kTRUE:kFALSE, fEventInFile)){ t.SetErrStat(AliTRDtrackV1::kNoAttach, ily); if(debugLevel>3){ @@ -940,15 +952,19 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) } else AliDebug(2, Form("Use external tracklet ly[%d]", ily)); // propagate track to the radial position of the tracklet - // fit tracklet + // fit tracklet in the local chamber coordinate system // tilt correction options // 0 : no correction // 2 : pseudo tilt correction - if(!ptrTracklet->FitRobust(t.Charge()>0?kTRUE:kFALSE)){ + if(!ptrTracklet->FitRobust(fGeom->GetPadPlane(ily, stk), matrix, t.GetBz(), t.Charge())){ t.SetErrStat(AliTRDtrackV1::kNoFit, ily); AliDebug(4, "Failed Tracklet Fit"); continue; } + // Calculate tracklet position in tracking coordinates + // A.Bercuci 27.11.2013 + ptrTracklet->SetXYZ(matrix); + x = ptrTracklet->GetX(); //GetX0(); if(x > (AliTRDReconstructor::GetMaxStep() + t.GetX()) && !PropagateToX(t, x, AliTRDReconstructor::GetMaxStep())) { n=-1; @@ -971,23 +987,13 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) Double_t cov[3]; ptrTracklet->GetCovAt(x, cov); Double_t p[2] = { ptrTracklet->GetY(), ptrTracklet->GetZ()}; Double_t chi2 = ((AliExternalTrackParam)t).GetPredictedChi2(p, cov); - // update Kalman with the TRD measurement - if(chi2>1e+10){ // TODO - t.SetErrStat(AliTRDtrackV1::kChi2, ily); - if(debugLevel > 2){ - UChar_t status(t.GetStatusTRD()); - AliTRDseedV1 trackletCp(*ptrTracklet); - AliTRDtrackV1 trackCp(t); - trackCp.SetOwner(); - (*cstreamer) << "FollowBackProlongation3" - << "status=" << status - << "tracklet.=" << &trackletCp - << "track.=" << &trackCp - << "\n"; - } - AliDebug(4, Form("Failed Chi2[%f]", chi2)); - continue; - } + /* + AliInfo(Form("Pl:%d X:%+e : %+e P: %+e %+e Cov:%+e %+e %+e -> dXY: %+e %+e | chi2:%.2f pT:%.2f alp:%.3f", + ily,x,t.GetX(),p[0],p[1],cov[0],cov[1],cov[2], + p[0]-t.GetY(),p[1]-t.GetZ(), + chi2,t.Pt()*t.Charge(),t.GetAlpha())); + */ + if(fkReconstructor->IsDebugStreaming()){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); // TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); @@ -1006,8 +1012,25 @@ Int_t AliTRDtrackerV1::FollowBackProlongation(AliTRDtrackV1 &t) << "param0.=" << ¶m0 << "param1.=" << ¶m1 << "\n"; + } + + // update Kalman with the TRD measurement + if (chi2> fkRecoParam->GetChi2Cut()){ // MI parameterizad chi2 cut 03.05.2014 + t.SetErrStat(AliTRDtrackV1::kChi2, ily); + if(debugLevel > 2){ + UChar_t status(t.GetStatusTRD()); + AliTRDseedV1 trackletCp(*ptrTracklet); + AliTRDtrackV1 trackCp(t); + trackCp.SetOwner(); + (*cstreamer) << "FollowBackProlongation3" + << "status=" << status + << "tracklet.=" << &trackletCp + << "track.=" << &trackCp + << "\n"; + } + AliDebug(4, Form("Failed Chi2[%f]", chi2)); + continue; } - // mark track as entering the FIDUCIAL volume of TRD if(kStoreIn){ t.SetTrackIn(); @@ -1859,7 +1882,7 @@ Int_t AliTRDtrackerV1::PropagateToX(AliTRDtrackV1 &t, Double_t xToGo, Double_t m { // // Starting from current X-position of track this function - // extrapolates the track up to radial position . + // extrapolates the track up to radial position in steps of . // Returns 1 if track reaches the plane, and 0 otherwise // @@ -2273,7 +2296,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksSM(Int_t sector, AliESDEvent *esd) Int_t id = esd->AddTrack(esdTrack); // set ESD id to stand alone TRD tracks - if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){ + if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ){ esdTrack=esd->GetTrack(id); TObject *o(NULL); Int_t ic(0); AliTRDtrackV1 *calibTrack(NULL); @@ -2341,7 +2364,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon // Build initial seeding configurations Double_t quality = BuildSeedingConfigs(stack, configs); - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10){ + if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10 || AliTRDReconstructor::GetStreamLevel()>10){ AliInfo(Form("Plane config %d %d %d Quality %f" , configs[0], configs[1], configs[2], quality)); } @@ -2518,7 +2541,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon esdTrack->SetLabel(track->GetLabel()); track->UpdateESDtrack(esdTrack); // write ESD-friends if neccessary - if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0){ + if (fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 0 || AliTRDReconstructor::GetStreamLevel()>0 ){ AliTRDtrackV1 *calibTrack = new AliTRDtrackV1(*track); calibTrack->SetOwner(); esdTrack->AddCalibObject(calibTrack); @@ -2546,7 +2569,7 @@ Int_t AliTRDtrackerV1::Clusters2TracksStack(AliTRDtrackingChamber **stack, TClon chamber->Build(fGeom);//Indices(fSieveSeeding); } - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10){ + if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 10 || AliTRDReconstructor::GetStreamLevel()>10){ AliInfo(Form("Sieve level %d Plane config %d %d %d Quality %f", fSieveSeeding, configs[0], configs[1], configs[2], quality)); } } while(fSieveSeeding<10); // end stack clusters sieve @@ -2787,7 +2810,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c } Bool_t isFake = kFALSE; - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=2 ){ if (c[0]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE; if (c[1]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE; if (c[2]->GetLabel(0) != c[3]->GetLabel(0)) isFake = kTRUE; @@ -2930,7 +2954,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c // AliInfo("Extrapolation done."); // Debug Stream containing all the 6 tracklets - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=2){ TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); TLinearFitter *tiltedRieman = GetTiltedRiemanFitter(); Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); @@ -2964,7 +2989,8 @@ Int_t AliTRDtrackerV1::MakeSeeds(AliTRDtrackingChamber **stack, AliTRDseedV1 * c // calculate track quality fTrackQuality[ntracks] = CalculateTrackLikelihood(&chi2Vals[0]); - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=2){ TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber(); @@ -3125,7 +3151,8 @@ AliTRDtrackV1* AliTRDtrackerV1::MakeTrack(AliTRDseedV1 * const tracklet) track.ResetCovariance(1); Int_t nc = TMath::Abs(FollowBackProlongation(track)); - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 5 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 5 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>5){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber(); Double_t p[5]; // Track Params for the Debug Stream @@ -3254,7 +3281,8 @@ Bool_t AliTRDtrackerV1::ImproveSeedQuality(AliTRDtrackingChamber **stack, AliTRD AliDebug(2, Form("Iter[%d] Q[%f] chi2[%f]", iter, quality, chi2)); - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 7 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 7 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=7){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber(); TLinearFitter *tiltedRieman = GetTiltedRiemanFitter(); @@ -3329,7 +3357,8 @@ Double_t AliTRDtrackerV1::CalculateTrackLikelihood(Double_t *chi2){ , chi2[3], likeChi2Phi )); - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=2){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber(); TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); @@ -3394,7 +3423,8 @@ Double_t AliTRDtrackerV1::CookLikelihood(AliTRDseedV1 *cseed, Int_t planes[4]) Double_t likeN = TMath::Exp(-(fkRecoParam->GetNMeanClusters() - nclusters) / fkRecoParam->GetNSigmaClusters()); Double_t like = likea * likechi2y * likechi2z * likeN; - if(fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()){ + if((fkRecoParam->GetStreamLevel(AliTRDrecoParam::kTracker) >= 2 && fkReconstructor->IsDebugStreaming()) + ||AliTRDReconstructor::GetStreamLevel()>=2){ Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); Int_t candidateNumber = AliTRDtrackerDebug::GetCandidateNumber(); Int_t nTracklets = 0; Float_t meanNcls = 0;