From 045e4ec59dce36c670a142bc04c7bb5a5a0a5a34 Mon Sep 17 00:00:00 2001 From: Louise Skinnari Date: Fri, 6 Aug 2021 13:13:12 +0200 Subject: [PATCH] Include commit from fw_synch_210611 (#86) * Fixes to remove unused TPROJ memory and fix problem with VMR LUT in L6 * apply code-formats and code-checks Co-authored-by: Anders --- .../interface/MatchEngine.h | 2 +- .../TrackFindingTracklet/interface/Settings.h | 50 ++++++++++++------- .../interface/TrackletProjectionsMemory.h | 7 ++- .../TrackFindingTracklet/src/MatchEngine.cc | 4 +- L1Trigger/TrackFindingTracklet/src/Sector.cc | 2 +- .../src/TrackletConfigBuilder.cc | 38 +++++++++++++- .../TrackFindingTracklet/src/TrackletLUT.cc | 3 +- .../src/TrackletProjectionsMemory.cc | 2 + 8 files changed, 84 insertions(+), 24 deletions(-) diff --git a/L1Trigger/TrackFindingTracklet/interface/MatchEngine.h b/L1Trigger/TrackFindingTracklet/interface/MatchEngine.h index 58d667de2f310..10b76d002169b 100644 --- a/L1Trigger/TrackFindingTracklet/interface/MatchEngine.h +++ b/L1Trigger/TrackFindingTracklet/interface/MatchEngine.h @@ -23,7 +23,7 @@ namespace trklet { void addOutput(MemoryBase* memory, std::string output) override; void addInput(MemoryBase* memory, std::string input) override; - void execute(); + void execute(unsigned int iSector); private: VMStubsMEMemory* vmstubs_; diff --git a/L1Trigger/TrackFindingTracklet/interface/Settings.h b/L1Trigger/TrackFindingTracklet/interface/Settings.h index 59aa6601bb941..3286f7ee303d4 100644 --- a/L1Trigger/TrackFindingTracklet/interface/Settings.h +++ b/L1Trigger/TrackFindingTracklet/interface/Settings.h @@ -767,21 +767,37 @@ namespace trklet { {"TRE", 108}}; // If set to true this will generate debub printout in text files - std::unordered_map writeMonitorData_{{"IL", false}, {"TE", false}, - {"CT", false}, {"HitPattern", false}, - {"ChiSq", false}, {"Seeds", false}, - {"FT", false}, {"Residuals", false}, - {"StubBend", false}, {"MC", false}, - {"MP", false}, {"ME", false}, - {"AP", false}, {"VMP", false}, - {"TrackProjOcc", false}, {"TC", false}, - {"Pars", false}, {"TPars", false}, - {"TPD", false}, {"TrackletPars", false}, - {"TED", false}, {"TP", false}, - {"TRE", false}, {"VMR", false}, - {"StubsLayer", false}, {"StubsLayerSector", false}, - {"HitEff", false}, {"MatchEff", false}, - {"IFit", false}, {"AS", false}}; + std::unordered_map writeMonitorData_{{"IL", false}, + {"TE", false}, + {"CT", false}, + {"HitPattern", false}, + {"ChiSq", false}, + {"Seeds", false}, + {"FT", false}, + {"Residuals", false}, + {"StubBend", false}, + {"MC", false}, + {"MP", false}, + {"ME", false}, + {"AP", false}, + {"VMP", false}, + {"TrackProjOcc", false}, + {"TC", false}, + {"Pars", false}, + {"TPars", false}, + {"TPD", false}, + {"TrackletPars", false}, + {"TED", false}, + {"TP", false}, + {"TRE", false}, + {"VMR", false}, + {"StubsLayer", false}, + {"StubsLayerSector", false}, + {"HitEff", false}, + {"MatchEff", false}, + {"IFit", false}, + {"AS", false}, + {"WriteEmptyProj", false}}; std::array rDSSinner_mod_{{68.9391, 78.7750, 85.4550, 96.3150, 102.3160}}; std::array rDSSouter_mod_{{66.4903, 76.7750, 84.4562, 94.9920, 102.3160}}; @@ -835,8 +851,8 @@ namespace trklet { int nrinvBitsTable_{3}; //number of bits for tabulating rinv dependence unsigned int MEBinsBits_{3}; - unsigned int MEBinsDisks_{8}; //on each side - unsigned int maxStubsPerBin_{16}; + unsigned int MEBinsDisks_{8}; //on each side + unsigned int maxStubsPerBin_{15}; //16 causes overflow! // Options for chisq fit bool exactderivatives_{false}; diff --git a/L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h b/L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h index 4a936c7c4f950..038306d981a63 100644 --- a/L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h +++ b/L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h @@ -16,7 +16,11 @@ namespace trklet { public: TrackletProjectionsMemory(std::string name, Settings const& settings); - ~TrackletProjectionsMemory() override = default; + ~TrackletProjectionsMemory() override { + if (settings_.writeMonitorData("WriteEmptyProj") && (!hasProj_)) { + edm::LogPrint("Tracklet") << "Empty Projection Memory : " << getName() << std::endl; + } + }; void addProj(Tracklet* tracklet); @@ -34,6 +38,7 @@ namespace trklet { private: std::vector tracklets_; + bool hasProj_; int layer_; int disk_; }; diff --git a/L1Trigger/TrackFindingTracklet/src/MatchEngine.cc b/L1Trigger/TrackFindingTracklet/src/MatchEngine.cc index ae6ef25cfc1fb..6d2855a8c0197 100644 --- a/L1Trigger/TrackFindingTracklet/src/MatchEngine.cc +++ b/L1Trigger/TrackFindingTracklet/src/MatchEngine.cc @@ -60,11 +60,11 @@ void MatchEngine::addInput(MemoryBase* memory, string input) { throw cms::Exception("BadConfig") << __FILE__ << " " << __LINE__ << " could not find input: " << input; } -void MatchEngine::execute() { +void MatchEngine::execute(unsigned int iSector) { unsigned int countall = 0; unsigned int countpass = 0; - bool print = (getName() == "ME_L3PHIC20"); + bool print = (iSector == 3 && getName() == "ME_L3PHIC20"); print = false; constexpr unsigned int kNBitsBuffer = 3; diff --git a/L1Trigger/TrackFindingTracklet/src/Sector.cc b/L1Trigger/TrackFindingTracklet/src/Sector.cc index d21a32ee2408c..8c169f58b125e 100644 --- a/L1Trigger/TrackFindingTracklet/src/Sector.cc +++ b/L1Trigger/TrackFindingTracklet/src/Sector.cc @@ -394,7 +394,7 @@ void Sector::executePR() { void Sector::executeME() { for (auto& i : ME_) { - i->execute(); + i->execute(isector_); } } diff --git a/L1Trigger/TrackFindingTracklet/src/TrackletConfigBuilder.cc b/L1Trigger/TrackFindingTracklet/src/TrackletConfigBuilder.cc index 0aa1a837f8bdd..620638aac138d 100644 --- a/L1Trigger/TrackFindingTracklet/src/TrackletConfigBuilder.cc +++ b/L1Trigger/TrackFindingTracklet/src/TrackletConfigBuilder.cc @@ -214,6 +214,33 @@ std::pair TrackletConfigBuilder::seedPhiRange(double rproj, unsi } void TrackletConfigBuilder::buildProjections() { + set emptyProjStandard = { + "TPROJ_L1L2H_L3PHIB", "TPROJ_L1L2E_L3PHIC", "TPROJ_L1L2K_L3PHIC", "TPROJ_L1L2H_L3PHID", "TPROJ_L1L2F_L5PHIA", + "TPROJ_L1L2G_L5PHID", "TPROJ_L1L2A_L6PHIA", "TPROJ_L1L2J_L6PHIB", "TPROJ_L1L2C_L6PHIC", "TPROJ_L1L2L_L6PHID", + "TPROJ_L3L4D_D1PHIB", "TPROJ_L2L3A_D1PHIC", "TPROJ_L3L4A_D1PHIC", "TPROJ_L1L2G_D2PHIA", "TPROJ_L1D1D_D2PHIA", + "TPROJ_L1D1E_D2PHIA", "TPROJ_L1L2J_D2PHIB", "TPROJ_L3L4D_D2PHIB", "TPROJ_L1D1A_D2PHIB", "TPROJ_L1D1F_D2PHIB", + "TPROJ_L1D1G_D2PHIB", "TPROJ_L1L2C_D2PHIC", "TPROJ_L2L3A_D2PHIC", "TPROJ_L3L4A_D2PHIC", "TPROJ_L1D1B_D2PHIC", + "TPROJ_L1D1C_D2PHIC", "TPROJ_L1D1H_D2PHIC", "TPROJ_L2D1A_D2PHIC", "TPROJ_L1L2F_D2PHID", "TPROJ_L1D1D_D2PHID", + "TPROJ_L1D1E_D2PHID", "TPROJ_L1L2G_D3PHIA", "TPROJ_L1D1D_D3PHIA", "TPROJ_L1D1E_D3PHIA", "TPROJ_L1L2J_D3PHIB", + "TPROJ_L1D1A_D3PHIB", "TPROJ_L1D1F_D3PHIB", "TPROJ_L1D1G_D3PHIB", "TPROJ_L1L2C_D3PHIC", "TPROJ_L2L3A_D3PHIC", + "TPROJ_L1D1B_D3PHIC", "TPROJ_L1D1C_D3PHIC", "TPROJ_L1D1H_D3PHIC", "TPROJ_L2D1A_D3PHIC", "TPROJ_L1L2F_D3PHID", + "TPROJ_L1D1D_D3PHID", "TPROJ_L1D1E_D3PHID", "TPROJ_L1L2G_D4PHIA", "TPROJ_L1D1D_D4PHIA", "TPROJ_L1D1E_D4PHIA", + "TPROJ_L1L2J_D4PHIB", "TPROJ_L1D1G_D4PHIB", "TPROJ_L1L2C_D4PHIC", "TPROJ_L2L3A_D4PHIC", "TPROJ_L1D1B_D4PHIC", + "TPROJ_L2D1A_D4PHIC", "TPROJ_L1L2F_D4PHID", "TPROJ_L1D1D_D4PHID", "TPROJ_L1D1E_D5PHIA", "TPROJ_L1D1G_D5PHIB", + "TPROJ_L1D1B_D5PHIC", "TPROJ_L1D1D_D5PHID"}; + + set emptyProjCombined = { + "TPROJ_L1L2J_L6PHIB", "TPROJ_L1L2C_L6PHIC", "TPROJ_L1L2G_D1PHIA", "TPROJ_L1L2J_D1PHIB", "TPROJ_L2L3D_D1PHIB", + "TPROJ_L3L4D_D1PHIB", "TPROJ_L1L2C_D1PHIC", "TPROJ_L2L3A_D1PHIC", "TPROJ_L3L4A_D1PHIC", "TPROJ_L1L2F_D1PHID", + "TPROJ_L1L2G_D2PHIA", "TPROJ_L1D1E_D2PHIA", "TPROJ_L1L2J_D2PHIB", "TPROJ_L2L3D_D2PHIB", "TPROJ_L3L4D_D2PHIB", + "TPROJ_L1D1G_D2PHIB", "TPROJ_L1L2C_D2PHIC", "TPROJ_L2L3A_D2PHIC", "TPROJ_L3L4A_D2PHIC", "TPROJ_L1D1B_D2PHIC", + "TPROJ_L2D1A_D2PHIC", "TPROJ_L1L2F_D2PHID", "TPROJ_L1D1D_D2PHID", "TPROJ_L1L2G_D3PHIA", "TPROJ_L1D1E_D3PHIA", + "TPROJ_L1L2J_D3PHIB", "TPROJ_L2L3D_D3PHIB", "TPROJ_L1D1G_D3PHIB", "TPROJ_L1L2C_D3PHIC", "TPROJ_L2L3A_D3PHIC", + "TPROJ_L1D1B_D3PHIC", "TPROJ_L2D1A_D3PHIC", "TPROJ_L1L2F_D3PHID", "TPROJ_L1D1D_D3PHID", "TPROJ_L1L2G_D4PHIA", + "TPROJ_L1D1E_D4PHIA", "TPROJ_L1L2J_D4PHIB", "TPROJ_L2L3D_D4PHIB", "TPROJ_L1D1G_D4PHIB", "TPROJ_L1L2C_D4PHIC", + "TPROJ_L2L3A_D4PHIC", "TPROJ_L1D1B_D4PHIC", "TPROJ_L2D1A_D4PHIC", "TPROJ_L1L2F_D4PHID", "TPROJ_L1D1D_D4PHID", + "TPROJ_L1D1E_D5PHIA", "TPROJ_L1D1G_D5PHIB", "TPROJ_L1D1B_D5PHIC", "TPROJ_L1D1D_D5PHID"}; + for (unsigned int iseed = 0; iseed < N_SEED_PROMPT; iseed++) { std::vector >& TCs = TC_[iseed]; @@ -228,7 +255,16 @@ void TrackletConfigBuilder::buildProjections() { std::pair phiRange = seedPhiRange(rproj, iseed, iTC); if (phiRange.first < allStubs_[ilayer][iReg].second && phiRange.second > allStubs_[ilayer][iReg].first) { std::pair tmp(iseed, iTC); //seedindex and TC - projections_[ilayer][iReg].push_back(tmp); + string projName = TPROJName(iseed, iTC, ilayer, iReg); + if (combinedmodules_) { + if (emptyProjCombined.find(projName) == emptyProjCombined.end()) { + projections_[ilayer][iReg].push_back(tmp); + } + } else { + if (emptyProjStandard.find(projName) == emptyProjStandard.end()) { + projections_[ilayer][iReg].push_back(tmp); + } + } } } } diff --git a/L1Trigger/TrackFindingTracklet/src/TrackletLUT.cc b/L1Trigger/TrackFindingTracklet/src/TrackletLUT.cc index 5d3b459925973..a88748b61ab9f 100644 --- a/L1Trigger/TrackFindingTracklet/src/TrackletLUT.cc +++ b/L1Trigger/TrackFindingTracklet/src/TrackletLUT.cc @@ -629,7 +629,8 @@ void TrackletLUT::initVMRTable(unsigned int layerdisk, VMRTableType type, int re } else { if (type == VMRTableType::me) { //This if a hack where the same memory is used in both ME and TE modules - if (layerdisk == 1 || layerdisk == 2 || layerdisk == 3 || layerdisk == 4) { + if (layerdisk == LayerDisk::L2 || layerdisk == LayerDisk::L3 || layerdisk == LayerDisk::L4 || + layerdisk == LayerDisk::L6) { positive_ = false; name_ = "VMTableOuter" + TrackletConfigBuilder::LayerName(layerdisk) + ".tab"; writeTable(); diff --git a/L1Trigger/TrackFindingTracklet/src/TrackletProjectionsMemory.cc b/L1Trigger/TrackFindingTracklet/src/TrackletProjectionsMemory.cc index b1861fdc64dab..6439581639d9d 100644 --- a/L1Trigger/TrackFindingTracklet/src/TrackletProjectionsMemory.cc +++ b/L1Trigger/TrackFindingTracklet/src/TrackletProjectionsMemory.cc @@ -12,6 +12,7 @@ TrackletProjectionsMemory::TrackletProjectionsMemory(string name, Settings const size_t pos = find_nth(name, 0, "_", 1); assert(pos != string::npos); initLayerDisk(pos + 1, layer_, disk_); + hasProj_ = false; } void TrackletProjectionsMemory::addProj(Tracklet* tracklet) { @@ -29,6 +30,7 @@ void TrackletProjectionsMemory::addProj(Tracklet* tracklet) { assert(itracklet != tracklet); } + hasProj_ = true; tracklets_.push_back(tracklet); }