X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=TRD%2FAliTRDtrackerV1.cxx;h=cca2e272c60cdff952b2577fc3d13ea8ca7fa72c;hb=52fb4b3479168093e89faf9e8ac289312be1b26e;hp=4ab9e5d8829e64d33abbeac45b3a6f05cc7cb35b;hpb=bf7cfc8822d988e842942dd8af2a69cd20215816;p=u%2Fmrichter%2FAliRoot.git diff --git a/TRD/AliTRDtrackerV1.cxx b/TRD/AliTRDtrackerV1.cxx index 4ab9e5d8829..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,7 +624,34 @@ 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 (chi2 < 1e+10 && ((AliExternalTrackParam&)t).Update(p, cov)){ + + if(fkReconstructor->IsDebugStreaming()){ + Int_t eventNumber = AliTRDtrackerDebug::GetEventNumber(); + TTreeSRedirector &cstreamer = *fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + AliExternalTrackParam param0(t); + AliExternalTrackParam param1(t); + param1.Update(p, cov); + TVectorD vcov(3,cov); + TVectorD vpar(3,p); + cstreamer << "FollowProlongationInfo" + << "EventNumber=" << eventNumber + << "iplane="< 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); @@ -632,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 @@ -847,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)); @@ -880,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; @@ -890,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){ @@ -922,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; @@ -953,8 +987,35 @@ 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 + /* + 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); + AliExternalTrackParam param0(t); + AliExternalTrackParam param1(t); + param1.Update(p, cov); + TVectorD vcov(3,cov); + TVectorD vpar(3,p); + (*cstreamer) << "FollowBackProlongationInfo" + << "EventNumber=" << eventNumber + << "chi2="< fkRecoParam->GetChi2Cut()){ // MI parameterizad chi2 cut 03.05.2014 t.SetErrStat(AliTRDtrackV1::kChi2, ily); if(debugLevel > 2){ UChar_t status(t.GetStatusTRD()); @@ -1821,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 // @@ -2235,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); @@ -2303,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)); } @@ -2480,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); @@ -2508,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 @@ -2749,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; @@ -2892,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(); @@ -2926,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(); @@ -3087,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 @@ -3216,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(); @@ -3291,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); @@ -3356,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;