diff --git a/macro/L1/run_reco_L1global.C b/macro/L1/run_reco_L1global.C index 705e046fe7a6e4ab0f0279c181d5775833117155..0d906f6d254e7a62155e2f7893a7f7128bb563aa 100644 --- a/macro/L1/run_reco_L1global.C +++ b/macro/L1/run_reco_L1global.C @@ -396,7 +396,7 @@ void run_reco_L1global(TString input = "", Int_t nTimeSlices = -1, Int_t firstTi } */ - l1->SetInputConfigName(""); + //l1->SetInputConfigName(""); run->AddTask(l1); std::cout << "-I- " << myName << ": Added task " << l1->GetName() << std::endl; diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index b1768e827998a26a2b619e72e36706b9f9bcf80e..492ad9fba256c2b7dbc0b36e1b2c1561c1abaa45 100644 --- a/reco/L1/CbmL1.cxx +++ b/reco/L1/CbmL1.cxx @@ -223,12 +223,12 @@ InitStatus CbmL1::Init() fUseMUCH = 0; fUseTRD = 1; fUseTOF = 0; + L1FieldRegion::gkUseOriginalField = true; fInitManager.DevSetIgnoreHitSearchAreas(true); //fInitManager.DevSetFitSingletsFromTarget(true); //fInitManager.DevSetIsMatchDoubletsViaMc(true); //fInitManager.DevSetIsMatchTripletsViaMc(true); - //fInitManager.DevSetIsMatchNeighbourdViaMc(true); fInitManager.SetMaxTripletPerDoublets(1000); } @@ -583,9 +583,9 @@ InitStatus CbmL1::Init() fscal trdBackPhi = trdInterface->GetStripsStereoAngleBack(iSt); fscal trdFrontSigma = trdInterface->GetStripsSpatialRmsFront(iSt); fscal trdBackSigma = trdInterface->GetStripsSpatialRmsBack(iSt); - if (L1Algo::TrackingMode::kGlobal == fTrackingMode) { //SGtrd2D!! - trdFrontSigma = .1; - trdBackSigma = .1; + if (L1Algo::TrackingMode::kGlobal == fTrackingMode) { + trdFrontSigma = 1.1; + trdBackSigma = 1.1; // stationInfo.SetTimeResolution(1.e10); stationInfo.SetTimeInfo(false); } @@ -806,24 +806,27 @@ InitStatus CbmL1::Init() fInitManager.PushBackCAIteration(trackingIterAllSec); } else if (L1Algo::TrackingMode::kGlobal == fTrackingMode) { - // SGtrd2d!! // Initialize CA track finder iterations sequence - auto trd2dIter1 = L1CAIteration("Trd2dIter1"); - trd2dIter1.SetTrackChi2Cut(7.f); //10.f - trd2dIter1.SetTripletChi2Cut(2 * 23.4450f); // = 7.815 * 3; // prob = 0.05 - trd2dIter1.SetDoubletChi2Cut(4. * 7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1 - trd2dIter1.SetPickGather(3.0f); - trd2dIter1.SetPickNeighbour(4.0f); - trd2dIter1.SetMaxInvMom(1.0 / 0.05); //(1.0 / 0.5); - trd2dIter1.SetMaxSlopePV(.5f); - trd2dIter1.SetMaxSlope(.5f); - trd2dIter1.SetMaxDZ(0.05); - trd2dIter1.SetTargetPosSigmaXY(1., 1.); //(1, 1); - trd2dIter1.SetMinLevelTripletStart(1); - trd2dIter1.SetPrimaryFlag(false); - trd2dIter1.SetExtendTracksFlag(false); + auto globalIterPrimFast = L1CAIteration("globalIterPrimFast"); + { + auto& it = globalIterPrimFast; + it.SetTrackChi2Cut(7.f); //10.f + it.SetTripletChi2Cut(2 * 23.4450f); // = 7.815 * 3; // prob = 0.05 + it.SetDoubletChi2Cut(4. * 7.56327f); // = 1.3449 * 2.f / 3.f; // prob = 0.1 + it.SetPickGather(3.0f); + it.SetPickNeighbour(4.0f); + it.SetMaxInvMom(1.0 / 0.05); //(1.0 / 0.5); + it.SetMaxSlopePV(.5f); + it.SetMaxSlope(.5f); + it.SetMaxDZ(0.05); + it.SetTargetPosSigmaXY(1., 1.); //(1, 1); + it.SetMinLevelTripletStart(1); + it.SetPrimaryFlag(true); + it.SetExtendTracksFlag(true); + //it.SetFirstStationIndex(11); + } auto trd2dIter2 = L1CAIteration("Trd2dIter2"); trd2dIter2.SetTrackChi2Cut(7.f); //10.f @@ -838,11 +841,14 @@ InitStatus CbmL1::Init() trd2dIter2.SetTargetPosSigmaXY(8 * 10, 6 * 10); //(1, 1); trd2dIter2.SetMinLevelTripletStart(0); trd2dIter2.SetPrimaryFlag(false); - trd2dIter2.SetExtendTracksFlag(false); + trd2dIter2.SetExtendTracksFlag(true); + //trd2dIter2.SetFirstStationIndex(12); // Initialize CA track finder iterations sequence fInitManager.SetCAIterationsNumberCrosscheck(1); + //fInitManager.PushBackCAIteration(globalIterPrimFast); + fInitManager.PushBackCAIteration(trd2dIter2); /* fInitManager.SetCAIterationsNumberCrosscheck(5); fInitManager.PushBackCAIteration(trackingIterFastPrim); @@ -850,7 +856,6 @@ InitStatus CbmL1::Init() fInitManager.PushBackCAIteration(trackingIterAllPrimJump); fInitManager.PushBackCAIteration(trackingIterAllSec); */ - fInitManager.PushBackCAIteration(trd2dIter2); } else { fInitManager.SetCAIterationsNumberCrosscheck(4); diff --git a/reco/L1/CbmL1Constants.h b/reco/L1/CbmL1Constants.h index 93e9ccf385d0b103d4fe3ead8c45fa19cf8b7316..6ef8bf3e8800eaab0a2753459583d9864b8580d1 100644 --- a/reco/L1/CbmL1Constants.h +++ b/reco/L1/CbmL1Constants.h @@ -9,7 +9,7 @@ namespace CbmL1Constants { /// Performance constants const double MinRecoMom = 0.1; // Extra set of tracks = (MinRecoMom, MinRefMom) - const double MinRefMom = 1.; // Primary set of tracks = (MinRefMom, +inf) //All reco tracks = (MinRecoMom, +inf) + const double MinFastMom = 1.; // Primary set of tracks = (MinRefMom, +inf) //All reco tracks = (MinRecoMom, +inf) const double MinPurity = 0.7; // min NStationInRecoTrack/NStationInMCTrack const double MinNStations = 4.; // min number of stations in track to be reconstructable } // namespace CbmL1Constants diff --git a/reco/L1/CbmL1Counters.h b/reco/L1/CbmL1Counters.h index c50f82730848d7691e079aa0c28d9371f993eb6c..5187502fa6afc2c5754b9a4bcd170e147bebd285 100644 --- a/reco/L1/CbmL1Counters.h +++ b/reco/L1/CbmL1Counters.h @@ -203,6 +203,7 @@ inline void TL1Efficiencies::Inc(bool isReco, TString name) inline void TL1Efficiencies::PrintEff() { + std::ios_base::fmtflags coutFlags(std::cout.flags()); std::cout.setf(std::ios::fixed); std::cout.setf(std::ios::showpoint); std::cout.precision(3); @@ -219,6 +220,7 @@ inline void TL1Efficiencies::PrintEff() std::cout << "Clone probability : " << ratio_clones << " | " << clones << std::endl; std::cout << "Ghost probability : " << ratio_ghosts << " | " << ghosts << std::endl; + std::cout.flags(coutFlags); }; #endif diff --git a/reco/L1/CbmL1Performance.cxx b/reco/L1/CbmL1Performance.cxx index 559285ec3ef0d9b566a53b0a54fb129c9c05ebf1..d073ee2d09408ca00e4bd3f23f2e56260aa956e8 100644 --- a/reco/L1/CbmL1Performance.cxx +++ b/reco/L1/CbmL1Performance.cxx @@ -148,13 +148,13 @@ struct TL1PerfEfficiencies : public TL1Efficiencies { { // add total efficiency AddCounter("long_fast_prim", "LongRPrim efficiency"); - AddCounter("fast_prim", "RefPrim efficiency"); - AddCounter("fast_sec", "RefSec efficiency"); - AddCounter("fast", "Refset efficiency"); + AddCounter("fast_prim", "FastPrim efficiency"); + AddCounter("fast_sec", "FastSec efficiency"); + AddCounter("fast", "Fastset efficiency"); AddCounter("total", "Allset efficiency"); - AddCounter("slow_prim", "ExtraPrim efficiency"); - AddCounter("slow_sec", "ExtraSec efficiency"); - AddCounter("slow", "Extra efficiency"); + AddCounter("slow_prim", "SlowPrim efficiency"); + AddCounter("slow_sec", "SlowSec efficiency"); + AddCounter("slow", "Slow efficiency"); AddCounter("d0", "D0 efficiency"); AddCounter("short", "Short123s efficiency"); AddCounter("shortPion", "Short123s pion eff"); @@ -163,11 +163,11 @@ struct TL1PerfEfficiencies : public TL1Efficiencies { AddCounter("shortE", "Short123s e eff"); AddCounter("shortRest", "Short123s rest eff"); - AddCounter("fast_sec_e", "RefSec E efficiency"); - AddCounter("fast_e", "Refset E efficiency"); + AddCounter("fast_sec_e", "FastSec E efficiency"); + AddCounter("fast_e", "Fastset E efficiency"); AddCounter("total_e", "Allset E efficiency"); - AddCounter("slow_sec_e", "ExtraSecE efficiency"); - AddCounter("slow_e", "Extra E efficiency"); + AddCounter("slow_sec_e", "SlowSec E efficiency"); + AddCounter("slow_e", "Slow E efficiency"); } virtual ~TL1PerfEfficiencies() {}; @@ -383,51 +383,51 @@ void CbmL1::EfficienciesPerformance() ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "d0"); } - if (mtra.p > CbmL1Constants::MinRefMom) { // reference tracks + if (mtra.p > CbmL1Constants::MinFastMom) { // fast tracks ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "fast"); - if (mtra.IsPrimary()) { // reference primary - if (mtra.NStations() == fNStations) { // long reference primary + if (mtra.IsPrimary()) { // fast primary + if (mtra.NStations() == fNStations) { // long fast primary ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "long_fast_prim"); } ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "fast_prim"); } - else { // reference secondary + else { // fast secondary ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "fast_sec"); } } - else { // extra set of tracks + else { // slow set of tracks ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "slow"); - if (mtra.IsPrimary()) { // extra primary + if (mtra.IsPrimary()) { // slow primary ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "slow_prim"); } else { ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "slow_sec"); } - } // if extra + } // if slow if (mtra.pdg == 11 || mtra.pdg == -11) { ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "total_e"); - if (mtra.p > CbmL1Constants::MinRefMom) { // reference tracks + if (mtra.p > CbmL1Constants::MinFastMom) { // fast tracks ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "fast_e"); - if (mtra.IsPrimary()) { // reference primary + if (mtra.IsPrimary()) { // fast primary } - else { // reference secondary + else { // fast secondary ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "fast_sec_e"); } } - else { // extra set of tracks + else { // slow set of tracks ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "slow_e"); - if (mtra.IsPrimary()) { // extra primary + if (mtra.IsPrimary()) { // slow primary } else { ntra.Inc(reco, killed, ratio_length, ratio_fakes, nclones, mc_length, mc_length_hits, "slow_sec_e"); } - } // if extra + } // if slow } } @@ -462,7 +462,7 @@ void CbmL1::EfficienciesPerformance() } } // void CbmL1::Performance() -void CbmL1::HistoPerformance() // TODO: check if works correctly. Change vHitRef on match data in CbmL1**Track classes +void CbmL1::HistoPerformance() // TODO: check if works correctly. Change vHitFast on match data in CbmL1**Track classes { //CbmKF &KF = *CbmKF::Instance();