From 2c7f43b65773c86b557055c0e1fec2abeed5fec8 Mon Sep 17 00:00:00 2001 From: shahoian Date: Thu, 10 Apr 2014 10:39:52 +0200 Subject: [PATCH] Added debug streamer steering from Marian and new tracklet fit from Alex --- TRD/AliTRDReconstructor.cxx | 5 ++- TRD/AliTRDReconstructor.h | 5 ++- TRD/AliTRDseedV1.cxx | 26 +++++++++---- TRD/AliTRDtrackerV1.cxx | 77 +++++++++++++++++++++---------------- 4 files changed, 70 insertions(+), 43 deletions(-) diff --git a/TRD/AliTRDReconstructor.cxx b/TRD/AliTRDReconstructor.cxx index 1f47c83015e..db1b61b05f1 100644 --- a/TRD/AliTRDReconstructor.cxx +++ b/TRD/AliTRDReconstructor.cxx @@ -52,6 +52,9 @@ ClassImp(AliTRDReconstructor) +Int_t AliTRDReconstructor::fgStreamLevel = 1; // stream (debug) level + + AliESDTrdTrigger AliTRDReconstructor::fgTriggerFlags; AliTRDonlineTrackMatching AliTRDReconstructor::fgOnlineTrackMatcher; TClonesArray *AliTRDReconstructor::fgClusters = NULL; @@ -139,7 +142,7 @@ AliTRDReconstructor::~AliTRDReconstructor() delete fgTracks; fgTracks = NULL; } - if(fSteerParam&kOwner){ + if((fSteerParam&kOwner)|| AliTRDReconstructor::GetStreamLevel()>0){ for(Int_t itask = 0; itask < AliTRDrecoParam::kTRDreconstructionTasks; itask++) if(fDebugStream[itask]) delete fDebugStream[itask]; } diff --git a/TRD/AliTRDReconstructor.h b/TRD/AliTRDReconstructor.h index afb02c1af2b..ed87d3fe959 100644 --- a/TRD/AliTRDReconstructor.h +++ b/TRD/AliTRDReconstructor.h @@ -71,7 +71,7 @@ public: Bool_t IsHLT() const { return fSteerParam&kHLT;} Bool_t IsSeeding() const { return fSteerParam&kSeeding;} Bool_t IsProcessingTracklets() const { return fSteerParam&kProcTracklets;} - Bool_t IsDebugStreaming() const { return fSteerParam&kDebug;} + Bool_t IsDebugStreaming() const { return (fSteerParam&kDebug || AliTRDReconstructor::GetStreamLevel()>0);} Bool_t UseClusterRadialCorrection() const { return fSteerParam&kClRadialCorr;} static void Options(UInt_t steer=0); @@ -82,11 +82,14 @@ public: static void SetTracklets(TClonesArray *tracklets) { fgTracklets = tracklets;} static void SetTracks(TClonesArray *tracks) { fgTracks = tracks;} void SetOption(Option_t *opt); + static Int_t GetStreamLevel() { return fgStreamLevel;} + static void SetStreamLevel(Int_t level) { fgStreamLevel = level;} private: AliTRDReconstructor(const AliTRDReconstructor &r); //Not implemented AliTRDReconstructor& operator = (const AliTRDReconstructor&); //Not implemented void ResetContainers() const; + static Int_t fgStreamLevel; // flag for streaming - for TRD reconstruction static Char_t const *fgSteerNames[kNsteer];//! steering names static Char_t const *fgSteerFlags[kNsteer];//! steering flags diff --git a/TRD/AliTRDseedV1.cxx b/TRD/AliTRDseedV1.cxx index f52201c412b..bec8e17e732 100644 --- a/TRD/AliTRDseedV1.cxx +++ b/TRD/AliTRDseedV1.cxx @@ -1355,7 +1355,8 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ // initialize debug streamer TTreeSRedirector *pstreamer(NULL); - if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + if((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming())|| + AliTRDReconstructor::GetStreamLevel()>3) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); if(pstreamer){ // save config. for calibration TVectorD vdy[2], vdx[2], vs2[2]; @@ -1382,7 +1383,7 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ << "\n"; vdx[0].Clear(); vdy[0].Clear(); vs2[0].Clear(); vdx[1].Clear(); vdy[1].Clear(); vs2[1].Clear(); - if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 4){ + if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 4 ||AliTRDReconstructor::GetStreamLevel()>4){ Int_t idx(idxRow[1]); if(idx<0){ for(Int_t ir(0); irGetStreamLevel(AliTRDrecoParam::kTracker) > 2 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + if(!pstreamer && + ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 2 && fkReconstructor->IsDebugStreaming()) || + AliTRDReconstructor::GetStreamLevel()>2 ) + ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); if(pstreamer){ // save config. for calibration TVectorD vidx, vn, vx, vy, vr, vs, vsm, vp, vf; @@ -1545,7 +1549,10 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ if(f[is]<1.e-2){ AliDebug(1, Form("Seed seg[%d] row[%2d] n[%2d] f[%f]<0.01.", is, idxRow[0], n[0][is], f[is])); SetErrorMsg(kAttachClAttach); - if(!pstreamer && recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + if(!pstreamer && + ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) || + AliTRDReconstructor::GetStreamLevel()>1 ) + ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); if(pstreamer){ UChar_t stat(0); if(IsKink()) SETBIT(stat, 1); @@ -1719,7 +1726,10 @@ Bool_t AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_ // clear local copy of clusters for(Int_t ir(0); irGetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + if(!pstreamer && + ((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) || + AliTRDReconstructor::GetStreamLevel()>1 ) + ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); if(pstreamer){ UChar_t stat(0); if(IsKink()) SETBIT(stat, 1); @@ -2112,9 +2122,8 @@ Bool_t AliTRDseedV1::FitRobust(AliTRDpadPlane *pp, Int_t opt) TTreeSRedirector *pstreamer(NULL); const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam(); - if(recoParam && - recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && - fkReconstructor->IsDebugStreaming()) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); + if( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) || + AliTRDReconstructor::GetStreamLevel()>3 ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker); // factor to scale y pulls. // ideally if error parametrization correct this is 1. @@ -2267,6 +2276,7 @@ Bool_t AliTRDseedV1::FitRobust(AliTRDpadPlane *pp, Int_t opt) AliMathBase::EvaluateUni(n, dy, m, s, 0); (*pstreamer) << "FitRobust4" << "stat=" << status + << "opt=" << opt << "ncl=" << n << "det=" << fDet << "x0=" << fX0 diff --git a/TRD/AliTRDtrackerV1.cxx b/TRD/AliTRDtrackerV1.cxx index b216f8e4a57..1dc63656505 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,24 +624,6 @@ 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); - AliExternalTrackParam param0(t); - AliExternalTrackParam param1(t); - param1.Update(p, cov); - TVectorD vcov(3,cov); - TVectorD vpar(3,p); - cstreamer << "FollowProlongationInfo" - << "EventNumber=" << eventNumber - << "iplane="<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 @@ -977,11 +960,32 @@ 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); - + /* 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="<10){ // RS @@ -2286,7 +2290,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); @@ -2354,7 +2358,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)); } @@ -2531,7 +2535,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); @@ -2559,7 +2563,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 @@ -2800,7 +2804,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; @@ -2943,7 +2948,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(); @@ -2977,7 +2983,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(); @@ -3138,7 +3145,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 @@ -3267,7 +3275,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(); @@ -3342,7 +3351,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); @@ -3407,7 +3417,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; -- 2.43.0