diff --git a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py index 36a83169766ed09e1c97d0df9aeabd49bae63bdc..add45de403a0ccc9370a7b2106b9558987376801 100644 --- a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py +++ b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py @@ -401,13 +401,14 @@ def CaloTopoClusterCfg(flags, cellsname="AllCalo", clustersname=None): f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"] toAOD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}", f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"] - auxItems = f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux." - for mom in AODMoments: - auxItems += "."+mom - auxItems += ".CellLink" - if flags.Calo.TopoCluster.addCalibrationHitDecoration: - auxItems += "."+flags.Calo.TopoCluster.CalibrationHitDecorationName + AODMoments.append("CellLink") #Add data-link to cell-link container + if flags.Calo.TopoCluster.addCalibrationHitDecoration: #Add calib hit deco if requried + AODMoments.append("."+flags.Calo.TopoCluster.CalibrationHitDecorationName) + + + auxItems = f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux." + auxItems+= ".".join(AODMoments) toAOD.append(auxItems) result.merge(addToESD(flags, toESD)) diff --git a/Control/SGTools/SGTools/DataStore.h b/Control/SGTools/SGTools/DataStore.h index 71b305924bd3ff40256e9e260b8b1627e15ec27f..014ea88c708bf9d4637f1ec2947bb1ac8df3197d 100755 --- a/Control/SGTools/SGTools/DataStore.h +++ b/Control/SGTools/SGTools/DataStore.h @@ -29,6 +29,7 @@ #include <typeinfo> /*typeid*/ #include <utility> /*std::pair*/ #include <unordered_map> +#include <mutex> class ISvcLocator; @@ -113,6 +114,13 @@ namespace SG { /// the key must match exactly (no wild carding for the default key) SG::DataProxy* proxy_exact (sgkey_t sgkey) const; + /// Like proxy_exact, but intended to be called without holding + /// the store lock. However, the store lock still must be passed + /// as an argument; it will be acquired should be need to call + /// the auditor service. + SG::DataProxy* proxy_exact_unlocked (sgkey_t sgkey, + std::recursive_mutex& mutex) const; + /// get proxy with given id. Returns 0 to flag failure /// the key must match exactly (no wild carding for the default key) virtual SG::DataProxy* proxy_exact(const CLID& id, diff --git a/Control/SGTools/src/DataStore.cxx b/Control/SGTools/src/DataStore.cxx index eba8a0d84effc6ac10dbc387466c1e16a50e8d74..cd2816b0bcf6f1f616de3e6516aeeb7c5876ee23 100755 --- a/Control/SGTools/src/DataStore.cxx +++ b/Control/SGTools/src/DataStore.cxx @@ -509,6 +509,27 @@ DataProxy* DataStore::proxy_exact(sgkey_t sgkey) const } +/// Like proxy_exact, but intended to be called without holding +/// the store lock. However, the store lock still must be passed +/// as an argument; it will be acquired should be need to call +/// the auditor service. +DataProxy* DataStore::proxy_exact_unlocked (sgkey_t sgkey, + std::recursive_mutex& mutex) const +{ + if (m_pSGAudSvc) { + std::unique_lock lock (mutex); + CLID clid; + const std::string* strkey = m_pool.keyToString (sgkey, clid); + if (strkey) + m_pSGAudSvc->SGAudit(*strkey, clid, 0, m_storeID); + } + KeyMap_t::const_iterator i = m_keyMap.find (sgkey); + if (i != m_keyMap.end()) + return i->second; + return 0; +} + + /// get proxy with given key. Returns 0 to flag failure /// the key must match exactly (no wild carding for the default key) DataProxy* DataStore::proxy_exact(const CLID& id, diff --git a/Control/StoreGate/StoreGate/tools/SGImplSvc.h b/Control/StoreGate/StoreGate/tools/SGImplSvc.h index 4033266b034fcb66fc773e58405b6f7b46ca9f32..c82b41fe2437d64eef80d40d6ad405f6f11dc622 100644 --- a/Control/StoreGate/StoreGate/tools/SGImplSvc.h +++ b/Control/StoreGate/StoreGate/tools/SGImplSvc.h @@ -301,11 +301,7 @@ public: /// Get proxy given a hashed key+clid. /// Find an exact match; no handling of aliases, etc. /// Returns 0 to flag failure. - virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override final - { - lock_t lock (m_mutex); - return m_pStore->proxy_exact (sgkey); - } + virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override final; //@} diff --git a/Control/StoreGate/src/SGImplSvc.cxx b/Control/StoreGate/src/SGImplSvc.cxx index 51b6d45589900551c8ca699ee0982bc403d5a85b..6cd099ce88500b002502c8ab403a5e6c613daf42 100644 --- a/Control/StoreGate/src/SGImplSvc.cxx +++ b/Control/StoreGate/src/SGImplSvc.cxx @@ -945,6 +945,15 @@ SG::DataProxy* SGImplSvc::recordObject (SG::DataObjectSharedPtr<DataObject> obj, } +/// Get proxy given a hashed key+clid. +/// Find an exact match; no handling of aliases, etc. +/// Returns 0 to flag failure. +SG::DataProxy* SGImplSvc::proxy_exact (SG::sgkey_t sgkey) const +{ + return m_pStore->proxy_exact_unlocked (sgkey, m_mutex); +} + + /** * @brief Set the Hive slot number for this store. * @param slot The slot number. -1 means that this isn't a Hive store. diff --git a/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h b/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h index fdfca3a09792d6d5395a31f2bbf8ea41d5d378c1..42f60f4287b8285a61f45c19d26a1de547ed92e6 100644 --- a/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h +++ b/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h @@ -70,7 +70,7 @@ private: void fillEleEffHistos(bool tag_good, bool probe_good, bool probe_anti_good, bool os, double el_mass) const; void doEleTriggerTP(const xAOD::Electron* el1, const xAOD::Electron* el2, const EventContext& ctx, bool writeTTrees, const float evtWeight, bool osel, bool ssel) const; - void doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, const float evtWeight) const; + void doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, bool isSimulation, const float evtWeight) const; void doEleContainerTP(std::vector<const xAOD::Electron*>& allElectrons, std::vector<const xAOD::Electron*>& goodelectrons, const EventContext& ctx) const; void doMuonTriggerTP(const xAOD::Muon* mu1, const xAOD::Muon* mu2, const EventContext& ctx, bool isSimulation, bool writeTTrees, const float evtWeight) const; diff --git a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx index 84c516c79ab60f01b1b726caa4db427f364cdf32..3651113171c4c83a2ea6dec01e2eb791e5b81694 100644 --- a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx +++ b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx @@ -253,7 +253,7 @@ StatusCode DQTGlobalWZFinderAlg::fillHistograms( const EventContext& ctx ) const doMuonLooseTP(goodmuonsTP, pVtx, ctx, isSimulation, writeTTrees, evtWeight); doMuonInDetTP(goodmuonsTP, pVtx, ctx, isSimulation, writeTTrees, evtWeight); - doEleTP(leadingAllEle, subleadingAllEle, pVtx, ctx, writeTTrees, evtWeight); + doEleTP(leadingAllEle, subleadingAllEle, pVtx, ctx, writeTTrees, isSimulation, evtWeight); doEleContainerTP(allElectrons, goodelectrons, ctx); // Sort Candidates by Pt @@ -457,7 +457,7 @@ void DQTGlobalWZFinderAlg::doEleTriggerTP(const xAOD::Electron* el1, const xAOD: } } -void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, const float evtWeight) const{ +void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, bool isSimulation, const float evtWeight) const{ using namespace Monitored; @@ -467,6 +467,12 @@ void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xA // first check we have both electrons if(leadingAllEle && subleadingAllEle){ + + // Truth matching + if (isSimulation) { + if (!(checkTruthElectron(leadingAllEle) && checkTruthElectron(subleadingAllEle))) return; + } + // then get all the parameters we will need ready auto Zeecharge = Scalar("Zeecharge", (leadingAllEle->charge() + subleadingAllEle->charge())); auto p1(leadingAllEle->p4()); @@ -908,16 +914,6 @@ void DQTGlobalWZFinderAlg::doMuonTruthEff(std::vector<const xAOD::Muon*>& goodmu void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuonsTP, const xAOD::Vertex* pVtx, const EventContext& ctx, bool isSimulation, bool writeTTrees, const float evtWeight) const{ using namespace Monitored; - - if (isSimulation) { - int truthMatched = 0; - for (const auto mu: goodmuonsTP){ - if (checkTruthMuon(mu) == true) { - truthMatched++; - } - } - if (truthMatched < 2) return; - } auto group_MuonLooseTP = getGroup("MuonLooseTP"); auto osmatch = Scalar<bool>("osmatch", false); @@ -937,6 +933,12 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo } for (const auto& tagmu : goodmuonsTP) { + + // Truth matching + if (isSimulation) { + if (!checkTruthMuon(tagmu)) continue; + } + // only consider trigger-matched tags to avoid bias on probes bool matched = false; for (const auto &chain: m_Z_mm_trigger) { @@ -948,6 +950,12 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo if (!matched) continue; auto tagmup4(tagmu->p4()); for (const auto* trk : *idTracks) { + + // Truth matching + if (isSimulation) { + if (!checkTruthTrack(trk)) continue; + } + if (trk->pt() < m_muonPtCut*GeV || std::abs(trk->eta()) > m_muonMaxEta) continue; if (std::abs((trk->z0()+trk->vz()-pVtx->z())*std::sin(trk->theta())) > 2*mm) continue; @@ -978,13 +986,26 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo } } + osmatch = false; + ssmatch = false; + osnomatch = false; + ssnomatch = false; + if (matched){ mtype = (trk->charge() != tagmu->charge()) ? 0 : 1; - (opp_sign) ? osmatch = true : ssmatch = true; + if (opp_sign) { + osmatch = true; + } else { + ssmatch = true; + } } else { mtype = (trk->charge() != tagmu->charge()) ? 2 : 3; - (opp_sign) ? osnomatch = true : ssnomatch = true; + if (opp_sign) { + osnomatch = true; + } else { + ssnomatch = true; + } } if (writeTTrees){ fill(group_MuonLooseTP, pT, phi, eta, mass, isTruth, runNumber, LB, eventNumber, mtype, weight); diff --git a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp index 8c6462b2a4b235ad1e31e20b7ab07844c9278bca..4f19419efbc6f1785eff4a8fad629ac8e16db66a 100755 --- a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp +++ b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp @@ -679,11 +679,11 @@ DbStatus RootTreeContainer::open( DbDatabase& dbH, iret=addBranch(*i,dsc,"/C"); break; case DbColumn::BLOB: - iret=addObject(*i,dsc,"UCharDbArrayAthena", defSplitLevel, defBufferSize, branchOffsetTabLen); + iret=addObject(dbH, *i, dsc, "UCharDbArrayAthena", defSplitLevel, defBufferSize, branchOffsetTabLen); break; case DbColumn::ANY: case DbColumn::POINTER: - iret=addObject(*i, dsc, (*i)->typeName(), containerSplitLevel, defBufferSize, branchOffsetTabLen); + iret=addObject(dbH, *i, dsc, (*i)->typeName(), containerSplitLevel, defBufferSize, branchOffsetTabLen); break; default: return Error; @@ -741,11 +741,12 @@ DbStatus RootTreeContainer::select(DbSelect& sel) { } -DbStatus RootTreeContainer::addObject(const DbColumn* col, +DbStatus RootTreeContainer::addObject(DbDatabase& dbH, + const DbColumn* col, BranchDesc& dsc, const std::string& typ, - int defSplitLevel, - int defBufferSize, + int splitLevel, + int bufferSize, int branchOffsetTabLen) { try { @@ -762,11 +763,12 @@ DbStatus RootTreeContainer::addObject(const DbColumn* col, if ( !::isalnum(*j) ) *j = '_'; } } + int split = dsc.clazz->CanSplit() ? splitLevel : 0; // Do not split classes that don't allow it. dsc.branch = m_tree->Branch(nam.c_str(), // Branch name dsc.clazz->GetName(), // Object class (void*)&dsc.buffer, // Object address - defBufferSize, // Buffer size - defSplitLevel); // Split Mode (Levels) + bufferSize, // Buffer size + split); // Split Mode (Levels) if ( dsc.branch ) { dsc.leaf = dsc.branch->GetLeaf(nam.c_str()); dsc.branch->SetAutoDelete(kFALSE); @@ -780,12 +782,19 @@ DbStatus RootTreeContainer::addObject(const DbColumn* col, if( RootAuxDynIO::hasAuxStore(nam, dsc.clazz) ) { TClass *storeTClass = dsc.clazz->GetBaseClass("SG::IAuxStoreIO"); if( storeTClass ) { + // Default splitting for dynamic attributes, one level less than aux store (since attributes are already separated). + int dynSplitLevel = splitLevel ? splitLevel - 1 : 0; + DbOption opt1("CONTAINER_SPLITLEVEL", RootAuxDynIO::AUXDYN_POSTFIX); + dbH.getOption(opt1); + opt1._getValue(dynSplitLevel); + // Default buffer size for dynamic attributes, one quarter of other branches (since attrbutes hold less data). + int dynBufferSize = bufferSize / 4; // This is a class implementing SG::IAuxStoreIO // Provide writers for its dynamic attibutes dsc.aux_iostore_IFoffset = dsc.clazz->GetBaseClassOffset( storeTClass ); // TBranch Writer bool do_branch_fill = isBranchContainer() && !m_treeFillMode; - dsc.auxdyn_writer = RootAuxDynIO::getBranchAuxDynWriter(m_tree, branchOffsetTabLen, do_branch_fill); + dsc.auxdyn_writer = RootAuxDynIO::getBranchAuxDynWriter(m_tree, dynBufferSize, dynSplitLevel, branchOffsetTabLen, do_branch_fill); } } return Success; diff --git a/Database/APR/RootStorageSvc/src/RootTreeContainer.h b/Database/APR/RootStorageSvc/src/RootTreeContainer.h index dceefa2955c05113acb2abbb6bca6d5187f70cd5..7690c55af46efbd7ed73217eba966b7f6c9738a6 100755 --- a/Database/APR/RootStorageSvc/src/RootTreeContainer.h +++ b/Database/APR/RootStorageSvc/src/RootTreeContainer.h @@ -147,11 +147,12 @@ namespace pool { const std::string& desc); /// Add BLOB - DbStatus addObject( const DbColumn* col, + DbStatus addObject( DbDatabase& dbH, + const DbColumn* col, BranchDesc& dsc, const std::string& desc, - int defSplitLevel, - int defBufferSize, + int splitLevel, + int bufferSize, int branchOffsetTabLen); /// Find entry identified by his number (=primary key) in the Database diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py index 914b08a10bb07e2cfb3e48846b2f4ddf9fa5a80e..f85359e2a245756b6f49c2d093be7b3e3cb71c0b 100644 --- a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py +++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py @@ -31,6 +31,7 @@ def PoolWriteCfg(flags, forceTreeAutoFlush=-1): PoolAttributes = [] # Switch off splitting by setting default SplitLevel to 0 PoolAttributes += ["DEFAULT_SPLITLEVEL ='0'"] + PoolAttributes += ["ContainerName = 'TTree=Dyn.'; CONTAINER_SPLITLEVEL = '1'"] # Set as default the member-wise streaming, ROOT default PoolAttributes += ["STREAM_MEMBER_WISE = '1'"] @@ -153,6 +154,7 @@ def PoolWriteCfg(flags, forceTreeAutoFlush=-1): PoolAttributes += [ pah.setTreeAutoFlush( file_name, tree_name, auto_flush ) ] PoolAttributes += [ pah.setContainerSplitLevel( file_name, tree_name, split_level ) ] PoolAttributes += [ pah.setContainerSplitLevel( file_name, "Aux.", split_level ) ] + PoolAttributes += [ pah.setContainerSplitLevel( file_name, "Dyn.", 1 ) ] # Find the maximum AutoFlush across all formats if use_parallel_compression and auto_flush > max_auto_flush: max_auto_flush = auto_flush diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py index 461988021486c0351446c6b97c0c7b98dbc87b4b..f35796beb792a85f1bfc2fbf3b2ff2d0cc43c861 100644 --- a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py +++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py @@ -34,6 +34,8 @@ def _configureWriteAthenaPool(): from AthenaCommon.AppMgr import ServiceMgr as svcMgr # Switch off splitting by setting default SplitLevel to 0 svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "DEFAULT_SPLITLEVEL ='0'" ] + svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "ContainerName = 'TTree=Dyn.'; CONTAINER_SPLITLEVEL = '1'" ] + # Set as default the member-wise streaming, ROOT default svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "STREAM_MEMBER_WISE = '1'" ] diff --git a/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py b/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py index 95f056ef0652d5fd60e1461db8e1db189961d845..535dd37277c0994581cbfc718cd0a946d027e25c 100644 --- a/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py +++ b/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py @@ -616,6 +616,7 @@ class MultipleStreamManager: svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setTreeAutoFlush( FileName, "CollectionTree", str(TREE_AUTO_FLUSH) ) ] svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "CollectionTree", str(CONTAINER_SPLITLEVEL) ) ] svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Aux.", str(CONTAINER_SPLITLEVEL) ) ] + svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Dyn.", "1" ) ] return theStream @@ -653,6 +654,7 @@ class MultipleStreamManager: svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setTreeAutoFlush( FileName, "CollectionTree_" + StreamName, str(TREE_AUTO_FLUSH) ) ] svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "CollectionTree_" + StreamName, str(CONTAINER_SPLITLEVEL) ) ] svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Aux.", str(CONTAINER_SPLITLEVEL) ) ] + svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Dyn.", "1" ) ] return theStream def NewVirtualStream(self,StreamName,FileName="default", asAlg=False): diff --git a/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h b/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h index c72c54e70e5a4d02fafd792c08b4b8e8f516e796..4121d97c184679fc6c4db22966b2546c467d8c01 100644 --- a/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h +++ b/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h @@ -67,7 +67,7 @@ namespace RootAuxDynIO std::string getKeyFromBranch(TBranch* branch); std::unique_ptr<IRootAuxDynReader> getBranchAuxDynReader(TTree*, TBranch*); - std::unique_ptr<IRootAuxDynWriter> getBranchAuxDynWriter(TTree*, int offsettab_len, bool do_branch_fill); + std::unique_ptr<IRootAuxDynWriter> getBranchAuxDynWriter(TTree*, int bufferSize, int splitLevel, int offsettab_len, bool do_branch_fill); std::unique_ptr<IRootAuxDynReader> getNTupleAuxDynReader(const std::string&, RNTupleReader*); std::unique_ptr<IRNTupleWriter> getNTupleAuxDynWriter(TFile*, const std::string& ntupleName, int compression); diff --git a/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx b/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx index 681ff75de2e462f724f2bc2ccddab2cbd6258f25..6c92a507640b8011ad93fe314f7587070080b304 100644 --- a/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx +++ b/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx @@ -108,8 +108,8 @@ namespace RootAuxDynIO /// tree -> destination tree /// do_branch_fill -> flag telling to Fill each TBranch immediately std::unique_ptr<RootAuxDynIO::IRootAuxDynWriter> - getBranchAuxDynWriter(TTree* tree, int offsettab_len, bool do_branch_fill) { - return std::make_unique<TBranchAuxDynWriter>(tree, offsettab_len, do_branch_fill); + getBranchAuxDynWriter(TTree* tree, int bufferSize, int splitLevel, int offsettab_len, bool do_branch_fill) { + return std::make_unique<TBranchAuxDynWriter>(tree, bufferSize, splitLevel, offsettab_len, do_branch_fill); } std::unique_ptr<RootAuxDynIO::IRNTupleWriter> diff --git a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx index c576b92184697c0d3b98f8364709615d5ee4e6e3..c1c16e3d6b5e98f869dfb4ab0fc83c4061b4ab69 100644 --- a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx +++ b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx @@ -39,9 +39,11 @@ namespace RootAuxDynIO } - TBranchAuxDynWriter::TBranchAuxDynWriter( TTree* tree, int offsettab_len, bool branch_fill ) : + TBranchAuxDynWriter::TBranchAuxDynWriter( TTree* tree, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill ) : AthMessaging ("TBranchAuxDynWriter"), m_ttree( tree ), + m_bufferSize( bufferSize ), + m_splitLevel( splitLevel ), m_branchOffsetTabLen( offsettab_len ), m_branchFillMode( branch_fill ) { } @@ -93,11 +95,11 @@ namespace RootAuxDynIO error_type =" has no dictionary"; } else { info.tclass = cl; - int split = cl->CanSplit() ? 1 : 0; + int split = cl->CanSplit() ? m_splitLevel : 0; info.branch = m_ttree->Branch( info.branch_name.c_str(), // Branch name cl->GetName(), // Object class (void*)&info.buffer, // Object address - 8192, // Buffer size + m_bufferSize, // Buffer size split); // Split Mode (Levels) ATH_MSG_VERBOSE("MN: Created branch with name=" << info.branch_name << " type: " << cl->GetName()); } diff --git a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h index 8c0f39bd08a21729290e50662b8d3806d13174bb..4322eb8b2f9fe6aff52ed344f6afee92ebae7e31 100644 --- a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h +++ b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h @@ -50,7 +50,7 @@ namespace RootAuxDynIO class TBranchAuxDynWriter : public AthMessaging, public IRootAuxDynWriter { public: - TBranchAuxDynWriter( TTree* tree, int offsettab_len, bool branch_fill ); + TBranchAuxDynWriter( TTree* tree, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill ); virtual ~TBranchAuxDynWriter() { } /// set Filling mode (true/false) for branch containers @@ -75,6 +75,8 @@ namespace RootAuxDynIO protected: TFile* m_tfile = nullptr; TTree* m_ttree = nullptr; + int m_bufferSize = 8192; + int m_splitLevel = 1; int m_branchOffsetTabLen = 0; bool m_branchFillMode = false; bool m_needsFill = false; diff --git a/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml b/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml index 890138b8028533de57705a550d8c91f4823ec25f..5f54efaf6ba52a56f2ddc021e87b9ec4f07a711b 100755 --- a/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml +++ b/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml @@ -97,6 +97,8 @@ <class name="TRTCond::StrawT0ContainerTemplate<0>" /> <class name="TRTCond::StrawT0ContainerTemplate<2>" id="773DFAFD-DFE8-4D95-A4B2-1FBE7D488AC4"/> <class name="TRTCond::MultChanContainer<TRTCond::StrawT0ContainerTemplate<2> >" /> +<class name="CondMultChanCollection<TRTCond::StrawT0ContainerTemplate<2> >"/> +<class name="DataVector<TRTCond::StrawT0ContainerTemplate<2> >"/> <class name="TRTCond::StrawT0MultChanContainer" id="98EF6053-C576-4AEA-B58C-0E57EDB74E2B" /> <class name="TRTCond::StrawDxContainerTemplate<0>" /> @@ -105,10 +107,15 @@ <class name="TRTCond::StrawDxMultChanContainer" id="6C236AB0-DC97-4324-B5CA-B5BC8787E707" /> <class name="TRTCond::RtRelationMultChanContainer" id="7FC6EBDA-8DA8-40CC-B40A-BA1C9D7347BC" /> +<class name="TRTCond::MultChanContainer<TRTCond::RtRelationLayerContainer>"/> +<class name="CondMultChanCollection<TRTCond::NestedContainer<2,TRTCond::RtRelation*,TRTCond::NestedContainerPointerTrait<TRTCond::RtRelation*> > >"/> +<class name="DataVector<TRTCond::NestedContainer<2,TRTCond::RtRelation*,TRTCond::NestedContainerPointerTrait<TRTCond::RtRelation*> > >"/> <class name="TRTCond::StrawStatusContainerTemplate<0>" /> <class name="TRTCond::StrawStatusContainerTemplate<2>" id="ED8DD42D-1A67-4B82-93F4-4462D9E11705"/> <class name="TRTCond::MultChanContainer<TRTCond::StrawStatusContainerTemplate<2> >" /> +<class name="CondMultChanCollection<TRTCond::StrawStatusContainerTemplate<2> >"/> +<class name="DataVector<TRTCond::StrawStatusContainerTemplate<2> >"/> <class name="TRTCond::StrawStatusMultChanContainer" id="F4DAED02-1987-4C00-ACAD-FEE9BE845D9B" /> diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h index d4c535bd8b30c54d82a559841271ee7d60088285..ef1fb6fbf3d15d64eb7c43d778405b343cf9a68d 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h @@ -195,5 +195,7 @@ private: std::vector<std::string> m_trackCutflowNames; std::vector<int> m_trackCutflow; + + bool m_usingSpecialPileupSwitch {false}; }; #endif diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx index f13ca20da0cd2d0f396750f9ab8b54934f491ad4..e39dece6e1bd84b0dc2eda05800d31b90aa8b252 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx @@ -168,6 +168,8 @@ InDetPhysValMonitoringTool::initialize() { if (m_doTrackInJetPlots && m_doBjetPlots){ IDPVM::addReadDecoratorHandleKeys(*this, m_jetContainerName, empty_prefix, required_int_jet_decorations, m_intJetDecor); } + + m_usingSpecialPileupSwitch = (m_pileupSwitch != "All"); return StatusCode::SUCCESS; } @@ -320,7 +322,7 @@ InDetPhysValMonitoringTool::fillHistograms() { // Mark the truth particles in our vector as "selected". // This is needed because we later access the truth matching via xAOD decorations, where we do not 'know' about membership to this vector. - markSelectedByPileupSwitch(truthParticlesVec); + if (m_usingSpecialPileupSwitch) markSelectedByPileupSwitch(truthParticlesVec); IDPVM::CachedGetAssocTruth getAsTruth; // only cache one way, track->truth, not truth->tracks @@ -452,7 +454,7 @@ InDetPhysValMonitoringTool::fillHistograms() { tmp_truth_cutflow.update( passed.missingCuts() ); } - if ((not std::isnan(prob)) and (prob > m_lowProb) and passed) { + if ((not std::isnan(prob)) and (prob > m_lowProb) and passed and (not m_usingSpecialPileupSwitch or isSelectedByPileupSwitch(*associatedTruth)) ) { nSelectedMatchedTracks++; bool truthIsFromB = false; if ( m_doTruthOriginPlots and m_trackTruthOriginTool->isFrom(associatedTruth, 5) ) { @@ -748,6 +750,7 @@ InDetPhysValMonitoringTool::bookHistograms() { ATH_CHECK(regTree(t.first, t.second, all)); } } + return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline index d275736df2d174af793257a6a44b79ab424bc3f2..c1e12123790fa91e92259b0b0d8023b7908c3500 100755 --- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline @@ -8,6 +8,10 @@ find_package( tdaq-common COMPONENTS DataReader EventStorage eformat eformat_wri find_package( Boost COMPONENTS unit_test_framework) find_package( ROOT REQUIRED COMPONENTS Core Hist Tree RIO Gpad Graf ) +set( CMAKE_CXX_FLAGS "-pg") +set( CMAKE_EXE_LINKER_FLAGS "-pg") +set( CMAKE_SHARED_LINKER_FLAGS "-pg") + # Component(s) in the package: atlas_add_library (MuonNSWCommonDecode src/*.cxx src/*.cpp diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h new file mode 100644 index 0000000000000000000000000000000000000000..a7839a37b41582711ad79c480feff152d6afaef9 --- /dev/null +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h @@ -0,0 +1,138 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef _MUON_NSW_STGTP_DECODE_BITMAPS_H_ +#define _MUON_NSW_STGTP_DECODE_BITMAPS_H_ + +namespace Muon +{ + namespace nsw + { + namespace STGTPL1A { + constexpr int size_head_fragID = 4; + constexpr int size_head_sectID = 4; + constexpr int size_head_EC = 1; + constexpr int size_head_flags = 7; + constexpr int size_head_BCID = 12; + constexpr int size_head_orbit = 2; + constexpr int size_head_spare = 2; + constexpr int size_L1ID = 32; + constexpr int size_head_wdw_open = 12; + constexpr int size_head_l1a_req = 12; + constexpr int size_head_wdw_close = 12; + constexpr int size_head_overflowCount = 12; + constexpr int size_head_wdw_matching_engines_usage = 32; + constexpr int size_head_cfg_wdw_open_offset = 12; + constexpr int size_head_cfg_l1a_req_offset = 12; + constexpr int size_head_cfg_wdw_close_offset = 12; + constexpr int size_head_cfg_timeout = 12; + constexpr int size_head_link_const = 32; + constexpr int size_stream_head_nbits = 16; + constexpr int size_stream_head_nwords = 16; + constexpr int size_stream_head_fifo_size = 16; + constexpr int size_stream_head_streamID = 16; + constexpr int size_trailer_CRC = 16; + }; + + namespace STGTPPad { + constexpr int pad_stream_header = 0xAAD0; + constexpr int n_words = 3; // size in 32 bit words + constexpr int size_coincidence_wedge = 16; + constexpr int size_phiID_3 = 6; + constexpr int size_phiID_2 = 6; + constexpr int size_phiID_1 = 6; + constexpr int size_phiID_0 = 6; + constexpr int size_bandID_3 = 8; + constexpr int size_bandID_2 = 8; + constexpr int size_bandID_1 = 8; + constexpr int size_bandID_0 = 8; + constexpr int size_BCID = 12; + constexpr int size_spare = 3; + constexpr int size_idleFlag = 1; + constexpr int size_padding = 8; + + }; + + + namespace STGTPSegments { + constexpr int merge_stream_header = 0xAEE0; + constexpr int n_words = 32; + constexpr int size_lut_choice_selection = 24; + constexpr int size_nsw_segment_selector = 12; + constexpr int size_valid_segment_selector = 12; + + constexpr int size_output_segment_7_monitor = 1; + constexpr int size_output_segment_7_spare = 2; + constexpr int size_output_segment_7_lowRes = 1; + constexpr int size_output_segment_7_phiRes = 1; + constexpr int size_output_segment_7_dTheta = 5; + constexpr int size_output_segment_7_phiID = 6; + constexpr int size_output_segment_7_rIndex = 8; + + constexpr int size_output_segment_6_monitor = 1; + constexpr int size_output_segment_6_spare = 2; + constexpr int size_output_segment_6_lowRes = 1; + constexpr int size_output_segment_6_phiRes = 1; + constexpr int size_output_segment_6_dTheta = 5; + constexpr int size_output_segment_6_phiID = 6; + constexpr int size_output_segment_6_rIndex = 8; + + constexpr int size_output_segment_5_monitor = 1; + constexpr int size_output_segment_5_spare = 2; + constexpr int size_output_segment_5_lowRes = 1; + constexpr int size_output_segment_5_phiRes = 1; + constexpr int size_output_segment_5_dTheta = 5; + constexpr int size_output_segment_5_phiID = 6; + constexpr int size_output_segment_5_rIndex = 8; + + constexpr int size_output_segment_4_monitor = 1; + constexpr int size_output_segment_4_spare = 2; + constexpr int size_output_segment_4_lowRes = 1; + constexpr int size_output_segment_4_phiRes = 1; + constexpr int size_output_segment_4_dTheta = 5; + constexpr int size_output_segment_4_phiID = 6; + constexpr int size_output_segment_4_rIndex = 8; + + constexpr int size_output_segment_3_monitor = 1; + constexpr int size_output_segment_3_spare = 2; + constexpr int size_output_segment_3_lowRes = 1; + constexpr int size_output_segment_3_phiRes = 1; + constexpr int size_output_segment_3_dTheta = 5; + constexpr int size_output_segment_3_phiID = 6; + constexpr int size_output_segment_3_rIndex = 8; + + constexpr int size_output_segment_2_monitor = 1; + constexpr int size_output_segment_2_spare = 2; + constexpr int size_output_segment_2_lowRes = 1; + constexpr int size_output_segment_2_phiRes = 1; + constexpr int size_output_segment_2_dTheta = 5; + constexpr int size_output_segment_2_phiID = 6; + constexpr int size_output_segment_2_rIndex = 8; + + constexpr int size_output_segment_1_monitor = 1; + constexpr int size_output_segment_1_spare = 2; + constexpr int size_output_segment_1_lowRes = 1; + constexpr int size_output_segment_1_phiRes = 1; + constexpr int size_output_segment_1_dTheta = 5; + constexpr int size_output_segment_1_phiID = 6; + constexpr int size_output_segment_1_rIndex = 8; + + constexpr int size_output_segment_0_monitor = 1; + constexpr int size_output_segment_0_spare = 2; + constexpr int size_output_segment_0_lowRes = 1; + constexpr int size_output_segment_0_phiRes = 1; + constexpr int size_output_segment_0_dTheta = 5; + constexpr int size_output_segment_0_phiID = 6; + constexpr int size_output_segment_0_rIndex = 8; + + constexpr int size_bcid = 12; + constexpr int size_sectorID = 4; + + + }; + + } +} + +#endif // _MUON_NSW_STGTP_DECODE_BITMAPS_H_ diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h new file mode 100755 index 0000000000000000000000000000000000000000..e53e3db33d23004303adf5480fc42c8599d6dd08 --- /dev/null +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h @@ -0,0 +1,98 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef _MUON_NSW_TRIGGER_STGL1A_ELINK_H_ +#define _MUON_NSW_TRIGGER_STGL1A_ELINK_H_ + +#include <stdint.h> +#include <vector> +#include <exception> + +#include "MuonNSWCommonDecode/NSWTriggerElink.h" +#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h" +#include "MuonNSWCommonDecode/NSWMMTPDecodeBitmaps.h" +namespace Muon +{ + namespace nsw + { + class NSWResourceId; + + class NSWTriggerElinkException; + + class STGTPPadPacket; + class STGTPSegmentPacket; + + class NSWTriggerSTGL1AElink : public NSWTriggerElink + { + public: + + NSWTriggerSTGL1AElink (const uint32_t *bs, uint32_t remaining); + virtual ~NSWTriggerSTGL1AElink () = default; + + + uint32_t head_fragID () const {return m_head_fragID;}; + uint32_t head_sectID () const {return m_head_sectID;}; + uint32_t head_EC () const {return m_head_EC;}; + uint32_t head_flags () const {return m_head_flags;}; + uint32_t head_BCID () const {return m_head_BCID;}; + uint32_t head_orbit () const {return m_head_orbit;}; + uint32_t head_spare () const {return m_head_spare;}; + uint32_t L1ID () const {return m_L1ID;}; + uint32_t head_wdw_open () const {return m_head_wdw_open;}; + uint32_t head_l1a_req () const {return m_head_l1a_req;}; + uint32_t head_wdw_close () const {return m_head_wdw_close;}; + uint32_t head_overflowCount () const {return m_head_overflowCount;}; + uint32_t head_wdw_matching_engines_usage () const {return m_head_wdw_matching_engines_usage;}; + uint32_t head_cfg_wdw_open_offset () const {return m_head_cfg_wdw_open_offset;}; + uint32_t head_cfg_l1a_req_offset () const {return m_head_cfg_l1a_req_offset;}; + uint32_t head_cfg_wdw_close_offset () const {return m_head_cfg_wdw_close_offset;}; + uint32_t head_cfg_timeout () const {return m_head_cfg_timeout;}; + uint32_t head_link_const () const {return m_head_link_const;}; + const std::vector<uint32_t>& stream_head_nbits () const {return m_stream_head_nbits;}; + const std::vector<uint32_t>& stream_head_nwords () const {return m_stream_head_nwords;}; + const std::vector<uint32_t>& stream_head_fifo_size () const {return m_stream_head_fifo_size;}; + const std::vector<uint32_t>& stream_head_streamID () const {return m_stream_head_streamID;}; + const std::vector<std::vector<std::vector<uint32_t>>> stream_data () const {return m_stream_data;}; + uint32_t trailer_CRC () const {return m_trailer_CRC;}; + + const std::vector<std::shared_ptr<STGTPPadPacket>>& pad_packets () const {return m_pad_packets;}; + const std::vector<std::shared_ptr<STGTPSegmentPacket>>& segment_packet () const {return m_segment_packets;}; + + private: + + uint32_t m_head_fragID; + uint32_t m_head_sectID; + uint32_t m_head_EC; + uint32_t m_head_flags; + uint32_t m_head_BCID; + uint32_t m_head_orbit; + uint32_t m_head_spare; + uint32_t m_L1ID; + uint32_t m_head_wdw_open; + uint32_t m_head_l1a_req; + uint32_t m_head_wdw_close; + uint32_t m_head_overflowCount; + uint32_t m_head_wdw_matching_engines_usage; + uint32_t m_head_cfg_wdw_open_offset; + uint32_t m_head_cfg_l1a_req_offset; + uint32_t m_head_cfg_wdw_close_offset; + uint32_t m_head_cfg_timeout; + uint32_t m_head_link_const; + std::vector<uint32_t> m_stream_head_nbits; + std::vector<uint32_t> m_stream_head_nwords; + std::vector<uint32_t> m_stream_head_fifo_size; + std::vector<uint32_t> m_stream_head_streamID; + std::vector<std::vector<std::vector<uint32_t>>> m_stream_data; //size is potentially not known a priori... + //first vector had stream index + //second vector contains stream data words - length defined by m_stream_head_nwords + //third vector used because stream data size (m_stream_head_nwords) can exceed maximum compiler size (uint64_t) + uint32_t m_trailer_CRC; + + std::vector<std::shared_ptr<STGTPPadPacket>> m_pad_packets; + std::vector<std::shared_ptr<STGTPSegmentPacket>> m_segment_packets; + }; + } +} + + +#endif // _MUON_NSW_TRIGGER_STGL1A_ELINK_H_ diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h new file mode 100644 index 0000000000000000000000000000000000000000..91b0acfe21efd0f919a14d858cb7c89339e1e38c --- /dev/null +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h @@ -0,0 +1,191 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef _MUON_NSW_STGTPPACKETS_H_ +#define _MUON_NSW_STGTPPACKETS_H_ + +#include <stdint.h> +#include <vector> +#include <exception> +#include <array> + +namespace Muon +{ + namespace nsw + { + class STGTPPadPacket + { + public: + + STGTPPadPacket (const std::vector<uint32_t>& payload); + virtual ~STGTPPadPacket () = default; + uint32_t BCID () const {return m_BCID;}; + uint32_t BandID (int num) const {return m_bandIDs.at(num);}; + uint32_t PhiID (int num) const {return m_phiIDs.at(num);}; + uint32_t PadIdleFlag () const {return m_idleFlag;}; + private: + uint32_t m_BCID; + std::array<uint32_t,4> m_bandIDs; + std::array<uint32_t,4> m_phiIDs; + uint32_t m_idleFlag; + uint32_t m_coincWege; + + + }; + + class STGTPSegmentPacket + { + public: + + STGTPSegmentPacket(const std::vector<uint32_t>& payload); + + virtual ~STGTPSegmentPacket() = default; + uint32_t LUT_ChoiceSelection() const { return m_lut_choice;} + uint32_t NSW_SegmentSelector() const { return m_nsw_segment_selector;} + uint32_t ValidSegmentSelector() const { return m_valid_segment_selector;} + + uint32_t Monitor_Segment7() const { return m_monitor_segment_7; } + uint32_t Spare_Segment7() const { return m_spare_segment_7; } + uint32_t LowRes_Segment7() const { return m_lowRes_segment_7; } + uint32_t PhiRes_Segment7() const { return m_phiRes_segment_7; } + uint32_t DTheta_Segment7() const { return m_dTheta_segment_7; } + uint32_t PhiID_Segment7() const { return m_phiID_segment_7; } + uint32_t RIndex_Segment7() const { return m_RIndex_segment_7; } + + uint32_t Monitor_Segment6() const { return m_monitor_segment_6; } + uint32_t Spare_Segment6() const { return m_spare_segment_6; } + uint32_t LowRes_Segment6() const { return m_lowRes_segment_6; } + uint32_t PhiRes_Segment6() const { return m_phiRes_segment_6; } + uint32_t DTheta_Segment6() const { return m_dTheta_segment_6; } + uint32_t PhiID_Segment6() const { return m_phiID_segment_6; } + uint32_t RIndex_Segment6() const { return m_RIndex_segment_6; } + + uint32_t Monitor_Segment5() const { return m_monitor_segment_5; } + uint32_t Spare_Segment5() const { return m_spare_segment_5; } + uint32_t LowRes_Segment5() const { return m_lowRes_segment_5; } + uint32_t PhiRes_Segment5() const { return m_phiRes_segment_5; } + uint32_t DTheta_Segment5() const { return m_dTheta_segment_5; } + uint32_t PhiID_Segment5() const { return m_phiID_segment_5; } + uint32_t RIndex_Segment5() const { return m_RIndex_segment_5; } + + uint32_t Monitor_Segment4() const { return m_monitor_segment_4; } + uint32_t Spare_Segment4() const { return m_spare_segment_4; } + uint32_t LowRes_Segment4() const { return m_lowRes_segment_4; } + uint32_t PhiRes_Segment4() const { return m_phiRes_segment_4; } + uint32_t DTheta_Segment4() const { return m_dTheta_segment_4; } + uint32_t PhiID_Segment4() const { return m_phiID_segment_4; } + uint32_t RIndex_Segment4() const { return m_RIndex_segment_4; } + + uint32_t Monitor_Segment3() const { return m_monitor_segment_3; } + uint32_t Spare_Segment3() const { return m_spare_segment_3; } + uint32_t LowRes_Segment3() const { return m_lowRes_segment_3; } + uint32_t PhiRes_Segment3() const { return m_phiRes_segment_3; } + uint32_t DTheta_Segment3() const { return m_dTheta_segment_3; } + uint32_t PhiID_Segment3() const { return m_phiID_segment_3; } + uint32_t RIndex_Segment3() const { return m_RIndex_segment_3; } + + uint32_t Monitor_Segment2() const { return m_monitor_segment_2; } + uint32_t Spare_Segment2() const { return m_spare_segment_2; } + uint32_t LowRes_Segment2() const { return m_lowRes_segment_2; } + uint32_t PhiRes_Segment2() const { return m_phiRes_segment_2; } + uint32_t DTheta_Segment2() const { return m_dTheta_segment_2; } + uint32_t PhiID_Segment2() const { return m_phiID_segment_2; } + uint32_t RIndex_Segment2() const { return m_RIndex_segment_2; } + + uint32_t Monitor_Segment1() const { return m_monitor_segment_1; } + uint32_t Spare_Segment1() const { return m_spare_segment_1; } + uint32_t LowRes_Segment1() const { return m_lowRes_segment_1; } + uint32_t PhiRes_Segment1() const { return m_phiRes_segment_1; } + uint32_t DTheta_Segment1() const { return m_dTheta_segment_1; } + uint32_t PhiID_Segment1() const { return m_phiID_segment_1; } + uint32_t RIndex_Segment1() const { return m_RIndex_segment_1; } + + uint32_t Monitor_Segment0() const { return m_monitor_segment_0; } + uint32_t Spare_Segment0() const { return m_spare_segment_0; } + uint32_t LowRes_Segment0() const { return m_lowRes_segment_0; } + uint32_t PhiRes_Segment0() const { return m_phiRes_segment_0; } + uint32_t DTheta_Segment0() const { return m_dTheta_segment_0; } + uint32_t PhiID_Segment0() const { return m_phiID_segment_0; } + uint32_t RIndex_Segment0() const { return m_RIndex_segment_0; } + + uint32_t BCID () const {return m_BCID;}; + uint32_t SectorID () const {return m_sectorID; } + + private: + uint32_t m_lut_choice; + uint32_t m_nsw_segment_selector; + uint32_t m_valid_segment_selector; + + uint32_t m_monitor_segment_7; + uint32_t m_spare_segment_7; + uint32_t m_lowRes_segment_7; + uint32_t m_phiRes_segment_7; + uint32_t m_dTheta_segment_7; + uint32_t m_phiID_segment_7; + uint32_t m_RIndex_segment_7; + + uint32_t m_monitor_segment_6; + uint32_t m_spare_segment_6; + uint32_t m_lowRes_segment_6; + uint32_t m_phiRes_segment_6; + uint32_t m_dTheta_segment_6; + uint32_t m_phiID_segment_6; + uint32_t m_RIndex_segment_6; + + uint32_t m_monitor_segment_5; + uint32_t m_spare_segment_5; + uint32_t m_lowRes_segment_5; + uint32_t m_phiRes_segment_5; + uint32_t m_dTheta_segment_5; + uint32_t m_phiID_segment_5; + uint32_t m_RIndex_segment_5; + + uint32_t m_monitor_segment_4; + uint32_t m_spare_segment_4; + uint32_t m_lowRes_segment_4; + uint32_t m_phiRes_segment_4; + uint32_t m_dTheta_segment_4; + uint32_t m_phiID_segment_4; + uint32_t m_RIndex_segment_4; + + uint32_t m_monitor_segment_3; + uint32_t m_spare_segment_3; + uint32_t m_lowRes_segment_3; + uint32_t m_phiRes_segment_3; + uint32_t m_dTheta_segment_3; + uint32_t m_phiID_segment_3; + uint32_t m_RIndex_segment_3; + + uint32_t m_monitor_segment_2; + uint32_t m_spare_segment_2; + uint32_t m_lowRes_segment_2; + uint32_t m_phiRes_segment_2; + uint32_t m_dTheta_segment_2; + uint32_t m_phiID_segment_2; + uint32_t m_RIndex_segment_2; + + uint32_t m_monitor_segment_1; + uint32_t m_spare_segment_1; + uint32_t m_lowRes_segment_1; + uint32_t m_phiRes_segment_1; + uint32_t m_dTheta_segment_1; + uint32_t m_phiID_segment_1; + uint32_t m_RIndex_segment_1; + + uint32_t m_monitor_segment_0; + uint32_t m_spare_segment_0; + uint32_t m_lowRes_segment_0; + uint32_t m_phiRes_segment_0; + uint32_t m_dTheta_segment_0; + uint32_t m_phiID_segment_0; + uint32_t m_RIndex_segment_0; + + uint32_t m_BCID; + uint32_t m_sectorID; + }; + + + } +} + +#endif // _MUON_NSW_STGPPACKETS_H_ diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx index e7004715ae9aa013dec9ee2c2ab7b0a4603eca86..3305716b7ebbc91c952e232aaede5d78149afc6b 100644 --- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx @@ -7,6 +7,7 @@ #include "MuonNSWCommonDecode/NSWTriggerElink.h" #include "MuonNSWCommonDecode/NSWTriggerMML1AElink.h" #include "MuonNSWCommonDecode/NSWTriggerMMMonElink.h" +#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h" #include "MuonNSWCommonDecode/NSWPadTriggerL1a.h" #include "MuonNSWCommonDecode/NSWTriggerCommonDecoder.h" @@ -43,6 +44,9 @@ Muon::nsw::NSWTriggerCommonDecoder::NSWTriggerCommonDecoder (const eformat::read } else if ( m_triggerType== "PadL1A" ) { std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> tmplink = std::make_shared<Muon::nsw::NSWPadTriggerL1a>(pp, remaining); elink = tmplink; + } else if ( m_triggerType== "STGL1A" ) { + std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> tmplink = std::make_shared<Muon::nsw::NSWTriggerSTGL1AElink>(pp, remaining); + elink = tmplink; } else { std::shared_ptr<Muon::nsw::NSWTriggerElink> tmplink = std::make_shared<Muon::nsw::NSWTriggerElink>(pp, remaining); elink = tmplink; diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f4896aab0c2beff83176d6de1ff650b77fd5b844 --- /dev/null +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx @@ -0,0 +1,118 @@ +/* + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +*/ +#include <vector> +#include <exception> +#include <sstream> +#include <string> +#include <stdexcept> +#include <cmath> +#include "ers/ers.h" + +#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h" + +#include "MuonNSWCommonDecode/NSWTriggerElink.h" +#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h" +#include "MuonNSWCommonDecode/NSWResourceId.h" +#include "MuonNSWCommonDecode/STGTPPackets.h" + +#define DBG_L std::cout << "E123: " << __LINE__ << " " << __FILE__ << std::endl; +Muon::nsw::NSWTriggerSTGL1AElink::NSWTriggerSTGL1AElink (const uint32_t *bs, const uint32_t remaining): + NSWTriggerElink (bs, remaining) +{ + // 2 felix header 32b words already decoded; + uint pp = 2 * 32; + //once format finalized, checking a minimum size + + //NB bit_slice(start, end) includes edges + m_head_fragID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_fragID-1); pp+= Muon::nsw::STGTPL1A::size_head_fragID; + m_head_sectID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_sectID-1); pp+= Muon::nsw::STGTPL1A::size_head_sectID; + m_head_EC = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_EC-1); pp+= Muon::nsw::STGTPL1A::size_head_EC; + m_head_flags = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_flags-1); pp+= Muon::nsw::STGTPL1A::size_head_flags; + m_head_BCID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_BCID-1); pp+= Muon::nsw::STGTPL1A::size_head_BCID; + m_head_orbit = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_orbit-1); pp+= Muon::nsw::STGTPL1A::size_head_orbit; + m_head_spare = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_spare-1); pp+= Muon::nsw::STGTPL1A::size_head_spare; + m_L1ID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_L1ID-1); pp+= Muon::nsw::STGTPL1A::size_L1ID; + m_head_wdw_open = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_open-1); pp+= Muon::nsw::STGTPL1A::size_head_wdw_open; + m_head_l1a_req = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_l1a_req-1); pp+= Muon::nsw::STGTPL1A::size_head_l1a_req; + m_head_wdw_close = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_close-1); pp+= Muon::nsw::STGTPL1A::size_head_wdw_close; + m_head_overflowCount = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_overflowCount-1); pp+= Muon::nsw::STGTPL1A::size_head_overflowCount; + m_head_wdw_matching_engines_usage = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_matching_engines_usage-1); pp+= Muon::nsw::STGTPL1A::size_head_wdw_matching_engines_usage; + m_head_cfg_wdw_open_offset = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_wdw_open_offset-1); pp+= Muon::nsw::STGTPL1A::size_head_cfg_wdw_open_offset; + m_head_cfg_l1a_req_offset = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_l1a_req_offset-1); pp+= Muon::nsw::STGTPL1A::size_head_cfg_l1a_req_offset; + m_head_cfg_wdw_close_offset = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_wdw_close_offset-1); pp+= Muon::nsw::STGTPL1A::size_head_cfg_wdw_close_offset; + m_head_cfg_timeout = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_timeout-1); pp+= Muon::nsw::STGTPL1A::size_head_cfg_timeout; + m_head_link_const = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_link_const-1); pp+= Muon::nsw::STGTPL1A::size_head_link_const; + //this is important! It identifies the elink! It should be ABCD1230/ABCD1231/ABCD1232 + //not checked during decoding but must be checked at some point + unsigned int max_pp = (m_wordCountFlx-1) * sizeof(uint32_t) * 8; // we use this to make sure we are consistent with the size + while ( pp < remaining * sizeof(uint32_t) * 8 && pp < (m_wordCountFlx-1) * sizeof(uint32_t) * 8 ){ + // DEBUG + ERS_DEBUG (2, "pp: " << pp << " rem: " << remaining << " wc: " << m_wordCountFlx ); + //a -2 needed cause remaining includes felix header words + uint32_t current_stream_head_nbits = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_nbits-1); pp+= Muon::nsw::STGTPL1A::size_stream_head_nbits; + uint32_t current_stream_head_nwords = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_nwords-1); pp+= Muon::nsw::STGTPL1A::size_stream_head_nwords; + uint32_t current_stream_head_fifo_size = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_fifo_size-1); pp+= Muon::nsw::STGTPL1A::size_stream_head_fifo_size; + uint32_t current_stream_head_streamID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_streamID-1); pp+= Muon::nsw::STGTPL1A::size_stream_head_streamID; + + m_stream_head_nbits.push_back ( current_stream_head_nbits ); + m_stream_head_nwords.push_back ( current_stream_head_nwords ); + m_stream_head_fifo_size.push_back ( current_stream_head_fifo_size ); + m_stream_head_streamID.push_back ( current_stream_head_streamID ); + + int dataSize = ceil(current_stream_head_nbits/32.0); + std::vector<std::vector<uint32_t>> current_stream_data; + + // DEBUG + ERS_DEBUG (2," stream_head_nbits: " << current_stream_head_nbits ); + ERS_DEBUG (2," stream_head_nwords: " << current_stream_head_nwords); + ERS_DEBUG (2," stream_head_fifo_size: " << current_stream_head_fifo_size); + ERS_DEBUG (2," stream_head_streamID: " << current_stream_head_streamID); + + unsigned int total_expected_size = dataSize * current_stream_head_nwords; + // DEBUG + ERS_DEBUG (2, "total_expected_size: " << dataSize * current_stream_head_nwords); + ERS_DEBUG (2, "m_wordCountFlx: " << m_wordCountFlx << " ceil(pp/32.0): " << ceil(pp/32.0)); + + if (total_expected_size > m_wordCountFlx-ceil(pp/32.0) + 1) + { + throw std::length_error("STG stream inconsistent size inconsistent with expected packet size"); + } + + //this block data agnostic + for (uint i = 0; i<current_stream_head_nwords; i++){ + std::vector<uint32_t> data; + for (int j = 0; j < dataSize && pp < max_pp; j++, pp += 32){ + data.push_back( bit_slice<uint64_t,uint32_t>(bs, pp, pp+31)); + } + current_stream_data.push_back(data); + } + m_stream_data.push_back(current_stream_data); + } + + for (uint i=0; i<m_stream_data.size(); i++){ + for (uint j=0; j<m_stream_data.at(i).size(); j++) + { + if (m_stream_head_streamID[i] == Muon::nsw::STGTPPad::pad_stream_header){ + int inconsistent_message_size = (m_stream_data.at(i).at(j).size() != std::ceil(m_stream_head_nbits[i]/32.0)); + if (inconsistent_message_size){ + throw std::length_error("Pad stream inconsistent size inconsistent with integer number of pad-messages"); + } + std::vector<uint32_t> pad_packet = m_stream_data.at(i).at(j); + m_pad_packets.push_back( std::make_shared<STGTPPadPacket>(pad_packet)); + continue; + } + if (m_stream_head_streamID[i] == Muon::nsw::STGTPSegments::merge_stream_header){ + int inconsistent_message_size = (m_stream_data.at(i).at(j).size() != std::ceil(m_stream_head_nbits[i]/32.0)); + if (inconsistent_message_size){ + throw std::length_error("Merge stream inconsistent size inconsistent with integer number of segment-messages"); + } + m_segment_packets.push_back( std::make_shared<Muon::nsw::STGTPSegmentPacket>(m_stream_data.at(i).at(j))); + continue; + } + } + } + //warning: how the swROD is behaving if the last work is a uint16 only? Just 0-padding? + m_trailer_CRC = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_trailer_CRC-1); pp+= Muon::nsw::STGTPL1A::size_trailer_CRC; + +} diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx new file mode 100644 index 0000000000000000000000000000000000000000..dcb2181734fd5c508cb6547efaee182596e7bd42 --- /dev/null +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx @@ -0,0 +1,126 @@ +/* + Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +*/ +#include <vector> +#include <exception> +#include <sstream> +#include <string> +#include <algorithm> +#include <tuple> + +#include "MuonNSWCommonDecode/STGTPPackets.h" +#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h" +#include "MuonNSWCommonDecode/NSWMMTPDecodeBitmaps.h" +#define PARSE_VAR(var,st,pp,siz) {\ +var = bit_slice<uint64_t,uint32_t>(st,pp,pp+siz-1);\ +pp += siz;\ +} + +Muon::nsw::STGTPPadPacket::STGTPPadPacket (const std::vector<uint32_t>& packet){ + uint pp = 0; + + uint32_t bs[3]={packet[0],packet[1],packet[2]}; + m_coincWege = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_coincidence_wedge-1); pp+= Muon::nsw::STGTPPad::size_coincidence_wedge; + uint32_t phi_3 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_3-1); pp+= Muon::nsw::STGTPPad::size_phiID_3; + uint32_t phi_2 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_2-1); pp+= Muon::nsw::STGTPPad::size_phiID_2; + uint32_t phi_1 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_1-1); pp+= Muon::nsw::STGTPPad::size_phiID_1; + uint32_t phi_0 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_0-1); pp+= Muon::nsw::STGTPPad::size_phiID_0; + m_phiIDs[0]=phi_0; + m_phiIDs[1]=phi_1; + m_phiIDs[2]=phi_2; + m_phiIDs[3]=phi_3; + + uint32_t band_3 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_3-1); pp+= Muon::nsw::STGTPPad::size_bandID_3; + uint32_t band_2 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_2-1); pp+= Muon::nsw::STGTPPad::size_bandID_2; + uint32_t band_1 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_1-1); pp+= Muon::nsw::STGTPPad::size_bandID_1; + uint32_t band_0 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_0-1); pp+= Muon::nsw::STGTPPad::size_bandID_0; + m_bandIDs[0]=band_0; + m_bandIDs[1]=band_1; + m_bandIDs[2]=band_2; + m_bandIDs[3]=band_3; + + m_BCID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_BCID-1); pp+= Muon::nsw::STGTPPad::size_BCID; + + pp+=Muon::nsw::STGTPPad::size_spare; + m_idleFlag = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_idleFlag-1); pp+= Muon::nsw::STGTPPad::size_idleFlag; + +} + +Muon::nsw::STGTPSegmentPacket::STGTPSegmentPacket(const std::vector<uint32_t>& packet) +{ + uint pp = 0; + uint32_t bs[8]={packet[0],packet[1],packet[2],packet[3],packet[4],packet[5],packet[6],packet[7]}; + PARSE_VAR(m_lut_choice,bs,pp,Muon::nsw::STGTPSegments::size_lut_choice_selection); + PARSE_VAR(m_nsw_segment_selector,bs,pp,Muon::nsw::STGTPSegments::size_nsw_segment_selector); + PARSE_VAR(m_valid_segment_selector,bs,pp,Muon::nsw::STGTPSegments::size_valid_segment_selector); + + PARSE_VAR(m_monitor_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_monitor); + PARSE_VAR(m_spare_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_spare); + PARSE_VAR(m_lowRes_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_lowRes); + PARSE_VAR(m_phiRes_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_phiRes); + PARSE_VAR(m_dTheta_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_dTheta); + PARSE_VAR(m_phiID_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_phiID); + PARSE_VAR(m_RIndex_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_rIndex); + + PARSE_VAR(m_monitor_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_monitor); + PARSE_VAR(m_spare_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_spare); + PARSE_VAR(m_lowRes_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_lowRes); + PARSE_VAR(m_phiRes_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_phiRes); + PARSE_VAR(m_dTheta_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_dTheta); + PARSE_VAR(m_phiID_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_phiID); + PARSE_VAR(m_RIndex_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_rIndex); + + PARSE_VAR(m_monitor_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_monitor); + PARSE_VAR(m_spare_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_spare); + PARSE_VAR(m_lowRes_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_lowRes); + PARSE_VAR(m_phiRes_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_phiRes); + PARSE_VAR(m_dTheta_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_dTheta); + PARSE_VAR(m_phiID_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_phiID); + PARSE_VAR(m_RIndex_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_rIndex); + + PARSE_VAR(m_monitor_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_monitor); + PARSE_VAR(m_spare_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_spare); + PARSE_VAR(m_lowRes_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_lowRes); + PARSE_VAR(m_phiRes_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_phiRes); + PARSE_VAR(m_dTheta_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_dTheta); + PARSE_VAR(m_phiID_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_phiID); + PARSE_VAR(m_RIndex_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_rIndex); + + PARSE_VAR(m_monitor_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_monitor); + PARSE_VAR(m_spare_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_spare); + PARSE_VAR(m_lowRes_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_lowRes); + PARSE_VAR(m_phiRes_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_phiRes); + PARSE_VAR(m_dTheta_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_dTheta); + PARSE_VAR(m_phiID_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_phiID); + PARSE_VAR(m_RIndex_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_rIndex); + + PARSE_VAR(m_monitor_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_monitor); + PARSE_VAR(m_spare_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_spare); + PARSE_VAR(m_lowRes_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_lowRes); + PARSE_VAR(m_phiRes_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_phiRes); + PARSE_VAR(m_dTheta_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_dTheta); + PARSE_VAR(m_phiID_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_phiID); + PARSE_VAR(m_RIndex_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_rIndex); + + PARSE_VAR(m_monitor_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_monitor); + PARSE_VAR(m_spare_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_spare); + PARSE_VAR(m_lowRes_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_lowRes); + PARSE_VAR(m_phiRes_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_phiRes); + PARSE_VAR(m_dTheta_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_dTheta); + PARSE_VAR(m_phiID_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_phiID); + PARSE_VAR(m_RIndex_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_rIndex); + + PARSE_VAR(m_monitor_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_monitor); + PARSE_VAR(m_spare_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_spare); + PARSE_VAR(m_lowRes_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_lowRes); + PARSE_VAR(m_phiRes_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_phiRes); + PARSE_VAR(m_dTheta_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_dTheta); + PARSE_VAR(m_phiID_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_phiID); + PARSE_VAR(m_RIndex_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_rIndex); + + PARSE_VAR(m_BCID,bs,pp,Muon::nsw::STGTPSegments::size_bcid); + PARSE_VAR(m_sectorID,bs,pp,Muon::nsw::STGTPSegments::size_sectorID); + + +} + diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx index 20b6804bb7553566339fee8a7a1e41a282777529..2de72ff8b4fe0465def53da5e1aef29f74199937 100644 --- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx @@ -1,6 +1,6 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -*/ + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + */ // STL include files @@ -23,7 +23,8 @@ #include "MuonNSWCommonDecode/NSWResourceId.h" #include "MuonNSWCommonDecode/MMARTPacket.h" #include "MuonNSWCommonDecode/MMTrigPacket.h" - +#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h" +#include "MuonNSWCommonDecode/STGTPPackets.h" #include <TFile.h> @@ -31,673 +32,1136 @@ struct Params { - bool print_only {false}; - uint32_t printout_level {0}; - uint32_t max_events {0}; - std::vector <std::string> file_names; //outfiles will just rename input ones + bool print_only {false}; + uint32_t printout_level {0}; + uint32_t max_events {0}; + std::vector <std::string> file_names; //outfiles will just rename input ones }; struct Statistics { - uint32_t nevents {0}; - uint32_t nevents_not_decoded {0}; - uint32_t nevents_sus_felix_stat {0}; - double total_decoding_time {0}; - double avg_decoding_time {0}; - //can be extended for any quick stat wanted + uint32_t nevents {0}; + uint32_t nevents_not_decoded {0}; + uint32_t nevents_sus_felix_stat {0}; + double total_decoding_time {0}; + double avg_decoding_time {0}; + double avg_fill_time {0}; + double avg_write_time {0}; + double total_write_time {0}; + double total_fill_time {0}; + //can be extended for any quick stat wanted }; struct outBranches { - //each event has multple ROBs (e.g. multiple sectors) - //each ROB then has multiple elinks - //MML1A - comtemplating multiple elinks, - //so the vector is on elinks - std::vector<uint32_t> b_MML1A_ROD_sourceID = {} ; - std::vector<uint32_t> b_MML1A_ROD_subdetID = {} ; - std::vector<uint32_t> b_MML1A_ROD_moduleID = {} ; - std::vector<uint32_t> b_MML1A_ROD_L1ID = {} ; - std::vector<uint32_t> b_MML1A_ROD_n_words = {} ; - std::vector<uint32_t> b_MML1A_head_fragID = {} ; - std::vector<uint32_t> b_MML1A_head_sectID = {} ; - std::vector<uint32_t> b_MML1A_head_EC = {} ; - std::vector<uint32_t> b_MML1A_head_flags = {} ; - std::vector<uint32_t> b_MML1A_head_BCID = {} ; - std::vector<uint32_t> b_MML1A_head_orbit = {} ; - std::vector<uint32_t> b_MML1A_head_spare = {} ; - std::vector<uint32_t> b_MML1A_L1ID = {} ; - std::vector<uint32_t> b_MML1A_head_wdw_open = {} ; - std::vector<uint32_t> b_MML1A_head_l1a_req = {} ; - std::vector<uint32_t> b_MML1A_head_wdw_close = {} ; - std::vector<uint32_t> b_MML1A_head_overflowCount = {} ; - std::vector<uint32_t> b_MML1A_head_wdw_matching_engines_usage = {} ; - std::vector<uint32_t> b_MML1A_head_cfg_wdw_open_offset = {} ; - std::vector<uint32_t> b_MML1A_head_cfg_l1a_req_offset = {} ; - std::vector<uint32_t> b_MML1A_head_cfg_wdw_close_offset = {} ; - std::vector<uint32_t> b_MML1A_head_cfg_timeout = {} ; - std::vector<uint32_t> b_MML1A_head_link_const = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nbits = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nwords = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_stream_head_fifo_size = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_stream_head_streamID = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_art_BCID = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_art_layers = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_art_channels = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_trig_BCID = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_trig_dTheta = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_trig_phiBin = {} ; - std::vector<std::vector<uint32_t>> b_MML1A_trig_rBin = {} ; - std::vector<uint32_t> b_MML1A_trailer_CRC = {} ; - //MMMon - comtemplating multiple elinks (even if only one possible in current design) - //so the vector is on elinks - std::vector<uint32_t> b_MMMon_ROD_sourceID = {} ; - std::vector<uint32_t> b_MMMon_ROD_subdetID = {} ; - std::vector<uint32_t> b_MMMon_ROD_moduleID = {} ; - std::vector<uint32_t> b_MMMon_ROD_L1ID = {} ; - std::vector<uint32_t> b_MMMon_ROD_n_words = {} ; - std::vector<uint32_t> b_MMMon_head_fragID = {} ; - std::vector<uint32_t> b_MMMon_head_sectID = {} ; - std::vector<uint32_t> b_MMMon_head_EC = {} ; - std::vector<uint32_t> b_MMMon_head_flags = {} ; - std::vector<uint32_t> b_MMMon_head_BCID = {} ; - std::vector<uint32_t> b_MMMon_head_orbit = {} ; - std::vector<uint32_t> b_MMMon_head_spare = {} ; - std::vector<uint32_t> b_MMMon_L1ID = {} ; - std::vector<uint32_t> b_MMMon_head_coincBCID = {} ; - std::vector<uint32_t> b_MMMon_head_regionCount = {} ; - std::vector<uint32_t> b_MMMon_head_coincRegion = {} ; - std::vector<uint32_t> b_MMMon_head_reserved = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_streamID = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_regionCount = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_triggerID = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_V1 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_V0 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_U1 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_U0 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_X3 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_X2 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_X1 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_finder_X0 = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_streamID = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_regionCount = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_triggerID = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_filler = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxG = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_muG = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_mvG = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxL = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_mx_ROI = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_dTheta = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_zero = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiSign = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiBin = {} ; - std::vector<std::vector<uint32_t>> b_MMMon_fitter_rBin = {} ; - std::vector<uint32_t> b_MMMon_trailer_CRC = {} ; - //PadL1A - comtemplating multiple elinks - //so the vector is on elinks - std::vector<uint32_t> b_PadL1A_ROD_sourceID = {} ; - std::vector<uint32_t> b_PadL1A_ROD_subdetID = {} ; - std::vector<uint32_t> b_PadL1A_ROD_moduleID = {} ; - std::vector<uint32_t> b_PadL1A_ROD_L1ID = {} ; - std::vector<uint32_t> b_PadL1A_ROD_n_words = {} ; - std::vector<uint32_t> b_PadL1A_flags = {} ; - std::vector<uint32_t> b_PadL1A_ec = {} ; - std::vector<uint32_t> b_PadL1A_fragid = {} ; - std::vector<uint32_t> b_PadL1A_secid = {} ; - std::vector<uint32_t> b_PadL1A_spare = {} ; - std::vector<uint32_t> b_PadL1A_orbit = {} ; - std::vector<uint32_t> b_PadL1A_bcid = {} ; - std::vector<uint32_t> b_PadL1A_l1id = {} ; - std::vector<uint32_t> b_PadL1A_hit_n = {} ; - std::vector<uint32_t> b_PadL1A_pfeb_n = {} ; - std::vector<uint32_t> b_PadL1A_trigger_n = {} ; - std::vector<uint32_t> b_PadL1A_bcid_n = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_relbcid = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_pfeb = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_tdschannel = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmmchannel = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmm = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_hit_padchannel = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_addr = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_nchan = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_disconnected = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_trigger_bandid = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_trigger_phiid = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_trigger_relbcid = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_bcid_rel = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ; - std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ; + //each event has multple ROBs (e.g. multiple sectors) + //each ROB then has multiple elinks + //MML1A - comtemplating multiple elinks, + //so the vector is on elinks + std::vector<uint32_t> b_MML1A_ROD_sourceID = {} ; + std::vector<uint32_t> b_MML1A_ROD_subdetID = {} ; + std::vector<uint32_t> b_MML1A_ROD_moduleID = {} ; + std::vector<uint32_t> b_MML1A_ROD_L1ID = {} ; + std::vector<uint32_t> b_MML1A_ROD_n_words = {} ; + std::vector<uint32_t> b_MML1A_head_fragID = {} ; + std::vector<uint32_t> b_MML1A_head_sectID = {} ; + std::vector<uint32_t> b_MML1A_head_EC = {} ; + std::vector<uint32_t> b_MML1A_head_flags = {} ; + std::vector<uint32_t> b_MML1A_head_BCID = {} ; + std::vector<uint32_t> b_MML1A_head_orbit = {} ; + std::vector<uint32_t> b_MML1A_head_spare = {} ; + std::vector<uint32_t> b_MML1A_L1ID = {} ; + std::vector<uint32_t> b_MML1A_head_wdw_open = {} ; + std::vector<uint32_t> b_MML1A_head_l1a_req = {} ; + std::vector<uint32_t> b_MML1A_head_wdw_close = {} ; + std::vector<uint32_t> b_MML1A_head_overflowCount = {} ; + std::vector<uint32_t> b_MML1A_head_wdw_matching_engines_usage = {} ; + std::vector<uint32_t> b_MML1A_head_cfg_wdw_open_offset = {} ; + std::vector<uint32_t> b_MML1A_head_cfg_l1a_req_offset = {} ; + std::vector<uint32_t> b_MML1A_head_cfg_wdw_close_offset = {} ; + std::vector<uint32_t> b_MML1A_head_cfg_timeout = {} ; + std::vector<uint32_t> b_MML1A_head_link_const = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nbits = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nwords = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_stream_head_fifo_size = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_stream_head_streamID = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_art_BCID = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_art_layers = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_art_channels = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_trig_BCID = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_trig_dTheta = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_trig_phiBin = {} ; + std::vector<std::vector<uint32_t>> b_MML1A_trig_rBin = {} ; + std::vector<uint32_t> b_MML1A_trailer_CRC = {} ; + //MMMon - comtemplating multiple elinks (even if only one possible in current design) + //so the vector is on elinks + std::vector<uint32_t> b_MMMon_ROD_sourceID = {} ; + std::vector<uint32_t> b_MMMon_ROD_subdetID = {} ; + std::vector<uint32_t> b_MMMon_ROD_moduleID = {} ; + std::vector<uint32_t> b_MMMon_ROD_L1ID = {} ; + std::vector<uint32_t> b_MMMon_ROD_n_words = {} ; + std::vector<uint32_t> b_MMMon_head_fragID = {} ; + std::vector<uint32_t> b_MMMon_head_sectID = {} ; + std::vector<uint32_t> b_MMMon_head_EC = {} ; + std::vector<uint32_t> b_MMMon_head_flags = {} ; + std::vector<uint32_t> b_MMMon_head_BCID = {} ; + std::vector<uint32_t> b_MMMon_head_orbit = {} ; + std::vector<uint32_t> b_MMMon_head_spare = {} ; + std::vector<uint32_t> b_MMMon_L1ID = {} ; + std::vector<uint32_t> b_MMMon_head_coincBCID = {} ; + std::vector<uint32_t> b_MMMon_head_regionCount = {} ; + std::vector<uint32_t> b_MMMon_head_coincRegion = {} ; + std::vector<uint32_t> b_MMMon_head_reserved = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_streamID = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_regionCount = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_triggerID = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_V1 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_V0 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_U1 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_U0 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_X3 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_X2 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_X1 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_finder_X0 = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_streamID = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_regionCount = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_triggerID = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_filler = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxG = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_muG = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_mvG = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxL = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_mx_ROI = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_dTheta = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_zero = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiSign = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiBin = {} ; + std::vector<std::vector<uint32_t>> b_MMMon_fitter_rBin = {} ; + std::vector<uint32_t> b_MMMon_trailer_CRC = {} ; + //PadL1A - comtemplating multiple elinks + //so the vector is on elinks + std::vector<uint32_t> b_PadL1A_ROD_sourceID = {} ; + std::vector<uint32_t> b_PadL1A_ROD_subdetID = {} ; + std::vector<uint32_t> b_PadL1A_ROD_moduleID = {} ; + std::vector<uint32_t> b_PadL1A_ROD_L1ID = {} ; + std::vector<uint32_t> b_PadL1A_ROD_n_words = {} ; + std::vector<uint32_t> b_PadL1A_flags = {} ; + std::vector<uint32_t> b_PadL1A_ec = {} ; + std::vector<uint32_t> b_PadL1A_fragid = {} ; + std::vector<uint32_t> b_PadL1A_secid = {} ; + std::vector<uint32_t> b_PadL1A_spare = {} ; + std::vector<uint32_t> b_PadL1A_orbit = {} ; + std::vector<uint32_t> b_PadL1A_bcid = {} ; + std::vector<uint32_t> b_PadL1A_l1id = {} ; + std::vector<uint32_t> b_PadL1A_hit_n = {} ; + std::vector<uint32_t> b_PadL1A_pfeb_n = {} ; + std::vector<uint32_t> b_PadL1A_trigger_n = {} ; + std::vector<uint32_t> b_PadL1A_bcid_n = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_relbcid = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_pfeb = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_tdschannel = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmmchannel = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmm = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_hit_padchannel = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_addr = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_nchan = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_disconnected = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_trigger_bandid = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_trigger_phiid = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_trigger_relbcid = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_bcid_rel = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ; + std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ; + + std::vector<uint32_t> b_STGL1A_ROD_sourceID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_subdetID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_moduleID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_L1ID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_n_words = {} ; + std::vector<uint32_t> b_STGL1A_head_fragID = {} ; + std::vector<uint32_t> b_STGL1A_head_sectID = {} ; + std::vector<uint32_t> b_STGL1A_head_EC = {} ; + std::vector<uint32_t> b_STGL1A_head_flags = {} ; + std::vector<uint32_t> b_STGL1A_head_BCID = {} ; + std::vector<uint32_t> b_STGL1A_head_orbit = {} ; + std::vector<uint32_t> b_STGL1A_head_spare = {} ; + std::vector<uint32_t> b_STGL1A_L1ID = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_open = {} ; + std::vector<uint32_t> b_STGL1A_head_l1a_req = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_close = {} ; + std::vector<uint32_t> b_STGL1A_head_overflowCount = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_matching_engines_usage = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_wdw_open_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_l1a_req_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_wdw_close_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_timeout = {} ; + std::vector<uint32_t> b_STGL1A_head_link_const = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nbits = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nwords = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_fifo_size = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_streamID = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_coincidence_wedge = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_BCID = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_idleFlag = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_LUT_choiceSelection = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_nsw_segmentSelector = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_valid_segmentSelector = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment7 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment6 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment5 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment4 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment3 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment2 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment1 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_BCID = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_sectorID = {}; + + std::vector<uint32_t> b_STGL1A_trailer_CRC = {} ; }; void test_nsw_trigger_common_decoder_help (char *progname) { - std::cout << "Usage: " << progname - << " [-h] [-n events] [-p] [-v] file1, file2, ..." << std::endl; - std::cout << "\t\t[-n events] maximum number of events to read (default = all)" << std::endl; - std::cout << "\t\t[-p] only print raw fragments" << std::endl; - std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl; + std::cout << "Usage: " << progname + << " [-h] [-n events] [-p] [-v] file1, file2, ..." << std::endl; + std::cout << "\t\t[-n events] maximum number of events to read (default = all)" << std::endl; + std::cout << "\t\t[-p] only print raw fragments" << std::endl; + std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl; } int test_nsw_trigger_common_decoder_opt (int argc, char **argv, Params& params) { - int i; - for (i=1; i < argc; ++i){ - if (argv[i][0] == '-'){ - switch (argv[i][1]){ - case 'v': - ++params.printout_level; - break; - case 'p': - params.print_only = true; - break; - case 'n': - params.max_events = static_cast <uint32_t> (strtol(argv[++i], NULL, 10)); - break; - case 'h': - test_nsw_trigger_common_decoder_help (argv[0]); - return 1; - default: - test_nsw_trigger_common_decoder_help (argv[0]); - return 1; - } - } else { - std::string data_file_name (argv[i]); - params.file_names.push_back (data_file_name); - } - } - - if (params.file_names.size () == 0) - { - test_nsw_trigger_common_decoder_help (argv[0]); - std::cout << "\t\tNo input files provided" << std::endl; - return 2; - } - - return 0; + int i; + for (i=1; i < argc; ++i){ + if (argv[i][0] == '-'){ + switch (argv[i][1]){ + case 'v': + ++params.printout_level; + break; + case 'p': + params.print_only = true; + break; + case 'n': + params.max_events = static_cast <uint32_t> (strtol(argv[++i], NULL, 10)); + break; + case 'h': + test_nsw_trigger_common_decoder_help (argv[0]); + return 1; + default: + test_nsw_trigger_common_decoder_help (argv[0]); + return 1; + } + } else { + std::string data_file_name (argv[i]); + params.file_names.push_back (data_file_name); + } + } + + if (params.file_names.size () == 0) + { + test_nsw_trigger_common_decoder_help (argv[0]); + std::cout << "\t\tNo input files provided" << std::endl; + return 2; + } + + return 0; } int test_nsw_trigger_common_decoder_init_tree (TTree &outtree, outBranches &data) { - //creating always all branches... you never know which swROD modules are connected... - //can change later if needed (but this is a test app so...) - outtree.Branch( "MML1A_ROD_sourceID", &data.b_MML1A_ROD_sourceID); - outtree.Branch( "MML1A_ROD_subdetID", &data.b_MML1A_ROD_subdetID); - outtree.Branch( "MML1A_ROD_moduleID", &data.b_MML1A_ROD_moduleID); - outtree.Branch( "MML1A_ROD_L1ID", &data.b_MML1A_ROD_L1ID); - outtree.Branch( "MML1A_ROD_n_words", &data.b_MML1A_ROD_n_words); - outtree.Branch( "MML1A_head_fragID", &data.b_MML1A_head_fragID); - outtree.Branch( "MML1A_head_sectID", &data.b_MML1A_head_sectID); - outtree.Branch( "MML1A_head_EC", &data.b_MML1A_head_EC); - outtree.Branch( "MML1A_head_flags", &data.b_MML1A_head_flags); - outtree.Branch( "MML1A_head_BCID", &data.b_MML1A_head_BCID); - outtree.Branch( "MML1A_head_orbit", &data.b_MML1A_head_orbit); - outtree.Branch( "MML1A_head_spare", &data.b_MML1A_head_spare); - outtree.Branch( "MML1A_L1ID", &data.b_MML1A_L1ID); - outtree.Branch( "MML1A_head_wdw_open", &data.b_MML1A_head_wdw_open); - outtree.Branch( "MML1A_head_l1a_req", &data.b_MML1A_head_l1a_req); - outtree.Branch( "MML1A_head_wdw_close", &data.b_MML1A_head_wdw_close); - outtree.Branch( "MML1A_head_overflowCount", &data.b_MML1A_head_overflowCount); - outtree.Branch( "MML1A_head_wdw_matching_engines_usage", &data.b_MML1A_head_wdw_matching_engines_usage); - outtree.Branch( "MML1A_head_cfg_wdw_open_offset", &data.b_MML1A_head_cfg_wdw_open_offset); - outtree.Branch( "MML1A_head_cfg_l1a_req_offset", &data.b_MML1A_head_cfg_l1a_req_offset); - outtree.Branch( "MML1A_head_cfg_wdw_close_offset", &data.b_MML1A_head_cfg_wdw_close_offset); - outtree.Branch( "MML1A_head_cfg_timeout", &data.b_MML1A_head_cfg_timeout); - outtree.Branch( "MML1A_head_link_const", &data.b_MML1A_head_link_const); - outtree.Branch( "MML1A_stream_head_nbits", &data.b_MML1A_stream_head_nbits); - outtree.Branch( "MML1A_stream_head_nwords", &data.b_MML1A_stream_head_nwords); - outtree.Branch( "MML1A_stream_head_fifo_size", &data.b_MML1A_stream_head_fifo_size); - outtree.Branch( "MML1A_stream_head_streamID", &data.b_MML1A_stream_head_streamID); - outtree.Branch( "MML1A_trailer_CRC", &data.b_MML1A_trailer_CRC); - outtree.Branch( "MML1A_art_BCID", &data.b_MML1A_art_BCID); - outtree.Branch( "MML1A_art_layers", &data.b_MML1A_art_layers); - outtree.Branch( "MML1A_art_channels", &data.b_MML1A_art_channels); - outtree.Branch( "MML1A_trig_BCID", &data.b_MML1A_trig_BCID); - outtree.Branch( "MML1A_trig_dTheta", &data.b_MML1A_trig_dTheta); - outtree.Branch( "MML1A_trig_phiBin", &data.b_MML1A_trig_phiBin); - outtree.Branch( "MML1A_trig_rBin", &data.b_MML1A_trig_rBin); - - outtree.Branch("MMMon_ROD_sourceID", &data.b_MMMon_ROD_sourceID); - outtree.Branch("MMMon_ROD_subdetID", &data.b_MMMon_ROD_subdetID); - outtree.Branch("MMMon_ROD_moduleID", &data.b_MMMon_ROD_moduleID); - outtree.Branch("MMMon_ROD_L1ID", &data.b_MMMon_ROD_L1ID); - outtree.Branch("MMMon_ROD_n_words", &data.b_MMMon_ROD_n_words); - outtree.Branch("MMMon_head_fragID", &data.b_MMMon_head_fragID); - outtree.Branch("MMMon_head_sectID", &data.b_MMMon_head_sectID); - outtree.Branch("MMMon_head_EC", &data.b_MMMon_head_EC); - outtree.Branch("MMMon_head_flags", &data.b_MMMon_head_flags); - outtree.Branch("MMMon_head_BCID", &data.b_MMMon_head_BCID); - outtree.Branch("MMMon_head_orbit", &data.b_MMMon_head_orbit); - outtree.Branch("MMMon_head_spare", &data.b_MMMon_head_spare); - outtree.Branch("MMMon_L1ID", &data.b_MMMon_L1ID); - outtree.Branch("MMMon_head_coincBCID", &data.b_MMMon_head_coincBCID); - outtree.Branch("MMMon_head_regionCount", &data.b_MMMon_head_regionCount); - outtree.Branch("MMMon_head_coincRegion", &data.b_MMMon_head_coincRegion); - outtree.Branch("MMMon_head_reserved", &data.b_MMMon_head_reserved); - outtree.Branch("MMMon_finder_streamID", &data.b_MMMon_finder_streamID); - outtree.Branch("MMMon_finder_regionCount", &data.b_MMMon_finder_regionCount); - outtree.Branch("MMMon_finder_triggerID", &data.b_MMMon_finder_triggerID); - outtree.Branch("MMMon_finder_V1", &data.b_MMMon_finder_V1); - outtree.Branch("MMMon_finder_V0", &data.b_MMMon_finder_V0); - outtree.Branch("MMMon_finder_U1", &data.b_MMMon_finder_U1); - outtree.Branch("MMMon_finder_U0", &data.b_MMMon_finder_U0); - outtree.Branch("MMMon_finder_X3", &data.b_MMMon_finder_X3); - outtree.Branch("MMMon_finder_X2", &data.b_MMMon_finder_X2); - outtree.Branch("MMMon_finder_X1", &data.b_MMMon_finder_X1); - outtree.Branch("MMMon_finder_X0", &data.b_MMMon_finder_X0); - outtree.Branch("MMMon_fitter_streamID", &data.b_MMMon_fitter_streamID); - outtree.Branch("MMMon_fitter_regionCount", &data.b_MMMon_fitter_regionCount); - outtree.Branch("MMMon_fitter_triggerID", &data.b_MMMon_fitter_triggerID); - outtree.Branch("MMMon_fitter_filler", &data.b_MMMon_fitter_filler); - outtree.Branch("MMMon_fitter_mxG", &data.b_MMMon_fitter_mxG); - outtree.Branch("MMMon_fitter_muG", &data.b_MMMon_fitter_muG); - outtree.Branch("MMMon_fitter_mvG", &data.b_MMMon_fitter_mvG); - outtree.Branch("MMMon_fitter_mxL", &data.b_MMMon_fitter_mxL); - outtree.Branch("MMMon_fitter_mx_ROI", &data.b_MMMon_fitter_mx_ROI); - outtree.Branch("MMMon_fitter_dTheta", &data.b_MMMon_fitter_dTheta); - outtree.Branch("MMMon_fitter_zero", &data.b_MMMon_fitter_zero); - outtree.Branch("MMMon_fitter_phiSign", &data.b_MMMon_fitter_phiSign); - outtree.Branch("MMMon_fitter_phiBin", &data.b_MMMon_fitter_phiBin); - outtree.Branch("MMMon_fitter_rBin", &data.b_MMMon_fitter_rBin); - outtree.Branch("MMMon_trailer_CRC", &data.b_MMMon_trailer_CRC); - - outtree.Branch( "PadL1A_ROD_sourceID", &data.b_PadL1A_ROD_sourceID); - outtree.Branch( "PadL1A_ROD_subdetID", &data.b_PadL1A_ROD_subdetID); - outtree.Branch( "PadL1A_ROD_moduleID", &data.b_PadL1A_ROD_moduleID); - outtree.Branch( "PadL1A_ROD_L1ID", &data.b_PadL1A_ROD_L1ID); - outtree.Branch( "PadL1A_ROD_n_words", &data.b_PadL1A_ROD_n_words); - outtree.Branch( "PadL1A_flags", &data.b_PadL1A_flags); - outtree.Branch( "PadL1A_ec", &data.b_PadL1A_ec); - outtree.Branch( "PadL1A_fragid", &data.b_PadL1A_fragid); - outtree.Branch( "PadL1A_secid", &data.b_PadL1A_secid); - outtree.Branch( "PadL1A_spare", &data.b_PadL1A_spare); - outtree.Branch( "PadL1A_orbit", &data.b_PadL1A_orbit); - outtree.Branch( "PadL1A_bcid", &data.b_PadL1A_bcid); - outtree.Branch( "PadL1A_l1id", &data.b_PadL1A_l1id); - outtree.Branch( "PadL1A_hit_n", &data.b_PadL1A_hit_n); - outtree.Branch( "PadL1A_pfeb_n", &data.b_PadL1A_pfeb_n); - outtree.Branch( "PadL1A_trigger_n", &data.b_PadL1A_trigger_n); - outtree.Branch( "PadL1A_bcid_n", &data.b_PadL1A_bcid_n); - outtree.Branch( "PadL1A_hit_relbcid", &data.b_PadL1A_hit_relbcid); - outtree.Branch( "PadL1A_hit_pfeb", &data.b_PadL1A_hit_pfeb); - outtree.Branch( "PadL1A_hit_tdschannel", &data.b_PadL1A_hit_tdschannel); - outtree.Branch( "PadL1A_hit_vmmchannel", &data.b_PadL1A_hit_vmmchannel); - outtree.Branch( "PadL1A_hit_vmm", &data.b_PadL1A_hit_vmm); - outtree.Branch( "PadL1A_hit_padchannel", &data.b_PadL1A_hit_padchannel); - outtree.Branch( "PadL1A_pfeb_addr", &data.b_PadL1A_pfeb_addr); - outtree.Branch( "PadL1A_pfeb_nchan", &data.b_PadL1A_pfeb_nchan); - outtree.Branch( "PadL1A_pfeb_disconnected", &data.b_PadL1A_pfeb_disconnected); - outtree.Branch( "PadL1A_trigger_bandid", &data.b_PadL1A_trigger_bandid); - outtree.Branch( "PadL1A_trigger_phiid", &data.b_PadL1A_trigger_phiid); - outtree.Branch( "PadL1A_trigger_relbcid", &data.b_PadL1A_trigger_relbcid); - outtree.Branch( "PadL1A_bcid_rel", &data.b_PadL1A_bcid_rel); - outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status); - outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero); - - return 0; + //creating always all branches... you never know which swROD modules are connected... + //can change later if needed (but this is a test app so...) + outtree.Branch( "MML1A_ROD_sourceID", &data.b_MML1A_ROD_sourceID); + outtree.Branch( "MML1A_ROD_subdetID", &data.b_MML1A_ROD_subdetID); + outtree.Branch( "MML1A_ROD_moduleID", &data.b_MML1A_ROD_moduleID); + outtree.Branch( "MML1A_ROD_L1ID", &data.b_MML1A_ROD_L1ID); + outtree.Branch( "MML1A_ROD_n_words", &data.b_MML1A_ROD_n_words); + outtree.Branch( "MML1A_head_fragID", &data.b_MML1A_head_fragID); + outtree.Branch( "MML1A_head_sectID", &data.b_MML1A_head_sectID); + outtree.Branch( "MML1A_head_EC", &data.b_MML1A_head_EC); + outtree.Branch( "MML1A_head_flags", &data.b_MML1A_head_flags); + outtree.Branch( "MML1A_head_BCID", &data.b_MML1A_head_BCID); + outtree.Branch( "MML1A_head_orbit", &data.b_MML1A_head_orbit); + outtree.Branch( "MML1A_head_spare", &data.b_MML1A_head_spare); + outtree.Branch( "MML1A_L1ID", &data.b_MML1A_L1ID); + outtree.Branch( "MML1A_head_wdw_open", &data.b_MML1A_head_wdw_open); + outtree.Branch( "MML1A_head_l1a_req", &data.b_MML1A_head_l1a_req); + outtree.Branch( "MML1A_head_wdw_close", &data.b_MML1A_head_wdw_close); + outtree.Branch( "MML1A_head_overflowCount", &data.b_MML1A_head_overflowCount); + outtree.Branch( "MML1A_head_wdw_matching_engines_usage", &data.b_MML1A_head_wdw_matching_engines_usage); + outtree.Branch( "MML1A_head_cfg_wdw_open_offset", &data.b_MML1A_head_cfg_wdw_open_offset); + outtree.Branch( "MML1A_head_cfg_l1a_req_offset", &data.b_MML1A_head_cfg_l1a_req_offset); + outtree.Branch( "MML1A_head_cfg_wdw_close_offset", &data.b_MML1A_head_cfg_wdw_close_offset); + outtree.Branch( "MML1A_head_cfg_timeout", &data.b_MML1A_head_cfg_timeout); + outtree.Branch( "MML1A_head_link_const", &data.b_MML1A_head_link_const); + outtree.Branch( "MML1A_stream_head_nbits", &data.b_MML1A_stream_head_nbits); + outtree.Branch( "MML1A_stream_head_nwords", &data.b_MML1A_stream_head_nwords); + outtree.Branch( "MML1A_stream_head_fifo_size", &data.b_MML1A_stream_head_fifo_size); + outtree.Branch( "MML1A_stream_head_streamID", &data.b_MML1A_stream_head_streamID); + outtree.Branch( "MML1A_trailer_CRC", &data.b_MML1A_trailer_CRC); + outtree.Branch( "MML1A_art_BCID", &data.b_MML1A_art_BCID); + outtree.Branch( "MML1A_art_layers", &data.b_MML1A_art_layers); + outtree.Branch( "MML1A_art_channels", &data.b_MML1A_art_channels); + outtree.Branch( "MML1A_trig_BCID", &data.b_MML1A_trig_BCID); + outtree.Branch( "MML1A_trig_dTheta", &data.b_MML1A_trig_dTheta); + outtree.Branch( "MML1A_trig_phiBin", &data.b_MML1A_trig_phiBin); + outtree.Branch( "MML1A_trig_rBin", &data.b_MML1A_trig_rBin); + + outtree.Branch("MMMon_ROD_sourceID", &data.b_MMMon_ROD_sourceID); + outtree.Branch("MMMon_ROD_subdetID", &data.b_MMMon_ROD_subdetID); + outtree.Branch("MMMon_ROD_moduleID", &data.b_MMMon_ROD_moduleID); + outtree.Branch("MMMon_ROD_L1ID", &data.b_MMMon_ROD_L1ID); + outtree.Branch("MMMon_ROD_n_words", &data.b_MMMon_ROD_n_words); + outtree.Branch("MMMon_head_fragID", &data.b_MMMon_head_fragID); + outtree.Branch("MMMon_head_sectID", &data.b_MMMon_head_sectID); + outtree.Branch("MMMon_head_EC", &data.b_MMMon_head_EC); + outtree.Branch("MMMon_head_flags", &data.b_MMMon_head_flags); + outtree.Branch("MMMon_head_BCID", &data.b_MMMon_head_BCID); + outtree.Branch("MMMon_head_orbit", &data.b_MMMon_head_orbit); + outtree.Branch("MMMon_head_spare", &data.b_MMMon_head_spare); + outtree.Branch("MMMon_L1ID", &data.b_MMMon_L1ID); + outtree.Branch("MMMon_head_coincBCID", &data.b_MMMon_head_coincBCID); + outtree.Branch("MMMon_head_regionCount", &data.b_MMMon_head_regionCount); + outtree.Branch("MMMon_head_coincRegion", &data.b_MMMon_head_coincRegion); + outtree.Branch("MMMon_head_reserved", &data.b_MMMon_head_reserved); + outtree.Branch("MMMon_finder_streamID", &data.b_MMMon_finder_streamID); + outtree.Branch("MMMon_finder_regionCount", &data.b_MMMon_finder_regionCount); + outtree.Branch("MMMon_finder_triggerID", &data.b_MMMon_finder_triggerID); + outtree.Branch("MMMon_finder_V1", &data.b_MMMon_finder_V1); + outtree.Branch("MMMon_finder_V0", &data.b_MMMon_finder_V0); + outtree.Branch("MMMon_finder_U1", &data.b_MMMon_finder_U1); + outtree.Branch("MMMon_finder_U0", &data.b_MMMon_finder_U0); + outtree.Branch("MMMon_finder_X3", &data.b_MMMon_finder_X3); + outtree.Branch("MMMon_finder_X2", &data.b_MMMon_finder_X2); + outtree.Branch("MMMon_finder_X1", &data.b_MMMon_finder_X1); + outtree.Branch("MMMon_finder_X0", &data.b_MMMon_finder_X0); + outtree.Branch("MMMon_fitter_streamID", &data.b_MMMon_fitter_streamID); + outtree.Branch("MMMon_fitter_regionCount", &data.b_MMMon_fitter_regionCount); + outtree.Branch("MMMon_fitter_triggerID", &data.b_MMMon_fitter_triggerID); + outtree.Branch("MMMon_fitter_filler", &data.b_MMMon_fitter_filler); + outtree.Branch("MMMon_fitter_mxG", &data.b_MMMon_fitter_mxG); + outtree.Branch("MMMon_fitter_muG", &data.b_MMMon_fitter_muG); + outtree.Branch("MMMon_fitter_mvG", &data.b_MMMon_fitter_mvG); + outtree.Branch("MMMon_fitter_mxL", &data.b_MMMon_fitter_mxL); + outtree.Branch("MMMon_fitter_mx_ROI", &data.b_MMMon_fitter_mx_ROI); + outtree.Branch("MMMon_fitter_dTheta", &data.b_MMMon_fitter_dTheta); + outtree.Branch("MMMon_fitter_zero", &data.b_MMMon_fitter_zero); + outtree.Branch("MMMon_fitter_phiSign", &data.b_MMMon_fitter_phiSign); + outtree.Branch("MMMon_fitter_phiBin", &data.b_MMMon_fitter_phiBin); + outtree.Branch("MMMon_fitter_rBin", &data.b_MMMon_fitter_rBin); + outtree.Branch("MMMon_trailer_CRC", &data.b_MMMon_trailer_CRC); + + outtree.Branch( "PadL1A_ROD_sourceID", &data.b_PadL1A_ROD_sourceID); + outtree.Branch( "PadL1A_ROD_subdetID", &data.b_PadL1A_ROD_subdetID); + outtree.Branch( "PadL1A_ROD_moduleID", &data.b_PadL1A_ROD_moduleID); + outtree.Branch( "PadL1A_ROD_L1ID", &data.b_PadL1A_ROD_L1ID); + outtree.Branch( "PadL1A_ROD_n_words", &data.b_PadL1A_ROD_n_words); + outtree.Branch( "PadL1A_flags", &data.b_PadL1A_flags); + outtree.Branch( "PadL1A_ec", &data.b_PadL1A_ec); + outtree.Branch( "PadL1A_fragid", &data.b_PadL1A_fragid); + outtree.Branch( "PadL1A_secid", &data.b_PadL1A_secid); + outtree.Branch( "PadL1A_spare", &data.b_PadL1A_spare); + outtree.Branch( "PadL1A_orbit", &data.b_PadL1A_orbit); + outtree.Branch( "PadL1A_bcid", &data.b_PadL1A_bcid); + outtree.Branch( "PadL1A_l1id", &data.b_PadL1A_l1id); + outtree.Branch( "PadL1A_hit_n", &data.b_PadL1A_hit_n); + outtree.Branch( "PadL1A_pfeb_n", &data.b_PadL1A_pfeb_n); + outtree.Branch( "PadL1A_trigger_n", &data.b_PadL1A_trigger_n); + outtree.Branch( "PadL1A_bcid_n", &data.b_PadL1A_bcid_n); + outtree.Branch( "PadL1A_hit_relbcid", &data.b_PadL1A_hit_relbcid); + outtree.Branch( "PadL1A_hit_pfeb", &data.b_PadL1A_hit_pfeb); + outtree.Branch( "PadL1A_hit_tdschannel", &data.b_PadL1A_hit_tdschannel); + outtree.Branch( "PadL1A_hit_vmmchannel", &data.b_PadL1A_hit_vmmchannel); + outtree.Branch( "PadL1A_hit_vmm", &data.b_PadL1A_hit_vmm); + outtree.Branch( "PadL1A_hit_padchannel", &data.b_PadL1A_hit_padchannel); + outtree.Branch( "PadL1A_pfeb_addr", &data.b_PadL1A_pfeb_addr); + outtree.Branch( "PadL1A_pfeb_nchan", &data.b_PadL1A_pfeb_nchan); + outtree.Branch( "PadL1A_pfeb_disconnected", &data.b_PadL1A_pfeb_disconnected); + outtree.Branch( "PadL1A_trigger_bandid", &data.b_PadL1A_trigger_bandid); + outtree.Branch( "PadL1A_trigger_phiid", &data.b_PadL1A_trigger_phiid); + outtree.Branch( "PadL1A_trigger_relbcid", &data.b_PadL1A_trigger_relbcid); + outtree.Branch( "PadL1A_bcid_rel", &data.b_PadL1A_bcid_rel); + outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status); + outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero); + + outtree.Branch( "STGL1A_ROD_sourceID", &data.b_STGL1A_ROD_sourceID); + outtree.Branch( "STGL1A_ROD_subdetID", &data.b_STGL1A_ROD_subdetID); + outtree.Branch( "STGL1A_ROD_moduleID", &data.b_STGL1A_ROD_moduleID); + outtree.Branch( "STGL1A_ROD_L1ID", &data.b_STGL1A_ROD_L1ID); + outtree.Branch( "STGL1A_ROD_n_words", &data.b_STGL1A_ROD_n_words); + outtree.Branch( "STGL1A_head_fragID", &data.b_STGL1A_head_fragID); + outtree.Branch( "STGL1A_head_sectID", &data.b_STGL1A_head_sectID); + outtree.Branch( "STGL1A_head_EC", &data.b_STGL1A_head_EC); + outtree.Branch( "STGL1A_head_flags", &data.b_STGL1A_head_flags); + outtree.Branch( "STGL1A_head_BCID", &data.b_STGL1A_head_BCID); + outtree.Branch( "STGL1A_head_orbit", &data.b_STGL1A_head_orbit); + outtree.Branch( "STGL1A_head_spare", &data.b_STGL1A_head_spare); + outtree.Branch( "STGL1A_L1ID", &data.b_STGL1A_L1ID); + outtree.Branch( "STGL1A_head_wdw_open", &data.b_STGL1A_head_wdw_open); + outtree.Branch( "STGL1A_head_l1a_req", &data.b_STGL1A_head_l1a_req); + outtree.Branch( "STGL1A_head_wdw_close", &data.b_STGL1A_head_wdw_close); + outtree.Branch( "STGL1A_head_overflowCount", &data.b_STGL1A_head_overflowCount); + outtree.Branch( "STGL1A_head_wdw_matching_engines_usage", &data.b_STGL1A_head_wdw_matching_engines_usage); + outtree.Branch( "STGL1A_head_cfg_wdw_open_offset", &data.b_STGL1A_head_cfg_wdw_open_offset); + outtree.Branch( "STGL1A_head_cfg_l1a_req_offset", &data.b_STGL1A_head_cfg_l1a_req_offset); + outtree.Branch( "STGL1A_head_cfg_wdw_close_offset", &data.b_STGL1A_head_cfg_wdw_close_offset); + outtree.Branch( "STGL1A_head_cfg_timeout", &data.b_STGL1A_head_cfg_timeout); + outtree.Branch( "STGL1A_head_link_const", &data.b_STGL1A_head_link_const); + outtree.Branch( "STGL1A_stream_head_nbits", &data.b_STGL1A_stream_head_nbits); + outtree.Branch( "STGL1A_stream_head_nwords", &data.b_STGL1A_stream_head_nwords); + outtree.Branch( "STGL1A_stream_head_fifo_size", &data.b_STGL1A_stream_head_fifo_size); + outtree.Branch( "STGL1A_stream_head_streamID", &data.b_STGL1A_stream_head_streamID); + + outtree.Branch( "STGL1A_pad_coincidence_wedge", &data.b_STGL1A_pad_coincidence_wedge); + outtree.Branch( "STGL1A_pad_phiID_3", &data.b_STGL1A_pad_phiID_3); + outtree.Branch( "STGL1A_pad_phiID_2", &data.b_STGL1A_pad_phiID_2); + outtree.Branch( "STGL1A_pad_phiID_1", &data.b_STGL1A_pad_phiID_1); + outtree.Branch( "STGL1A_pad_phiID_0", &data.b_STGL1A_pad_phiID_0); + + outtree.Branch( "STGL1A_pad_bandID_3", &data.b_STGL1A_pad_bandID_3); + outtree.Branch( "STGL1A_pad_bandID_2", &data.b_STGL1A_pad_bandID_2); + outtree.Branch( "STGL1A_pad_bandID_1", &data.b_STGL1A_pad_bandID_1); + outtree.Branch( "STGL1A_pad_bandID_0", &data.b_STGL1A_pad_bandID_0); + + outtree.Branch( "STGL1A_pad_BCID", &data.b_STGL1A_pad_BCID); + outtree.Branch( "STGL1A_pad_idleFlag", &data.b_STGL1A_pad_idleFlag); + + outtree.Branch( "STGL1A_merge_LUT_choiceSelection", &data.b_STGL1A_merge_LUT_choiceSelection); + outtree.Branch( "STGL1A_merge_nsw_segmentSelector", &data.b_STGL1A_merge_nsw_segmentSelector); + outtree.Branch( "STGL1A_merge_valid_segmentSelector", &data.b_STGL1A_merge_valid_segmentSelector); + + outtree.Branch( "STGL1A_merge_monitor_segment7", &data.b_STGL1A_merge_monitor_segment7); + outtree.Branch( "STGL1A_merge_spare_segment7", &data.b_STGL1A_merge_spare_segment7); + outtree.Branch( "STGL1A_merge_lowRes_segment7", &data.b_STGL1A_merge_lowRes_segment7); + outtree.Branch( "STGL1A_merge_phiRes_segment7", &data.b_STGL1A_merge_phiRes_segment7); + outtree.Branch( "STGL1A_merge_dTheta_segment7", &data.b_STGL1A_merge_dTheta_segment7); + outtree.Branch( "STGL1A_merge_phiID_segment7", &data.b_STGL1A_merge_phiID_segment7); + outtree.Branch( "STGL1A_merge_RIndex_segment7", &data.b_STGL1A_merge_RIndex_segment7); + + outtree.Branch( "STGL1A_merge_monitor_segment6", &data.b_STGL1A_merge_monitor_segment6); + outtree.Branch( "STGL1A_merge_spare_segment6", &data.b_STGL1A_merge_spare_segment6); + outtree.Branch( "STGL1A_merge_lowRes_segment6", &data.b_STGL1A_merge_lowRes_segment6); + outtree.Branch( "STGL1A_merge_phiRes_segment6", &data.b_STGL1A_merge_phiRes_segment6); + outtree.Branch( "STGL1A_merge_dTheta_segment6", &data.b_STGL1A_merge_dTheta_segment6); + outtree.Branch( "STGL1A_merge_phiID_segment6", &data.b_STGL1A_merge_phiID_segment6); + outtree.Branch( "STGL1A_merge_RIndex_segment6", &data.b_STGL1A_merge_RIndex_segment6); + + outtree.Branch( "STGL1A_merge_monitor_segment5", &data.b_STGL1A_merge_monitor_segment5); + outtree.Branch( "STGL1A_merge_spare_segment5", &data.b_STGL1A_merge_spare_segment5); + outtree.Branch( "STGL1A_merge_lowRes_segment5", &data.b_STGL1A_merge_lowRes_segment5); + outtree.Branch( "STGL1A_merge_phiRes_segment5", &data.b_STGL1A_merge_phiRes_segment5); + outtree.Branch( "STGL1A_merge_dTheta_segment5", &data.b_STGL1A_merge_dTheta_segment5); + outtree.Branch( "STGL1A_merge_phiID_segment5", &data.b_STGL1A_merge_phiID_segment5); + outtree.Branch( "STGL1A_merge_RIndex_segment5", &data.b_STGL1A_merge_RIndex_segment5); + + outtree.Branch( "STGL1A_merge_monitor_segment4", &data.b_STGL1A_merge_monitor_segment4); + outtree.Branch( "STGL1A_merge_spare_segment4", &data.b_STGL1A_merge_spare_segment4); + outtree.Branch( "STGL1A_merge_lowRes_segment4", &data.b_STGL1A_merge_lowRes_segment4); + outtree.Branch( "STGL1A_merge_phiRes_segment4", &data.b_STGL1A_merge_phiRes_segment4); + outtree.Branch( "STGL1A_merge_dTheta_segment4", &data.b_STGL1A_merge_dTheta_segment4); + outtree.Branch( "STGL1A_merge_phiID_segment4", &data.b_STGL1A_merge_phiID_segment4); + outtree.Branch( "STGL1A_merge_RIndex_segment4", &data.b_STGL1A_merge_RIndex_segment4); + + outtree.Branch( "STGL1A_merge_monitor_segment3", &data.b_STGL1A_merge_monitor_segment3); + outtree.Branch( "STGL1A_merge_spare_segment3", &data.b_STGL1A_merge_spare_segment3); + outtree.Branch( "STGL1A_merge_lowRes_segment3", &data.b_STGL1A_merge_lowRes_segment3); + outtree.Branch( "STGL1A_merge_phiRes_segment3", &data.b_STGL1A_merge_phiRes_segment3); + outtree.Branch( "STGL1A_merge_dTheta_segment3", &data.b_STGL1A_merge_dTheta_segment3); + outtree.Branch( "STGL1A_merge_phiID_segment3", &data.b_STGL1A_merge_phiID_segment3); + outtree.Branch( "STGL1A_merge_RIndex_segment3", &data.b_STGL1A_merge_RIndex_segment3); + + outtree.Branch( "STGL1A_merge_monitor_segment2", &data.b_STGL1A_merge_monitor_segment2); + outtree.Branch( "STGL1A_merge_spare_segment2", &data.b_STGL1A_merge_spare_segment2); + outtree.Branch( "STGL1A_merge_lowRes_segment2", &data.b_STGL1A_merge_lowRes_segment2); + outtree.Branch( "STGL1A_merge_phiRes_segment2", &data.b_STGL1A_merge_phiRes_segment2); + outtree.Branch( "STGL1A_merge_dTheta_segment2", &data.b_STGL1A_merge_dTheta_segment2); + outtree.Branch( "STGL1A_merge_phiID_segment2", &data.b_STGL1A_merge_phiID_segment2); + outtree.Branch( "STGL1A_merge_RIndex_segment2", &data.b_STGL1A_merge_RIndex_segment2); + + outtree.Branch( "STGL1A_merge_monitor_segment1", &data.b_STGL1A_merge_monitor_segment1); + outtree.Branch( "STGL1A_merge_spare_segment1", &data.b_STGL1A_merge_spare_segment1); + outtree.Branch( "STGL1A_merge_lowRes_segment1", &data.b_STGL1A_merge_lowRes_segment1); + outtree.Branch( "STGL1A_merge_phiRes_segment1", &data.b_STGL1A_merge_phiRes_segment1); + outtree.Branch( "STGL1A_merge_dTheta_segment1", &data.b_STGL1A_merge_dTheta_segment1); + outtree.Branch( "STGL1A_merge_phiID_segment1", &data.b_STGL1A_merge_phiID_segment1); + outtree.Branch( "STGL1A_merge_RIndex_segment1", &data.b_STGL1A_merge_RIndex_segment1); + + outtree.Branch( "STGL1A_merge_monitor_segment0", &data.b_STGL1A_merge_monitor_segment0); + outtree.Branch( "STGL1A_merge_spare_segment0", &data.b_STGL1A_merge_spare_segment0); + outtree.Branch( "STGL1A_merge_lowRes_segment0", &data.b_STGL1A_merge_lowRes_segment0); + outtree.Branch( "STGL1A_merge_phiRes_segment0", &data.b_STGL1A_merge_phiRes_segment0); + outtree.Branch( "STGL1A_merge_dTheta_segment0", &data.b_STGL1A_merge_dTheta_segment0); + outtree.Branch( "STGL1A_merge_phiID_segment0", &data.b_STGL1A_merge_phiID_segment0); + outtree.Branch( "STGL1A_merge_RIndex_segment0", &data.b_STGL1A_merge_RIndex_segment0); + + outtree.Branch( "STGL1A_merge_BCID", &data.b_STGL1A_merge_BCID); + outtree.Branch( "STGL1A_merge_sectorID", &data.b_STGL1A_merge_sectorID); + + return 0; } int test_nsw_trigger_common_decoder_end (Statistics &statistics) { - std::cout << "Total event processed = " << statistics.nevents << std::endl; - std::cout << "Total event not decoded = " << statistics.nevents_not_decoded << std::endl; - std::cout << "Total event with flx elink errors = " << statistics.nevents_sus_felix_stat << std::endl; - std::cout << "Total decoding time (ms) = " << statistics.total_decoding_time << std::endl; - return 0; + std::cout << "Total event processed = " << statistics.nevents << std::endl; + std::cout << "Total event not decoded = " << statistics.nevents_not_decoded << std::endl; + std::cout << "Total event with flx elink errors = " << statistics.nevents_sus_felix_stat << std::endl; + std::cout << "Total fill time = " << statistics.total_fill_time << std::endl; + std::cout << "Total write time = " << statistics.total_write_time << std::endl; + std::cout << "Total decoding time (ms) = " << statistics.total_decoding_time << std::endl; + return 0; } int test_nsw_trigger_common_decoder_event (const eformat::read::FullEventFragment &f, outBranches &data, Params ¶ms, Statistics &statistics) { - std::vector <eformat::read::ROBFragment> robs; - - if (params.printout_level > 2) - std::cout << "Entering fragment analysis" << std::endl; - - f.robs (robs); - - for (auto r = robs.begin (); r != robs.end (); ++r) - { - bool is_nsw = false, is_mmg = false, is_stg = false; - bool is_tp = false, is_pt = false, is_l1a = false, is_mon = false; //is_l1a and is_mon are actuall - - // check fragment for errors - try{ r->check (); } - catch(...) { std::cout << "Something wrong with a fragment ROB" << std::endl; continue; } - - uint32_t sid = r->rob_source_id (); - eformat::helper::SourceIdentifier source_id (sid); - eformat::SubDetector s = source_id.subdetector_id (); - uint16_t m = source_id.module_id (); - - if (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_MMEGA_ENDCAP_C_SIDE) - is_nsw = is_mmg = true; - else if (s == eformat::MUON_STGC_ENDCAP_A_SIDE || s == eformat::MUON_STGC_ENDCAP_C_SIDE) - is_nsw = is_stg = true; - - //int sector = m & 0xf; - if ((m & 0xf0) == 0x10) {is_tp = true; is_l1a = true;} - else if ((m & 0xf0) == 0x20) {is_pt = true; is_l1a = true;} - else if ((m & 0xf0) == 0x50) {is_tp = true; is_mon = true;} - - - if (params.printout_level > 1 && is_nsw){ - std::cout << "ROB source ID = 0x" << std::hex << sid << std::dec << std::endl; - std::cout << "ROB subdet ID = 0x" << std::hex << s << std::dec << std::endl; - std::cout << "ROB module ID = 0x" << std::hex << m << std::dec << std::endl; - //std::cout << "is_nsw = " << (is_nsw?"Yes":"No") << std::endl; - std::cout << "is_mmg = " << (is_mmg?"Yes":"No") << std::endl; - std::cout << "is_stg = " << (is_stg?"Yes":"No") << std::endl; - std::cout << "is_pt = " << (is_pt?"Yes":"No") << std::endl; - std::cout << "is_tp = " << (is_tp?"Yes":"No") << std::endl; - std::cout << "is_l1a = " << (is_l1a?"Yes":"No") << std::endl; - std::cout << "is_mon = " << (is_mon?"Yes":"No") << std::endl; - } - - - if (is_nsw && (is_pt || is_tp)){ - if (params.printout_level > 0 || params.print_only){ - std::cout << "NSW Trigger fragment found: length " << r->rod_ndata () << std::endl; - } - - const uint32_t *bs = r->rod_data (); - - // Print out raw fragment - if (params.print_only){ - std::cout << "ROD Fragment size in words:" << std::endl; - std::cout << "ROD Total: " << r->rod_fragment_size_word () << std::endl; - std::cout << "ROD Header: " << r->rod_header_size_word () << std::endl; - std::cout << "ROD Trailer: " << r->rod_trailer_size_word () << std::endl; - std::cout << "ROD L1 ID: " << std::hex << r->rod_lvl1_id () << std::dec << std::endl; - std::cout << "ROD Data words: " << r->rod_ndata () << std::endl; - - std::cout << "Printing raw data (ignoring any structure)" << std::endl; - std::cout << std::hex; - for (unsigned int i = 0; i < r->rod_ndata (); ++i){ - std::cout << " " << std::setfill('0') << std::setw(8) << bs[i]; - if (i % 4 == 3) std::cout << std::endl; - } - std::cout << std::dec; - std::cout << std::endl; - } - - if (!params.print_only){ - std::string robType = std::string(is_pt?"Pad":(is_mmg?"MM":"STG")) + std::string(is_l1a?"L1A":(is_mon?"Mon":"")); - std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now (); - Muon::nsw::NSWTriggerCommonDecoder nsw_trigger_decoder (*r, robType); - std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now (); - unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - begin).count (); - float time_elapsed_ms = static_cast <float> (time_elapsed) / 1000; - if (params.printout_level > 1){ - std::cout << "Time for decoding this event (ms): " << time_elapsed_ms << std::endl; - std::cout << std::endl; - } - statistics.total_decoding_time += time_elapsed_ms; - - if (robType=="PadL1A"){ - for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { - std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> link = std::dynamic_pointer_cast<Muon::nsw::NSWPadTriggerL1a>(nsw_trigger_decoder.get_elinks()[i]); - data.b_PadL1A_ROD_sourceID.push_back( sid ); - data.b_PadL1A_ROD_subdetID.push_back( s ); - data.b_PadL1A_ROD_moduleID.push_back( m ); - data.b_PadL1A_ROD_L1ID.push_back( r->rod_lvl1_id () ); - data.b_PadL1A_ROD_n_words.push_back( r->rod_ndata () ); - data.b_PadL1A_flags.push_back( link->getFlags() ); - data.b_PadL1A_ec.push_back( link->getEc() ); - data.b_PadL1A_fragid.push_back( link->getFragid() ); - data.b_PadL1A_secid.push_back( link->getSecid() ); - data.b_PadL1A_spare.push_back( link->getSpare() ); - data.b_PadL1A_orbit.push_back( link->getOrbit() ); - data.b_PadL1A_bcid.push_back( link->getBcid() ); - data.b_PadL1A_l1id.push_back( link->getL1id() ); - data.b_PadL1A_hit_n.push_back( link->getNumberOfHits() ); - data.b_PadL1A_pfeb_n.push_back( link->getNumberOfPfebs() ); - data.b_PadL1A_trigger_n.push_back( link->getNumberOfTriggers() ); - data.b_PadL1A_bcid_n.push_back( link->getNumberOfBcids() ); - data.b_PadL1A_hit_relbcid.push_back( link->getHitRelBcids() ); - data.b_PadL1A_hit_pfeb.push_back( link->getHitPfebs() ); - data.b_PadL1A_hit_tdschannel.push_back( link->getHitTdsChannels() ); - data.b_PadL1A_hit_vmmchannel.push_back( link->getHitVmmChannels() ); - data.b_PadL1A_hit_vmm.push_back( link->getHitVmms() ); - data.b_PadL1A_hit_padchannel.push_back( link->getHitPadChannels() ); - data.b_PadL1A_pfeb_addr.push_back( link->getPfebAddresses() ); - data.b_PadL1A_pfeb_nchan.push_back( link->getPfebNChannels() ); - data.b_PadL1A_pfeb_disconnected.push_back( link->getPfebDisconnecteds() ); - data.b_PadL1A_trigger_bandid.push_back( link->getTriggerBandIds() ); - data.b_PadL1A_trigger_phiid.push_back( link->getTriggerPhiIds() ); - data.b_PadL1A_trigger_relbcid.push_back( link->getTriggerRelBcids() ); - data.b_PadL1A_bcid_rel.push_back( link->getBcidRels() ); - data.b_PadL1A_bcid_status.push_back( link->getBcidStatuses() ); - data.b_PadL1A_bcid_multzero.push_back( link->getBcidMultZeros() ); - } - } - if (robType=="MML1A") { - for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { - std::shared_ptr<Muon::nsw::NSWTriggerMML1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMML1AElink>(nsw_trigger_decoder.get_elinks()[i]); - data.b_MML1A_ROD_sourceID.push_back( sid ); - data.b_MML1A_ROD_subdetID.push_back( s ); - data.b_MML1A_ROD_moduleID.push_back( m ); - data.b_MML1A_ROD_L1ID.push_back( r->rod_lvl1_id () ); - data.b_MML1A_ROD_n_words.push_back( r->rod_ndata () ); - data.b_MML1A_head_fragID.push_back( link->head_fragID() ); - data.b_MML1A_head_sectID.push_back( link->head_sectID() ); - data.b_MML1A_head_EC.push_back( link->head_EC() ); - data.b_MML1A_head_flags.push_back( link->head_flags() ); - data.b_MML1A_head_BCID.push_back( link->head_BCID() ); - data.b_MML1A_head_orbit.push_back( link->head_orbit() ); - data.b_MML1A_head_spare.push_back( link->head_spare() ); - data.b_MML1A_L1ID.push_back( link->L1ID() ); - data.b_MML1A_head_wdw_open.push_back( link->head_wdw_open() ); - data.b_MML1A_head_l1a_req.push_back( link->head_l1a_req() ); - data.b_MML1A_head_wdw_close.push_back( link->head_wdw_close() ); - data.b_MML1A_head_overflowCount.push_back( link->head_overflowCount() ); - data.b_MML1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() ); - data.b_MML1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() ); - data.b_MML1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() ); - data.b_MML1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() ); - data.b_MML1A_head_cfg_timeout.push_back( link->head_cfg_timeout() ); - data.b_MML1A_head_link_const.push_back( link->head_link_const() ); - data.b_MML1A_stream_head_nbits.push_back( link->stream_head_nbits() ); - data.b_MML1A_stream_head_nwords.push_back( link->stream_head_nwords() ); - data.b_MML1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() ); - data.b_MML1A_stream_head_streamID.push_back( link->stream_head_streamID() ); - - const std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>>& arts = link->art_packets(); - std::vector<uint32_t> tmp_art_BCIDs; - std::vector<uint32_t> tmp_art_layers; - std::vector<uint32_t> tmp_art_channels; - for (auto art : arts){ - for (uint i = 0; i < art->channels().size(); ++i){ - //so that there's a timestamp per channel - tmp_art_layers.push_back( art->channels()[i].first ); - tmp_art_channels.push_back( art->channels()[i].second ); - tmp_art_BCIDs.push_back( art->art_BCID() ); - } - } - data.b_MML1A_art_BCID.push_back( tmp_art_BCIDs ); - data.b_MML1A_art_layers.push_back( tmp_art_layers ); - data.b_MML1A_art_channels.push_back( tmp_art_channels ); - - const std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>>& trigs = link->trig_packets(); - std::vector<uint32_t> tmp_trig_BCID; - std::vector<uint32_t> tmp_trig_dTheta; - std::vector<uint32_t> tmp_trig_phiBin; - std::vector<uint32_t> tmp_trig_rBin; - for (auto trig : trigs){ - tmp_trig_BCID.push_back( trig->trig_BCID() ); - tmp_trig_dTheta.push_back( trig->trig_dTheta() ); - tmp_trig_phiBin.push_back( trig->trig_phiBin() ); - tmp_trig_rBin.push_back( trig->trig_rBin() ); - } - data.b_MML1A_trig_BCID.push_back( tmp_trig_BCID ); - data.b_MML1A_trig_dTheta.push_back( tmp_trig_dTheta ); - data.b_MML1A_trig_phiBin.push_back( tmp_trig_phiBin ); - data.b_MML1A_trig_rBin.push_back( tmp_trig_rBin ); - - data.b_MML1A_trailer_CRC.push_back( link->trailer_CRC() ); - - } - } - if (robType=="MMMon") { - for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { - std::shared_ptr<Muon::nsw::NSWTriggerMMMonElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMMMonElink>(nsw_trigger_decoder.get_elinks()[i]); - data.b_MMMon_ROD_sourceID.push_back( sid ); - data.b_MMMon_ROD_subdetID.push_back( s ); - data.b_MMMon_ROD_moduleID.push_back( m ); - data.b_MMMon_ROD_L1ID.push_back( r->rod_lvl1_id () ); - data.b_MMMon_ROD_n_words.push_back( r->rod_ndata () ); - data.b_MMMon_head_fragID.push_back( link->head_fragID() ); - data.b_MMMon_head_sectID.push_back( link->head_sectID() ); - data.b_MMMon_head_EC.push_back( link->head_EC() ); - data.b_MMMon_head_flags.push_back( link->head_flags() ); - data.b_MMMon_head_BCID.push_back( link->head_BCID() ); - data.b_MMMon_head_orbit.push_back( link->head_orbit() ); - data.b_MMMon_head_spare.push_back( link->head_spare() ); - data.b_MMMon_L1ID.push_back( link->L1ID() ); - data.b_MMMon_head_coincBCID.push_back( link->head_coincBCID() ); - data.b_MMMon_head_regionCount.push_back( link->head_regionCount() ); - data.b_MMMon_head_coincRegion.push_back( link->head_coincRegion() ); - data.b_MMMon_head_reserved.push_back( link->head_reserved() ); - data.b_MMMon_finder_streamID.push_back( link->finder_streamID() ); - data.b_MMMon_finder_regionCount.push_back( link->finder_regionCount() ); - data.b_MMMon_finder_triggerID.push_back( link->finder_triggerID() ); - data.b_MMMon_finder_V1.push_back( link->finder_V1() ); - data.b_MMMon_finder_V0.push_back( link->finder_V0() ); - data.b_MMMon_finder_U1.push_back( link->finder_U1() ); - data.b_MMMon_finder_U0.push_back( link->finder_U0() ); - data.b_MMMon_finder_X3.push_back( link->finder_X3() ); - data.b_MMMon_finder_X2.push_back( link->finder_X2() ); - data.b_MMMon_finder_X1.push_back( link->finder_X1() ); - data.b_MMMon_finder_X0.push_back( link->finder_X0() ); - data.b_MMMon_fitter_streamID.push_back( link->fitter_streamID() ); - data.b_MMMon_fitter_regionCount.push_back( link->fitter_regionCount() ); - data.b_MMMon_fitter_triggerID.push_back( link->fitter_triggerID() ); - data.b_MMMon_fitter_filler.push_back( link->fitter_filler() ); - data.b_MMMon_fitter_mxG.push_back( link->fitter_mxG() ); - data.b_MMMon_fitter_muG.push_back( link->fitter_muG() ); - data.b_MMMon_fitter_mvG.push_back( link->fitter_mvG() ); - data.b_MMMon_fitter_mxL.push_back( link->fitter_mxL() ); - data.b_MMMon_fitter_mx_ROI.push_back( link->fitter_mx_ROI() ); - data.b_MMMon_fitter_dTheta.push_back( link->fitter_dTheta() ); - data.b_MMMon_fitter_zero.push_back( link->fitter_zero() ); - data.b_MMMon_fitter_phiSign.push_back( link->fitter_phiSign() ); - data.b_MMMon_fitter_phiBin.push_back( link->fitter_phiBin() ); - data.b_MMMon_fitter_rBin.push_back( link->fitter_rBin() ); - data.b_MMMon_trailer_CRC.push_back( link->trailer_CRC() ); - } - } - } - } //end if is_nsw - } //end for loop on robs - - return 0; + std::vector <eformat::read::ROBFragment> robs; + + if (params.printout_level > 2) + std::cout << "Entering fragment analysis" << std::endl; + + f.robs (robs); + + for (auto r = robs.begin (); r != robs.end (); ++r) + { + bool is_nsw = false, is_mmg = false, is_stg = false; + bool is_tp = false, is_pt = false, is_l1a = false, is_mon = false; //is_l1a and is_mon are actuall + + // check fragment for errors + try{ r->check (); } + catch(...) { std::cout << "Something wrong with a fragment ROB" << std::endl; continue; } + + uint32_t sid = r->rob_source_id (); + eformat::helper::SourceIdentifier source_id (sid); + eformat::SubDetector s = source_id.subdetector_id (); + uint16_t m = source_id.module_id (); + + if (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_MMEGA_ENDCAP_C_SIDE) + is_nsw = is_mmg = true; + else if (s == eformat::MUON_STGC_ENDCAP_A_SIDE || s == eformat::MUON_STGC_ENDCAP_C_SIDE) + is_nsw = is_stg = true; + + //int sector = m & 0xf; + if ((m & 0xf0) == 0x10) {is_tp = true; is_l1a = true;} + else if ((m & 0xf0) == 0x20) {is_pt = true; is_l1a = true;} + else if ((m & 0xf0) == 0x50) {is_tp = true; is_mon = true;} + + + if (params.printout_level > 1 && is_nsw){ + std::cout << "ROB source ID = 0x" << std::hex << sid << std::dec << std::endl; + std::cout << "ROB subdet ID = 0x" << std::hex << s << std::dec << std::endl; + std::cout << "ROB module ID = 0x" << std::hex << m << std::dec << std::endl; + //std::cout << "is_nsw = " << (is_nsw?"Yes":"No") << std::endl; + std::cout << "is_mmg = " << (is_mmg?"Yes":"No") << std::endl; + std::cout << "is_stg = " << (is_stg?"Yes":"No") << std::endl; + std::cout << "is_pt = " << (is_pt?"Yes":"No") << std::endl; + std::cout << "is_tp = " << (is_tp?"Yes":"No") << std::endl; + std::cout << "is_l1a = " << (is_l1a?"Yes":"No") << std::endl; + std::cout << "is_mon = " << (is_mon?"Yes":"No") << std::endl; + } + + + if (is_nsw && (is_pt || is_tp)){ + if (params.printout_level > 0 || params.print_only){ + std::cout << "NSW Trigger fragment found: length " << r->rod_ndata () << std::endl; + } + + const uint32_t *bs = r->rod_data (); + + // Print out raw fragment + if (params.print_only){ + std::cout << "ROD Fragment size in words:" << std::endl; + std::cout << "ROD Total: " << r->rod_fragment_size_word () << std::endl; + std::cout << "ROD Header: " << r->rod_header_size_word () << std::endl; + std::cout << "ROD Trailer: " << r->rod_trailer_size_word () << std::endl; + std::cout << "ROD L1 ID: " << std::hex << r->rod_lvl1_id () << std::dec << std::endl; + std::cout << "ROD Data words: " << r->rod_ndata () << std::endl; + + std::cout << "Printing raw data (ignoring any structure)" << std::endl; + std::cout << std::hex; + for (unsigned int i = 0; i < r->rod_ndata (); ++i){ + std::cout << " " << std::setfill('0') << std::setw(8) << bs[i]; + if (i % 4 == 3) std::cout << std::endl; + } + std::cout << std::dec; + std::cout << std::endl; + } + + if (!params.print_only){ + std::string robType = std::string(is_pt?"Pad":(is_mmg?"MM":"STG")) + std::string(is_l1a?"L1A":(is_mon?"Mon":"")); + std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now (); + Muon::nsw::NSWTriggerCommonDecoder nsw_trigger_decoder (*r, robType); + std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now (); + unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - begin).count (); + float time_elapsed_ms = static_cast <float> (time_elapsed) / 1000; + if (params.printout_level > 1){ + std::cout << "Time for decoding this event (ms): " << time_elapsed_ms << std::endl; + std::cout << std::endl; + } + statistics.total_decoding_time += time_elapsed_ms; + + if (robType=="PadL1A"){ + for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { + std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> link = std::dynamic_pointer_cast<Muon::nsw::NSWPadTriggerL1a>(nsw_trigger_decoder.get_elinks()[i]); + data.b_PadL1A_ROD_sourceID.push_back( sid ); + data.b_PadL1A_ROD_subdetID.push_back( s ); + data.b_PadL1A_ROD_moduleID.push_back( m ); + data.b_PadL1A_ROD_L1ID.push_back( r->rod_lvl1_id () ); + data.b_PadL1A_ROD_n_words.push_back( r->rod_ndata () ); + data.b_PadL1A_flags.push_back( link->getFlags() ); + data.b_PadL1A_ec.push_back( link->getEc() ); + data.b_PadL1A_fragid.push_back( link->getFragid() ); + data.b_PadL1A_secid.push_back( link->getSecid() ); + data.b_PadL1A_spare.push_back( link->getSpare() ); + data.b_PadL1A_orbit.push_back( link->getOrbit() ); + data.b_PadL1A_bcid.push_back( link->getBcid() ); + data.b_PadL1A_l1id.push_back( link->getL1id() ); + data.b_PadL1A_hit_n.push_back( link->getNumberOfHits() ); + data.b_PadL1A_pfeb_n.push_back( link->getNumberOfPfebs() ); + data.b_PadL1A_trigger_n.push_back( link->getNumberOfTriggers() ); + data.b_PadL1A_bcid_n.push_back( link->getNumberOfBcids() ); + data.b_PadL1A_hit_relbcid.push_back( link->getHitRelBcids() ); + data.b_PadL1A_hit_pfeb.push_back( link->getHitPfebs() ); + data.b_PadL1A_hit_tdschannel.push_back( link->getHitTdsChannels() ); + data.b_PadL1A_hit_vmmchannel.push_back( link->getHitVmmChannels() ); + data.b_PadL1A_hit_vmm.push_back( link->getHitVmms() ); + data.b_PadL1A_hit_padchannel.push_back( link->getHitPadChannels() ); + data.b_PadL1A_pfeb_addr.push_back( link->getPfebAddresses() ); + data.b_PadL1A_pfeb_nchan.push_back( link->getPfebNChannels() ); + data.b_PadL1A_pfeb_disconnected.push_back( link->getPfebDisconnecteds() ); + data.b_PadL1A_trigger_bandid.push_back( link->getTriggerBandIds() ); + data.b_PadL1A_trigger_phiid.push_back( link->getTriggerPhiIds() ); + data.b_PadL1A_trigger_relbcid.push_back( link->getTriggerRelBcids() ); + data.b_PadL1A_bcid_rel.push_back( link->getBcidRels() ); + data.b_PadL1A_bcid_status.push_back( link->getBcidStatuses() ); + data.b_PadL1A_bcid_multzero.push_back( link->getBcidMultZeros() ); + } + } + if (robType=="MML1A") { + for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { + std::shared_ptr<Muon::nsw::NSWTriggerMML1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMML1AElink>(nsw_trigger_decoder.get_elinks()[i]); + data.b_MML1A_ROD_sourceID.push_back( sid ); + data.b_MML1A_ROD_subdetID.push_back( s ); + data.b_MML1A_ROD_moduleID.push_back( m ); + data.b_MML1A_ROD_L1ID.push_back( r->rod_lvl1_id () ); + data.b_MML1A_ROD_n_words.push_back( r->rod_ndata () ); + data.b_MML1A_head_fragID.push_back( link->head_fragID() ); + data.b_MML1A_head_sectID.push_back( link->head_sectID() ); + data.b_MML1A_head_EC.push_back( link->head_EC() ); + data.b_MML1A_head_flags.push_back( link->head_flags() ); + data.b_MML1A_head_BCID.push_back( link->head_BCID() ); + data.b_MML1A_head_orbit.push_back( link->head_orbit() ); + data.b_MML1A_head_spare.push_back( link->head_spare() ); + data.b_MML1A_L1ID.push_back( link->L1ID() ); + data.b_MML1A_head_wdw_open.push_back( link->head_wdw_open() ); + data.b_MML1A_head_l1a_req.push_back( link->head_l1a_req() ); + data.b_MML1A_head_wdw_close.push_back( link->head_wdw_close() ); + data.b_MML1A_head_overflowCount.push_back( link->head_overflowCount() ); + data.b_MML1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() ); + data.b_MML1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() ); + data.b_MML1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() ); + data.b_MML1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() ); + data.b_MML1A_head_cfg_timeout.push_back( link->head_cfg_timeout() ); + data.b_MML1A_head_link_const.push_back( link->head_link_const() ); + data.b_MML1A_stream_head_nbits.push_back( link->stream_head_nbits() ); + data.b_MML1A_stream_head_nwords.push_back( link->stream_head_nwords() ); + data.b_MML1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() ); + data.b_MML1A_stream_head_streamID.push_back( link->stream_head_streamID() ); + + const std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>>& arts = link->art_packets(); + std::vector<uint32_t> tmp_art_BCIDs; + std::vector<uint32_t> tmp_art_layers; + std::vector<uint32_t> tmp_art_channels; + for (auto art : arts){ + for (uint i = 0; i < art->channels().size(); ++i){ + //so that there's a timestamp per channel + tmp_art_layers.push_back( art->channels()[i].first ); + tmp_art_channels.push_back( art->channels()[i].second ); + tmp_art_BCIDs.push_back( art->art_BCID() ); + } + } + data.b_MML1A_art_BCID.push_back( tmp_art_BCIDs ); + data.b_MML1A_art_layers.push_back( tmp_art_layers ); + data.b_MML1A_art_channels.push_back( tmp_art_channels ); + + const std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>>& trigs = link->trig_packets(); + std::vector<uint32_t> tmp_trig_BCID; + std::vector<uint32_t> tmp_trig_dTheta; + std::vector<uint32_t> tmp_trig_phiBin; + std::vector<uint32_t> tmp_trig_rBin; + for (auto trig : trigs){ + tmp_trig_BCID.push_back( trig->trig_BCID() ); + tmp_trig_dTheta.push_back( trig->trig_dTheta() ); + tmp_trig_phiBin.push_back( trig->trig_phiBin() ); + tmp_trig_rBin.push_back( trig->trig_rBin() ); + } + data.b_MML1A_trig_BCID.push_back( tmp_trig_BCID ); + data.b_MML1A_trig_dTheta.push_back( tmp_trig_dTheta ); + data.b_MML1A_trig_phiBin.push_back( tmp_trig_phiBin ); + data.b_MML1A_trig_rBin.push_back( tmp_trig_rBin ); + + data.b_MML1A_trailer_CRC.push_back( link->trailer_CRC() ); + + } + } + if (robType=="MMMon") { + for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { + std::shared_ptr<Muon::nsw::NSWTriggerMMMonElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMMMonElink>(nsw_trigger_decoder.get_elinks()[i]); + data.b_MMMon_ROD_sourceID.push_back( sid ); + data.b_MMMon_ROD_subdetID.push_back( s ); + data.b_MMMon_ROD_moduleID.push_back( m ); + data.b_MMMon_ROD_L1ID.push_back( r->rod_lvl1_id () ); + data.b_MMMon_ROD_n_words.push_back( r->rod_ndata () ); + data.b_MMMon_head_fragID.push_back( link->head_fragID() ); + data.b_MMMon_head_sectID.push_back( link->head_sectID() ); + data.b_MMMon_head_EC.push_back( link->head_EC() ); + data.b_MMMon_head_flags.push_back( link->head_flags() ); + data.b_MMMon_head_BCID.push_back( link->head_BCID() ); + data.b_MMMon_head_orbit.push_back( link->head_orbit() ); + data.b_MMMon_head_spare.push_back( link->head_spare() ); + data.b_MMMon_L1ID.push_back( link->L1ID() ); + data.b_MMMon_head_coincBCID.push_back( link->head_coincBCID() ); + data.b_MMMon_head_regionCount.push_back( link->head_regionCount() ); + data.b_MMMon_head_coincRegion.push_back( link->head_coincRegion() ); + data.b_MMMon_head_reserved.push_back( link->head_reserved() ); + data.b_MMMon_finder_streamID.push_back( link->finder_streamID() ); + data.b_MMMon_finder_regionCount.push_back( link->finder_regionCount() ); + data.b_MMMon_finder_triggerID.push_back( link->finder_triggerID() ); + data.b_MMMon_finder_V1.push_back( link->finder_V1() ); + data.b_MMMon_finder_V0.push_back( link->finder_V0() ); + data.b_MMMon_finder_U1.push_back( link->finder_U1() ); + data.b_MMMon_finder_U0.push_back( link->finder_U0() ); + data.b_MMMon_finder_X3.push_back( link->finder_X3() ); + data.b_MMMon_finder_X2.push_back( link->finder_X2() ); + data.b_MMMon_finder_X1.push_back( link->finder_X1() ); + data.b_MMMon_finder_X0.push_back( link->finder_X0() ); + data.b_MMMon_fitter_streamID.push_back( link->fitter_streamID() ); + data.b_MMMon_fitter_regionCount.push_back( link->fitter_regionCount() ); + data.b_MMMon_fitter_triggerID.push_back( link->fitter_triggerID() ); + data.b_MMMon_fitter_filler.push_back( link->fitter_filler() ); + data.b_MMMon_fitter_mxG.push_back( link->fitter_mxG() ); + data.b_MMMon_fitter_muG.push_back( link->fitter_muG() ); + data.b_MMMon_fitter_mvG.push_back( link->fitter_mvG() ); + data.b_MMMon_fitter_mxL.push_back( link->fitter_mxL() ); + data.b_MMMon_fitter_mx_ROI.push_back( link->fitter_mx_ROI() ); + data.b_MMMon_fitter_dTheta.push_back( link->fitter_dTheta() ); + data.b_MMMon_fitter_zero.push_back( link->fitter_zero() ); + data.b_MMMon_fitter_phiSign.push_back( link->fitter_phiSign() ); + data.b_MMMon_fitter_phiBin.push_back( link->fitter_phiBin() ); + data.b_MMMon_fitter_rBin.push_back( link->fitter_rBin() ); + data.b_MMMon_trailer_CRC.push_back( link->trailer_CRC() ); + } + } + + + if (robType=="STGL1A") { + // resize vectors + unsigned int n_elinks = nsw_trigger_decoder.get_elinks().size(); + data.b_STGL1A_pad_BCID.resize(n_elinks); + data.b_STGL1A_pad_bandID_0.resize(n_elinks); + data.b_STGL1A_pad_bandID_1.resize(n_elinks); + data.b_STGL1A_pad_bandID_2.resize(n_elinks); + data.b_STGL1A_pad_bandID_3.resize(n_elinks); + data.b_STGL1A_pad_phiID_0.resize(n_elinks); + data.b_STGL1A_pad_phiID_1.resize(n_elinks); + data.b_STGL1A_pad_phiID_2.resize(n_elinks); + data.b_STGL1A_pad_phiID_3.resize(n_elinks); + data.b_STGL1A_pad_idleFlag.resize(n_elinks); + data.b_STGL1A_merge_LUT_choiceSelection.resize(n_elinks); + data.b_STGL1A_merge_nsw_segmentSelector.resize(n_elinks); + data.b_STGL1A_merge_valid_segmentSelector.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment7.resize(n_elinks); + data.b_STGL1A_merge_spare_segment7.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment7.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment7.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment7.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment7.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment7.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment6.resize(n_elinks); + data.b_STGL1A_merge_spare_segment6.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment6.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment6.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment6.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment6.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment6.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment5.resize(n_elinks); + data.b_STGL1A_merge_spare_segment5.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment5.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment5.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment5.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment5.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment5.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment4.resize(n_elinks); + data.b_STGL1A_merge_spare_segment4.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment4.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment4.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment4.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment4.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment4.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment3.resize(n_elinks); + data.b_STGL1A_merge_spare_segment3.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment3.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment3.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment3.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment3.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment3.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment2.resize(n_elinks); + data.b_STGL1A_merge_spare_segment2.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment2.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment2.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment2.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment2.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment2.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment1.resize(n_elinks); + data.b_STGL1A_merge_spare_segment1.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment1.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment1.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment1.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment1.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment1.resize(n_elinks); + + data.b_STGL1A_merge_monitor_segment0.resize(n_elinks); + data.b_STGL1A_merge_spare_segment0.resize(n_elinks); + data.b_STGL1A_merge_lowRes_segment0.resize(n_elinks); + data.b_STGL1A_merge_phiRes_segment0.resize(n_elinks); + data.b_STGL1A_merge_dTheta_segment0.resize(n_elinks); + data.b_STGL1A_merge_phiID_segment0.resize(n_elinks); + data.b_STGL1A_merge_RIndex_segment0.resize(n_elinks); + + data.b_STGL1A_merge_BCID.resize(n_elinks); + data.b_STGL1A_merge_sectorID.resize(n_elinks); + + for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { + + std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerSTGL1AElink>(nsw_trigger_decoder.get_elinks()[i]); + data.b_STGL1A_ROD_sourceID.push_back( sid ); + data.b_STGL1A_ROD_subdetID.push_back( s ); + data.b_STGL1A_ROD_moduleID.push_back( m ); + data.b_STGL1A_ROD_L1ID.push_back( 0 ); + data.b_STGL1A_ROD_n_words.push_back( 0 ); + data.b_STGL1A_head_fragID.push_back( link->head_fragID() ); + data.b_STGL1A_head_sectID.push_back( link->head_sectID() ); + data.b_STGL1A_head_EC.push_back( link->head_EC() ); + data.b_STGL1A_head_flags.push_back( link->head_flags() ); + data.b_STGL1A_head_BCID.push_back( link->head_BCID() ); + data.b_STGL1A_head_orbit.push_back( link->head_orbit() ); + data.b_STGL1A_head_spare.push_back( link->head_spare() ); + data.b_STGL1A_L1ID.push_back( link->L1ID() ); + data.b_STGL1A_head_wdw_open.push_back( link->head_wdw_open() ); + data.b_STGL1A_head_l1a_req.push_back( link->head_l1a_req() ); + data.b_STGL1A_head_wdw_close.push_back( link->head_wdw_close() ); + data.b_STGL1A_head_overflowCount.push_back( link->head_overflowCount() ); + data.b_STGL1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() ); + data.b_STGL1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() ); + data.b_STGL1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() ); + data.b_STGL1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() ); + data.b_STGL1A_head_cfg_timeout.push_back( link->head_cfg_timeout() ); + data.b_STGL1A_head_link_const.push_back( link->head_link_const() ); + data.b_STGL1A_stream_head_nbits.push_back( link->stream_head_nbits() ); + data.b_STGL1A_stream_head_nwords.push_back( link->stream_head_nwords() ); + data.b_STGL1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() ); + data.b_STGL1A_stream_head_streamID.push_back( link->stream_head_streamID() ); + + // pad block + const auto& pad_packets = link-> pad_packets(); + + for (auto packet : pad_packets) + { + data.b_STGL1A_pad_BCID[i].push_back(packet->BCID()); + data.b_STGL1A_pad_bandID_0[i].push_back(packet->BandID(0)); + data.b_STGL1A_pad_bandID_1[i].push_back(packet->BandID(1)); + data.b_STGL1A_pad_bandID_2[i].push_back(packet->BandID(2)); + data.b_STGL1A_pad_bandID_3[i].push_back(packet->BandID(3)); + + data.b_STGL1A_pad_phiID_0[i].push_back(packet->PhiID(0)); + data.b_STGL1A_pad_phiID_1[i].push_back(packet->PhiID(1)); + data.b_STGL1A_pad_phiID_2[i].push_back(packet->PhiID(2)); + data.b_STGL1A_pad_phiID_3[i].push_back(packet->PhiID(3)); + + data.b_STGL1A_pad_idleFlag[i].push_back(packet->PadIdleFlag()); + + } + + const auto& segment_packets = link-> segment_packet(); + + + for (auto packet: segment_packets) { + data.b_STGL1A_merge_LUT_choiceSelection[i].push_back(packet->LUT_ChoiceSelection()); + data.b_STGL1A_merge_nsw_segmentSelector[i].push_back(packet->NSW_SegmentSelector()); + data.b_STGL1A_merge_valid_segmentSelector[i].push_back(packet->ValidSegmentSelector()); + data.b_STGL1A_merge_monitor_segment7[i].push_back(packet->Monitor_Segment7()); + + data.b_STGL1A_merge_spare_segment7[i].push_back(packet->Spare_Segment7()); + data.b_STGL1A_merge_lowRes_segment7[i].push_back(packet->LowRes_Segment7()); + data.b_STGL1A_merge_phiRes_segment7[i].push_back(packet->PhiRes_Segment7()); + data.b_STGL1A_merge_dTheta_segment7[i].push_back(packet->DTheta_Segment7()); + data.b_STGL1A_merge_phiID_segment7[i].push_back(packet->DTheta_Segment7()); + data.b_STGL1A_merge_phiID_segment7[i].push_back(packet->PhiID_Segment7()); + data.b_STGL1A_merge_RIndex_segment7[i].push_back(packet->RIndex_Segment7()); + + data.b_STGL1A_merge_spare_segment6[i].push_back(packet->Spare_Segment6()); + data.b_STGL1A_merge_lowRes_segment6[i].push_back(packet->LowRes_Segment6()); + data.b_STGL1A_merge_phiRes_segment6[i].push_back(packet->PhiRes_Segment6()); + data.b_STGL1A_merge_dTheta_segment6[i].push_back(packet->DTheta_Segment6()); + data.b_STGL1A_merge_phiID_segment6[i].push_back(packet->DTheta_Segment6()); + data.b_STGL1A_merge_phiID_segment6[i].push_back(packet->PhiID_Segment6()); + data.b_STGL1A_merge_RIndex_segment6[i].push_back(packet->RIndex_Segment6()); + + data.b_STGL1A_merge_spare_segment5[i].push_back(packet->Spare_Segment5()); + data.b_STGL1A_merge_lowRes_segment5[i].push_back(packet->LowRes_Segment5()); + data.b_STGL1A_merge_phiRes_segment5[i].push_back(packet->PhiRes_Segment5()); + data.b_STGL1A_merge_dTheta_segment5[i].push_back(packet->DTheta_Segment5()); + data.b_STGL1A_merge_phiID_segment5[i].push_back(packet->DTheta_Segment5()); + data.b_STGL1A_merge_phiID_segment5[i].push_back(packet->PhiID_Segment5()); + data.b_STGL1A_merge_RIndex_segment5[i].push_back(packet->RIndex_Segment5()); + + data.b_STGL1A_merge_spare_segment4[i].push_back(packet->Spare_Segment4()); + data.b_STGL1A_merge_lowRes_segment4[i].push_back(packet->LowRes_Segment4()); + data.b_STGL1A_merge_phiRes_segment4[i].push_back(packet->PhiRes_Segment4()); + data.b_STGL1A_merge_dTheta_segment4[i].push_back(packet->DTheta_Segment4()); + data.b_STGL1A_merge_phiID_segment4[i].push_back(packet->DTheta_Segment4()); + data.b_STGL1A_merge_phiID_segment4[i].push_back(packet->PhiID_Segment4()); + data.b_STGL1A_merge_RIndex_segment4[i].push_back(packet->RIndex_Segment4()); + + data.b_STGL1A_merge_spare_segment3[i].push_back(packet->Spare_Segment3()); + data.b_STGL1A_merge_lowRes_segment3[i].push_back(packet->LowRes_Segment3()); + data.b_STGL1A_merge_phiRes_segment3[i].push_back(packet->PhiRes_Segment3()); + data.b_STGL1A_merge_dTheta_segment3[i].push_back(packet->DTheta_Segment3()); + data.b_STGL1A_merge_phiID_segment3[i].push_back(packet->DTheta_Segment3()); + data.b_STGL1A_merge_phiID_segment3[i].push_back(packet->PhiID_Segment3()); + data.b_STGL1A_merge_RIndex_segment3[i].push_back(packet->RIndex_Segment3()); + + data.b_STGL1A_merge_spare_segment2[i].push_back(packet->Spare_Segment2()); + data.b_STGL1A_merge_lowRes_segment2[i].push_back(packet->LowRes_Segment2()); + data.b_STGL1A_merge_phiRes_segment2[i].push_back(packet->PhiRes_Segment2()); + data.b_STGL1A_merge_dTheta_segment2[i].push_back(packet->DTheta_Segment2()); + data.b_STGL1A_merge_phiID_segment2[i].push_back(packet->DTheta_Segment2()); + data.b_STGL1A_merge_phiID_segment2[i].push_back(packet->PhiID_Segment2()); + data.b_STGL1A_merge_RIndex_segment2[i].push_back(packet->RIndex_Segment2()); + + data.b_STGL1A_merge_spare_segment1[i].push_back(packet->Spare_Segment1()); + data.b_STGL1A_merge_lowRes_segment1[i].push_back(packet->LowRes_Segment1()); + data.b_STGL1A_merge_phiRes_segment1[i].push_back(packet->PhiRes_Segment1()); + data.b_STGL1A_merge_dTheta_segment1[i].push_back(packet->DTheta_Segment1()); + data.b_STGL1A_merge_phiID_segment1[i].push_back(packet->DTheta_Segment1()); + data.b_STGL1A_merge_phiID_segment1[i].push_back(packet->PhiID_Segment1()); + data.b_STGL1A_merge_RIndex_segment1[i].push_back(packet->RIndex_Segment1()); + + data.b_STGL1A_merge_spare_segment0[i].push_back(packet->Spare_Segment0()); + data.b_STGL1A_merge_lowRes_segment0[i].push_back(packet->LowRes_Segment0()); + data.b_STGL1A_merge_phiRes_segment0[i].push_back(packet->PhiRes_Segment0()); + data.b_STGL1A_merge_dTheta_segment0[i].push_back(packet->DTheta_Segment0()); + data.b_STGL1A_merge_phiID_segment0[i].push_back(packet->DTheta_Segment0()); + data.b_STGL1A_merge_phiID_segment0[i].push_back(packet->PhiID_Segment0()); + data.b_STGL1A_merge_RIndex_segment0[i].push_back(packet->RIndex_Segment0()); + + data.b_STGL1A_merge_BCID[i].push_back(packet->BCID()); + data.b_STGL1A_merge_sectorID[i].push_back(packet->SectorID()); + + + } // end of merge packets + } // end of stgc elink loop + } // end of stgc l1a block + } //not print only + } + } + //end for loop on robs + + return 0; } int test_nsw_trigger_common_decoder_loop (Params ¶ms, Statistics &statistics) { - outBranches data; - - bool anyBrokenFile = false; - //int err; - - for (const std::string &filename : params.file_names) - { - - char *buf = nullptr; - unsigned int size = 0; - - TFile* outfile = nullptr; - TTree* outtree = nullptr; //no need for a smart pointer for ttrees, given root behaviour (deleting ttree's when closing files) - - std::string data_file_name (filename); - std::string out_file_name = data_file_name.substr(data_file_name.find_last_of("/\\") + 1) + ".decoded.root"; - - std::cout << "Reading file " << data_file_name << std::endl; - if (!params.print_only) { - std::cout << "Saving here file " << out_file_name << std::endl; - outfile = new TFile(out_file_name.c_str(), "recreate"); - outtree = new TTree("decoded_data", "decoded_data"); - test_nsw_trigger_common_decoder_init_tree (*outtree, data); - } - - std::unique_ptr <DataReader> reader (pickDataReader (data_file_name)); - - if (!reader || !reader->good ()) - { - std::cout << "Cannot open this file properly; skipping to next one" << std::endl; - anyBrokenFile = true; - } - else { - while (!reader->endOfFile () && (params.max_events == 0 || statistics.nevents < params.max_events)) - { - try - { - DRError err = reader->getData (size, &buf); - - if (err != EventStorage::DROK) - { - std::cout << "Cannot get data properly from file" << data_file_name.c_str () << "; skipping it!" << std::endl; - anyBrokenFile = true; - if (buf) delete buf; - break; - } - - eformat::read::FullEventFragment f ((unsigned int *) buf); - f.check (); - - //reset branches - data = outBranches(); - - if ( test_nsw_trigger_common_decoder_event (f, data, params, statistics) ) - { - std::cout << "Cannot decode properly event " << statistics.nevents << "; skipping it!" <<std::endl; - if (buf) delete buf; - continue; - } - - - if (!params.print_only) {outtree->Fill();} - ++statistics.nevents; - } - - catch (std::runtime_error& error) - { - std::cout << "Exception!" << std::endl; - std::cout << error.what() << std::endl; - if (buf) delete buf; - break; - } - - if (buf) delete buf; - } - } - - if (!params.print_only) { - outtree->Write(); - outfile->Close(); - } - } - - if (anyBrokenFile) return 3; - return 0; + outBranches data; + + bool anyBrokenFile = false; + //int err; + + for (const std::string &filename : params.file_names) + { + + char *buf = nullptr; + unsigned int size = 0; + + TFile* outfile = nullptr; + TTree* outtree = nullptr; //no need for a smart pointer for ttrees, given root behaviour (deleting ttree's when closing files) + + std::string data_file_name (filename); + std::string out_file_name = data_file_name.substr(data_file_name.find_last_of("/\\") + 1) + ".decoded.root"; + + std::cout << "Reading file " << data_file_name << std::endl; + if (!params.print_only) { + std::cout << "Saving here file " << out_file_name << std::endl; + outfile = new TFile(out_file_name.c_str(), "recreate"); + outtree = new TTree("decoded_data", "decoded_data"); + test_nsw_trigger_common_decoder_init_tree (*outtree, data); + } + + std::unique_ptr <DataReader> reader (pickDataReader (data_file_name)); + + if (!reader || !reader->good ()) + { + std::cout << "Cannot open this file properly; skipping to next one" << std::endl; + anyBrokenFile = true; + } + else { + while (!reader->endOfFile () && (params.max_events == 0 || statistics.nevents < params.max_events)) + { + try + { + DRError err = reader->getData (size, &buf); + + if (err != EventStorage::DROK) + { + std::cout << "Cannot get data properly from file" << data_file_name.c_str () << "; skipping it!" << std::endl; + anyBrokenFile = true; + if (buf) delete buf; + break; + } + + eformat::read::FullEventFragment f ((unsigned int *) buf); + f.check (); + + //reset branches + data = outBranches(); + + if ( test_nsw_trigger_common_decoder_event (f, data, params, statistics) ) + { + std::cout << "Cannot decode properly event " << statistics.nevents << "; skipping it!" <<std::endl; + if (buf) delete buf; + continue; + } + + + if (!params.print_only) { + std::chrono::steady_clock::time_point start= std::chrono::steady_clock::now (); + outtree->Fill(); + std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now (); + unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - start).count (); + statistics.total_fill_time += time_elapsed; + } + ++statistics.nevents; + } + + catch (std::runtime_error& error) + { + std::cout << "Exception!" << std::endl; + std::cout << error.what() << std::endl; + if (buf) delete buf; + break; + } + + if (buf) delete buf; + } + } + + if (!params.print_only) { + std::chrono::steady_clock::time_point start= std::chrono::steady_clock::now (); + outtree->Write(); + std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now (); + unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - start).count (); + statistics.total_write_time += time_elapsed; + outfile->Close(); + } + } + + if (anyBrokenFile) return 3; + return 0; } int main (int argc, char **argv) { - Params params; - Statistics statistics; + Params params; + Statistics statistics; - int err; + int err; - if ( (err = test_nsw_trigger_common_decoder_opt (argc, argv, params)) ) - return err; + if ( (err = test_nsw_trigger_common_decoder_opt (argc, argv, params)) ) + return err; - if ( (err = test_nsw_trigger_common_decoder_loop (params, statistics)) ) - return err; + if ( (err = test_nsw_trigger_common_decoder_loop (params, statistics)) ) + return err; - if ( (err = test_nsw_trigger_common_decoder_end (statistics)) ) - return err; + if ( (err = test_nsw_trigger_common_decoder_end (statistics)) ) + return err; - return err; + return err; } diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx index da776cd23b97187fb8995a14e67a4ad1876d8999..563bb79318fb38a3c049eca4da6d67d9566dab79 100644 --- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx +++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx @@ -24,7 +24,8 @@ #include "MuonNSWCommonDecode/NSWResourceId.h" #include "MuonNSWCommonDecode/MMARTPacket.h" #include "MuonNSWCommonDecode/MMTrigPacket.h" - +#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h" +#include "MuonNSWCommonDecode/STGTPPackets.h" #include <TFile.h> #include <TTree.h> @@ -170,6 +171,124 @@ struct outBranches std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ; std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ; + + /// stg + std::vector<uint32_t> b_STGL1A_ROD_sourceID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_subdetID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_moduleID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_L1ID = {} ; + std::vector<uint32_t> b_STGL1A_ROD_n_words = {} ; + std::vector<uint32_t> b_STGL1A_head_fragID = {} ; + std::vector<uint32_t> b_STGL1A_head_sectID = {} ; + std::vector<uint32_t> b_STGL1A_head_EC = {} ; + std::vector<uint32_t> b_STGL1A_head_flags = {} ; + std::vector<uint32_t> b_STGL1A_head_BCID = {} ; + std::vector<uint32_t> b_STGL1A_head_orbit = {} ; + std::vector<uint32_t> b_STGL1A_head_spare = {} ; + std::vector<uint32_t> b_STGL1A_L1ID = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_open = {} ; + std::vector<uint32_t> b_STGL1A_head_l1a_req = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_close = {} ; + std::vector<uint32_t> b_STGL1A_head_overflowCount = {} ; + std::vector<uint32_t> b_STGL1A_head_wdw_matching_engines_usage = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_wdw_open_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_l1a_req_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_wdw_close_offset = {} ; + std::vector<uint32_t> b_STGL1A_head_cfg_timeout = {} ; + std::vector<uint32_t> b_STGL1A_head_link_const = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nbits = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nwords = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_fifo_size = {} ; + std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_streamID = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_coincidence_wedge = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_pad_BCID = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_pad_idleFlag = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_LUT_choiceSelection = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_nsw_segmentSelector = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_valid_segmentSelector = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment7 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment7 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment6 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment6 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment5 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment5 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment4 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment4 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment3 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment3 = {}; + + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment2 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment2 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment1 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment1 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment0 = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment0 = {}; + + std::vector<std::vector<uint32_t>> b_STGL1A_merge_BCID = {}; + std::vector<std::vector<uint32_t>> b_STGL1A_merge_sectorID = {}; + + std::vector<uint32_t> b_STGL1A_trailer_CRC = {} ; }; void test_nsw_trigger_common_decoder_help (char *progname) @@ -178,7 +297,7 @@ void test_nsw_trigger_common_decoder_help (char *progname) << " [-h] [-n events] [-p] [-d MML1A/MMMon/PadL1A] [-e XXXXXXXX] [-m XXXXXXXX] [-v] file_txt" << std::endl; std::cout << "\t\t[-n events] maximum number of events to read; default = all" << std::endl; std::cout << "\t\t[-p] only print raw packets" << std::endl; - std::cout << "\t\t[-d MML1A/MMMon/PadL1A] elink type; only one elink type per txt file" << std::endl; + std::cout << "\t\t[-d MML1A/MMMon/PadL1A/STGL1A] elink type; only one elink type per txt file" << std::endl; std::cout << "\t\t[-e XXXXXXXX] elink ID if known; 4bytes; default = CAFECAFE" << std::endl; std::cout << "\t\t[-m XXXXXXXX] ROB ID if known; 4bytes; default = CAFECAFE" << std::endl; std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl; @@ -220,7 +339,7 @@ int test_nsw_trigger_common_decoder_opt (int argc, char **argv, Params& params) } } - if (params.elink_type != "" && params.elink_type != "MML1A" && params.elink_type != "MMMon" && params.elink_type != "PadL1A") + if (params.elink_type != "" && params.elink_type != "MML1A" && params.elink_type != "MMMon" && params.elink_type != "PadL1A" && params.elink_type != "STGL1A" ) { test_nsw_trigger_common_decoder_help (argv[0]); std::cout << "\n\tNo valid elink type provided: " << params.elink_type << std::endl; @@ -357,7 +476,123 @@ int test_nsw_trigger_common_decoder_init_tree (TTree &outtree, outBranches &data outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status); outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero); } + + if (params.elink_type == "STGL1A") + { + outtree.Branch( "STGL1A_ROD_sourceID", &data.b_STGL1A_ROD_sourceID); + outtree.Branch( "STGL1A_ROD_subdetID", &data.b_STGL1A_ROD_subdetID); + outtree.Branch( "STGL1A_ROD_moduleID", &data.b_STGL1A_ROD_moduleID); + outtree.Branch( "STGL1A_ROD_L1ID", &data.b_STGL1A_ROD_L1ID); + outtree.Branch( "STGL1A_ROD_n_words", &data.b_STGL1A_ROD_n_words); + outtree.Branch( "STGL1A_head_fragID", &data.b_STGL1A_head_fragID); + outtree.Branch( "STGL1A_head_sectID", &data.b_STGL1A_head_sectID); + outtree.Branch( "STGL1A_head_EC", &data.b_STGL1A_head_EC); + outtree.Branch( "STGL1A_head_flags", &data.b_STGL1A_head_flags); + outtree.Branch( "STGL1A_head_BCID", &data.b_STGL1A_head_BCID); + outtree.Branch( "STGL1A_head_orbit", &data.b_STGL1A_head_orbit); + outtree.Branch( "STGL1A_head_spare", &data.b_STGL1A_head_spare); + outtree.Branch( "STGL1A_L1ID", &data.b_STGL1A_L1ID); + outtree.Branch( "STGL1A_head_wdw_open", &data.b_STGL1A_head_wdw_open); + outtree.Branch( "STGL1A_head_l1a_req", &data.b_STGL1A_head_l1a_req); + outtree.Branch( "STGL1A_head_wdw_close", &data.b_STGL1A_head_wdw_close); + outtree.Branch( "STGL1A_head_overflowCount", &data.b_STGL1A_head_overflowCount); + outtree.Branch( "STGL1A_head_wdw_matching_engines_usage", &data.b_STGL1A_head_wdw_matching_engines_usage); + outtree.Branch( "STGL1A_head_cfg_wdw_open_offset", &data.b_STGL1A_head_cfg_wdw_open_offset); + outtree.Branch( "STGL1A_head_cfg_l1a_req_offset", &data.b_STGL1A_head_cfg_l1a_req_offset); + outtree.Branch( "STGL1A_head_cfg_wdw_close_offset", &data.b_STGL1A_head_cfg_wdw_close_offset); + outtree.Branch( "STGL1A_head_cfg_timeout", &data.b_STGL1A_head_cfg_timeout); + outtree.Branch( "STGL1A_head_link_const", &data.b_STGL1A_head_link_const); + outtree.Branch( "STGL1A_stream_head_nbits", &data.b_STGL1A_stream_head_nbits); + outtree.Branch( "STGL1A_stream_head_nwords", &data.b_STGL1A_stream_head_nwords); + outtree.Branch( "STGL1A_stream_head_fifo_size", &data.b_STGL1A_stream_head_fifo_size); + outtree.Branch( "STGL1A_stream_head_streamID", &data.b_STGL1A_stream_head_streamID); + + outtree.Branch( "STGL1A_pad_coincidence_wedge", &data.b_STGL1A_pad_coincidence_wedge); + outtree.Branch( "STGL1A_pad_phiID_3", &data.b_STGL1A_pad_phiID_3); + outtree.Branch( "STGL1A_pad_phiID_2", &data.b_STGL1A_pad_phiID_2); + outtree.Branch( "STGL1A_pad_phiID_1", &data.b_STGL1A_pad_phiID_1); + outtree.Branch( "STGL1A_pad_phiID_0", &data.b_STGL1A_pad_phiID_0); + + outtree.Branch( "STGL1A_pad_bandID_3", &data.b_STGL1A_pad_bandID_3); + outtree.Branch( "STGL1A_pad_bandID_2", &data.b_STGL1A_pad_bandID_2); + outtree.Branch( "STGL1A_pad_bandID_1", &data.b_STGL1A_pad_bandID_1); + outtree.Branch( "STGL1A_pad_bandID_0", &data.b_STGL1A_pad_bandID_0); + + outtree.Branch( "STGL1A_pad_BCID", &data.b_STGL1A_pad_BCID); + outtree.Branch( "STGL1A_pad_idleFlag", &data.b_STGL1A_pad_idleFlag); + + outtree.Branch( "STGL1A_merge_LUT_choiceSelection", &data.b_STGL1A_merge_LUT_choiceSelection); + outtree.Branch( "STGL1A_merge_nsw_segmentSelector", &data.b_STGL1A_merge_nsw_segmentSelector); + outtree.Branch( "STGL1A_merge_valid_segmentSelector", &data.b_STGL1A_merge_valid_segmentSelector); + + outtree.Branch( "STGL1A_merge_monitor_segment7", &data.b_STGL1A_merge_monitor_segment7); + outtree.Branch( "STGL1A_merge_spare_segment7", &data.b_STGL1A_merge_spare_segment7); + outtree.Branch( "STGL1A_merge_lowRes_segment7", &data.b_STGL1A_merge_lowRes_segment7); + outtree.Branch( "STGL1A_merge_phiRes_segment7", &data.b_STGL1A_merge_phiRes_segment7); + outtree.Branch( "STGL1A_merge_dTheta_segment7", &data.b_STGL1A_merge_dTheta_segment7); + outtree.Branch( "STGL1A_merge_phiID_segment7", &data.b_STGL1A_merge_phiID_segment7); + outtree.Branch( "STGL1A_merge_RIndex_segment7", &data.b_STGL1A_merge_RIndex_segment7); + + outtree.Branch( "STGL1A_merge_monitor_segment6", &data.b_STGL1A_merge_monitor_segment6); + outtree.Branch( "STGL1A_merge_spare_segment6", &data.b_STGL1A_merge_spare_segment6); + outtree.Branch( "STGL1A_merge_lowRes_segment6", &data.b_STGL1A_merge_lowRes_segment6); + outtree.Branch( "STGL1A_merge_phiRes_segment6", &data.b_STGL1A_merge_phiRes_segment6); + outtree.Branch( "STGL1A_merge_dTheta_segment6", &data.b_STGL1A_merge_dTheta_segment6); + outtree.Branch( "STGL1A_merge_phiID_segment6", &data.b_STGL1A_merge_phiID_segment6); + outtree.Branch( "STGL1A_merge_RIndex_segment6", &data.b_STGL1A_merge_RIndex_segment6); + + outtree.Branch( "STGL1A_merge_monitor_segment5", &data.b_STGL1A_merge_monitor_segment5); + outtree.Branch( "STGL1A_merge_spare_segment5", &data.b_STGL1A_merge_spare_segment5); + outtree.Branch( "STGL1A_merge_lowRes_segment5", &data.b_STGL1A_merge_lowRes_segment5); + outtree.Branch( "STGL1A_merge_phiRes_segment5", &data.b_STGL1A_merge_phiRes_segment5); + outtree.Branch( "STGL1A_merge_dTheta_segment5", &data.b_STGL1A_merge_dTheta_segment5); + outtree.Branch( "STGL1A_merge_phiID_segment5", &data.b_STGL1A_merge_phiID_segment5); + outtree.Branch( "STGL1A_merge_RIndex_segment5", &data.b_STGL1A_merge_RIndex_segment5); + + outtree.Branch( "STGL1A_merge_monitor_segment4", &data.b_STGL1A_merge_monitor_segment4); + outtree.Branch( "STGL1A_merge_spare_segment4", &data.b_STGL1A_merge_spare_segment4); + outtree.Branch( "STGL1A_merge_lowRes_segment4", &data.b_STGL1A_merge_lowRes_segment4); + outtree.Branch( "STGL1A_merge_phiRes_segment4", &data.b_STGL1A_merge_phiRes_segment4); + outtree.Branch( "STGL1A_merge_dTheta_segment4", &data.b_STGL1A_merge_dTheta_segment4); + outtree.Branch( "STGL1A_merge_phiID_segment4", &data.b_STGL1A_merge_phiID_segment4); + outtree.Branch( "STGL1A_merge_RIndex_segment4", &data.b_STGL1A_merge_RIndex_segment4); + + outtree.Branch( "STGL1A_merge_monitor_segment3", &data.b_STGL1A_merge_monitor_segment3); + outtree.Branch( "STGL1A_merge_spare_segment3", &data.b_STGL1A_merge_spare_segment3); + outtree.Branch( "STGL1A_merge_lowRes_segment3", &data.b_STGL1A_merge_lowRes_segment3); + outtree.Branch( "STGL1A_merge_phiRes_segment3", &data.b_STGL1A_merge_phiRes_segment3); + outtree.Branch( "STGL1A_merge_dTheta_segment3", &data.b_STGL1A_merge_dTheta_segment3); + outtree.Branch( "STGL1A_merge_phiID_segment3", &data.b_STGL1A_merge_phiID_segment3); + outtree.Branch( "STGL1A_merge_RIndex_segment3", &data.b_STGL1A_merge_RIndex_segment3); + + outtree.Branch( "STGL1A_merge_monitor_segment2", &data.b_STGL1A_merge_monitor_segment2); + outtree.Branch( "STGL1A_merge_spare_segment2", &data.b_STGL1A_merge_spare_segment2); + outtree.Branch( "STGL1A_merge_lowRes_segment2", &data.b_STGL1A_merge_lowRes_segment2); + outtree.Branch( "STGL1A_merge_phiRes_segment2", &data.b_STGL1A_merge_phiRes_segment2); + outtree.Branch( "STGL1A_merge_dTheta_segment2", &data.b_STGL1A_merge_dTheta_segment2); + outtree.Branch( "STGL1A_merge_phiID_segment2", &data.b_STGL1A_merge_phiID_segment2); + outtree.Branch( "STGL1A_merge_RIndex_segment2", &data.b_STGL1A_merge_RIndex_segment2); + + outtree.Branch( "STGL1A_merge_monitor_segment1", &data.b_STGL1A_merge_monitor_segment1); + outtree.Branch( "STGL1A_merge_spare_segment1", &data.b_STGL1A_merge_spare_segment1); + outtree.Branch( "STGL1A_merge_lowRes_segment1", &data.b_STGL1A_merge_lowRes_segment1); + outtree.Branch( "STGL1A_merge_phiRes_segment1", &data.b_STGL1A_merge_phiRes_segment1); + outtree.Branch( "STGL1A_merge_dTheta_segment1", &data.b_STGL1A_merge_dTheta_segment1); + outtree.Branch( "STGL1A_merge_phiID_segment1", &data.b_STGL1A_merge_phiID_segment1); + outtree.Branch( "STGL1A_merge_RIndex_segment1", &data.b_STGL1A_merge_RIndex_segment1); + + outtree.Branch( "STGL1A_merge_monitor_segment0", &data.b_STGL1A_merge_monitor_segment0); + outtree.Branch( "STGL1A_merge_spare_segment0", &data.b_STGL1A_merge_spare_segment0); + outtree.Branch( "STGL1A_merge_lowRes_segment0", &data.b_STGL1A_merge_lowRes_segment0); + outtree.Branch( "STGL1A_merge_phiRes_segment0", &data.b_STGL1A_merge_phiRes_segment0); + outtree.Branch( "STGL1A_merge_dTheta_segment0", &data.b_STGL1A_merge_dTheta_segment0); + outtree.Branch( "STGL1A_merge_phiID_segment0", &data.b_STGL1A_merge_phiID_segment0); + outtree.Branch( "STGL1A_merge_RIndex_segment0", &data.b_STGL1A_merge_RIndex_segment0); + + outtree.Branch( "STGL1A_merge_BCID", &data.b_STGL1A_merge_BCID); + outtree.Branch( "STGL1A_merge_sectorID", &data.b_STGL1A_merge_sectorID); + } return 0; } @@ -603,6 +838,225 @@ int test_nsw_trigger_common_decoder_event (std::string &line, outBranches &data, } } + if (params.elink_type=="STGL1A") { + for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) { + std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerSTGL1AElink>(nsw_trigger_decoder.get_elinks()[i]); + data.b_STGL1A_ROD_sourceID.push_back( params.rob_id ); + data.b_STGL1A_ROD_subdetID.push_back( s ); + data.b_STGL1A_ROD_moduleID.push_back( m ); + data.b_STGL1A_ROD_L1ID.push_back( 0 ); + data.b_STGL1A_ROD_n_words.push_back( 0 ); + data.b_STGL1A_head_fragID.push_back( link->head_fragID() ); + data.b_STGL1A_head_sectID.push_back( link->head_sectID() ); + data.b_STGL1A_head_EC.push_back( link->head_EC() ); + data.b_STGL1A_head_flags.push_back( link->head_flags() ); + data.b_STGL1A_head_BCID.push_back( link->head_BCID() ); + data.b_STGL1A_head_orbit.push_back( link->head_orbit() ); + data.b_STGL1A_head_spare.push_back( link->head_spare() ); + data.b_STGL1A_L1ID.push_back( link->L1ID() ); + data.b_STGL1A_head_wdw_open.push_back( link->head_wdw_open() ); + data.b_STGL1A_head_l1a_req.push_back( link->head_l1a_req() ); + data.b_STGL1A_head_wdw_close.push_back( link->head_wdw_close() ); + data.b_STGL1A_head_overflowCount.push_back( link->head_overflowCount() ); + data.b_STGL1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() ); + data.b_STGL1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() ); + data.b_STGL1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() ); + data.b_STGL1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() ); + data.b_STGL1A_head_cfg_timeout.push_back( link->head_cfg_timeout() ); + data.b_STGL1A_head_link_const.push_back( link->head_link_const() ); + data.b_STGL1A_stream_head_nbits.push_back( link->stream_head_nbits() ); + data.b_STGL1A_stream_head_nwords.push_back( link->stream_head_nwords() ); + data.b_STGL1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() ); + data.b_STGL1A_stream_head_streamID.push_back( link->stream_head_streamID() ); + + // pad block + const auto& pad_packets = link-> pad_packets(); + std::vector<uint32_t> dummy; + data.b_STGL1A_pad_BCID.push_back(dummy); + data.b_STGL1A_pad_bandID_0.push_back(dummy); + data.b_STGL1A_pad_bandID_1.push_back(dummy); + data.b_STGL1A_pad_bandID_2.push_back(dummy); + data.b_STGL1A_pad_bandID_3.push_back(dummy); + + data.b_STGL1A_pad_phiID_0.push_back(dummy); + data.b_STGL1A_pad_phiID_1.push_back(dummy); + data.b_STGL1A_pad_phiID_2.push_back(dummy); + data.b_STGL1A_pad_phiID_3.push_back(dummy); + + data.b_STGL1A_pad_idleFlag.push_back(dummy); + + for (unsigned int i_pad = 0; i_pad < pad_packets.size(); i_pad++) + { + auto packet = pad_packets.at(i_pad); + data.b_STGL1A_pad_BCID.back().push_back(packet->BCID()); + data.b_STGL1A_pad_bandID_0.back().push_back(packet->BandID(0)); + data.b_STGL1A_pad_bandID_1.back().push_back(packet->BandID(1)); + data.b_STGL1A_pad_bandID_2.back().push_back(packet->BandID(2)); + data.b_STGL1A_pad_bandID_3.back().push_back(packet->BandID(3)); + + data.b_STGL1A_pad_phiID_0.back().push_back(packet->PhiID(0)); + data.b_STGL1A_pad_phiID_1.back().push_back(packet->PhiID(1)); + data.b_STGL1A_pad_phiID_2.back().push_back(packet->PhiID(2)); + data.b_STGL1A_pad_phiID_3.back().push_back(packet->PhiID(3)); + + data.b_STGL1A_pad_idleFlag.back().push_back(packet->PadIdleFlag()); + + } + + //merge block + const auto& segment_packets = link-> segment_packet(); + + data.b_STGL1A_merge_LUT_choiceSelection.push_back(dummy); + data.b_STGL1A_merge_nsw_segmentSelector.push_back(dummy); + data.b_STGL1A_merge_valid_segmentSelector.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment7.push_back(dummy); + data.b_STGL1A_merge_spare_segment7.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment7.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment7.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment7.push_back(dummy); + data.b_STGL1A_merge_phiID_segment7.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment7.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment6.push_back(dummy); + data.b_STGL1A_merge_spare_segment6.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment6.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment6.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment6.push_back(dummy); + data.b_STGL1A_merge_phiID_segment6.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment6.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment5.push_back(dummy); + data.b_STGL1A_merge_spare_segment5.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment5.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment5.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment5.push_back(dummy); + data.b_STGL1A_merge_phiID_segment5.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment5.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment4.push_back(dummy); + data.b_STGL1A_merge_spare_segment4.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment4.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment4.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment4.push_back(dummy); + data.b_STGL1A_merge_phiID_segment4.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment4.push_back(dummy); + + + data.b_STGL1A_merge_monitor_segment3.push_back(dummy); + data.b_STGL1A_merge_spare_segment3.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment3.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment3.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment3.push_back(dummy); + data.b_STGL1A_merge_phiID_segment3.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment3.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment2.push_back(dummy); + data.b_STGL1A_merge_spare_segment2.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment2.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment2.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment2.push_back(dummy); + data.b_STGL1A_merge_phiID_segment2.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment2.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment1.push_back(dummy); + data.b_STGL1A_merge_spare_segment1.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment1.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment1.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment1.push_back(dummy); + data.b_STGL1A_merge_phiID_segment1.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment1.push_back(dummy); + + data.b_STGL1A_merge_monitor_segment0.push_back(dummy); + data.b_STGL1A_merge_spare_segment0.push_back(dummy); + data.b_STGL1A_merge_lowRes_segment0.push_back(dummy); + data.b_STGL1A_merge_phiRes_segment0.push_back(dummy); + data.b_STGL1A_merge_dTheta_segment0.push_back(dummy); + data.b_STGL1A_merge_phiID_segment0.push_back(dummy); + data.b_STGL1A_merge_RIndex_segment0.push_back(dummy); + + data.b_STGL1A_merge_BCID.push_back(dummy); + data.b_STGL1A_merge_sectorID.push_back(dummy); + + for (unsigned int i_merge = 0; i_merge < segment_packets.size(); i_merge++) + { + auto packet = segment_packets.at(i_merge); + data.b_STGL1A_merge_LUT_choiceSelection.back().push_back(packet->LUT_ChoiceSelection()); + data.b_STGL1A_merge_nsw_segmentSelector.back().push_back(packet->NSW_SegmentSelector()); + data.b_STGL1A_merge_valid_segmentSelector.back().push_back(packet->ValidSegmentSelector()); + data.b_STGL1A_merge_monitor_segment7.back().push_back(packet->Monitor_Segment7()); + + data.b_STGL1A_merge_spare_segment7.back().push_back(packet->Spare_Segment7()); + data.b_STGL1A_merge_lowRes_segment7.back().push_back(packet->LowRes_Segment7()); + data.b_STGL1A_merge_phiRes_segment7.back().push_back(packet->PhiRes_Segment7()); + data.b_STGL1A_merge_dTheta_segment7.back().push_back(packet->DTheta_Segment7()); + data.b_STGL1A_merge_phiID_segment7.back().push_back(packet->DTheta_Segment7()); + data.b_STGL1A_merge_phiID_segment7.back().push_back(packet->PhiID_Segment7()); + data.b_STGL1A_merge_RIndex_segment7.back().push_back(packet->RIndex_Segment7()); + + data.b_STGL1A_merge_spare_segment6.back().push_back(packet->Spare_Segment6()); + data.b_STGL1A_merge_lowRes_segment6.back().push_back(packet->LowRes_Segment6()); + data.b_STGL1A_merge_phiRes_segment6.back().push_back(packet->PhiRes_Segment6()); + data.b_STGL1A_merge_dTheta_segment6.back().push_back(packet->DTheta_Segment6()); + data.b_STGL1A_merge_phiID_segment6.back().push_back(packet->DTheta_Segment6()); + data.b_STGL1A_merge_phiID_segment6.back().push_back(packet->PhiID_Segment6()); + data.b_STGL1A_merge_RIndex_segment6.back().push_back(packet->RIndex_Segment6()); + + data.b_STGL1A_merge_spare_segment5.back().push_back(packet->Spare_Segment5()); + data.b_STGL1A_merge_lowRes_segment5.back().push_back(packet->LowRes_Segment5()); + data.b_STGL1A_merge_phiRes_segment5.back().push_back(packet->PhiRes_Segment5()); + data.b_STGL1A_merge_dTheta_segment5.back().push_back(packet->DTheta_Segment5()); + data.b_STGL1A_merge_phiID_segment5.back().push_back(packet->DTheta_Segment5()); + data.b_STGL1A_merge_phiID_segment5.back().push_back(packet->PhiID_Segment5()); + data.b_STGL1A_merge_RIndex_segment5.back().push_back(packet->RIndex_Segment5()); + + data.b_STGL1A_merge_spare_segment4.back().push_back(packet->Spare_Segment4()); + data.b_STGL1A_merge_lowRes_segment4.back().push_back(packet->LowRes_Segment4()); + data.b_STGL1A_merge_phiRes_segment4.back().push_back(packet->PhiRes_Segment4()); + data.b_STGL1A_merge_dTheta_segment4.back().push_back(packet->DTheta_Segment4()); + data.b_STGL1A_merge_phiID_segment4.back().push_back(packet->DTheta_Segment4()); + data.b_STGL1A_merge_phiID_segment4.back().push_back(packet->PhiID_Segment4()); + data.b_STGL1A_merge_RIndex_segment4.back().push_back(packet->RIndex_Segment4()); + + data.b_STGL1A_merge_spare_segment3.back().push_back(packet->Spare_Segment3()); + data.b_STGL1A_merge_lowRes_segment3.back().push_back(packet->LowRes_Segment3()); + data.b_STGL1A_merge_phiRes_segment3.back().push_back(packet->PhiRes_Segment3()); + data.b_STGL1A_merge_dTheta_segment3.back().push_back(packet->DTheta_Segment3()); + data.b_STGL1A_merge_phiID_segment3.back().push_back(packet->DTheta_Segment3()); + data.b_STGL1A_merge_phiID_segment3.back().push_back(packet->PhiID_Segment3()); + data.b_STGL1A_merge_RIndex_segment3.back().push_back(packet->RIndex_Segment3()); + + data.b_STGL1A_merge_spare_segment2.back().push_back(packet->Spare_Segment2()); + data.b_STGL1A_merge_lowRes_segment2.back().push_back(packet->LowRes_Segment2()); + data.b_STGL1A_merge_phiRes_segment2.back().push_back(packet->PhiRes_Segment2()); + data.b_STGL1A_merge_dTheta_segment2.back().push_back(packet->DTheta_Segment2()); + data.b_STGL1A_merge_phiID_segment2.back().push_back(packet->DTheta_Segment2()); + data.b_STGL1A_merge_phiID_segment2.back().push_back(packet->PhiID_Segment2()); + data.b_STGL1A_merge_RIndex_segment2.back().push_back(packet->RIndex_Segment2()); + + data.b_STGL1A_merge_spare_segment1.back().push_back(packet->Spare_Segment1()); + data.b_STGL1A_merge_lowRes_segment1.back().push_back(packet->LowRes_Segment1()); + data.b_STGL1A_merge_phiRes_segment1.back().push_back(packet->PhiRes_Segment1()); + data.b_STGL1A_merge_dTheta_segment1.back().push_back(packet->DTheta_Segment1()); + data.b_STGL1A_merge_phiID_segment1.back().push_back(packet->DTheta_Segment1()); + data.b_STGL1A_merge_phiID_segment1.back().push_back(packet->PhiID_Segment1()); + data.b_STGL1A_merge_RIndex_segment1.back().push_back(packet->RIndex_Segment1()); + + data.b_STGL1A_merge_spare_segment0.back().push_back(packet->Spare_Segment0()); + data.b_STGL1A_merge_lowRes_segment0.back().push_back(packet->LowRes_Segment0()); + data.b_STGL1A_merge_phiRes_segment0.back().push_back(packet->PhiRes_Segment0()); + data.b_STGL1A_merge_dTheta_segment0.back().push_back(packet->DTheta_Segment0()); + data.b_STGL1A_merge_phiID_segment0.back().push_back(packet->DTheta_Segment0()); + data.b_STGL1A_merge_phiID_segment0.back().push_back(packet->PhiID_Segment0()); + data.b_STGL1A_merge_RIndex_segment0.back().push_back(packet->RIndex_Segment0()); + + data.b_STGL1A_merge_BCID.back().push_back(packet->BCID()); + data.b_STGL1A_merge_sectorID.back().push_back(packet->SectorID()); + + + } + } + } return 0; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h index d20c494a9e56f9e3aff4f77a2f1ada8c47a28ed0..dd852554771b03bdd98762a0b10dd2e8af2bff01 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h @@ -1,13 +1,12 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #ifndef MUONCONDDATA_MDTCONDDBDATA_H #define MUONCONDDATA_MDTCONDDBDATA_H //STL includes -#include <string> -#include <vector> +#include <set> //Athena includes #include "AthenaKernel/CondCont.h" @@ -41,29 +40,29 @@ public: void setNoisyStation (Identifier); void setNoisyChamber (Identifier); - const std::vector<std::string>& getDeadTubes () const; - const std::vector<std::string>& getDeadLayers () const; - const std::vector<std::string>& getDeadMultilayers() const; - const std::vector<std::string>& getDeadStations () const; - const std::vector<std::string>& getDeadChambers () const; + const std::set<std::string>& getDeadTubes () const; + const std::set<std::string>& getDeadLayers () const; + const std::set<std::string>& getDeadMultilayers() const; + const std::set<std::string>& getDeadStations () const; + const std::set<std::string>& getDeadChambers () const; - const std::vector<Identifier>& getDeadTubesId () const; - const std::vector<Identifier>& getDeadLayersId () const; - const std::vector<Identifier>& getDeadMultilayersId() const; - const std::vector<Identifier>& getDeadStationsId () const; - const std::vector<Identifier>& getDeadChambersId () const; - - const std::vector<std::string>& getNoisyTubes () const; - const std::vector<std::string>& getNoisyLayers () const; - const std::vector<std::string>& getNoisyMultilayers() const; - const std::vector<std::string>& getNoisyStations () const; - const std::vector<std::string>& getNoisyChambers () const; + const std::set<Identifier>& getDeadTubesId () const; + const std::set<Identifier>& getDeadLayersId () const; + const std::set<Identifier>& getDeadMultilayersId() const; + const std::set<Identifier>& getDeadStationsId () const; + const std::set<Identifier>& getDeadChambersId () const; + + const std::set<std::string>& getNoisyTubes () const; + const std::set<std::string>& getNoisyLayers () const; + const std::set<std::string>& getNoisyMultilayers() const; + const std::set<std::string>& getNoisyStations () const; + const std::set<std::string>& getNoisyChambers () const; - const std::vector<Identifier>& getNoisyTubesId () const; - const std::vector<Identifier>& getNoisyLayersId () const; - const std::vector<Identifier>& getNoisyMultilayersId() const; - const std::vector<Identifier>& getNoisyStationsId () const; - const std::vector<Identifier>& getNoisyChambersId () const; + const std::set<Identifier>& getNoisyTubesId () const; + const std::set<Identifier>& getNoisyLayersId () const; + const std::set<Identifier>& getNoisyMultilayersId() const; + const std::set<Identifier>& getNoisyStationsId () const; + const std::set<Identifier>& getNoisyChambersId () const; /// Returns if the identifier (tube/multiLayer/chamber) is masked /// in the conditions database @@ -80,36 +79,33 @@ public: bool isGoodStation (const Identifier & Id) const; /// Returns true if the complete chamber has not dead channels bool isGoodChamber (const Identifier & Id) const; - - /// Alias of isGood (to be removed in a future MR) - bool isGoodChannel (const MdtIdHelper *, const Identifier & Id) const; - + private: - std::vector<std::string> m_cachedDeadTubes{}; - std::vector<std::string> m_cachedDeadLayers{}; - std::vector<std::string> m_cachedDeadMultilayers{}; - std::vector<std::string> m_cachedDeadStations{}; - std::vector<std::string> m_cachedDeadChambers{}; - - std::vector<Identifier> m_cachedDeadTubesId{}; - std::vector<Identifier> m_cachedDeadLayersId{}; - std::vector<Identifier> m_cachedDeadMultilayersId{}; - std::vector<Identifier> m_cachedDeadStationsId{}; - std::vector<Identifier> m_cachedDeadChambersId{}; + std::set<std::string> m_cachedDeadTubes{}; + std::set<std::string> m_cachedDeadLayers{}; + std::set<std::string> m_cachedDeadMultilayers{}; + std::set<std::string> m_cachedDeadStations{}; + std::set<std::string> m_cachedDeadChambers{}; + + std::set<Identifier> m_cachedDeadTubesId{}; + std::set<Identifier> m_cachedDeadLayersId{}; + std::set<Identifier> m_cachedDeadMultilayersId{}; + std::set<Identifier> m_cachedDeadStationsId{}; + std::set<Identifier> m_cachedDeadChambersId{}; - std::vector<std::string> m_cachedNoisyTubes{}; - std::vector<std::string> m_cachedNoisyLayers{}; - std::vector<std::string> m_cachedNoisyMultilayers{}; - std::vector<std::string> m_cachedNoisyStations{}; - std::vector<std::string> m_cachedNoisyChambers{}; - - std::vector<Identifier> m_cachedNoisyTubesId{}; - std::vector<Identifier> m_cachedNoisyLayersId{}; - std::vector<Identifier> m_cachedNoisyMultilayersId{}; - std::vector<Identifier> m_cachedNoisyStationsId{}; - std::vector<Identifier> m_cachedNoisyChambersId{}; + std::set<std::string> m_cachedNoisyTubes{}; + std::set<std::string> m_cachedNoisyLayers{}; + std::set<std::string> m_cachedNoisyMultilayers{}; + std::set<std::string> m_cachedNoisyStations{}; + std::set<std::string> m_cachedNoisyChambers{}; + + std::set<Identifier> m_cachedNoisyTubesId{}; + std::set<Identifier> m_cachedNoisyLayersId{}; + std::set<Identifier> m_cachedNoisyMultilayersId{}; + std::set<Identifier> m_cachedNoisyStationsId{}; + std::set<Identifier> m_cachedNoisyChambersId{}; const MdtIdHelper& m_id_helper; diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx index f49c4122dd5faff36f544a5074b2a05ec656fdc0..f2bb627f7a0fc72efcedd63f158723fd5d0b002e 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx @@ -11,75 +11,65 @@ MdtCondDbData::MdtCondDbData(const MdtIdHelper& id_helper): // setDeadTube void MdtCondDbData::setDeadTube(std::string_view id_name, Identifier Id){ - if(std::find(m_cachedDeadTubesId.begin(), m_cachedDeadTubesId.end(), Id)!=m_cachedDeadTubesId.end()) return; - m_cachedDeadTubes .push_back(std::string(id_name)); - m_cachedDeadTubesId.push_back(Id ); + m_cachedDeadTubes .emplace(std::string(id_name)); + m_cachedDeadTubesId.insert(Id ); } // setDeadLayer void MdtCondDbData::setDeadLayer(std::string_view id_name, Identifier Id){ - if(std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end()) return; - m_cachedDeadLayers .push_back(std::string(id_name)); - m_cachedDeadLayersId.push_back(Id ); + m_cachedDeadLayers .emplace(id_name); + m_cachedDeadLayersId.insert(Id ); } // setDeadMultilayer void MdtCondDbData::setDeadMultilayer(std::string_view id_name, Identifier Id){ - if(std::find(m_cachedDeadMultilayersId.begin(), m_cachedDeadMultilayersId.end(), Id)!=m_cachedDeadMultilayersId.end()) return; - m_cachedDeadMultilayers .push_back(std::string(id_name)); - m_cachedDeadMultilayersId.push_back(Id ); + m_cachedDeadMultilayers .emplace(id_name); + m_cachedDeadMultilayersId.insert(Id ); } // setDeadStation (= a chamber dead by itself) void MdtCondDbData::setDeadStation(std::string_view id_name, Identifier Id){ - if(std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end()) return; - m_cachedDeadStations .push_back(std::string(id_name)); - m_cachedDeadStationsId.push_back(Id ); + m_cachedDeadStations .emplace(id_name); + m_cachedDeadStationsId.insert(Id ); } // setDeadChamber (= a chamber with dead channels) void MdtCondDbData::setDeadChamber(Identifier Id){ - if(std::find(m_cachedDeadChambersId.begin(), m_cachedDeadChambersId.end(), Id)!=m_cachedDeadChambersId.end()) return; - m_cachedDeadChambersId.push_back(Id ); + m_cachedDeadChambersId.insert(Id ); } // setNoisyTube void MdtCondDbData::setNoisyTube(Identifier Id){ - if(std::find(m_cachedNoisyTubesId.begin(), m_cachedNoisyTubesId.end(), Id)!=m_cachedNoisyTubesId.end()) return; - m_cachedNoisyTubesId.push_back(Id ); + m_cachedNoisyTubesId.insert(Id ); } // setNoisyLayer void MdtCondDbData::setNoisyLayer(Identifier Id){ - if(std::find(m_cachedNoisyLayersId.begin(), m_cachedNoisyLayersId.end(), Id)!=m_cachedNoisyLayersId.end()) return; - m_cachedNoisyLayersId.push_back(Id ); + m_cachedNoisyLayersId.insert(Id ); } // setNoisyMultilayer void MdtCondDbData::setNoisyMultilayer(Identifier Id){ - if(std::find(m_cachedNoisyMultilayersId.begin(), m_cachedNoisyMultilayersId.end(), Id)!=m_cachedNoisyMultilayersId.end()) return; - m_cachedNoisyMultilayersId.push_back(Id ); + m_cachedNoisyMultilayersId.insert(Id ); } // setNoisyStation void MdtCondDbData::setNoisyStation(Identifier Id){ - if(std::find(m_cachedNoisyStationsId.begin(), m_cachedNoisyStationsId.end(), Id)!=m_cachedNoisyStationsId.end()) return; - m_cachedNoisyStationsId.push_back(Id ); + m_cachedNoisyStationsId.insert(Id ); } // setNoisyChamber void MdtCondDbData::setNoisyChamber(Identifier Id){ - if(std::find(m_cachedNoisyChambersId.begin(), m_cachedNoisyChambersId.end(), Id)!=m_cachedNoisyChambersId.end()) return; - m_cachedNoisyChambersId.push_back(Id ); + m_cachedNoisyChambersId.insert(Id ); } @@ -88,35 +78,35 @@ MdtCondDbData::setNoisyChamber(Identifier Id){ // --- reading identifiers ------- -const std::vector<std::string>& MdtCondDbData::getDeadTubes() const{return m_cachedDeadTubes;} -const std::vector<std::string>& MdtCondDbData::getDeadLayers() const{return m_cachedDeadLayers;} -const std::vector<std::string>& MdtCondDbData::getDeadMultilayers() const{ return m_cachedDeadMultilayers;} -const std::vector<std::string>& MdtCondDbData::getDeadStations() const{ return m_cachedDeadStations;} -const std::vector<std::string>& MdtCondDbData::getDeadChambers() const{return m_cachedDeadChambers;} +const std::set<std::string>& MdtCondDbData::getDeadTubes() const{return m_cachedDeadTubes;} +const std::set<std::string>& MdtCondDbData::getDeadLayers() const{return m_cachedDeadLayers;} +const std::set<std::string>& MdtCondDbData::getDeadMultilayers() const{ return m_cachedDeadMultilayers;} +const std::set<std::string>& MdtCondDbData::getDeadStations() const{ return m_cachedDeadStations;} +const std::set<std::string>& MdtCondDbData::getDeadChambers() const{return m_cachedDeadChambers;} -const std::vector<Identifier>& MdtCondDbData::getDeadTubesId() const{ return m_cachedDeadTubesId;} -const std::vector<Identifier>& MdtCondDbData::getDeadLayersId() const{ return m_cachedDeadLayersId; } -const std::vector<Identifier>& MdtCondDbData::getDeadMultilayersId() const{ return m_cachedDeadMultilayersId;} -const std::vector<Identifier>& MdtCondDbData::getDeadStationsId() const{ return m_cachedDeadStationsId;} -const std::vector<Identifier>& MdtCondDbData::getDeadChambersId() const{ return m_cachedDeadChambersId;} +const std::set<Identifier>& MdtCondDbData::getDeadTubesId() const{ return m_cachedDeadTubesId;} +const std::set<Identifier>& MdtCondDbData::getDeadLayersId() const{ return m_cachedDeadLayersId; } +const std::set<Identifier>& MdtCondDbData::getDeadMultilayersId() const{ return m_cachedDeadMultilayersId;} +const std::set<Identifier>& MdtCondDbData::getDeadStationsId() const{ return m_cachedDeadStationsId;} +const std::set<Identifier>& MdtCondDbData::getDeadChambersId() const{ return m_cachedDeadChambersId;} -const std::vector<std::string>& MdtCondDbData::getNoisyTubes() const{ return m_cachedNoisyTubes;} -const std::vector<std::string>& MdtCondDbData::getNoisyLayers() const{ return m_cachedNoisyLayers;} -const std::vector<std::string>& MdtCondDbData::getNoisyMultilayers() const{return m_cachedNoisyMultilayers;} -const std::vector<std::string>& MdtCondDbData::getNoisyStations() const{ return m_cachedNoisyStations;} -const std::vector<std::string>& MdtCondDbData::getNoisyChambers() const{ return m_cachedNoisyChambers;} +const std::set<std::string>& MdtCondDbData::getNoisyTubes() const{ return m_cachedNoisyTubes;} +const std::set<std::string>& MdtCondDbData::getNoisyLayers() const{ return m_cachedNoisyLayers;} +const std::set<std::string>& MdtCondDbData::getNoisyMultilayers() const{return m_cachedNoisyMultilayers;} +const std::set<std::string>& MdtCondDbData::getNoisyStations() const{ return m_cachedNoisyStations;} +const std::set<std::string>& MdtCondDbData::getNoisyChambers() const{ return m_cachedNoisyChambers;} -const std::vector<Identifier>& MdtCondDbData::getNoisyTubesId() const{ return m_cachedNoisyTubesId;} -const std::vector<Identifier>& MdtCondDbData::getNoisyLayersId() const{return m_cachedNoisyLayersId;} -const std::vector<Identifier>& MdtCondDbData::getNoisyMultilayersId() const{return m_cachedNoisyMultilayersId;} -const std::vector<Identifier>& MdtCondDbData::getNoisyStationsId() const{ return m_cachedNoisyStationsId;} -const std::vector<Identifier>& MdtCondDbData::getNoisyChambersId() const{return m_cachedNoisyChambersId;} +const std::set<Identifier>& MdtCondDbData::getNoisyTubesId() const{ return m_cachedNoisyTubesId;} +const std::set<Identifier>& MdtCondDbData::getNoisyLayersId() const{return m_cachedNoisyLayersId;} +const std::set<Identifier>& MdtCondDbData::getNoisyMultilayersId() const{return m_cachedNoisyMultilayersId;} +const std::set<Identifier>& MdtCondDbData::getNoisyStationsId() const{ return m_cachedNoisyStationsId;} +const std::set<Identifier>& MdtCondDbData::getNoisyChambersId() const{return m_cachedNoisyChambersId;} @@ -127,35 +117,26 @@ MdtCondDbData::isGood(const Identifier & Id) const{ // probing id in all lists const Identifier multilayerId = m_id_helper.multilayerID(Id); const Identifier chamberId = m_id_helper.elementID (Id); - if(not isGoodStation (chamberId )) return false; - if(not isGoodMultilayer(multilayerId)) return false; - if(not isGoodTube (Id )) return false; + if(!isGoodStation (chamberId )) return false; + if(!isGoodMultilayer(multilayerId)) return false; + if(!isGoodTube (Id )) return false; return true; } -bool MdtCondDbData::isGoodChannel(const MdtIdHelper* , const Identifier & Id) const{ return isGood(Id);} bool MdtCondDbData::isGoodTube(const Identifier & Id) const{ - if(m_cachedDeadTubesId.empty()) return true; - bool found = std::find(m_cachedDeadTubesId.begin(), m_cachedDeadTubesId.end(), Id)!=m_cachedDeadTubesId.end(); - return !found; + return !m_cachedDeadTubesId.count(Id); } bool MdtCondDbData::isGoodLayer(const Identifier & Id) const{ - if(m_cachedDeadLayersId.empty()) return true; - bool found = std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end(); - return !found; + return !m_cachedDeadLayersId.count(Id); } bool MdtCondDbData::isGoodMultilayer(const Identifier & Id) const{ - if(m_cachedDeadMultilayersId.empty()) return true; - bool found = std::find(m_cachedDeadMultilayersId.begin(), m_cachedDeadMultilayersId.end(), Id)!=m_cachedDeadMultilayersId.end(); - return !found; + return !m_cachedDeadMultilayersId.count(Id); } bool MdtCondDbData::isGoodStation(const Identifier & Id) const{ - if(m_cachedDeadStationsId.empty()) return true; - bool found = std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end(); - return !found; + return !m_cachedDeadStationsId.count(Id); } // isGoodChamber @@ -164,9 +145,7 @@ bool MdtCondDbData::isGoodStation(const Identifier & Id) const{ /// latter, you need to use isGoodStation. bool MdtCondDbData::isGoodChamber(const Identifier & Id) const{ - if(m_cachedDeadChambersId.empty()) return true; - bool found = std::find(m_cachedDeadChambersId.begin(), m_cachedDeadChambersId.end(), Id)!=m_cachedDeadChambersId.end(); - return !found; + return !m_cachedDeadChambersId.count(Id); } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx deleted file mode 100644 index a467ca4aab816a30e32b6d56f3742a6057aaaeb8..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx +++ /dev/null @@ -1,76 +0,0 @@ -/* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration -*/ - -#include "MDTConditionsTestAlg.h" - -#include "MuonCondSvc/MuonHierarchy.h" - -// Gaudi includes -#include "GaudiKernel/StatusCode.h" - -// Athena includes -#include "Identifier/Identifier.h" - -MDTConditionsTestAlg::MDTConditionsTestAlg(const std::string& name, ISvcLocator* pSvcLocator) : - AthAlgorithm(name, pSvcLocator), m_pSummarySvc("MDTCondSummarySvc", name) {} - -MDTConditionsTestAlg::~MDTConditionsTestAlg() = default; -// Initialize -StatusCode MDTConditionsTestAlg::initialize() { - StatusCode sc(StatusCode::SUCCESS); - msg(MSG::INFO) << "Calling initialize" << endmsg; - sc = m_pSummarySvc.retrieve(); - - if (StatusCode::SUCCESS not_eq sc) { msg(MSG::ERROR) << "Could not retrieve the summary service" << endmsg; } - - return sc; -} - -// Execute -StatusCode MDTConditionsTestAlg::execute() { - StatusCode sc(StatusCode::SUCCESS); - - msg(MSG::INFO) << "Calling execute" << endmsg; - msg(MSG::INFO) << "Dummy call for the MDT STATUS" << endmsg; - msg(MSG::INFO) << "THE CHAMBER SWITCHED OFF ARE: " << endmsg; - m_pSummarySvc->deadStations(); - int size = m_pSummarySvc->deadStations().size(); - msg(MSG::INFO) << "writing from Algo SERVICE \n" << size << endmsg; - for (int k = 0; k < size; k++) { - std::string chamber = (m_pSummarySvc->deadStations()[k]); - msg(MSG::INFO) << "writing from Algo SERVICE CHAMBER \n" << chamber << endmsg; - } - - std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl; - if (m_pSummarySvc->isGoodChamber(Identifier(1699348480))) - msg(MSG::VERBOSE) << "The chamber is good\n" << endmsg; - else - msg(MSG::INFO) << "The chamber is not good\n" << endmsg; - int size_id = m_pSummarySvc->deadStationsId().size(); - msg(MSG::INFO) << "writing from Algo SERVICE Identifier\n" << size_id << endmsg; - for (int k = 0; k < size_id; k++) { - Identifier Id = (m_pSummarySvc->deadStationsId()[k]); - msg(MSG::INFO) << "writing from Algo SERVICE CHAMBER \n" << Id << endmsg; - } - std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl; - - int size_id2 = m_pSummarySvc->deadMultiLayersId().size(); - msg(MSG::INFO) << "writing from Algo SERVICE Identifier\n" << size_id2 << endmsg; - for (int k = 0; k < size_id2; k++) { - Identifier Id = (m_pSummarySvc->deadMultiLayersId()[k]); - msg(MSG::INFO) << "writing from Algo SERVICE MULTILAYERS \n" << Id << endmsg; - } - - std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl; - m_pSummarySvc->deadTubes(); - int size2 = m_pSummarySvc->deadTubes().size(); - msg(MSG::INFO) << "writing from Algo SERVICE TUBES\n" << size2 << endmsg; - std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl; - - m_pSummarySvc->deadTubesId(); - int size2id = m_pSummarySvc->deadTubesId().size(); - msg(MSG::INFO) << "writing from Algo SERVICE TUBES\n" << size2id << endmsg; - std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl; - return sc; -} diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h deleted file mode 100644 index b75ae8b3efa66b0b13baf84323d1f955d649c5a8..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef MDTConditionsTestAlg_H -#define MDTConditionsTestAlg_H -// STL -#include <string> - -// Gaudi -#include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/ServiceHandle.h" - -// Athena - -//#include "MuonCondInterface/IMuonConditionsSvc.h" -#include "MuonCondInterface/IMDTConditionsSvc.h" - -// Forward declarations -class ISvcLocator; -class StatusCode; - -/// Example class to show calling the SCT_ConditionsSummarySvc -class MDTConditionsTestAlg : public AthAlgorithm { -public: - MDTConditionsTestAlg(const std::string &name, ISvcLocator *pSvcLocator); - ~MDTConditionsTestAlg(); - - StatusCode initialize() override; - StatusCode execute() override; - -private: - ServiceHandle<IMDTConditionsSvc> m_pSummarySvc; -}; // end of class - -#endif diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx index a77740410c4cb47cca12319231df6695264bf552..7e4e17f4c2119eb1968cd916cce3b5da76408562 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx @@ -14,62 +14,62 @@ MDTConditionsTestAlgMT::~MDTConditionsTestAlgMT() = default; StatusCode MDTConditionsTestAlgMT::initialize() { ATH_MSG_INFO("Calling initialize"); ATH_CHECK(m_readKey.initialize()); + ATH_CHECK(m_idHelperSvc.retrieve()); return StatusCode::SUCCESS; } // Execute -StatusCode MDTConditionsTestAlgMT::execute() { - StatusCode sc(StatusCode::SUCCESS); +StatusCode MDTConditionsTestAlgMT::execute() { ATH_MSG_INFO("Calling execute"); - std::stringstream ss; - ss << "Now setting up read handle: "; + SG::ReadCondHandle<MdtCondDbData> readHandle{m_readKey}; const MdtCondDbData* readCdo{*readHandle}; - if (readCdo == nullptr) { - ss << "DID NOT WORK!"; - ATH_MSG_INFO(ss.str()); + if (!readCdo) { ATH_MSG_ERROR("Null pointer to the read conditions object"); return StatusCode::FAILURE; } else { - ss << "WORKED!"; - ATH_MSG_INFO(ss.str()); + ATH_MSG_INFO("Loaded successfully the dead channel data"); } - ss.clear(); - ss << "Reading Dead Tubes: "; - int size = readCdo->getDeadTubesId().size(); - ss << "found " << size << " via Id; containing:"; - ATH_MSG_INFO(ss.str()); - for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadTubes()[k]); } - - ss.clear(); - ss << "Reading Dead Layers: "; - size = readCdo->getDeadLayersId().size(); - ss << "found " << size << " via Id; containing:"; - ATH_MSG_INFO(ss.str()); - for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadLayers()[k]); } - - ss.clear(); - ss << "Reading Dead Multilayers: "; - size = readCdo->getDeadMultilayersId().size(); - ss << "found " << size << " via Id; containing:"; - ATH_MSG_INFO(ss.str()); - for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadMultilayers()[k]); } + { + std::stringstream sstr{}; + for (const Identifier& dead_tube : readCdo->getDeadTubesId()) { + sstr<<" **** "<<m_idHelperSvc->toString(dead_tube)<<std::endl; + } + ATH_MSG_INFO("Found "<<readCdo->getDeadTubes().size()<<" dead tubes"<<std::endl<<sstr.str()); + } + + { + std::stringstream sstr{}; + for (const Identifier& dead_lay : readCdo->getDeadLayersId()) { + sstr<<" **** "<<m_idHelperSvc->toString(dead_lay)<<std::endl; + } + ATH_MSG_INFO("Found "<<readCdo->getDeadLayersId().size()<<" dead layers"<<std::endl<<sstr.str()); + } + { + std::stringstream sstr{}; + for (const Identifier& dead_ml : readCdo->getDeadMultilayersId()) { + sstr<<" **** "<<m_idHelperSvc->toString(dead_ml)<<std::endl; + } + ATH_MSG_INFO("Found "<<readCdo->getDeadMultilayersId().size()<<" dead multi layers"<<std::endl<<sstr.str()); + } - ss.clear(); - ss << "Reading Dead Stations: "; - size = readCdo->getDeadStationsId().size(); - ss << "found " << size << " via Id; containing:"; - ATH_MSG_INFO(ss.str()); - for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadStations()[k]); } + { + std::stringstream sstr{}; + for (const Identifier& dead_cham : readCdo->getDeadStationsId()) { + sstr<<" **** "<<m_idHelperSvc->toString(dead_cham)<<std::endl; + } + ATH_MSG_INFO("Found "<<readCdo->getDeadStationsId().size()<<" dead stations"<<std::endl<<sstr.str()); + } + { + std::stringstream sstr{}; + for (const Identifier& dead_cham : readCdo->getDeadChambersId()) { + sstr<<" **** "<<m_idHelperSvc->toString(dead_cham)<<std::endl; + } + ATH_MSG_INFO("Found "<<readCdo->getDeadChambersId().size()<<" dead stations"<<std::endl<<sstr.str()); - ss.clear(); - ss << "Reading Chambers with Dead Channels: "; - size = readCdo->getDeadChambersId().size(); - ss << "found " << size << " via Id; containing:"; - ATH_MSG_INFO(ss.str()); - for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadChambersId()[k]); } + } ATH_MSG_INFO("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); @@ -77,5 +77,5 @@ StatusCode MDTConditionsTestAlgMT::execute() { ATH_MSG_INFO("ID=1699348480; isGood? " << readCdo->isGood(Identifier(1699348480))); ATH_MSG_INFO("MADE IT TO THE END!!"); - return sc; + return StatusCode::SUCCESS; } diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h index fcb0f7b9494d12da273a60282cf760199b5e22cc..1700d68371dda152e7b6aeb2b042a942ec491294 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #ifndef MDTConditionsTestAlgMT_H @@ -7,25 +7,17 @@ // STL #include <sstream> -#include <string> + // Gaudi #include "AthenaBaseComps/AthAlgorithm.h" -#include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/StatusCode.h" +#include "MuonIdHelpers/IMuonIdHelperSvc.h" // Athena #include "Identifier/Identifier.h" #include "MuonCondData/MdtCondDbData.h" -#include "MuonCondInterface/IMDTConditionsSvc.h" -#include "MuonCondSvc/MuonHierarchy.h" - -// Forward declarations -class ISvcLocator; -class StatusCode; -class MdtCondDbData; -/// Example class to show calling the SCT_ConditionsSummarySvc +/// Example class to show calling the MDTConditionsTestAlgMT class MDTConditionsTestAlgMT : public AthAlgorithm { public: MDTConditionsTestAlgMT(const std::string &name, ISvcLocator *pSvcLocator); @@ -37,6 +29,8 @@ public: private: SG::ReadCondHandleKey<MdtCondDbData> m_readKey{this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"}; + ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; + }; // end of class #endif diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx index dc597b9cd90307bc62de56669e6a4240d6610be2..cab14efb1b0c3614d264210a49d5bb0181734a4e 100644 --- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx +++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx @@ -3,7 +3,6 @@ */ #include "../AlignCondAthTest.h" #include "../CSCConditionsTestAlgMT.h" -#include "../MDTConditionsTestAlg.h" #include "../MDTConditionsTestAlgMT.h" #include "../NswCondTestAlg.h" #include "../NswPassivationTestAlg.h" @@ -12,7 +11,6 @@ #include "../MdtCablMezzAlg.h" DECLARE_COMPONENT(AlignCondAthTest) -DECLARE_COMPONENT(MDTConditionsTestAlg) DECLARE_COMPONENT(MDTConditionsTestAlgMT) DECLARE_COMPONENT(CSCConditionsTestAlgMT) DECLARE_COMPONENT(NswCondTestAlg) diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h index 3ecc7de07f59102586ab9349f3e16a158fe06289..84f70945e83d002ef71ec929e9c326da74689930 100644 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h @@ -220,7 +220,7 @@ private: std::vector<maskedStation> m_vMaskedStations; // list of Identifiers returned by the Conditions Service to mask stations - std::vector<Identifier> m_IdentifiersToMask; + std::set<Identifier> m_IdentifiersToMask; // pile-up std::unique_ptr<TimedHitCollection<MDTSimHit>> m_thpcMDT{}; // the hits diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx index fd456ffad76bafecc41c77343853128140a7ac16..4cf7e4892c21ed7aa4831ff804b2ba99ee859dab 100644 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx @@ -353,15 +353,8 @@ StatusCode MdtDigitizationTool::doDigitization(const EventContext& ctx, Collecti ATH_MSG_WARNING(readHandle.fullKey() << " is not available."); return StatusCode::FAILURE; } - m_IdentifiersToMask.clear(); - int size_id = readCdo->getDeadStationsId().size(); - ATH_MSG_DEBUG("Number of dead/missing stations retrieved from CondService= " << size_id); - - for (int k = 0; k < size_id; ++k) { - Identifier Id = readCdo->getDeadStationsId()[k]; - m_IdentifiersToMask.push_back(readCdo->getDeadStationsId()[k]); - ATH_MSG_VERBOSE("Dead/missing chambers id from CondDB: " << m_idHelperSvc->mdtIdHelper().show_to_string(Id)); - } + m_IdentifiersToMask = readCdo->getDeadStationsId(); + ATH_MSG_DEBUG("Number of dead/missing stations retrieved from CondService= " << readCdo->getDeadStationsId().size()); } // get the iterator infos for this DetEl @@ -668,9 +661,8 @@ bool MdtDigitizationTool::checkMDTSimHit(const MDTSimHit& hit) const { //+MASKING OF DEAD/MISSING CHAMBERS if (m_UseDeadChamberSvc) { - for (unsigned int i = 0; i < m_IdentifiersToMask.size(); ++i) { - Identifier Id = m_IdentifiersToMask[i]; - + for (const Identifier& Id : m_IdentifiersToMask) { + if ((stationName == m_idHelperSvc->mdtIdHelper().stationNameString(m_idHelperSvc->mdtIdHelper().stationName(Id))) && (stationEta == m_idHelperSvc->mdtIdHelper().stationEta(Id)) && (stationPhi == m_idHelperSvc->mdtIdHelper().stationPhi(Id))) { diff --git a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx index 7cedab42ccde319b791fdb3404008a6484e29ddf..8aeefb236c689b92bd5a9b7a90cb82ea3001d93a 100644 --- a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx +++ b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #include "sTGC_Digitization/sTgcDigitMaker.h" @@ -841,7 +841,7 @@ StatusCode sTgcDigitMaker::readFileOfEffChamber() { // Find path to the sTGC_Digitization_EffChamber.dat file const std::string fileName = "sTGC_Digitization_EffChamber.dat"; - std::string fileWithPath = PathResolver::find_file(fileName.c_str(), "DATAPATH"); + std::string fileWithPath = PathResolver::find_file(fileName, "DATAPATH"); if(fileWithPath.empty()) { ATH_MSG_FATAL("readFileOfEffChamber(): Could not find file " << fileName.c_str() ); return StatusCode::FAILURE; @@ -936,7 +936,7 @@ int sTgcDigitMaker::getIStationName(const std::string& stationName) const { StatusCode sTgcDigitMaker::readFileOfTimeArrival() { // Verify the file sTGC_Digitization_timeArrival.dat exists const std::string file_name = "sTGC_Digitization_timeArrival.dat"; - std::string file_path = PathResolver::find_file(file_name.c_str(), "DATAPATH"); + std::string file_path = PathResolver::find_file(file_name, "DATAPATH"); if(file_path.empty()) { ATH_MSG_FATAL("readFileOfTimeWindowOffset(): Could not find file " << file_name.c_str() ); return StatusCode::FAILURE; @@ -1015,7 +1015,7 @@ double sTgcDigitMaker::getMostProbableArrivalTime(double distance) const { StatusCode sTgcDigitMaker::readFileOfTimeOffsetStrip() { // Verify the file sTGC_Digitization_timeOffsetStrip.dat exists const std::string file_name = "sTGC_Digitization_timeOffsetStrip.dat"; - std::string file_path = PathResolver::find_file(file_name.c_str(), "DATAPATH"); + std::string file_path = PathResolver::find_file(file_name, "DATAPATH"); if(file_path.empty()) { ATH_MSG_FATAL("readFileOfTimeWindowOffset(): Could not find file " << file_name.c_str() ); return StatusCode::FAILURE; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx index 4686cbc8b4bb74ed5ad532d4f7f51295222d7195..416571ebb7a2a83710508f19898f4db54e27adb2 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ #include "MuonStationIntersectCond/MdtIntersectGeometry.h" @@ -173,7 +173,7 @@ namespace Muon { Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, firstMlIndex, 1, 2); Amg::Vector3D secondTubeMl0 = transform() * (m_detElMl0->tubePos(secondIdml0)); - if (m_detElMl0) fillDeadTubes(m_detElMl0, msg); + fillDeadTubes(m_detElMl0, msg); if (m_detElMl1) fillDeadTubes(m_detElMl1, msg); // position first tube in second layer ml 0 diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt index 584652d708a11452ee5be98d824fabff3e4e6c0a..93477481f370069b476fd4b51fc9dd851996840e 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( StgcRawDataMonitoring ) @@ -6,9 +6,10 @@ atlas_subdir( StgcRawDataMonitoring ) # Component(s) in the package: atlas_add_component( StgcRawDataMonitoring StgcRawDataMonitoring/*.h src/*.cxx src/components/*.cxx - LINK_LIBRARIES AthenaMonitoringLib MuonIdHelpersLib MuonPrepRawData StoreGateLib MuonRIO_OnTrack MuonSegment ) + LINK_LIBRARIES AthenaMonitoringLib MuonIdHelpersLib MuonPrepRawData StoreGateLib MuonRIO_OnTrack TrkToolInterfaces TrkParameters) # Install files from the package: atlas_install_joboptions( share/*.py ) atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) + \ No newline at end of file diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h index 7c52f1e55bf432191cda438210841efd1784d5b1..cc416a949fe5c4b5084c132434379a13de10b72f 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -25,9 +25,11 @@ #include "MuonPrepRawData/sTgcPrepData.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonIdHelpers/sTgcIdHelper.h" - #include "MuonRIO_OnTrack/sTgcClusterOnTrack.h" -#include "MuonSegment/MuonSegment.h" + +#include "TrkToolInterfaces/IResidualPullCalculator.h" +#include "TrkParameters/TrackParameters.h" + // stl includes #include <string> @@ -37,7 +39,7 @@ namespace Muon { } namespace GeometricSectors { - static const std::array<std::string, 2> sTgcSide = {"CSide", "ASide"}; + static const std::array<std::string, 2> sTgcSide = {"C", "A"}; } class sTgcRawDataMonAlg: public AthMonitorAlgorithm { @@ -49,20 +51,17 @@ class sTgcRawDataMonAlg: public AthMonitorAlgorithm { virtual StatusCode fillHistograms(const EventContext& ctx) const override; private: ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; - - void fillsTgcOverviewHistograms(const Muon::sTgcPrepData*, const Muon::MuonPrepDataCollection<Muon::sTgcPrepData> &prd) const; + ToolHandle<Trk::IResidualPullCalculator> m_residualPullCalculator {this, "ResPullCalc", "Trk::ResidualPullCalculator/ResidualPullCalculator"}; + void fillsTgcOccupancyHistograms(const Muon::sTgcPrepData*, const MuonGM::MuonDetectorManager*) const; void fillsTgcLumiblockHistograms(const Muon::sTgcPrepData*, const int lb) const; - void fillsTgcTimingHistograms(const Muon::sTgcPrepData*) const; - void fillsTgcClusterFromSegmentsHistograms(const Trk::SegmentCollection*) const; void fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer*) const; int getSectors(const Identifier& id) const; int getLayer(const int multiplet, const int gasGap) const; SG::ReadHandleKey<Muon::sTgcPrepDataContainer> m_sTgcContainerKey{this,"sTgcPrepDataContainerName", "STGC_Measurements"}; - SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager","Key of input MuonDetectorManager condition data"}; - SG::ReadHandleKey<Trk::SegmentCollection> m_segmentManagerKey{this, "segmentManagerKey", "TrkMuonSegments", "Muon segments"}; + SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager","Key of input MuonDetectorManager condition data"}; SG::ReadHandleKey<xAOD::TrackParticleContainer> m_meTrkKey{this, "METrkContainer", "ExtrapolatedMuonTrackParticles"}; Gaudi::Property<bool> m_dosTgcESD{this,"dosTgcESD", true}; diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py index 764d0c58e6f50b990489af667461395bb96dd813..fbada549cfdcd8bfeae2f714c75ed23738add0c6 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py @@ -30,113 +30,122 @@ def sTgcMonitoringConfig(inputFlags): sTgcMonAlg = helper.addAlgorithm(CompFactory.sTgcRawDataMonAlg,'sTgcMonAlg') sTgcMonAlg.dosTgcESD = True - # Add a generic monitoring tool (a "group" in old language). The returned - # object here is the standard GenericMonitoringTool. - sTgcOverviewGroup = helper.addGroup(sTgcMonAlg, 'sTgcOverview', 'Muon/MuonRawDataMonitoring/sTgc/sTgcOverview') - sTgcLayerGroup = helper.addGroup(sTgcMonAlg, 'sTgcLayers', 'Muon/MuonRawDataMonitoring/sTgc/sTgcLayers') - sTgcOccupancyGroup = helper.addGroup(sTgcMonAlg, 'sTgcOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/sTgcOccupancy') - sTgcLumiblockGroup = helper.addGroup(sTgcMonAlg, 'sTgcLumiblock', 'Muon/MuonRawDataMonitoring/sTgc/sTgcLumiblock') - sTgcTimingGroup = helper.addGroup(sTgcMonAlg, 'sTgcTiming', 'Muon/MuonRawDataMonitoring/sTgc/sTgcTiming') - sTgcClusterFromSegmentGroup = helper.addGroup(sTgcMonAlg, 'sTgcClusterFromSegment', 'Muon/MuonRawDataMonitoring/sTgc/sTgcClusterFromSegment') - sTgYvsXGroup = helper.addGroup(sTgcMonAlg, 'sTgcYvsX', 'Muon/MuonRawDataMonitoring/sTgc/sTgcYvsX') + #Shifter + sTgcOverviewGroup = helper.addGroup(sTgcMonAlg, 'sTgcOverview', 'Muon/MuonRawDataMonitoring/sTgc/Shifter') + sTgcQuadOccupancyGroup = helper.addGroup(sTgcMonAlg, 'sTgcQuadOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Occupancy') + sTgcLumiblockGroup = helper.addGroup(sTgcMonAlg, 'sTgcLumiblock', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Lumiblock') + sTgcTimingGroup = helper.addGroup(sTgcMonAlg, 'sTgcTiming', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Timing') - # Configure histograms - # Overview histograms - sTgcOverviewGroup.defineHistogram('charge;chargeOverview', type = 'TH1F', title = 'charge; charge [fC]; number of entries', path = 'Overview', xbins = 100, xmin = 0., xmax = 1000.) - sTgcOverviewGroup.defineHistogram('numberOfStripsPerCluster;numberOfStripsPerCluster', type = 'TH1F', title = 'number of strips per cluster; number of strips per cluster; number of entries', path = 'Overview', xbins = 20, xmin = 0., xmax = 20.) - sTgcOverviewGroup.defineHistogram('numberOfStripsPerClusterMuonSegments;numberOfStripsPerClusterMuonSegmentsOverview', type = 'TH1F', title = 'number of strips per cluster (muon segments); number of strips per cluster; number of entries', path = 'Overview', xbins = 20, xmin = 0., xmax = 20.) - sTgcOverviewGroup.defineHistogram('time;timeOverview', type = 'TH1F', title = 'time; time [ns]; number of entries', path = 'Overview', xbins = 900, xmin = -200., xmax = 700.) - sTgcOverviewGroup.defineHistogram('stripTimes;stripTimesOverview', type = 'TH1F', title = 'strip time; strip time [ns]; number of entries', path = 'Overview', xbins = 900, xmin = -200., xmax = 700.) - sTgcOverviewGroup.defineHistogram('stripCharges;stripChargesOverview', type = 'TH1F', title = 'strip charge; strip charge [fC]; number of entries', path = 'Overview', xbins = 120, xmin = 0., xmax = 1200.) - - sTgcOverviewGroup.defineHistogram('stripNumbers;stripNumbersOverview', type = 'TH1F', title = 'strip number; strip number; number of entries', path = 'Overview', xbins = 410, xmin = 0., xmax = 410.) - sTgcOverviewGroup.defineHistogram('x,y;xyOverview', type = 'TH2F', title='y vs x; sTgc-GlobalX [mm]; sTgc-GlobalY [mm]; number of entries', path = 'Overview', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000.) - sTgcOverviewGroup.defineHistogram('r,z;rzOverview', type = 'TH2F', title = 'z vs R; sTgc-GlobalR [mm]; sTgc-GlobalZ [mm]; number of entries', path = 'Overview', xbins = 500, xmin = 0., xmax = 5000., ybins = 1000, ymin = -10000., ymax = 10000.) + #Expert + sTgcOccupancyGroup = helper.addGroup(sTgcMonAlg, 'sTgcOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Occupancy') + # Layered and occupancy histograms - side = ['ASide', 'CSide'] + side = ['A', 'C'] stationEtaMax = 3 sectorMax = 16 layerMax = 8 - - for layerIndex in range(1, layerMax + 1): - titlePadOccupancy = f'layer {layerIndex}; sector; pad number; hits' - varPadOccupancy = f'sector_layer_{layerIndex},padNumber_layer_{layerIndex};padOccupancy_layer_{layerIndex}' - weightPadOccupancy = f'padHit_layer_{layerIndex}' - sTgcOccupancyGroup.defineHistogram(varPadOccupancy, type = 'TH2F', title = titlePadOccupancy, path = 'padOccupancy', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 317, ymin = 0., ymax = 317., opt = 'kAlwaysCreate', weight = weightPadOccupancy) - - titleStripOccupancy = f'layer {layerIndex}; sector; strip number; hits' - varStripOccupancy = f'sector_layer_{layerIndex},stripNumber_layer_{layerIndex};stripOccupancy_layer_{layerIndex}' - weightStripOccupancy = f'stripHit_layer_{layerIndex}' - sTgcOccupancyGroup.defineHistogram(varStripOccupancy, type = 'TH2F', title = titleStripOccupancy, path = 'stripOccupancy', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 1130, ymin = 0., ymax = 1130., opt = 'kAlwaysCreate', weight = weightStripOccupancy) - - titleWireGroupOccupancyPerQuad = f'layer {layerIndex}; wire group number; station eta; hits' - varWireGroupOccupancyPerQuad = f'wireGroupNumber_layer_{layerIndex},stationEta_layer_{layerIndex};wireGroupOccupancyPerQuad_layer_{layerIndex}' - weightWireGroupOccupancyPerQuad = f'wireGroupHit_layer_{layerIndex}' - sTgcOccupancyGroup.defineHistogram(varWireGroupOccupancyPerQuad, type = 'TH2F', title = titleWireGroupOccupancyPerQuad, path = 'wireGroupOccupancy', xbins = 58*sectorMax, xmin = 0., xmax = float(58*sectorMax), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightWireGroupOccupancyPerQuad) - - titleStationEtaSectorPadHitMap = f'layer {layerIndex}; sector; station eta; pad hits' - varStationEtaSectorPadHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorPadHitMap_layer_{layerIndex}' - weightStationEtaSectorPadHitMap = f'padHitLayers_layer_{layerIndex}' - sTgcLayerGroup.defineHistogram(varStationEtaSectorPadHitMap, type = 'TH2F', title = titleStationEtaSectorPadHitMap, path = 'stationEtaSectorPadHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorPadHitMap) + + for stationEtaIndex in range(1, stationEtaMax + 1): + sTgcPadTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'padTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Pad') + sTgcStripTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'stripTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Strip') + sTgcWireTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'wireTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Wire') + for layerIndex in range(1, layerMax + 1): + titleTimingPadTrack = f'Q{stationEtaIndex}L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits' + varTimingPadTrack = f'padTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},padTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_pad_timing_in_Q{stationEtaIndex}_Layer{layerIndex}' + sTgcPadTimingExpertGroup.defineHistogram(varTimingPadTrack, type = 'TH2F', title = titleTimingPadTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + titleTimingStripTrack = f'Q{stationEtaIndex}L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits' + varTimingStripTrack = f'stripTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},stripTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_strip_timing_in_Q{stationEtaIndex}_Layer{layerIndex}' + sTgcStripTimingExpertGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') - titleStationEtaSectorStripHitMap = f'layer {layerIndex}; sector; station eta; strip hits' - varStationEtaSectorStripHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorStripHitMap_layer_{layerIndex}' - weightStationEtaSectorStripHitMap = f'stripHitLayers_layer_{layerIndex}' - sTgcLayerGroup.defineHistogram(varStationEtaSectorStripHitMap, type = 'TH2F', title = titleStationEtaSectorStripHitMap, path = 'stationEtaSectorStripHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorStripHitMap) - - titleStationEtaSectorWireGroupHitMap = f'layer {layerIndex}; sector; station eta; wire group hits' - varStationEtaSectorWireGroupHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorStripHitMap_layer_{layerIndex}' - weightStationEtaSectorWireGroupHitMap = f'wireGroupHitLayers_layer_{layerIndex}' - sTgcLayerGroup.defineHistogram(varStationEtaSectorWireGroupHitMap, type = 'TH2F', title = titleStationEtaSectorWireGroupHitMap, path = 'stationEtaSectorWireGroupHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorWireGroupHitMap) + titleTimingWireTrack = f'Q{stationEtaIndex}L{layerIndex}; Sector; Wire Group Timing (on-track) [ns]; Hits' + varTimingWireTrack = f'wireTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},wireTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_wire_timing_in_Q{stationEtaIndex}_Layer{layerIndex}' + sTgcWireTimingExpertGroup.defineHistogram(varTimingWireTrack, type = 'TH2F', title = titleTimingWireTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + for sideIndex in side: + for stationEtaIndex in range(1, stationEtaMax + 1): + for sectorIndex in range(1, sectorMax + 1): + padChargeGroup = helper.addGroup(sTgcMonAlg, f'padCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Pad') + stripChargeGroup = helper.addGroup(sTgcMonAlg, f'stripCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Strip') + wireGroupChargeGroup = helper.addGroup(sTgcMonAlg, f'wireGroupCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Wire') + residualGroup = helper.addGroup(sTgcMonAlg, f'sTgcResiduals_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Residuals/{sideIndex}' + f'{sectorIndex}'.zfill(2)) + + for layerIndex in range(1, layerMax + 1): + titlePadChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Pad Charge (on-track) [fC]; Number of Entries' + varPadChargeTrack = f'padTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_pad_charge_in_Q{stationEtaIndex}_Layer{layerIndex}' + padChargeGroup.defineHistogram(varPadChargeTrack, type = 'TH1F', title = titlePadChargeTrack, path = f'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt = 'kAlwaysCreate') + + titleStripChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Strip Cluster Charge (on-track) [fC]; Number of Entries' + varStripChargeTrack = f'stripTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_strip_charge_in_Q{stationEtaIndex}_Layer{layerIndex}' + stripChargeGroup.defineHistogram(varStripChargeTrack, type = 'TH1F', title = titleStripChargeTrack, path = f'Q{stationEtaIndex}', xbins = 120, xmin = 0., xmax = 1200., opt = 'kAlwaysCreate') + + titleWireGroupChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Wire Group Charge (on-track) [fC]; Number of Entries' + varWireGroupChargeTrack = f'wireGroupTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_wire_charge_in_Q{stationEtaIndex}_Layer{layerIndex}' + wireGroupChargeGroup.defineHistogram(varWireGroupChargeTrack, type = 'TH1F', title = titleWireGroupChargeTrack, path = f'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt = 'kAlwaysCreate') + + titleResidual = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Residual [mm]; Number of Entries' + varResidual = f'residual_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};Residuals_in_Q{stationEtaIndex}_Layer{layerIndex}' + residualGroup.defineHistogram(varResidual, type = 'TH1F', title = titleResidual, path = f'Q{stationEtaIndex}', xbins = 1000, xmin = -2., xmax = 2., opt = 'kAlwaysCreate') + + + for layerIndex in range(1, layerMax + 1): + titleStripClusterSizeTrack = f'L{layerIndex}; Sector; Strip Cluster Size (on-track); Hits' + varStripClusterSizeTrack = f'stripTrackSectorSided_layer_{layerIndex},stripTrackClusterSize_layer_{layerIndex};Strip_cluster_size_ontrk_per_sector_Layer{layerIndex}' + sTgcOverviewGroup.defineHistogram(varStripClusterSizeTrack, type = 'TH2F', title = titleStripClusterSizeTrack, path = 'Overview', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 10, ymin = 0., ymax = 10., opt = 'kAlwaysCreate') + + titleTimingStripTrack = f'L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits' + varTimingStripTrack = f'stripTrackSectorSided_layer_{layerIndex},stripTrackTiming_layer_{layerIndex};Strip_cluster_timing_ontrk_per_sector_Layer{layerIndex}' + sTgcOverviewGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = 'Overview', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + titleStationEtaSectorPadHitMap = f'L{layerIndex}; Sector; Quad; Hits' + varStationEtaSectorPadHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Pad_quad_occupancy_per_sector_Layer{layerIndex}' + sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorPadHitMap, type = 'TH2F', title = titleStationEtaSectorPadHitMap, path = 'Pad', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate') - titleTimingPad = f'layer {layerIndex}; sector; time (pad) [ns]; hits' - varTimingPad = f'padSectorSided_layer_{layerIndex},padTiming_layer_{layerIndex};padTiming_layer_{layerIndex}' - weightTimingPad = f'padHit_layer_{layerIndex}' - sTgcTimingGroup.defineHistogram(varTimingPad, type = 'TH2F', title = titleTimingPad, path = 'padTiming', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate', weight = weightTimingPad) - - titleTimingWireGroup = f'layer {layerIndex}; sector; time (wire group) [ns]; hits' - varTimingWireGroup = f'wireGroupSectorSided_layer_{layerIndex},wireGroupTiming_layer_{layerIndex};wireGroupTiming_layer_{layerIndex}' - weightTimingWireGroup = f'wireGroupHit_layer_{layerIndex}' - sTgcTimingGroup.defineHistogram(varTimingWireGroup, type = 'TH2F', title = titleTimingWireGroup, path = 'wireGroupTiming', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate', weight = weightTimingWireGroup) - - titleTimingStripCluster = f'layer {layerIndex}; sector; time (strip segments) [ns]; hits' - varTimingStripCluster = f'stripClusterSectorSided_layer_{layerIndex},stripClusterTiming_layer_{layerIndex};stripClusterTiming_layer_{layerIndex}' - weightTimingStripCluster = f'stripClusterHit_layer_{layerIndex}' - sTgcClusterFromSegmentGroup.defineHistogram(varTimingStripCluster, type = 'TH2F', title = titleTimingStripCluster, path = 'stripClusterTime', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 220, ymin = -85., ymax = 135., opt = 'kAlwaysCreate', weight = weightTimingStripCluster) - - titleStripClusterSize = f'layer {layerIndex}; sector; cluster size (segments); hits' - varStripClusterSize = f'stripClusterSectorSided_layer_{layerIndex},stripClusterSize_layer_{layerIndex};stripClusterSize_layer_{layerIndex}' - weightStripClusterSize = f'stripClusterHit_layer_{layerIndex}' - sTgcClusterFromSegmentGroup.defineHistogram(varStripClusterSize, type = 'TH2F', title = titleStripClusterSize, path = 'stripClusterSize', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 20, ymin = 0., ymax = 20., opt = 'kAlwaysCreate', weight = weightStripClusterSize) - - titleSectorsVersusLumiblockPad = f'layer {layerIndex}; LB; all sectors; pad hits' - varSectorsVersusLumiblockPad = f'padLumiblock_layer_{layerIndex},padStationEta_layer_{layerIndex};sectorsVersusLumiblockPad_layer_{layerIndex}' - weightSectorsVersusLumiblockPad = f'padHit_layer_{layerIndex}' - sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockPad, type = 'TH2F', title = titleSectorsVersusLumiblockPad, path = 'padSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockPad) + titleStationEtaSectorStripHitMap = f'L{layerIndex}; Sector; Quad; Hits' + varStationEtaSectorStripHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Strip_quad_occupancy_per_sector_Layer{layerIndex}' + sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorStripHitMap, type = 'TH2F', title = titleStationEtaSectorStripHitMap, path = 'Strip', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate') + + titleStationEtaSectorWireGroupHitMap = f'L{layerIndex}; Sector; Quad; Hits' + varStationEtaSectorWireGroupHitMap = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Wire_quad_occupancy_per_sector_Layer{layerIndex}' + sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorWireGroupHitMap, type = 'TH2F', title = titleStationEtaSectorWireGroupHitMap, path = 'Wire', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate') + + titleTimingPadTrack = f'L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits' + varTimingPadTrack = f'padTrackSectorSided_layer_{layerIndex},padTrackTiming_layer_{layerIndex};All_pad_timing_per_sector_Layer{layerIndex}' + sTgcTimingGroup.defineHistogram(varTimingPadTrack, type = 'TH2F', title = titleTimingPadTrack, path = 'Pad', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + titleTimingStripTrack = f'L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits' + varTimingStripTrack = f'stripTrackSectorSided_layer_{layerIndex},stripTrackTiming_layer_{layerIndex};All_strip_timing_per_sector_Layer{layerIndex}' + sTgcTimingGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = 'Strip', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + titleTimingWireGroupTrack = f'L{layerIndex}; Sector; Wire Group timing (on-track) [ns]; Hits' + varTimingWireGroupTrack = f'wireGroupTrackSectorSided_layer_{layerIndex},wireGroupTrackTiming_layer_{layerIndex};All_wire_timing_per_sector_Layer{layerIndex}' + sTgcTimingGroup.defineHistogram(varTimingWireGroupTrack, type = 'TH2F', title = titleTimingWireGroupTrack, path = 'Wire', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate') + + titleSectorsVersusLumiblockPad = f'L{layerIndex}; LB (Pad); All Sectors; Hits' + varSectorsVersusLumiblockPad = f'padLumiblock_layer_{layerIndex},padStationEta_layer_{layerIndex};Nhits_all_pad_in_sector_per_LB_Layer{layerIndex}' + sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockPad, type = 'TH2F', title = titleSectorsVersusLumiblockPad, path = 'Pad', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate') - titleSectorsVersusLumiblockStrip = f'layer {layerIndex}; LB; all sectors; strip hits' - varSectorsVersusLumiblockStrip = f'stripLumiblock_layer_{layerIndex},stripStationEta_layer_{layerIndex};sectorsVersusLumiblockStrip_layer_{layerIndex}' - weightSectorsVersusLumiblockStrip = f'stripHit_layer_{layerIndex}' - sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockStrip, type = 'TH2F', title = titleSectorsVersusLumiblockStrip, path = 'stripSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockStrip) - - titleSectorsVersusLumiblockWireGroup = f'layer {layerIndex}; LB; all sectors; wireGroup hits' - varSectorsVersusLumiblockWireGroup = f'wireGroupLumiblock_layer_{layerIndex},wireGroupStationEta_layer_{layerIndex};sectorsVersusLumiblockWireGroup_layer_{layerIndex}' - weightSectorsVersusLumiblockWireGroup = f'wireGroupHit_layer_{layerIndex}' - sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockWireGroup, type = 'TH2F', title = titleSectorsVersusLumiblockWireGroup, path = 'wireGroupSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockWireGroup) + titleSectorsVersusLumiblockStrip = f'L{layerIndex}; LB (Strip); All Sectors; Hits' + varSectorsVersusLumiblockStrip = f'stripLumiblock_layer_{layerIndex},stripStationEta_layer_{layerIndex};Nhits_all_strip_in_sector_per_LB_Layer{layerIndex}' + sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockStrip, type = 'TH2F', title = titleSectorsVersusLumiblockStrip, path = 'Strip', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate') + + titleSectorsVersusLumiblockWireGroup = f'L{layerIndex}; LB (Wire); All Sectors; Hits' + varSectorsVersusLumiblockWireGroup = f'wireGroupLumiblock_layer_{layerIndex},wireGroupStationEta_layer_{layerIndex};Nhits_all_wire_in_sector_per_LB_Layer{layerIndex}' + sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockWireGroup, type = 'TH2F', title = titleSectorsVersusLumiblockWireGroup, path = 'Wire', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate') - for sideIndex in side: - titleYvsXclusterPad = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-Pad (on track) [mm]; sTgc-GlobalY-Pad (on track) [mm]' - varYvsXclusterPad = f'xPosPad_{sideIndex}_layer_{layerIndex},yPosPad_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterPad_{sideIndex}_layer_{layerIndex}' - sTgYvsXGroup.defineHistogram(varYvsXclusterPad, type = 'TH2F', title = titleYvsXclusterPad, path = 'YvsXtracksPad', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate') - - titleYvsXclusterStrip = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-Strip (on track) [mm]; sTgc-GlobalY-Strip (on track) [mm]' - varYvsXclusterStrip = f'xPosStrip_{sideIndex}_layer_{layerIndex},yPosStrip_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterStrip_{sideIndex}_layer_{layerIndex}' - sTgYvsXGroup.defineHistogram(varYvsXclusterStrip, type = 'TH2F', title = titleYvsXclusterStrip, path = 'YvsXtracksStrip', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate') + titlePadOccupancy = f'L{layerIndex}; Sector; Pad Number; Hits' + varPadOccupancy = f'sector_layer_{layerIndex},padNumber_layer_{layerIndex};Pad_ch_occupancy_per_sector_Layer{layerIndex}' + sTgcOccupancyGroup.defineHistogram(varPadOccupancy, type = 'TH2F', title = titlePadOccupancy, path = 'Pad', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 317, ymin = 0., ymax = 317., opt = 'kAlwaysCreate') + + titleStripOccupancy = f'L{layerIndex}; Sector; Strip Number; Hits' + varStripOccupancy = f'sector_layer_{layerIndex},stripNumber_layer_{layerIndex};Strip_ch_occupancy_per_sector_Layer{layerIndex}' + sTgcOccupancyGroup.defineHistogram(varStripOccupancy, type = 'TH2F', title = titleStripOccupancy, path = 'Strip', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 1130, ymin = 0., ymax = 1130., opt = 'kAlwaysCreate') - titleYvsXclusterWireGroup = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-WireGroup (on track) [mm]; sTgc-GlobalY-WireGroup (on track) [mm]' - varYvsXclusterWireGroup = f'xPosWireGroup_{sideIndex}_layer_{layerIndex},yPosWireGroup_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterWireGroup_{sideIndex}_layer_{layerIndex}' - sTgYvsXGroup.defineHistogram(varYvsXclusterWireGroup, type = 'TH2F', title = titleYvsXclusterWireGroup, path = 'YvsXtracksWireGroup', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate') + titleWireGroupOccupancyPerQuad = f'L{layerIndex}; Wire Group Number; Quad; Hits' + varWireGroupOccupancyPerQuad = f'wireGroupNumber_layer_{layerIndex},stationEta_layer_{layerIndex};Wire_ch_occupancy_per_sector_Layer{layerIndex}' + sTgcOccupancyGroup.defineHistogram(varWireGroupOccupancyPerQuad, type = 'TH2F', title = titleWireGroupOccupancyPerQuad, path = 'Wire', xbins = 58*sectorMax, xmin = 0., xmax = float(58*sectorMax), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate') + acc = helper.result() result.merge(acc) @@ -148,7 +157,7 @@ if __name__=='__main__': parser = argparse.ArgumentParser() parser.add_argument("--events", default = 100, type = int, help = 'Number of events that you want to run.') parser.add_argument("--samples", nargs = "+", default = None, help = 'Path to the input samples. If you want to run multiple samples at once you have to introduce them separated by blank spaces.') - parser.add_argument("--output", default = "monitor_sTgc.root", help = 'Name of the output ROOT file.') + parser.add_argument("--output", default = "sTgcExampleOutput.root", help = 'Name of the output ROOT file.') args = parser.parse_args() flags = initConfigFlags() diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx index cb8afa8ce53b187f43269956fa89c1be439c3fce..613eb2662c5bad2a49a6618fe0711ccc4fc98774 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -29,43 +29,30 @@ StatusCode sTgcRawDataMonAlg::initialize() { ATH_CHECK(m_idHelperSvc.retrieve()); ATH_CHECK(m_sTgcContainerKey.initialize()); ATH_CHECK(m_detectorManagerKey.initialize()); - ATH_CHECK(m_segmentManagerKey.initialize()); ATH_CHECK(m_meTrkKey.initialize()); - + ATH_CHECK(m_residualPullCalculator.retrieve()); return StatusCode::SUCCESS; } StatusCode sTgcRawDataMonAlg::fillHistograms(const EventContext& ctx) const { SG::ReadHandle<Muon::sTgcPrepDataContainer> sTgcContainer(m_sTgcContainerKey, ctx); - SG::ReadCondHandle<MuonGM::MuonDetectorManager> detectorManagerKey(m_detectorManagerKey, ctx); - + SG::ReadCondHandle<MuonGM::MuonDetectorManager> detectorManagerKey(m_detectorManagerKey, ctx); SG::ReadHandle<xAOD::TrackParticleContainer> meTPContainer(m_meTrkKey, ctx); - + if (!meTPContainer.isValid()) { ATH_MSG_FATAL("Could not get track particle container: " << m_meTrkKey.fullKey()); return StatusCode::FAILURE; } - + fillsTgcClusterFromTrackHistograms(meTPContainer.cptr()); - - SG::ReadHandle<Trk::SegmentCollection> segmentContainer(m_segmentManagerKey, ctx); - - if(!segmentContainer.isValid()) { - ATH_MSG_ERROR("Could not get segmentContainer"); - return StatusCode::FAILURE; - } - - fillsTgcClusterFromSegmentsHistograms(segmentContainer.cptr()); - + const int lumiblock = GetEventInfo(ctx) -> lumiBlock(); if (m_dosTgcESD && m_dosTgcOverview) { for(const Muon::sTgcPrepDataCollection* coll : *sTgcContainer) { for (const Muon::sTgcPrepData* prd : *coll) { - fillsTgcOverviewHistograms(prd, *coll); fillsTgcOccupancyHistograms(prd, detectorManagerKey.cptr()); fillsTgcLumiblockHistograms(prd, lumiblock); - fillsTgcTimingHistograms(prd); } } } @@ -73,62 +60,6 @@ StatusCode sTgcRawDataMonAlg::fillHistograms(const EventContext& ctx) const { return StatusCode::SUCCESS; } -void sTgcRawDataMonAlg::fillsTgcOverviewHistograms(const Muon::sTgcPrepData* sTgcObject, const Muon::MuonPrepDataCollection<Muon::sTgcPrepData> &prd) const { - auto chargeMon = Monitored::Collection("charge", prd, [] (const Muon::sTgcPrepData* aux) - { - return aux -> charge(); - }); - - auto numberOfStripsPerClusterMon = Monitored::Collection("numberOfStripsPerCluster", prd, [] (const Muon::sTgcPrepData* aux) - { - const std::vector<Identifier> &stripIds = aux -> rdoList(); - return stripIds.size(); - }); - - auto timeMon = Monitored::Collection("time", prd, [] (const Muon::sTgcPrepData* aux) - { - return aux -> time(); - }); - - fill("sTgcOverview", chargeMon, numberOfStripsPerClusterMon, timeMon); - - std::vector<short int> stripTimesVec = sTgcObject -> stripTimes(); - std::vector<int> stripChargesVec = sTgcObject -> stripCharges(); - std::vector<short unsigned int> stripNumberVec = sTgcObject -> stripNumbers(); - - auto stripTimesMon = Monitored::Collection("stripTimes", stripTimesVec); - auto stripChargesMon = Monitored::Collection("stripCharges", stripChargesVec); - auto stripNumbersMon = Monitored::Collection("stripNumbers", stripNumberVec); - - fill("sTgcOverview", stripTimesMon, stripChargesMon, stripNumbersMon); - - auto xMon = Monitored::Collection("x", prd, [] (const Muon::sTgcPrepData* aux) - { - Amg::Vector3D pos = aux -> globalPosition(); - return pos.x(); - }); - - auto yMon = Monitored::Collection("y", prd, [] (const Muon::sTgcPrepData* aux) - { - Amg::Vector3D pos = aux -> globalPosition(); - return pos.y(); - }); - - auto zMon = Monitored::Collection("z", prd, [] (const Muon::sTgcPrepData* aux) - { - Amg::Vector3D pos = aux -> globalPosition(); - return pos.z(); - }); - - auto rMon = Monitored::Collection("r", prd, [] (const Muon::sTgcPrepData* aux) - { - Amg::Vector3D pos = aux -> globalPosition(); - return std::hypot(pos.x(), pos.y()); - }); - - fill("sTgcOverview", xMon, yMon, zMon, rMon); -} - void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sTgcObject, const MuonGM::MuonDetectorManager* muonDetectorManagerObject) const { Identifier id = sTgcObject -> identify(); @@ -157,33 +88,28 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT const MuonGM::sTgcReadoutElement* sTgcReadoutObjectPadQ2 = muonDetectorManagerObject -> getsTgcReadoutElement(idPadQ2); int maxPadNumberQ1 = sTgcReadoutObjectPadQ1 -> maxPadNumber(idPadQ1); int maxPadNumberQ2 = sTgcReadoutObjectPadQ2 -> maxPadNumber(idPadQ2); - auto padHit = 1; if (std::abs(stationEta) == 1) { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber); - auto padHitMon = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit); - fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon); + fill("sTgcOccupancy", sectorMon, padNumberMon); } else if (std::abs(stationEta) == 2) { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber + maxPadNumberQ1); - auto padHitMon = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit); - fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon); + fill("sTgcOccupancy", sectorMon, padNumberMon); } else { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber + maxPadNumberQ1 + maxPadNumberQ2); - auto padHitMon = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit); - fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon); + fill("sTgcOccupancy", sectorMon, padNumberMon); } auto sectorSidedMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector); auto stationEtaSidedMon = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); - auto padHitLayersSidedMon = Monitored::Scalar<int>("padHitLayers_layer_" + std::to_string(layer), (int) padHit); - fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, padHitLayersSidedMon); + fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon); } else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) { @@ -194,33 +120,28 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT const MuonGM::sTgcReadoutElement* sTgcReadoutObjectStripQ2 = muonDetectorManagerObject -> getsTgcReadoutElement(idStripQ2); int maxStripNumberQ1 = sTgcReadoutObjectStripQ1 -> numberOfStrips(idStripQ1); int maxStripNumberQ2 = sTgcReadoutObjectStripQ2 -> numberOfStrips(idStripQ2); - auto stripHit = 1; if (std::abs(stationEta) == 1) { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber); - auto stripHitMon = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit); - fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon); + fill("sTgcOccupancy", sectorMon, stripNumberMon); } else if (std::abs(stationEta) == 2) { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber + maxStripNumberQ1 + 1); - auto stripHitMon = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit); - fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon); + fill("sTgcOccupancy", sectorMon, stripNumberMon); } else { auto sectorMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted); auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber + maxStripNumberQ1 + maxStripNumberQ2 + 1); - auto stripHitMon = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit); - fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon); + fill("sTgcOccupancy", sectorMon, stripNumberMon); } auto sectorSidedMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector); auto stationEtaSidedMon = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); - auto stripHitLayersSidedMon = Monitored::Scalar<int>("stripHitLayers_layer_" + std::to_string(layer), (int) stripHit); - fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, stripHitLayersSidedMon); + fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon); } else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) { @@ -228,17 +149,14 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT Identifier idWireGroupQ3 = m_idHelperSvc -> stgcIdHelper().channelID("STL", 3, stationPhi, 1, 3, channelType, 1); const MuonGM::sTgcReadoutElement* sTgcReadoutObjectWireGroupQ3 = muonDetectorManagerObject -> getsTgcReadoutElement(idWireGroupQ3); int maxWireGroupNumberQ3 = sTgcReadoutObjectWireGroupQ3 -> numberOfStrips(idWireGroupQ3); - auto wireGroupHit = 1; auto stationEtaMon = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); auto wireGroupNumberMon = Monitored::Scalar<int>("wireGroupNumber_layer_" + std::to_string(layer), wireGroupNumber + (sector - 1)*maxWireGroupNumberQ3); - auto wireGroupHitMon = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), (int) wireGroupHit); - fill("sTgcOccupancy", stationEtaMon, wireGroupNumberMon, wireGroupHitMon); + fill("sTgcOccupancy", stationEtaMon, wireGroupNumberMon); auto sectorSidedMon = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector); auto stationEtaSidedMon = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); - auto wireGroupHitLayersSidedMon = Monitored::Scalar<int>("wireGroupHitLayers_layer_" + std::to_string(layer), (int) wireGroupHit); - fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, wireGroupHitLayersSidedMon); + fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon); } } @@ -260,164 +178,134 @@ void sTgcRawDataMonAlg::fillsTgcLumiblockHistograms(const Muon::sTgcPrepData* sT int stationEtaShiftedModified = (stationEta < 0) ? stationEta - 1 - 3*(sector - 1) : stationEta + 3*(sector - 1); if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) { - auto padHit = 1; auto padStationEtaMon = Monitored::Scalar<int>("padStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified); auto padLumiblockMon = Monitored::Scalar<int>("padLumiblock_layer_" + std::to_string(layer), lb); - auto padHitMon = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), padHit); - fill("sTgcLumiblock", padStationEtaMon, padLumiblockMon, padHitMon); + fill("sTgcLumiblock", padStationEtaMon, padLumiblockMon); } else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) { - auto stripHit = 1; auto stripStationEtaMon = Monitored::Scalar<int>("stripStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified); auto stripLumiblockMon = Monitored::Scalar<int>("stripLumiblock_layer_" + std::to_string(layer), lb); - auto stripHitMon = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), stripHit); - fill("sTgcLumiblock", stripStationEtaMon, stripLumiblockMon, stripHitMon); + fill("sTgcLumiblock", stripStationEtaMon, stripLumiblockMon); } else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) { - auto wireGroupHit = 1; auto wireGroupStationEtaMon = Monitored::Scalar<int>("wireGroupStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified); auto wireGroupLumiblockMon = Monitored::Scalar<int>("wireGroupLumiblock_layer_" + std::to_string(layer), lb); - auto wireGroupHitMon = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), wireGroupHit); - fill("sTgcLumiblock", wireGroupStationEtaMon, wireGroupLumiblockMon, wireGroupHitMon); + fill("sTgcLumiblock", wireGroupStationEtaMon, wireGroupLumiblockMon); } } -void sTgcRawDataMonAlg::fillsTgcTimingHistograms(const Muon::sTgcPrepData* sTgcObject) const { - Identifier id = sTgcObject -> identify(); - - if(!id.is_valid()) { - ATH_MSG_DEBUG("Invalid identifier found in Muon::sTgcPrepData"); - return; - } - - int channelType = m_idHelperSvc -> stgcIdHelper().channelType(id); - int multiplet = m_idHelperSvc -> stgcIdHelper().multilayer(id); - int gasGap = m_idHelperSvc -> stgcIdHelper().gasGap(id); - int sectorsTotal = getSectors(id); - int sectorsTotalShifted = (sectorsTotal < 0) ? sectorsTotal - 1: sectorsTotal; - int layer = getLayer(multiplet, gasGap); - short int time = sTgcObject -> time(); - - if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) { - auto padHit = 1; - auto padSectorSidedMon = Monitored::Scalar<int>("padSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); - auto padTimingMon = Monitored::Scalar<int>("padTiming_layer_" + std::to_string(layer), time); - auto padHitMon = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), padHit); - fill("sTgcTiming", padSectorSidedMon, padTimingMon, padHitMon); - } - - else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) { - auto wireGroupHit = 1; - auto wireGroupSectorSidedMon = Monitored::Scalar<int>("wireGroupSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); - auto wireGroupTimingMon = Monitored::Scalar<int>("wireGroupTiming_layer_" + std::to_string(layer), time); - auto wireGroupHitMon = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), wireGroupHit); - fill("sTgcTiming", wireGroupSectorSidedMon, wireGroupTimingMon, wireGroupHitMon); - } -} +void sTgcRawDataMonAlg::fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer* trkPartCont) const { + for (const xAOD::TrackParticle* meTP : *trkPartCont) { + const Trk::Track* meTrack = meTP -> track(); + if(!meTrack) continue; + + for (const Trk::TrackStateOnSurface* trk_state : *meTrack -> trackStateOnSurfaces()) { + const Trk::MeasurementBase* it = trk_state -> measurementOnTrack(); + if(!it) continue; + + const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(it); + if(!rot) continue; + + Identifier rot_id = rot -> identify(); -void sTgcRawDataMonAlg::fillsTgcClusterFromSegmentsHistograms(const Trk::SegmentCollection* segmentObject) const { - for (Trk::SegmentCollection::const_iterator s = segmentObject -> begin(); s != segmentObject -> end(); ++s) { - const Muon::MuonSegment* muonSegmentObject = dynamic_cast<const Muon::MuonSegment*>(*s); - - if (muonSegmentObject == nullptr) { - ATH_MSG_DEBUG("No pointer to segment!"); - break; - } + if(!rot_id.is_valid()) { + ATH_MSG_DEBUG("Invalid identifier found in Trk::RIO_OnTrack"); + continue; + } - for (unsigned int irot = 0; irot < muonSegmentObject -> numberOfContainedROTs(); ++irot) { - const Trk::RIO_OnTrack* rioOnTrackObject = muonSegmentObject -> rioOnTrack(irot); - if (!rioOnTrackObject) continue; - Identifier rioOnTrackID = rioOnTrackObject -> identify(); - const Muon::sTgcClusterOnTrack* sTgcClusterOnTrackObject = dynamic_cast<const Muon::sTgcClusterOnTrack*>(rioOnTrackObject); - if (!sTgcClusterOnTrackObject) continue; - const Muon::sTgcPrepData* prd = sTgcClusterOnTrackObject -> prepRawData(); - const std::vector<Identifier>& stripIds = prd->rdoList(); - unsigned int csize = stripIds.size(); - - int channelType = m_idHelperSvc -> stgcIdHelper().channelType(rioOnTrackID); - int stationEta = m_idHelperSvc -> stgcIdHelper().stationEta(rioOnTrackID); - int multiplet = m_idHelperSvc -> stgcIdHelper().multilayer(rioOnTrackID); - int gasGap = m_idHelperSvc -> stgcIdHelper().gasGap(rioOnTrackID); - int iside = (stationEta > 0) ? 1 : 0; - std::string side = GeometricSectors::sTgcSide[iside]; - int sectorsTotal = getSectors(rioOnTrackID); - int layer = getLayer(multiplet, gasGap); + if(!m_idHelperSvc -> issTgc(rot_id)) continue; + + const Muon::sTgcClusterOnTrack* cluster = dynamic_cast<const Muon::sTgcClusterOnTrack*>(rot); + if(!cluster) continue; + + const Muon::sTgcPrepData* prd = cluster -> prepRawData(); + if (!prd) continue; + + int channelType = m_idHelperSvc -> stgcIdHelper().channelType(rot_id); + int stEta = m_idHelperSvc -> stgcIdHelper().stationEta(rot_id); + int multi = m_idHelperSvc -> stgcIdHelper().multilayer(rot_id); + int gap = m_idHelperSvc -> stgcIdHelper().gasGap(rot_id); + int sector = m_idHelperSvc -> sector(rot_id); + int sectorsTotal = getSectors(rot_id); int sectorsTotalShifted = (sectorsTotal < 0) ? sectorsTotal - 1: sectorsTotal; + int layer = getLayer(multi, gap); + int iside = (stEta > 0) ? 1 : 0; + std::string side = GeometricSectors::sTgcSide[iside]; + if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) { + float padCharge = prd -> charge(); + auto padChargeMon = Monitored::Scalar<float>("padTrackCharge_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector) + "_layer_" + std::to_string(layer), padCharge); + fill("padCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), padChargeMon); + + short int padTiming = prd -> time(); + auto padSectorSidedMon = Monitored::Scalar<int>("padTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); + auto padTimingMon = Monitored::Scalar<float>("padTrackTiming_layer_" + std::to_string(layer), padTiming); + fill("sTgcTiming", padSectorSidedMon, padTimingMon); + + auto padSectorSidedExpertMon = Monitored::Scalar<int>("padTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted); + auto padTimingExpertMon = Monitored::Scalar<float>("padTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), padTiming); + fill("padTiming_quad_" + std::to_string(std::abs(stEta)), padSectorSidedExpertMon, padTimingExpertMon); + } - if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) { + else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) { + const std::vector<Identifier>& stripIds = prd->rdoList(); + unsigned int csize = stripIds.size(); + std::vector<short int> stripTimesVec = prd -> stripTimes(); + std::vector<int> stripChargesVec = prd -> stripCharges(); + float stripClusterTimes = 0; + float stripClusterCharges = 0; for (unsigned int sIdx = 0; sIdx < csize; ++sIdx) { stripClusterTimes += stripTimesVec.at(sIdx); + stripClusterCharges += stripChargesVec.at(sIdx); } stripClusterTimes /= stripTimesVec.size(); - auto stripClusterHit = 1; - auto stripClusterSectorSidedMon = Monitored::Scalar<int>("stripClusterSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); - auto stripClusterTimesMon = Monitored::Scalar<float>("stripClusterTiming_layer_" + std::to_string(layer), stripClusterTimes); - auto stripClusterSizeMon = Monitored::Scalar<unsigned int>("stripClusterSize_layer_" + std::to_string(layer), csize); - auto stripClusterHitMon = Monitored::Scalar<int>("stripClusterHit_layer_" + std::to_string(layer), stripClusterHit); - fill("sTgcClusterFromSegment", stripClusterSectorSidedMon, stripClusterTimesMon, stripClusterSizeMon, stripClusterHitMon); - } - } - } -} - -void sTgcRawDataMonAlg::fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer* muonContainer) const { - for (const xAOD::TrackParticle* meTP : *muonContainer) { - if (!meTP) continue; - - const Trk::Track* meTrack = meTP -> track(); - if(!meTrack) continue; - - for(const Trk::TrackStateOnSurface* trkState : *meTrack -> trackStateOnSurfaces()) { - if(!(trkState)) continue; - if (!trkState -> type(Trk::TrackStateOnSurface::Measurement)) continue; - Identifier surfaceId = (trkState) -> surface().associatedDetectorElementIdentifier(); - if(!m_idHelperSvc -> issTgc(surfaceId)) continue; - - const Trk::MeasurementBase* meas = trkState->measurementOnTrack(); - if(!meas) continue; + auto stripClusterChargesPerSideQuadMon = Monitored::Scalar<float>("stripTrackCharge_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector) + "_layer_" + std::to_string(layer), stripClusterCharges); + fill("stripCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), stripClusterChargesPerSideQuadMon); + + auto stripClusterSectorSidedMon = Monitored::Scalar<int>("stripTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); + auto stripClusterTimesMon = Monitored::Scalar<float>("stripTrackTiming_layer_" + std::to_string(layer), stripClusterTimes); + auto stripClusterSizeMon = Monitored::Scalar<unsigned int>("stripTrackClusterSize_layer_" + std::to_string(layer), csize); + fill("sTgcTiming", stripClusterSectorSidedMon, stripClusterTimesMon); + fill("sTgcOverview", stripClusterSectorSidedMon, stripClusterTimesMon, stripClusterSizeMon); - const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(meas); - if(!rot) continue; - Identifier rot_id = rot->identify(); - if(!m_idHelperSvc -> issTgc(rot_id)) continue; + auto stripSectorSidedExpertMon = Monitored::Scalar<int>("stripTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted); + auto stripTimingExpertMon = Monitored::Scalar<float>("stripTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), stripClusterTimes); + fill("stripTiming_quad_" + std::to_string(std::abs(stEta)), stripSectorSidedExpertMon, stripTimingExpertMon); - const Amg::Vector3D& pos = (trkState) -> trackParameters() -> position(); - float xPosSegm = pos.x(); - float yPosSegm = pos.y(); - - int channelType = m_idHelperSvc -> stgcIdHelper().channelType(surfaceId); - int stationEta = m_idHelperSvc -> stgcIdHelper().stationEta(surfaceId); - int multiplet = m_idHelperSvc -> stgcIdHelper().multilayer(surfaceId); - int gasGap = m_idHelperSvc -> stgcIdHelper().gasGap(surfaceId); - int iside = (stationEta > 0) ? 1 : 0; - std::string side = GeometricSectors::sTgcSide[iside]; - int layer = getLayer(multiplet, gasGap); - - if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) { - auto xPosSegmPadMon = Monitored::Scalar<float>("xPosPad_" + side + "_layer_" + std::to_string(layer), xPosSegm); - auto yPosSegmPadMon = Monitored::Scalar<float>("yPosPad_" + side + "_layer_" + std::to_string(layer), yPosSegm); - fill("sTgcYvsX", xPosSegmPadMon, yPosSegmPadMon); - } - else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) { - auto xPosSegmStripMon = Monitored::Scalar<float>("xPosStrip_" + side + "_layer_" + std::to_string(layer), xPosSegm); - auto yPosSegmStripMon = Monitored::Scalar<float>("yPosStrip_" + side + "_layer_" + std::to_string(layer), yPosSegm); - fill("sTgcYvsX", xPosSegmStripMon, yPosSegmStripMon); + std::unique_ptr<const Trk::ResidualPull> resPull(m_residualPullCalculator -> residualPull(trk_state -> measurementOnTrack(), trk_state -> trackParameters(), Trk::ResidualPull::ResidualType::Biased)); + + if (resPull) { + float residual = resPull -> residual()[Trk::locX]; + auto residualMon = Monitored::Scalar<float>("residual_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector) + "_layer_" + std::to_string(layer), residual); + fill("sTgcResiduals_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), residualMon); + } } else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) { - auto xPosSegmWireGroupMon = Monitored::Scalar<float>("xPosWireGroup_" + side + "_layer_" + std::to_string(layer), xPosSegm); - auto yPosSegmWireGroupMon = Monitored::Scalar<float>("yPosWireGroup_" + side + "_layer_" + std::to_string(layer), yPosSegm); - fill("sTgcYvsX", xPosSegmWireGroupMon, yPosSegmWireGroupMon); - } + float wireGroupCharge = prd -> charge(); + auto wireGroupChargeMon = Monitored::Scalar<float>("wireGroupTrackCharge_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector) + "_layer_" + std::to_string(layer), wireGroupCharge); + fill("wireGroupCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), wireGroupChargeMon); + + short int wireGroupTiming = prd -> time(); + auto wireGroupSectorSidedMon = Monitored::Scalar<int>("wireGroupTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted); + auto wireGroupTimingMon = Monitored::Scalar<float>("wireGroupTrackTiming_layer_" + std::to_string(layer), wireGroupTiming); + fill("sTgcTiming", wireGroupSectorSidedMon, wireGroupTimingMon); + + auto wireSectorSidedExpertMon = Monitored::Scalar<int>("wireTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted); + auto wireTimingExpertMon = Monitored::Scalar<float>("wireTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), wireGroupTiming); + fill("wireTiming_quad_" + std::to_string(std::abs(stEta)), wireSectorSidedExpertMon, wireTimingExpertMon); + } } } } + + + diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py index 6e15284ee099ac96ea0032f4295604f7b28ec7d4..6a60033248d25c730242f1d77f045f192a441dbd 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py @@ -3,9 +3,10 @@ Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration 2020 Matthias Schott - Uni Mainz """ +from AthenaConfiguration.Enums import BeamType, Format -from AthenaConfiguration.Enums import BeamType -def MuonTrackConfig(inputFlags, isOld=False, **kwargs): + +def MuonTrackConfig(flags, isOld=False, **kwargs): if isOld: # Run-2 style configuration from AthenaMonitoring import AthMonitorCfgHelperOld as AthMonitorCfgHelper @@ -15,14 +16,16 @@ def MuonTrackConfig(inputFlags, isOld=False, **kwargs): from AthenaConfiguration.ComponentFactory import CompFactory MuonTrackMonitorAlgorithm = CompFactory.MuonTrackMonitorAlgorithm - helper = AthMonitorCfgHelper(inputFlags, "MuonTrackMonitoringConfig") - if inputFlags.Beam.Type != BeamType.Collisions: - kwargs.setdefault("PrimaryVerticesKey", "") - kwargs.setdefault("RequireBeamSpot", False) - elif inputFlags.Output.doWriteESD or inputFlags.Output.doWriteAOD: + helper = AthMonitorCfgHelper(flags, "MuonTrackMonitoringConfig") + if flags.Beam.Type != BeamType.Collisions: + kwargs.setdefault("PrimaryVerticesKey", "") + kwargs.setdefault("RequireBeamSpot", False) + elif flags.Input.Format is Format.BS: + # TODO: not sure if this is needed at all, probably it was needed due to wrapping + # it has been agreed on that beamspot decoration is done once centrally during RAWtoALL from xAODEventInfoCnv.EventInfoBeamSpotDecoratorAlgConfig import ( EventInfoBeamSpotDecoratorAlgCfg) - helper.resobj.merge(EventInfoBeamSpotDecoratorAlgCfg(inputFlags)) + helper.resobj.merge(EventInfoBeamSpotDecoratorAlgCfg(flags)) muonTrackAlg = helper.addAlgorithm(MuonTrackMonitorAlgorithm, "MuonTrackMonitorAlg", **kwargs) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py index fae228ecff2aa5c0c4722a5adb4586c10186075d..bc367c74867591501aa304cb8016fa68a7654877 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py @@ -116,8 +116,10 @@ def getFtagComponent(cfgFlags, jetcol, pvCol): jetcol_name_without_Jets = jetcol.replace('Jets','') track_collection = 'InDetTrackParticles' + input_muons = 'Muons' if cfgFlags.BTagging.Pseudotrack: track_collection = 'InDetPseudoTrackParticles' + input_muons = None acc = ComponentAccumulator() acc.merge(BTagTrackAugmenterAlgCfg( @@ -148,6 +150,7 @@ def getFtagComponent(cfgFlags, jetcol, pvCol): nnList=GetTaggerTrainingMap(cfgFlags, jetcol_name_without_Jets), trackCollection=track_collection, primaryVertices=pvCol, + muons=input_muons, renameTrackJets=True, AddedJetSuffix='Jets', )) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py index 9a33eeda6ba0bedcf8f6740737ae13eb08534b7d..33bd6353040bbada620a9246b56d60cc01ebd84c 100755 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py @@ -271,7 +271,7 @@ def PHYSLITECfg(ConfigFlags): PHYSLITESlimmingHelper.ExtraVariables = [ 'AnalysisElectrons.trackParticleLinks.pt.eta.phi.m.charge.author.DFCommonElectronsLHVeryLoose.DFCommonElectronsLHLoose.DFCommonElectronsLHLooseBL.DFCommonElectronsLHMedium.DFCommonElectronsLHTight.DFCommonElectronsLHVeryLooseIsEMValue.DFCommonElectronsLHLooseIsEMValue.DFCommonElectronsLHLooseBLIsEMValue.DFCommonElectronsLHMediumIsEMValue.DFCommonElectronsLHTightIsEMValue.DFCommonElectronsECIDS.DFCommonElectronsECIDSResult.topoetcone20.neflowisol20.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.caloClusterLinks.ambiguityLink.TruthLink.truthParticleLink.truthOrigin.truthType.truthPdgId.firstEgMotherTruthType.firstEgMotherTruthOrigin.firstEgMotherTruthParticleLink.firstEgMotherPdgId.ambiguityType.OQ', 'AnalysisPhotons.pt.eta.phi.m.author.OQ.DFCommonPhotonsIsEMLoose.DFCommonPhotonsIsEMTight.DFCommonPhotonsIsEMTightIsEMValue.DFCommonPhotonsCleaning.DFCommonPhotonsCleaningNoTime.ptcone20.topoetcone20.topoetcone40.topoetcone20ptCorrection.topoetcone40ptCorrection.caloClusterLinks.vertexLinks.ambiguityLink.TruthLink.truthParticleLink.truthOrigin.truthType', - 'GSFTrackParticles.chiSquared.phi.d0.theta.qOverP.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.z0.vz.charge.vertexLink.numberOfPixelHits.numberOfSCTHits', + 'GSFTrackParticles.chiSquared.phi.d0.theta.qOverP.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.z0.vz.charge.vertexLink.numberOfPixelHits.numberOfSCTHits.originalTrackParticle', 'GSFConversionVertices.trackParticleLinks.x.y.z.px.py.pz.pt1.pt2.neutralParticleLinks.minRfirstHit', 'egammaClusters.calE.calEta.calPhi.calM.e_sampl.eta_sampl.ETACALOFRAME.PHICALOFRAME.ETA2CALOFRAME.PHI2CALOFRAME.constituentClusterLinks', 'AnalysisMuons.pt.eta.phi.truthType.truthOrigin.author.muonType.quality.inDetTrackParticleLink.muonSpectrometerTrackParticleLink.combinedTrackParticleLink.InnerDetectorPt.MuonSpectrometerPt.DFCommonGoodMuon.neflowisol20.TruthLink.truthParticleLink.charge.extrapolatedMuonSpectrometerTrackParticleLink.allAuthors.ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500.numberOfPrecisionLayers.combinedTrackOutBoundsPrecisionHits.numberOfPrecisionLayers.numberOfPrecisionHoleLayers.numberOfGoodPrecisionLayers.innerSmallHits.innerLargeHits.middleSmallHits.middleLargeHits.outerSmallHits.outerLargeHits.extendedSmallHits.extendedLargeHits.extendedSmallHoles.isSmallGoodSectors.cscUnspoiledEtaHits.EnergyLoss.energyLossType.momentumBalanceSignificance.scatteringCurvatureSignificance.scatteringNeighbourSignificance.CaloMuonIDTag.CaloMuonScore', diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh deleted file mode 100755 index f51bc3e349159670f4643bf02c7a4d8d3f0ca267..0000000000000000000000000000000000000000 --- a/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# -# art-description: Reco_tf runs on 13TeV collision data 2017, run 338480 has AFP detector included. -# art-athena-mt: 8 -# art-type: grid -# art-include: master/Athena -# art-include: 23.0/Athena - -export ATHENA_CORE_NUMBER=8 -#The setup for run2 data is described in test_data15_13TeV.sh -Reco_tf.py --CA --multithreaded --inputBSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data17_13TeV/data17_13TeV.00338480.physics_Main.daq.RAW._lb0309._SFO-4._0006.data --maxEvents 300 --conditionsTag="CONDBR2-BLKPA-RUN2-10" --geometryVersion="ATLAS-R2-2016-01-00-01" --preExec="flags.DQ.Steering.doHLTMon=False" --ignoreErrors 'False' --ignorePatterns 'LArRawDataReadingAlg.+ERROR.+Found.+unsupported.+Rod.+block.+type.+0|LArRawDataReadingAlg.+\|.+ERROR.+\|.|ERROR.+message.+limit.+LArRawDataReadingAlg.' --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --outputHISTFile myHist.root -#Remember retval of transform as art result -RES=$? - -xAODDigest.py myAOD.pool.root digest.txt - -echo "art-result: $RES Reco" - diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh new file mode 100755 index 0000000000000000000000000000000000000000..d09926bd4548e83f5551d6c56cc1bd8a4c0a609d --- /dev/null +++ b/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# +# art-description: Reco_tf runs on 13p6TeV collision data 2022, run 435229 has AFP detector included. Details at https://twiki.cern.ch/twiki/bin/view/AtlasProtected/SpecialRunsIn2022#done_47_SM_HI_combined_LHCf_ZDC +# art-athena-mt: 8 +# art-type: grid +# art-include: master/Athena +# art-include: 23.0/Athena + +export ATHENA_CORE_NUMBER=8 +#The setup for 2022 data is described in test_data22_13p6TeV.sh +Reco_tf.py --CA --multithreaded --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data22_13p6TeV/data22_13p6TeV.00435229.physics_Main.daq.RAW/data22_13p6TeV.00435229.physics_Main.daq.RAW._lb1526._SFO-12._0001.data --conditionsTag="CONDBR2-BLKPA-2022-09" --geometryVersion="ATLAS-R3S-2021-03-01-00" --postExec="cfg.getCondAlgo(\"PixelConfigCondAlg\").doRUN3PIXLinearExtrapolation=True" --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --outputHISTFile myHist.root --maxEvents=10 +#Remember retval of transform as art result +RES=$? + +xAODDigest.py myAOD.pool.root digest.txt + +echo "art-result: $RES Reco" + diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h index 6fe19871d5526d310abf48cff06e773d8c30f6ed..5956cf198f46d4647d95354c26c0b57a01e03db4 100755 --- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h +++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h @@ -289,6 +289,7 @@ namespace Rec { double chi2{}; double projectedVrt=0.; int detachedTrack=-1; + double BDT=1.1; }; diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx index 728aa1b5d56c3e5174aa9de1bb408cee82f67803..617ee84f1de5f8a413557ec9728a22ff5391bc08 100755 --- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx +++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx @@ -88,7 +88,8 @@ namespace Rec{ h.m_curTup->nTrk=NTracks < DevTuple::maxNTrk ? NTracks : DevTuple::maxNTrk ; h.m_curTup->n2Vrt=0; } - + + std::vector<std::vector<std::tuple<int,float>>> trkCount(NTracks); std::unique_ptr<Trk::IVKalState> state = m_fitSvc->makeState(); m_fitSvc->setMassInputParticles( inpMass, *state ); // Use pion masses for fit for (i=0; i<NTracks-1; i++) { @@ -150,6 +151,7 @@ namespace Rec{ // Check pixel hits vs vertex positions. int ihitIBL = getIBLHit(selectedTracks[i]); int jhitIBL = getIBLHit(selectedTracks[j]); + if( (ihitIBL==0&&jhitIBL>0) || (ihitIBL>0&&jhitIBL==0) ) continue; int ihitBL = getBLHit (selectedTracks[i]); int jhitBL = getBLHit (selectedTracks[j]); //--Very general cleaning cuts based on ID geometry and applicable to all processes @@ -231,8 +233,43 @@ namespace Rec{ // add_edge(i,j,compatibilityGraph); goodVrt[NTracks*i+j]=std::vector<double>{tmpVrt.fitVertex.x(),tmpVrt.fitVertex.y(),tmpVrt.fitVertex.z()}; + trkCount[i].push_back(std::make_tuple(j,wgtSelect)); trkCount[j].push_back(std::make_tuple(i,wgtSelect)); + } + } + //=== Resolve -!----!- case to speed up cluster finding + for(int t=0; t<NTracks; t++){ + if(trkCount[t].size()==2){ + i=std::get<0>(trkCount[t][0]); + j=std::get<0>(trkCount[t][1]); + if(trkCount[i].size()==1 && trkCount[j].size()==1 ){ + if( std::get<1>(trkCount[t][0]) < std::get<1>(trkCount[t][1]) ) { + remove_edge(t,i,compatibilityGraph); + if(t<i)goodVrt.erase(NTracks*t+i); else goodVrt.erase(NTracks*i+t); + trkCount[i].clear(); + trkCount[t].erase(trkCount[t].begin()+0); + } else { + remove_edge(t,j,compatibilityGraph); + if(t<j)goodVrt.erase(NTracks*t+j); else goodVrt.erase(NTracks*j+t); + trkCount[j].clear(); + trkCount[t].erase(trkCount[t].begin()+1); + } + } } - } + } + //=== Remove isolated 2track vertices + for(int t=0; t<NTracks; t++){ + if(trkCount[t].size()==1){ + i=std::get<0>(trkCount[t][0]); + if(trkCount[i].size()==1){ + if( std::get<1>(trkCount[t][0]) < m_v2tFinBDTCut ) { + remove_edge(t,i,compatibilityGraph); + if(t<i)goodVrt.erase(NTracks*t+i); else goodVrt.erase(NTracks*i+t); + trkCount[t].clear(); + trkCount[i].clear(); + } + } + } + } return; } diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx index d33ce16400da0665f86c90d7db502f03c68f7985..91a7e670215777b2d05527cc93566b2177015458 100755 --- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx +++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx @@ -381,6 +381,7 @@ namespace Rec{ VARS[8]=SVPV.Eta(); VARS[9]=std::max(rhit0,rhit1); float wgtSelect=m_SV2T_BDT->GetGradBoostMVA(VARS); + curVrt.BDT=wgtSelect; if(m_fillHist){ Hists& h = getHists(); h.m_hb_fakeSVBDT->Fill(wgtSelect,1.); @@ -440,6 +441,7 @@ namespace Rec{ //------------------------------------------- // Final vertex refit for full covariance matrix and xAOD::Vertex creation // + static const SG::AuxElement::Decorator<float> wgtBDT("wgtBDT"); int n1trVrt=0; // Final number of good 1-track vertices for(auto & iv : goodVertexMap){ WrkVrt & curVrt=iv.second; @@ -480,7 +482,10 @@ namespace Rec{ tmpVertex->addTrackAtVertex(TEL,1.); n1trVrt++; } - if(tmpVertex)finalVertices.push_back(tmpVertex); + if(tmpVertex){ + wgtBDT(*tmpVertex)=curVrt.BDT; + finalVertices.push_back(tmpVertex); + } } if(m_fillHist){ Hists& h = getHists(); diff --git a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h index d4cefcb7d8c1eb5173709590db66cbb127325b98..2b93e28aa97351107c73bb14dea42ae75e70ed10 100755 --- a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h +++ b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h @@ -99,7 +99,12 @@ public: return (fabs(distOne) < fabs(distTwo)); } -private: + bool operator()(const std::unique_ptr<T>& one, + const std::unique_ptr<T>& two) const { + return this->operator()(one.get(), two.get()); + } + + private: Amg::Vector3D m_point; Amg::Vector3D m_line; double m_radius = 0.; diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h index 8947f24ed79b3df7367e9b4711629f5125f03586..c1e5d24ae7ba42115bd056cb8ee751981034feb2 100755 --- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h +++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h @@ -59,7 +59,6 @@ class AlignableTrackingVolume; class ExtrapolationCache; class TrackingVolume; -typedef std::vector<Trk::TrackParameters*> TrackParametersPtrVector; typedef std::vector<std::unique_ptr<Trk::TrackParameters>> TrackParametersUVector; typedef std::pair<const Surface*, BoundaryCheck> DestSurf; diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h index 45ae068cd36add4f23fd3511fc4f4351f1232fa3..a0a68b3a194b8491d5fe3826829f28194ee32b71 100644 --- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h +++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h @@ -28,7 +28,7 @@ struct Cache { using TrackParmContainer = ObjContainer<Trk::TrackParameters>; using ManagedTrackParmPtr = ObjPtr<Trk::TrackParameters>; - typedef std::vector<Trk::TrackParameters*> TrackParametersPtrVector; + typedef std::vector<std::unique_ptr<Trk::TrackParameters>> TrackParametersUVector; typedef std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>> identifiedParameters_t; using TrackParmPtr = ObjRef; typedef std::pair<const Surface*, BoundaryCheck> DestSurf; @@ -45,7 +45,6 @@ struct Cache //!< Flag the recall solution bool m_recall = false; bool m_robustSampling = true; - bool m_ownParametersOnDetElements = true; unsigned int m_layerResolved{}; unsigned int m_methodSequence = 0; const Surface* m_destinationSurface = nullptr; @@ -60,8 +59,9 @@ struct Cache const Trk::TrackingVolume* m_currentStatic = nullptr; const Trk::TrackingVolume* m_currentDense = nullptr; const Trk::TrackingVolume* m_highestVolume = nullptr; - //!< return helper for parameters on detector elements - TrackParametersPtrVector* m_parametersOnDetElements = nullptr; + //!< Pointer (not owning) pointing + //to a vector of unique parameters of detector elements + TrackParametersUVector* m_parametersOnDetElements = nullptr; //!< cache layer with last material update const Layer* m_lastMaterialLayer = nullptr; //!< cache for collecting the total X0 ans Eloss @@ -93,8 +93,8 @@ struct Cache //methods Cache(); - Cache(const std::vector<const IMaterialEffectsUpdator*> & updaters); ~Cache(); + Cache(const std::vector<const IMaterialEffectsUpdator*> & updaters); TrackParmContainer& trackParmContainer() { return m_trackParmContainer; } diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx index 6f3ef7552152b7cccb5a527df26dd56382d4ece8..e0bc4e2e04dd117c8093eaf684c3f58ccfa92aa7 100755 --- a/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx +++ b/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx @@ -560,7 +560,7 @@ Trk::EnergyLossUpdator::updateEnergyLoss(Trk::EnergyLoss& eLoss, } } - return EnergyLoss(deltaE, + return {deltaE, sigmaDeltaE, sigmaMinusDeltaE, sigmaPlusDeltaE, @@ -568,7 +568,7 @@ Trk::EnergyLossUpdator::updateEnergyLoss(Trk::EnergyLoss& eLoss, sigmaDeltaE_ioni, deltaE_rad, sigmaDeltaE_rad, - depth); + depth}; } // public interface method diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx index 41e23f3db17b2f78d2a2bac76ee7d2d67dea731a..5bb3d10443714ae7ad347490254493b4fbba3040 100755 --- a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx +++ b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx @@ -472,9 +472,9 @@ Trk::Extrapolator::extrapolateStepwiseImpl(const EventContext& ctx, ATH_MSG_DEBUG("F-[" << cache.m_methodSequence << "] extrapolateStepwise(...) "); // initialize the return parameters vector // create a new internal helper vector - Trk::TrackParametersPtrVector tmp; + Trk::TrackParametersUVector tmp; + //The m_parametersOnDetElements point to it cache.m_parametersOnDetElements = &tmp; - cache.m_ownParametersOnDetElements = true; // Material effect updator cache cache.populateMatEffUpdatorCache(m_subupdaters); //TODO revisit when objcontainer is streamlined @@ -484,22 +484,13 @@ Trk::Extrapolator::extrapolateStepwiseImpl(const EventContext& ctx, ctx, cache, prop, cache.manage(std::move(cloneInput)).index(), sf, dir, bcheck, particle)); // assign the return parameter and set cache.m_parametersOnDetElements = 0; if (parameterOnSf) { - tmp.push_back(parameterOnSf.release()); - cache.m_parametersOnDetElements = nullptr; - cache.m_ownParametersOnDetElements = false; + tmp.emplace_back(parameterOnSf.release()); } else { - - if (!cache.m_ownParametersOnDetElements) { - std::stringstream msg; - msg << "Will not cleanup " << static_cast<const void*>(cache.m_parametersOnDetElements); - throw std::logic_error(msg.str()); - } - for (const Trk::TrackParameters* p : tmp) { - delete p; - } tmp.clear(); } - return Trk::TrackParametersUVector(tmp.begin(), tmp.end()); + //m_parametersOnDetElements point to nullptr + cache.m_parametersOnDetElements = nullptr; + return Trk::TrackParametersUVector(std::move(tmp)); } std::pair<std::unique_ptr<Trk::TrackParameters>, const Trk::Layer*> @@ -2870,21 +2861,20 @@ Trk::Extrapolator::extrapolateBlindlyImpl(const EventContext& ctx, cache.m_boundaryVolume = boundaryVol; // initialize the return parameters vector // create a new internal helper vector - Trk::TrackParametersPtrVector tmp; + Trk::TrackParametersUVector tmp; + //The m_parametersOnDetElements point to it cache.m_parametersOnDetElements = &tmp; - cache.m_ownParametersOnDetElements = true; // run the extrapolation { ManagedTrackParmPtr parameterOnSf( extrapolateImpl(ctx, cache, prop, parm, *m_referenceSurface, dir, bcheck, particle)); } - // assign the return parameter and set cache.m_parametersOnDetElements = 0; + // reset the .m_parametersOnDetElements to point to nullptr cache.m_parametersOnDetElements = nullptr; - cache.m_ownParametersOnDetElements = false; // reset the boundary Volume cache.m_boundaryVolume = nullptr; // return what you have - return Trk::TrackParametersUVector(tmp.begin(), tmp.end()); + return Trk::TrackParametersUVector(std::move(tmp)); } // ----------------------- The private Volume extrapolation methods -------------------------- @@ -3976,7 +3966,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx, bool isStartLayer = (detSurface && detSurface == startSurface); // the temporary vector (might have to be ordered) - std::vector<Trk::TrackParameters*> detParametersOnLayer; + TrackParametersUVector detParametersOnLayer; bool reorderDetParametersOnLayer = false; // the first test for the detector surface to be hit (false test) // - only do this if the parameters aren't on the surface @@ -4020,9 +4010,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx, if (surfaceHit && detSurface != startSurface && detSurface != cache.m_destinationSurface) { ATH_MSG_VERBOSE(" [H] Hit with detector surface recorded ! "); // push into the temporary vector - detParametersOnLayer.push_back( - detParameters.release()); // after this line detParameters == nullptr; - // track_parm_for_overlap=TrackParmPtr(*(detParametersOnLayer.back())); + detParametersOnLayer.emplace_back(detParameters.release()); } else if (detParameters) { // no hit -> fill into the garbage bin ATH_MSG_VERBOSE( @@ -4071,7 +4059,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx, // distinguish whether sorting is needed or not reorderDetParametersOnLayer = true; // push back into the temporary vector - detParametersOnLayer.push_back(overlapParameters.release()); + detParametersOnLayer.emplace_back(overlapParameters.release()); } else { // the parameters have been cancelled by start/end surface // no hit -> fill into the garbage bin ATH_MSG_VERBOSE( @@ -4093,9 +4081,8 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx, if (cache.m_parametersOnDetElements->empty()) { *(cache.m_parametersOnDetElements) = std::move(detParametersOnLayer); } else { - std::copy(detParametersOnLayer.begin(), - detParametersOnLayer.end(), - back_inserter(*(cache.m_parametersOnDetElements))); + std::move(detParametersOnLayer.begin(), detParametersOnLayer.end(), + std::back_inserter(*(cache.m_parametersOnDetElements))); } } @@ -5200,7 +5187,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx, particle); } else if (nextLayer->layerType() > 0 && nextLayer->isOnLayer(nextPar->position())) { ATH_MSG_VERBOSE(" [o] Collecting intersection with active layer."); - cache.m_parametersOnDetElements->push_back(nextPar->clone()); + cache.m_parametersOnDetElements->emplace_back(nextPar->uniqueClone()); } } // -------------------------- Fatras mode off ----------------------------------- diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx index f322ed1a2c88be8ce37d3ec301916c3083a14f27..6075c4bde0b7f44fc79414aeac6048e7c604d562 100644 --- a/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx +++ b/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx @@ -26,15 +26,8 @@ namespace Trk{ m_navigVolsInt.reserve(64); populateMatEffUpdatorCache(updaters); } - - Cache::~Cache() - { - if (m_ownParametersOnDetElements && m_parametersOnDetElements) { - for (const Trk::TrackParameters* parm : *m_parametersOnDetElements) { - delete parm; - } - } - } + + Cache::~Cache() = default; IMaterialEffectsUpdator::ICache& Cache::subMaterialEffectsUpdatorCache( const TrackingVolume& tvol){ diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py index cca6ce6236df37e6e7216b69f0fb16899a11d0cc..7426c51b8abc7bdfe4f6a7eb7c5a88d6bd729a06 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py @@ -36,10 +36,10 @@ def ITkFastTrackFinderStandaloneCfg(flags): UseSctSpacePoints = False, layerNumberTool = acc.getPublicTool("TrigL2LayerNumberTool_FTF") ) ) - from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoring + from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig acc.merge(TriggerHistSvcConfig(newflags)) - monTool = TrigFastTrackFinderMonitoring(flags, name = "FullScan", doResMon=False) + monTool = TrigFastTrackFinderMonitoringArg(flags, name = "FullScan", doResMon=False) ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_", LayerNumberTool = acc.getPublicTool( "TrigL2LayerNumberTool_FTF" ), diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py index 6c40e5b96dc9299f44121db70cccbbbc4f97f993..4e7a7a87fb5179ff0f47ea3d636495bc8c8bcfb3 100755 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py @@ -5,6 +5,11 @@ from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool def TrigFastTrackFinderMonitoring(flags): name = "trigfasttrackfinder_" + flags.InDet.Tracking.ActiveConfig.name doResMon= flags.InDet.Tracking.ActiveConfig.doResMon + return TrigFastTrackFinderMonitoringArg(flags, name, doResMon) + + +def TrigFastTrackFinderMonitoringArg(flags, name, doResMon): + def addSPHistograms(montool, name): if name in ['FS', 'JetFS', 'FullScan', 'fullScan', 'fullScanUTT', 'jet']: diff --git a/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py b/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py index bc3dfc8698ed27269616e565f5f5f0bfbcadf37a..7fee13c053df3f0e0f1546de8f7f2520f8a9c356 100644 --- a/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py +++ b/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py @@ -383,11 +383,18 @@ def readDetailsFromTRP(inputFile, runNumber, maxRanges, itemName="L1_TAU8--enabl lbRangeDetailsDict[lbRange] = {"avgPileup" : round(pileupAvg, 3), "minPileup" : round(min(pileupArr), 3), "maxPileup" : round(max(pileupArr), 3), "deadtime" : round(physicsDeadtimeAvg, 3)} - except ImportError: + except ImportError as e: log.error("The pbeast python library was not found! Remember to setup tdaq release!") + log.debug(e) return {} - except RuntimeError: - log.error("Error when reading from Pbeast! Remember to export pbeast server sso: export PBEAST_SERVER_SSO_SETUP_TYPE=AutoUpdateKerberos") + except RuntimeError as e: + if "Sign in to your account" in str(e): + log.error("PBeast authentication failed! Remember to export pbeast server sso: export PBEAST_SERVER_SSO_SETUP_TYPE=AutoUpdateKerberos") + elif "cannot create CERN SSO cookie" in str(e): + log.error("PBeast authentication requires the cookies, please setup") + else: + log.error("Error when reading from Pbeast! ") + log.debug(e) return {} log.debug("The final lumiblock dictionary is {0}".format(lbRangeDetailsDict)) diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..d346dee1730bcc0ab9a611c154740e882b7fcc74 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py @@ -0,0 +1,13 @@ +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +def TrigBjetBtagHypoAlgCfg(flags, name: str = "TrigBjetBtagHypoAlg", **kwargs) -> ComponentAccumulator: + acc = ComponentAccumulator() + + kwargs.setdefault("HypoTools", CompFactory.TrigBjetBtagHypoTool()) + kwargs.setdefault("MonTool", CompFactory.TrigBjetOnlineMonitoring()) + + acc.addEventAlgo(CompFactory.TrigBjetBtagHypoAlg(name=name, **kwargs)) + return acc diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py index 9b99386bf6dd790180faf6f3c2f1798b73177427..e0b21e54ffa16a94b3a2e9995e385cc58dc6f7f4 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py @@ -201,7 +201,7 @@ class TrigEgammaMonAlgBuilder: # - # Create all minitor algorithms + # Create all monitor algorithms # def configureMonitor( self ): @@ -703,6 +703,7 @@ class TrigEgammaMonAlgBuilder: monGroup = self.addGroup( monAlg, trigger+'_Distributions_' + ("HLT" if online else "Offline"), self.basePath+'/Shifter/'+trigger+'/Distributions/' + (level if online else "Offline") ) + info = self.getTrigInfo(trigger) self.addHistogram(monGroup, TH1F("Rhad", "Rhad; Rhad ; Count", 35, -0.3, 0.3)) self.addHistogram(monGroup, TH1F("Rhad1", "Rhad1; Rhad1 ; Count", 30, -0.3, 0.3)) @@ -717,10 +718,12 @@ class TrigEgammaMonAlgBuilder: self.addHistogram(monGroup, TH1F("highet", "Offline E_{T}; E_{T} [GeV] ; Count", 100, 0., 500.)) self.addHistogram(monGroup, TH1F("eta", "eta; eta ; Count", self._nEtabins, self._etabins)) self.addHistogram(monGroup, TH1F("phi", "phi; phi ; Count", 20, -3.2, 3.2)) - self.addHistogram(monGroup, TH1F("topoetcone20", "topoetcone20; topoetcone20 [GeV] ; Count", 100, -10.0, 10.0)) - self.addHistogram(monGroup, TH1F("topoetcone20_rel", "topoetcone20/pt; topoetcone20/pt ; Count", 100, -0.5, 0.5)) - self.addHistogram(monGroup, TH1F("topoetcone40_shift", "topoetcone40-2.45 GeV; topoetcone40-2.45 GeV [GeV] ; Count", 100, -10.0, 10.0)) - self.addHistogram(monGroup, TH1F("topoetcone40_shift_rel", "(topoetcone40-2.45 GeV)/pt; (topoetcone40-2.45 GeV)/pt ; Count", 100, -0.5, 0.5)) + + if not info.isElectron(): + self.addHistogram(monGroup, TH1F("topoetcone20", "topoetcone20; topoetcone20 [GeV] ; Count", 100, -10.0, 10.0)) + self.addHistogram(monGroup, TH1F("topoetcone20_rel", "topoetcone20/pt; topoetcone20/pt ; Count", 100, -0.5, 0.5)) + self.addHistogram(monGroup, TH1F("topoetcone40_shift", "topoetcone40-2.45 GeV; topoetcone40-2.45 GeV [GeV] ; Count", 100, -10.0, 10.0)) + self.addHistogram(monGroup, TH1F("topoetcone40_shift_rel", "(topoetcone40-2.45 GeV)/pt; (topoetcone40-2.45 GeV)/pt ; Count", 100, -0.5, 0.5)) # diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py index 180f69c9a1d46a53962f32da6d4e8bafc0af6bb3..4e58c2469142835bda3a033e89cfc978ab7fead2 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py @@ -156,7 +156,7 @@ if __name__ == '__main__': ################################################## jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver') jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper') - jFEX.jSuperCellTowerMapperTool.SCellMasking = True + jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool') #TOBs @@ -243,7 +243,7 @@ if __name__ == '__main__': ################################################## gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver') gFEX.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper') - gFEX.gSuperCellTowerMapperTool.SCellMasking = True + gFEX.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool') #TOBs diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py index 4a230259560d85af0c4f5d5662729998d399f9cf..a28e805c268635900bd3b9bd18c342547d09bbb4 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py @@ -106,12 +106,14 @@ def L1CaloFEXSimCfg(flags): if flags.Trigger.L1.dojFex: jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver') jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType) + jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool') acc.addEventAlgo(jFEX) if flags.Trigger.L1.dogFex: gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver') gFEX.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper', SCell=sCellType) + gFEX.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool') acc.addEventAlgo(gFEX) diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py index 5e14e2eeb18e033f1fb8fff98f26a7674630fb5a..0835b0facb9aa26d6d014a28f88f0f286ebf3516 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py @@ -109,7 +109,6 @@ class ConfigSettings_tauIso( _ConfigSettingsBase ): self._vertex = "HLT_IDVertex_Tau" self._electronPID = False self._pTmin = 0.8*GeV - #self._Xi2max = 9 Revert to default value for 2023 # potential change coming up ... # self._minNSiHits_vtx = 6 @@ -138,8 +137,6 @@ class ConfigSettings_bjet( _ConfigSettingsBase ): self._phiHalfWidth = 0.4 self._zedHalfWidth = 10.0 self._pTmin = 0.8*GeV - self._Xi2max = 12 - class ConfigSettings_jetSuper( _ConfigSettingsBase ): def __init__( self ): diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py index ea38e599b0f2c62ffeb63ecac0f504290dec8d9d..2933aea56efbfb5fba23c852c624c3f6056e22d9 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py @@ -17,7 +17,6 @@ class _ConfigSettingsBase() : self._name = None self._suffix = None self._pTmin = 1.*GeV - self._Xi2max = 9. self._TripletDoPPS = True self._Triplet_D0Max = 4.0 self._Triplet_D0_PPS_Max = 1.7 @@ -142,10 +141,6 @@ class _ConfigSettingsBase() : def pTmin(self): return self._pTmin - @property - def Xi2max(self): - return self._Xi2max - @property def TripletDoPPS(self): return self._TripletDoPPS @@ -420,7 +415,6 @@ class _ConfigSettingsBase() : log.info( " %s :", self._name ) log.info( " %s :", self._input_name ) log.info( " pTmin : %s", self._pTmin ) - log.info( " Xi2max : %s", self._Xi2max ) log.info( " TripletDoPPS : %s", self._TripletDoPPS ) log.info( " Triplet_D0Max : %s", self._Triplet_D0Max ) log.info( " Triplet_D0_PPS_Max : %s", self._Triplet_D0_PPS_Max ) diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py index 5302546d07484ba696b2e681526cdd31e6ceecfa..9a55564cc7d401b8da5057d185f542f801d53e32 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py @@ -41,8 +41,8 @@ def ITkftfCfg(flags, roisKey, signature, signatureName): UseSctSpacePoints = False, layerNumberTool = acc.getPublicTool("TrigL2LayerNumberToolITk_FTF") ) ) - from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoring - monTool = TrigFastTrackFinderMonitoring(flags, name = "trigfasttrackfinder_" + signature, doResMon=False) + from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg + monTool = TrigFastTrackFinderMonitoringArg(flags, name = "trigfasttrackfinder_" + signature, doResMon=False) ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature, LayerNumberTool = acc.getPublicTool( "TrigL2LayerNumberToolITk_FTF" ), diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py index a185c4db3117fba34e3021de9ec0cd2fa8ccb48a..43c02afb6a60c1bf8b3b1b4b0f91cb78b24de556 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py @@ -1,16 +1,86 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration import AthenaCommon.SystemOfUnits as Units -from InDetConfig.TrackingPassFlags import createTrackingPassFlags + +from InDetConfig.TrackingPassFlags import createTrackingPassFlags,createITkTrackingPassFlags from TrigEDMConfig.TriggerEDMRun3 import recordable +def signatureSpecificSettingOfFlags(flags,mode): + + #temporary - to be reworked + if mode=="InDet": + flags.minPT = flags.pTmin #hack to sync pT threshold used in offline and trigger + flags.Xi2max = 9. if flags.input_name != "bjet" else 12. + flags.Xi2maxNoAdd = 25. + flags.nHolesMax = 2 + flags.nHolesGapMax = 2 + flags.nWeightedClustersMin= 6 + + else: #ITk specific settings can be done here while we rely on ConfigSettings + flags.minPT = [flags.pTmin] #ITk flags have eta dependant settings + flags.Xi2max = [9.] + flags.Xi2maxNoAdd = [25.] + flags.nHolesMax = [2] + flags.nHolesGapMax = [2] + flags.nWeightedClustersMin= [6] + + flags.seedFilterLevel = 0 + + if flags.isLRT: + flags.nHolesGapMax = 1 + flags.nWeightedClustersMin= 8 + + if flags.input_name=="cosmics": + flags.nClustersMin = 4 + flags.nHolesMax = 3 + flags.Xi2max = 60. if mode=="InDet" else [60.] + flags.Xi2maxNoAdd = 100. if mode=="InDet" else [100.] + flags.nWeightedClustersMin= 8 + + def collToRecordable(flags,name): + ret = name + signature = flags.input_name + firstStage = True if "FTF" in name else False + record = True + if firstStage: + if signature in ["tau","tauTau", + "minBias","bjetLRT", + "beamSpot","BeamSpot"]: + record = False + else: + if signature in ["tauCore","tauIso","tauIsoBDT", + "jet","fullScan","FS","jetSuper", + "beamSpot", "BeamSpot","beamSpotFS", + "bjetLRT","DJetLRT","DVtxLRT"]: + record = False + + if record: + ret = recordable(name) + + return ret + + flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF') + flags.addFlag("tracks_FTF", collToRecordable(flags, f'HLT_IDTrack_{flags.suffix}_FTF')) + flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig') + flags.addFlag("tracks_IDTrig", collToRecordable(flags, f"HLT_IDTrack_{flags.suffix}_IDTrig")) + + flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase + flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase -def __flagsFromConfigSettings(settings): - flags = createTrackingPassFlags() + + +def createTrigTrackingPassFlags(mode="InDet"): + def __flagsFromConfigSettings(settings, mode): + if mode == "InDet": + flags = createTrackingPassFlags() + elif mode == "ITk": + flags = createITkTrackingPassFlags() + else: + raise RuntimeError("createTrigTrackingPassFlags cannot create flags for detector not in InDet or ITk: {}".format(mode)) + for setting, value in settings.__dict__.items(): setting = setting.lstrip("_") if setting in flags._flagdict: if value is not None: - #flags._flagdict[setting] = value flags._flagdict[setting].set(value) else: if value is None: @@ -18,63 +88,30 @@ def __flagsFromConfigSettings(settings): else: flags.addFlag(setting, value) - def collToRecordable(flags,name): - ret = name - if flags.InDet.Tracking.ActiveConfig.doRecord: - ret = recordable(name) - return ret - - flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF') - flags.addFlag("tracks_FTF", lambda ofl: collToRecordable(ofl, f'HLT_IDTrack_{flags.suffix}_FTF')) - flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig') - flags.addFlag("tracks_IDTrig", lambda ofl: collToRecordable(ofl, f"HLT_IDTrack_{flags.suffix}_IDTrig")) - - flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase - flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase - flags.minPT = flags.pTmin # hack to sync pT threshold used in offline and trigger - - #temporary - to be reworked - flags.nHolesMax = 2 - flags.nHolesGapMax = 2 - flags.Xi2max = 9. - flags.Xi2maxNoAdd = 25. - flags.seedFilterLevel = 0. - flags.nWeightedClustersMin= 6 - - if flags.isLRT: - flags.nHolesGapMax = 1 - flags.nWeightedClustersMin= 8 - if flags.input_name=="cosmics": - flags.nClustersMin = 4 - flags.nHolesMax = 3 - flags.Xi2max = 60. - flags.Xi2maxNoAdd = 100. - flags.nWeightedClustersMin= 8 - + signatureSpecificSettingOfFlags(flags,mode) return flags - - -def createTrigTrackingPassFlags(): - #hide instantiation of flags in a function that can be consumed by addFlagsCategory - def flagsFactory(settings): - def hidearg(): - return __flagsFromConfigSettings(settings) - return hidearg - - from AthenaConfiguration.AthConfigFlags import AthConfigFlags - flags = AthConfigFlags() - from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig - - for i in ConfigSettingsInstances.keys(): - category = f'Trigger.InDetTracking.{i}' - factory = flagsFactory(getInDetTrigConfig(i)) - flags.addFlagsCategory(category,factory,prefix=True) - - flags.addFlag('Trigger.InDetTracking.RoiZedWidthDefault', 180.0) - - return flags + #hide instantiation of flags in a function that can be consumed by addFlagsCategory + def flagsFactory(settings,mode): + def hidearg(): + return __flagsFromConfigSettings(settings,mode) + return hidearg + + from AthenaConfiguration.AthConfigFlags import AthConfigFlags + flags = AthConfigFlags() + from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig + category = 'Trigger.InDetTracking' if mode=="InDet" else 'Trigger.ITkTracking' + + for i in ConfigSettingsInstances.keys(): + signatureCategory = "{}.{}".format(category,i) + factory = flagsFactory(getInDetTrigConfig(i),mode) + flags.addFlagsCategory(signatureCategory,factory,prefix=True) + + #TBD make a function for global settings too + flags.addFlag(f'{category}.RoiZedWidthDefault', 180.0 * Units.mm) + + return flags import unittest diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py index d0fa86eaac7ef9cfed547ca9ab12c330df093398..4e687fcdf0164f4525f7076c8949b344230ab8a7 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py @@ -1,51 +1,11 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration import AthenaCommon.SystemOfUnits as Units -from InDetConfig.TrackingPassFlags import createITkTrackingPassFlags - - -def __flagsFromConfigSettings(settings): - flags = createITkTrackingPassFlags() - for setting, value in settings.__dict__.items(): - setting = setting.lstrip("_") - if setting in flags._flagdict: - if value is not None: - #flags._flagdict[setting] = value - flags._flagdict[setting].set(value) - else: - if value is None: - flags.addFlag(setting, lambda pf: None) - else: - flags.addFlag(setting, value) - - flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF') - flags.addFlag("tracks_FTF", f'HLT_IDTrack_{flags.suffix}_FTF') - flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig') - flags.addFlag("tracks_IDTrig", f"HLT_IDTrack_{flags.suffix}_IDTrig") - flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase - flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase - flags.input_name = flags.name - flags.minPT = [flags.pTmin] # hack to sync pT threshold used in offline and trigger - return flags - +from TrigInDetConfig.TrigTrackingPassFlags import createTrigTrackingPassFlags def createTrigTrackingPassFlagsITk(): - #hide instantiation of flags in a function that can be consumed by addFlagsCategory - def flagsFactory(settings): - def hidearg(): - return __flagsFromConfigSettings(settings) - return hidearg - - from AthenaConfiguration.AthConfigFlags import AthConfigFlags - flags = AthConfigFlags() - from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig - - for i in ConfigSettingsInstances.keys(): - category = f'Trigger.ITkTracking.{i}' - factory = flagsFactory(getInDetTrigConfig(i)) - flags.addFlagsCategory(category,factory,prefix=True) - - return flags + flags = createTrigTrackingPassFlags(mode="ITk") + return flags import unittest diff --git a/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py b/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py index 874236f448b870d80d0655e183d295686aa7d986..42cd93808357cd555727411834793c86f46e38a9 100644 --- a/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py +++ b/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py @@ -2,11 +2,10 @@ from TrigInDetConfig.ConfigSettings import getInDetTrigConfig; from AthenaCommon.SystemOfUnits import GeV; getInDetTrigConfig('tauCore')._pTmin = 1*GeV; getInDetTrigConfig('tauIso')._pTmin = 1*GeV; -getInDetTrigConfig('tauIso')._Xi2max = 9; -getInDetTrigConfig('bjet')._Xi2max = 9; getInDetTrigConfig('jetSuper')._zedHalfWidth = 150.; getInDetTrigConfig('bphysics')._zedHalfWidth = 225.; getInDetTrigConfig('bphysics')._SuperRoI = False; from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags flags.Trigger.InDetTracking.RoiZedWidthDefault=0.0 +flags.Trigger.InDetTracking.bjet.Xi2max=9. diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 2059d4d75b0bf3a253b184f1716c8277859f579b..ae4fd5a8e656b221faff39c3ad27ca82f4f29a3f 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -57,7 +57,7 @@ HLT_2e17_idperf_loose_L12eEM18M: 3: 1 4: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 2 3: 2 @@ -82,7 +82,7 @@ HLT_2e17_idperf_loose_nogsf_L12eEM18M: 2: 1 3: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 2 3: 2 @@ -101,7 +101,7 @@ HLT_2e17_lhvloose_L12eEM18M: 0: 1 1: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 1 HLT_2e17_lhvloose_g20_tight_probe_L12EM15VHI: @@ -128,7 +128,7 @@ HLT_2e17_lhvloose_g22_tight_probe_L12eEM18M: 0: 1 1: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 1 HLT_2e17_lhvloose_g25_medium_probe_L12EM15VHI: @@ -146,7 +146,7 @@ HLT_2e17_lhvloose_g25_medium_probe_L12eEM18M: 0: 1 1: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 1 HLT_2e17_lhvloose_g35_medium_probe_L12EM15VHI: @@ -164,7 +164,7 @@ HLT_2e17_lhvloose_g35_medium_probe_L12eEM18M: 0: 1 1: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 1 HLT_2e17_lhvloose_g50_loose_probe_L12EM15VHI: @@ -182,7 +182,7 @@ HLT_2e17_lhvloose_g50_loose_probe_L12eEM18M: 0: 1 1: 1 stepFeatures: - 0: 4 + 0: 3 1: 2 2: 1 HLT_2e24_lhvloose_L12EM20VH: @@ -196,13 +196,8 @@ HLT_2e24_lhvloose_L12EM20VH: 2: 1 HLT_2e24_lhvloose_L12eEM24L: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 1 + 0: 1 HLT_2e24_lhvloose_g20_tight_probe_L12EM20VH: eventCount: 0 stepCounts: @@ -223,13 +218,8 @@ HLT_2e24_lhvloose_g22_tight_probe_L12EM20VH: 2: 1 HLT_2e24_lhvloose_g22_tight_probe_L12eEM24L: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 1 + 0: 1 HLT_2e24_lhvloose_g25_medium_probe_L12EM20VH: eventCount: 0 stepCounts: @@ -241,13 +231,8 @@ HLT_2e24_lhvloose_g25_medium_probe_L12EM20VH: 2: 1 HLT_2e24_lhvloose_g25_medium_probe_L12eEM24L: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 1 + 0: 1 HLT_2e24_lhvloose_g35_medium_probe_L12EM20VH: eventCount: 0 stepCounts: @@ -259,13 +244,8 @@ HLT_2e24_lhvloose_g35_medium_probe_L12EM20VH: 2: 1 HLT_2e24_lhvloose_g35_medium_probe_L12eEM24L: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 1 + 0: 1 HLT_2e24_lhvloose_g50_loose_probe_L12EM20VH: eventCount: 0 stepCounts: @@ -277,13 +257,8 @@ HLT_2e24_lhvloose_g50_loose_probe_L12EM20VH: 2: 1 HLT_2e24_lhvloose_g50_loose_probe_L12eEM24L: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 1 + 0: 1 HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF: eventCount: 0 stepCounts: @@ -422,17 +397,17 @@ HLT_2e5_lhvloose_nogsf_bBeeM6000_L12EM3: HLT_2g10_loose_L1eEM9_mu20_L1MU14FCH: eventCount: 0 stepCounts: - 0: 5 + 0: 3 stepFeatures: - 0: 28 - 1: 8 + 0: 25 + 1: 5 HLT_2g10_loose_L1eEM9_mu20_L1MU18VFCH: eventCount: 0 stepCounts: - 0: 5 + 0: 3 stepFeatures: - 0: 28 - 1: 8 + 0: 25 + 1: 5 HLT_2g10_loose_mu20_L1MU14FCH: eventCount: 0 stepCounts: @@ -503,13 +478,13 @@ HLT_2g20_loose_L12EM15VH: HLT_2g20_loose_L12eEM18L: eventCount: 1 stepCounts: - 0: 5 + 0: 3 1: 2 2: 1 3: 1 stepFeatures: - 0: 10 - 1: 7 + 0: 6 + 1: 5 2: 3 3: 2 HLT_2g20_tight_L12EM15VHI: @@ -537,12 +512,12 @@ HLT_2g20_tight_icaloloose_L12EM15VHI: HLT_2g20_tight_icaloloose_L12eEM18M: eventCount: 0 stepCounts: - 0: 4 + 0: 3 1: 2 2: 1 stepFeatures: - 0: 8 - 1: 6 + 0: 6 + 1: 5 2: 3 3: 1 HLT_2g22_tight_L12EM15VHI: @@ -563,7 +538,7 @@ HLT_2g22_tight_L12eEM18M: 1: 2 2: 1 stepFeatures: - 0: 7 + 0: 6 1: 5 2: 3 3: 1 @@ -582,7 +557,7 @@ HLT_2g25_loose_g15_loose_L12EM20VH: HLT_2g25_loose_g15_loose_L12eEM24L: eventCount: 0 stepFeatures: - 0: 16 + 0: 8 HLT_2g50_loose_L12EM20VH: eventCount: 0 stepCounts: @@ -595,7 +570,7 @@ HLT_2g50_loose_L12eEM24L: stepCounts: 0: 1 stepFeatures: - 0: 5 + 0: 3 1: 1 HLT_2g50_tight_L1EM7_EMPTY: eventCount: 0 @@ -619,14 +594,14 @@ HLT_2g9_loose_25dphiAA_invmAA80_L12EM7: HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9: eventCount: 0 stepCounts: - 0: 7 - 1: 5 - 2: 4 + 0: 5 + 1: 4 + 2: 3 stepFeatures: - 0: 30 - 1: 14 - 2: 15 - 3: 5 + 0: 22 + 1: 11 + 2: 12 + 3: 3 HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9L: eventCount: 0 HLT_2j100_L1CEP-CjJ100: @@ -2691,9 +2666,9 @@ HLT_e10_lhvloose_L1eEM9: 5: 13 6: 11 stepFeatures: - 0: 17 - 1: 17 - 2: 46 + 0: 16 + 1: 16 + 2: 35 3: 13 4: 13 5: 13 @@ -2909,7 +2884,7 @@ HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM15: eventCount: 0 stepFeatures: - 0: 28 + 0: 25 HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepCounts: @@ -3132,19 +3107,19 @@ HLT_e20_idperf_loose_lrtloose_L1EM15VH: 3: 12 4: 12 HLT_e20_idperf_loose_lrtloose_L1eEM18L: - eventCount: 11 + eventCount: 10 stepCounts: + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 10 + stepFeatures: 0: 11 1: 11 2: 11 3: 11 4: 11 - stepFeatures: - 0: 12 - 1: 12 - 2: 12 - 3: 12 - 4: 12 HLT_e20_lhloose_L1EM15VH: eventCount: 9 stepCounts: @@ -3290,23 +3265,23 @@ HLT_e20_lhvloose_L1EM15VH: 5: 10 6: 10 HLT_e20_lhvloose_L1eEM18L: - eventCount: 10 + eventCount: 9 stepCounts: + 0: 10 + 1: 10 + 2: 9 + 3: 9 + 4: 9 + 5: 9 + 6: 9 + stepFeatures: 0: 11 1: 11 - 2: 10 - 3: 10 - 4: 10 - 5: 10 - 6: 10 - stepFeatures: - 0: 12 - 1: 12 - 2: 14 - 3: 10 - 4: 10 - 5: 10 - 6: 10 + 2: 13 + 3: 9 + 4: 9 + 5: 9 + 6: 9 HLT_e24_lhmedium_g12_loose_g12_loose_02dRAB_02dRAC_02dRBC_L1EM20VH_3EM10VH: eventCount: 0 stepFeatures: @@ -3333,17 +3308,17 @@ HLT_e24_lhmedium_g25_medium_02dRAB_L12EM20VH: HLT_e24_lhmedium_g25_medium_02dRAB_L12eEM24L: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 1 + 1: 1 + 2: 1 3: 1 4: 1 5: 1 stepFeatures: - 0: 12 - 1: 9 - 2: 4 - 3: 3 + 0: 5 + 1: 3 + 2: 2 + 3: 2 4: 1 5: 1 6: 1 @@ -3376,7 +3351,7 @@ HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1eEM26M: 5: 5 6: 1 stepFeatures: - 0: 49 + 0: 46 1: 37 2: 39 3: 24 @@ -3461,15 +3436,15 @@ HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12EM20VH: HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12eEM24L: eventCount: 0 stepCounts: - 0: 3 + 0: 2 1: 2 2: 2 3: 1 4: 1 5: 1 stepFeatures: - 0: 12 - 1: 8 + 0: 7 + 1: 6 2: 30 3: 4 4: 1 @@ -3780,9 +3755,9 @@ HLT_e26_lhtight_e14_etcut_L1eEM26M: 5: 2 6: 2 stepFeatures: - 0: 42 - 1: 27 - 2: 91 + 0: 38 + 1: 26 + 2: 86 3: 13 4: 2 5: 2 @@ -3835,9 +3810,9 @@ HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 17 - 8: 15 - 9: 65 + 7: 16 + 8: 14 + 9: 60 10: 9 HLT_e26_lhtight_e14_idperf_tight_nogsf_probe_50invmAB130_L1EM22VHI: eventCount: 0 @@ -4201,9 +4176,9 @@ HLT_e26_lhtight_ivarloose_e14_etcut_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 17 - 8: 15 - 9: 65 + 7: 16 + 8: 14 + 9: 60 10: 9 HLT_e26_lhtight_ivarloose_e14_idperf_tight_probe_L1EM22VHI: eventCount: 0 @@ -4517,7 +4492,7 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1EM22VHI: 9: 88 10: 29 HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M: - eventCount: 5 + eventCount: 4 stepCounts: 0: 8 1: 8 @@ -4526,10 +4501,10 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 5 - 8: 5 - 9: 5 - 10: 5 + 7: 4 + 8: 4 + 9: 4 + 10: 4 stepFeatures: 0: 8 1: 8 @@ -4538,10 +4513,10 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 43 - 8: 42 - 9: 127 - 10: 55 + 7: 29 + 8: 27 + 9: 97 + 10: 40 HLT_e26_lhtight_ivarloose_e5_idperf_loose_lrtloose_probe_L1EM22VHI: eventCount: 5 stepCounts: @@ -4580,8 +4555,8 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_noringer_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 5 - 8: 5 + 7: 4 + 8: 4 9: 3 10: 3 11: 3 @@ -4594,12 +4569,12 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_noringer_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 16 - 8: 15 - 9: 28 - 10: 12 - 11: 12 - 12: 12 + 7: 13 + 8: 11 + 9: 22 + 10: 10 + 11: 10 + 12: 10 13: 3 HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1EM22VHI: eventCount: 0 @@ -4642,12 +4617,12 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 3 - 8: 3 - 9: 3 - 10: 3 - 11: 3 - 12: 3 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + 11: 2 + 12: 2 stepFeatures: 0: 8 1: 8 @@ -4656,15 +4631,15 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 12 - 8: 9 - 9: 15 - 10: 9 - 11: 9 - 12: 9 - 13: 3 + 7: 9 + 8: 5 + 9: 8 + 10: 5 + 11: 5 + 12: 5 + 13: 2 HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M: - eventCount: 3 + eventCount: 2 stepCounts: 0: 8 1: 8 @@ -4673,11 +4648,11 @@ HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 3 - 8: 3 - 9: 3 - 10: 3 - 11: 3 + 7: 2 + 8: 2 + 9: 2 + 10: 2 + 11: 2 stepFeatures: 0: 8 1: 8 @@ -4686,11 +4661,11 @@ HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 12 - 8: 9 - 9: 9 - 10: 9 - 11: 9 + 7: 9 + 8: 5 + 9: 5 + 10: 5 + 11: 5 HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1EM22VHI: eventCount: 0 stepCounts: @@ -4746,9 +4721,9 @@ HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 5 - 8: 5 - 9: 5 + 7: 4 + 8: 4 + 9: 4 10: 4 stepFeatures: 0: 8 @@ -4758,10 +4733,10 @@ HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 32 - 8: 31 - 9: 113 - 10: 19 + 7: 27 + 8: 25 + 9: 96 + 10: 18 HLT_e26_lhtight_ivarloose_e9_lhtight_probe_L1EM22VHI: eventCount: 0 stepCounts: @@ -4808,9 +4783,9 @@ HLT_e26_lhtight_ivarloose_e9_lhtight_probe_L1eEM26M: 4: 6 5: 6 6: 6 - 7: 10 - 8: 6 - 9: 10 + 7: 9 + 8: 5 + 9: 8 10: 2 HLT_e26_lhtight_ivarloose_j20_pf_ftf_L1EM22VHI: eventCount: 5 @@ -5765,13 +5740,13 @@ HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1EM20VH: HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1eEM24L: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 18 - 1: 12 + 0: 13 + 1: 11 2: 10 3: 8 4: 7 @@ -5988,27 +5963,27 @@ HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH: 7: 12 8: 12 HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1eEM24L: - eventCount: 5 + eventCount: 4 stepCounts: - 0: 14 - 1: 12 + 0: 11 + 1: 10 2: 10 3: 8 - 4: 5 - 5: 5 - 6: 5 - 7: 5 - 8: 5 + 4: 4 + 5: 4 + 6: 4 + 7: 4 + 8: 4 stepFeatures: - 0: 18 - 1: 14 + 0: 13 + 1: 11 2: 10 3: 8 - 4: 20 - 5: 17 - 6: 13 - 7: 13 - 8: 13 + 4: 13 + 5: 9 + 6: 9 + 7: 9 + 8: 9 HLT_e5_idperf_tight_L1EM3: eventCount: 17 stepCounts: @@ -6026,17 +6001,17 @@ HLT_e5_idperf_tight_L1EM3: HLT_e5_idperf_tight_L1eEM5: eventCount: 17 stepCounts: - 0: 19 - 1: 19 + 0: 17 + 1: 17 2: 17 3: 17 4: 17 stepFeatures: - 0: 53 - 1: 53 - 2: 43 - 3: 43 - 4: 43 + 0: 34 + 1: 34 + 2: 34 + 3: 34 + 4: 34 HLT_e5_idperf_tight_nogsf_L1EM3: eventCount: 17 stepCounts: @@ -6052,15 +6027,15 @@ HLT_e5_idperf_tight_nogsf_L1EM3: HLT_e5_idperf_tight_nogsf_L1eEM5: eventCount: 17 stepCounts: - 0: 19 - 1: 19 + 0: 17 + 1: 17 2: 17 3: 17 stepFeatures: - 0: 53 - 1: 53 - 2: 43 - 3: 43 + 0: 34 + 1: 34 + 2: 34 + 3: 34 HLT_e5_lhtight_L1EM3: eventCount: 9 stepCounts: @@ -6093,17 +6068,17 @@ HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-eEM15: eventCount: 0 stepCounts: - 0: 3 - 1: 3 - 2: 3 + 0: 2 + 1: 2 + 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 14 - 1: 12 - 2: 76 - 3: 13 + 0: 13 + 1: 7 + 2: 33 + 3: 9 4: 3 5: 3 HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: @@ -6144,17 +6119,17 @@ HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-eEM9: eventCount: 0 stepCounts: - 0: 3 - 1: 3 - 2: 3 + 0: 2 + 1: 2 + 2: 2 3: 2 4: 2 5: 2 stepFeatures: - 0: 18 - 1: 16 - 2: 98 - 3: 19 + 0: 14 + 1: 8 + 2: 36 + 3: 10 4: 3 5: 3 HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: @@ -6638,35 +6613,35 @@ HLT_e70_lhloose_xe70_cell_L1eEM26M: HLT_e7_lhmedium_L1eEM5_mu24_L1MU14FCH: eventCount: 0 stepCounts: - 0: 5 - 1: 5 - 2: 5 + 0: 4 + 1: 4 + 2: 4 3: 3 4: 3 5: 3 stepFeatures: - 0: 18 - 1: 16 - 2: 35 - 3: 10 - 4: 5 - 5: 5 + 0: 14 + 1: 11 + 2: 22 + 3: 8 + 4: 4 + 5: 4 HLT_e7_lhmedium_L1eEM5_mu24_L1MU18VFCH: eventCount: 0 stepCounts: - 0: 5 - 1: 5 - 2: 5 + 0: 4 + 1: 4 + 2: 4 3: 3 4: 3 5: 3 stepFeatures: - 0: 18 - 1: 16 - 2: 35 - 3: 10 - 4: 5 - 5: 5 + 0: 14 + 1: 11 + 2: 22 + 3: 8 + 4: 4 + 5: 4 HLT_e7_lhmedium_mu24_L1MU14FCH: eventCount: 0 stepCounts: @@ -6767,7 +6742,7 @@ HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM9: eventCount: 0 stepFeatures: - 0: 28 + 0: 25 HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepCounts: @@ -6973,9 +6948,9 @@ HLT_g0_hiptrt_L1EM22VHI: HLT_g0_hiptrt_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 stepFeatures: - 0: 14 + 0: 12 HLT_g100_loose_L1EM22VHI: eventCount: 1 stepCounts: @@ -7016,13 +6991,13 @@ HLT_g10_loose_L1eEM9: eventCount: 14 stepCounts: 0: 20 - 1: 18 + 1: 17 2: 17 3: 14 stepFeatures: - 0: 64 - 1: 23 - 2: 23 + 0: 56 + 1: 21 + 2: 22 3: 16 HLT_g120_loose_L1EM22VHI: eventCount: 1 @@ -7134,7 +7109,7 @@ HLT_g15_loose_L1eEM12L: 2: 14 3: 13 stepFeatures: - 0: 23 + 0: 21 1: 17 2: 16 3: 15 @@ -7158,7 +7133,7 @@ HLT_g15_tight_L1eEM12L: 2: 14 3: 11 stepFeatures: - 0: 23 + 0: 21 1: 17 2: 16 3: 11 @@ -7187,17 +7162,17 @@ HLT_g20_loose_L1EM15VHI: 2: 12 3: 11 HLT_g20_loose_L1eEM18L: - eventCount: 12 + eventCount: 11 stepCounts: - 0: 15 - 1: 13 + 0: 13 + 1: 12 + 2: 12 + 3: 11 + stepFeatures: + 0: 16 + 1: 14 2: 13 3: 12 - stepFeatures: - 0: 20 - 1: 15 - 2: 14 - 3: 13 HLT_g20_loose_noiso_L1EM15VH: eventCount: 12 stepCounts: @@ -7261,17 +7236,17 @@ HLT_g20_tight_L1EM15VHI: 2: 12 3: 8 HLT_g20_tight_L1eEM18M: - eventCount: 10 + eventCount: 9 stepCounts: - 0: 15 - 1: 13 - 2: 13 - 3: 10 + 0: 13 + 1: 12 + 2: 12 + 3: 9 stepFeatures: - 0: 19 - 1: 15 - 2: 14 - 3: 10 + 0: 16 + 1: 14 + 2: 13 + 3: 9 HLT_g20_tight_icaloloose_L1EM15VHI: eventCount: 8 stepCounts: @@ -7287,19 +7262,19 @@ HLT_g20_tight_icaloloose_L1EM15VHI: 3: 8 4: 8 HLT_g20_tight_icaloloose_L1eEM18M: - eventCount: 10 + eventCount: 9 stepCounts: - 0: 15 - 1: 13 - 2: 13 - 3: 10 - 4: 10 + 0: 13 + 1: 12 + 2: 12 + 3: 9 + 4: 9 stepFeatures: - 0: 19 - 1: 15 - 2: 14 - 3: 10 - 4: 10 + 0: 16 + 1: 14 + 2: 13 + 3: 9 + 4: 9 HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1EM18VHI_MJJ-300: eventCount: 0 stepCounts: @@ -7373,13 +7348,13 @@ HLT_g22_tight_L1EM15VHI: HLT_g22_tight_L1eEM18M: eventCount: 9 stepCounts: - 0: 15 - 1: 13 + 0: 13 + 1: 12 2: 12 3: 9 stepFeatures: - 0: 18 - 1: 15 + 0: 16 + 1: 14 2: 13 3: 9 HLT_g250_etcut_L1EM22VHI: @@ -7401,13 +7376,13 @@ HLT_g25_loose_L1EM20VH: HLT_g25_loose_L1eEM24L: eventCount: 9 stepCounts: - 0: 14 - 1: 12 + 0: 11 + 1: 10 2: 10 3: 9 stepFeatures: - 0: 18 - 1: 14 + 0: 13 + 1: 11 2: 10 3: 9 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI: @@ -7427,14 +7402,14 @@ HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI: HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1eEM26M: eventCount: 2 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 9 4: 2 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 9 4: 7 @@ -7479,7 +7454,7 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1EM HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M: eventCount: 4 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 @@ -7488,8 +7463,8 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eE 6: 4 7: 4 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 16 @@ -7511,13 +7486,13 @@ HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI: HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 HLT_g25_medium_L1EM20VH: @@ -7559,13 +7534,13 @@ HLT_g25_medium_L1eEM18L_mu24_L1MU18VFCH: HLT_g25_medium_L1eEM24L: eventCount: 8 stepCounts: - 0: 14 - 1: 12 + 0: 11 + 1: 10 2: 10 3: 8 stepFeatures: - 0: 18 - 1: 14 + 0: 13 + 1: 11 2: 10 3: 8 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI: @@ -7601,15 +7576,15 @@ HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 4: 8 5: 6 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 24 @@ -7667,13 +7642,13 @@ HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI: @@ -7691,13 +7666,13 @@ HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI: @@ -7715,25 +7690,25 @@ HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_dipion4_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI: @@ -7751,13 +7726,13 @@ HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI: @@ -7775,13 +7750,13 @@ HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI: @@ -7799,13 +7774,13 @@ HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 stepFeatures: - 0: 51 - 1: 48 + 0: 47 + 1: 45 2: 40 3: 38 HLT_g25_tight_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI: @@ -7891,7 +7866,7 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M: eventCount: 4 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 @@ -7901,8 +7876,8 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X 7: 4 8: 4 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 8 @@ -7975,7 +7950,7 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 @@ -7983,8 +7958,8 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf 5: 8 6: 6 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 8 @@ -8127,7 +8102,7 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M: eventCount: 1 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 @@ -8135,8 +8110,8 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M: 5: 2 6: 1 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 9 @@ -8220,15 +8195,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1eEM26M: eventCount: 1 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 4: 8 5: 1 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 9 @@ -8251,15 +8226,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1eEM26M: eventCount: 1 stepCounts: - 0: 12 + 0: 11 1: 10 2: 10 3: 8 4: 8 5: 1 stepFeatures: - 0: 14 - 1: 11 + 0: 12 + 1: 10 2: 10 3: 8 4: 9 @@ -8328,12 +8303,12 @@ HLT_g30_loose_L1EM20VH: HLT_g30_loose_L1eEM24L: eventCount: 8 stepCounts: - 0: 12 + 0: 11 1: 10 2: 9 3: 8 stepFeatures: - 0: 15 + 0: 13 1: 11 2: 9 3: 8 @@ -8411,7 +8386,7 @@ HLT_g35_loose_mu18_L1eEM28M: 2: 1 3: 1 stepFeatures: - 0: 15 + 0: 14 1: 4 2: 2 3: 2 @@ -8478,12 +8453,12 @@ HLT_g35_medium_L1EM20VH: HLT_g35_medium_L1eEM24L: eventCount: 7 stepCounts: - 0: 11 + 0: 10 1: 9 2: 9 3: 7 stepFeatures: - 0: 13 + 0: 11 1: 9 2: 9 3: 7 @@ -8499,12 +8474,12 @@ HLT_g35_medium_g25_medium_L12EM20VH: HLT_g35_medium_g25_medium_L12eEM24L: eventCount: 0 stepCounts: - 0: 4 - 1: 2 + 0: 2 + 1: 1 stepFeatures: - 0: 14 - 1: 10 - 2: 4 + 0: 7 + 1: 5 + 2: 2 HLT_g35_medium_g25_medium_L1EM7_EMPTY: eventCount: 0 HLT_g35_medium_g25_medium_L1EM7_UNPAIRED_ISO: @@ -8972,12 +8947,12 @@ HLT_g40_loose_L1EM20VH: HLT_g40_loose_L1eEM24L: eventCount: 7 stepCounts: - 0: 11 + 0: 10 1: 9 2: 8 3: 7 stepFeatures: - 0: 13 + 0: 11 1: 9 2: 8 3: 7 @@ -12304,7 +12279,7 @@ HLT_j80_roiftf_preselj20_L1J20: stepFeatures: 0: 45 1: 145 - 2: 11 + 2: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d72_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25 : eventCount: 4 stepCounts: @@ -12314,7 +12289,7 @@ HLT_j80_roiftf_preselj20_L1J20: stepFeatures: 0: 45 1: 145 - 2: 11 + 2: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d75_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25 : eventCount: 5 stepCounts: @@ -12493,7 +12468,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_ stepFeatures: 0: 45 1: 145 - 2: 11 + 2: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d72_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 stepCounts: @@ -12513,7 +12488,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_ stepFeatures: 0: 45 1: 145 - 2: 11 + 2: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d75_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 stepCounts: @@ -12781,7 +12756,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ stepFeatures: 0: 45 1: 145 - 2: 13 + 2: 12 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 1 stepCounts: @@ -12845,7 +12820,7 @@ HLT_j80c_j55c_j28c_j20c_SHARED_2j20c_bdl1d70_pf_ftf_presel4c20_L1J45p0ETA21_3J15 stepFeatures: 0: 45 1: 153 - 2: 11 + 2: 10 HLT_j80c_j55c_j28c_j20c_SHARED_2j20c_bdl1d77_pf_ftf_presel4c20_L1J45p0ETA21_3J15p0ETA25: eventCount: 6 stepCounts: diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref index f246d716c35c96b2bdd9f81f38b46b808d09e577..0bb205d79c7982a9d21fffd58a70c938ceab886a 100644 --- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref +++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref @@ -72,20 +72,6 @@ HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF: eventCount: 0 HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1jMJJ-500-NFF: eventCount: 0 - stepCounts: - 0: 1 - 1: 1 - 2: 1 - 3: 1 - 4: 1 - 5: 1 - stepFeatures: - 0: 6 - 1: 2 - 2: 4 - 3: 2 - 4: 2 - 5: 2 HLT_2e5_lhvloose_bBeeM6000_L14J15: eventCount: 0 HLT_2e5_lhvloose_bBeeM6000_L1All: @@ -265,16 +251,8 @@ HLT_2j100_L1CEP-CjJ90: eventCount: 0 HLT_2j110_0eta180_emergingPTF0p09dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140: eventCount: 0 - stepCounts: - 0: 50 - stepFeatures: - 0: 50 HLT_2j110_0eta200_emergingPTF0p1dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140: eventCount: 0 - stepCounts: - 0: 50 - stepFeatures: - 0: 50 HLT_2j120_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_J50: eventCount: 0 HLT_2j120_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_jJ90: @@ -365,32 +343,14 @@ HLT_2j35_0eta290_020jvt_bdl1d60_3j35_pf_ftf_presel3j25XX2j25b85_L15J15p0ETA25: eventCount: 0 HLT_2j35_0eta290_020jvt_bdl1d60_3j35_pf_ftf_presel3j25XX2j25b85_L15jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 4 - 1: 1 - stepFeatures: - 0: 8 - 1: 2 HLT_2j35_0eta290_020jvt_bdl1d70_2j35_0eta290_020jvt_bdl1d85_pf_ftf_presel4j25b95_L14J15p0ETA25: eventCount: 0 HLT_2j35_0eta290_020jvt_bdl1d70_2j35_0eta290_020jvt_bdl1d85_pf_ftf_presel4j25b95_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 12 - 1: 2 HLT_2j35c_020jvt_bdl1d60_2j35c_020jvt_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25: eventCount: 0 HLT_2j35c_020jvt_bdl1d60_2j35c_020jvt_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 12 - 1: 2 HLT_2j35c_2j35c_85bdips_roiftf_presel4c35_L14J15p0ETA25: eventCount: 0 HLT_2j35c_2j35c_85bdips_roiftf_presel4c35_L1J45p0ETA21_3J15p0ETA25: @@ -399,22 +359,10 @@ HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25: eventCount: 0 HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 12 - 1: 2 HLT_2j45_0eta290_020jvt_bdl1d60_3j45_pf_ftf_presel3j25XX2j25b85_L15J15p0ETA25: eventCount: 0 HLT_2j45_0eta290_020jvt_bdl1d60_3j45_pf_ftf_presel3j25XX2j25b85_L15jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 4 - 1: 1 - stepFeatures: - 0: 8 - 1: 2 HLT_2j45_0eta290_020jvt_bdl1d60_pf_ftf_xe50_cell_xe85_pfopufit_L12J15_XE55: eventCount: 0 HLT_2j45_0eta290_020jvt_bdl1d60_pf_ftf_xe50_cell_xe85_tcpufit_L12J15_XE55: @@ -423,10 +371,6 @@ HLT_2j45_0eta290_020jvt_bdl1d70_j0_HT300_j0_DJMASS700j35_pf_ftf_L1HT150-J20s5pET eventCount: 0 HLT_2j45_0eta290_020jvt_bdl1d70_j0_HT300_j0_DJMASS700j35_pf_ftf_L1jHT150-jJ50s5pETA31_jMJJ-400-CF: eventCount: 0 - stepCounts: - 0: 8 - stepFeatures: - 0: 24 HLT_2j45c_2j35c_85bdips_roiftf_presel4c45_L14J15p0ETA25: eventCount: 0 HLT_2j45c_2j35c_85bdips_roiftf_presel4c45_L1J45p0ETA21_3J15p0ETA25: @@ -435,12 +379,6 @@ HLT_2j55_0eta290_020jvt_bdl1d60_2j55_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25: eventCount: 0 HLT_2j55_0eta290_020jvt_bdl1d60_2j55_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 12 - 1: 2 HLT_2mu10_PhysicsTLA_L12MU8F: eventCount: 0 HLT_2mu10_bJpsimumu_L12MU8F: @@ -1009,12 +947,6 @@ HLT_3j35_0eta290_020jvt_bdl1d70_j35_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25: eventCount: 0 HLT_3j35_0eta290_020jvt_bdl1d70_j35_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 12 - 1: 2 HLT_3j65_0eta290_020jvt_bdl1d77_pf_ftf_presel3j45b95_L13J35p0ETA23: eventCount: 0 HLT_3j65_0eta290_020jvt_bdl1d77_pf_ftf_presel3j45b95_L13jJ70p0ETA23: @@ -1095,12 +1027,6 @@ HLT_4j35_0eta290_020jvt_bdl1d77_pf_ftf_presel4j25b95_L14J15p0ETA25: eventCount: 0 HLT_4j35_0eta290_020jvt_bdl1d77_pf_ftf_presel4j25b95_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 6 - 1: 1 - stepFeatures: - 0: 6 - 1: 1 HLT_4mu4_L14MU3V: eventCount: 0 HLT_4mu4_bDimu6000_L14MU3V: @@ -1109,26 +1035,14 @@ HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b8 eventCount: 0 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14jJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_boffperf_pf_ftf_presel6c25_L14J15: eventCount: 0 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_boffperf_pf_ftf_presel6c25_L14jJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_5j45c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14J15: eventCount: 0 HLT_5j45c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14jJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_5j70c_L14J15: eventCount: 0 HLT_5j70c_L14jJ40: @@ -1183,20 +1097,12 @@ HLT_6j35c_020jvt_pf_ftf_presel6c25_L14J15: eventCount: 0 HLT_6j35c_020jvt_pf_ftf_presel6c25_L14jJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_6j35c_pf_ftf_presel6c25_L14J15: eventCount: 0 HLT_6j45c_020jvt_pf_ftf_presel6c25_L14J15: eventCount: 0 HLT_6j45c_020jvt_pf_ftf_presel6c25_L14jJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_6j55c_L14J15: eventCount: 0 HLT_6j55c_L14jJ40: @@ -1252,10 +1158,10 @@ HLT_distrk20_medium_L1XE55: HLT_distrk20_medium_L1jXE100: eventCount: 1 stepCounts: - 0: 50 + 0: 2 1: 1 stepFeatures: - 0: 50 + 0: 2 1: 1 HLT_distrk20_tight_L1XE50: eventCount: 0 @@ -1264,10 +1170,10 @@ HLT_distrk20_tight_L1XE55: HLT_distrk20_tight_L1jXE100: eventCount: 1 stepCounts: - 0: 50 + 0: 2 1: 1 stepFeatures: - 0: 50 + 0: 2 1: 1 HLT_e100_etcut_L1EM22VHI: eventCount: 0 @@ -1310,19 +1216,19 @@ HLT_e10_lhvloose_L1EM7: HLT_e10_lhvloose_L1eEM9: eventCount: 0 stepCounts: - 0: 4 - 1: 4 - 2: 4 - 3: 3 - 4: 3 - 5: 3 + 0: 2 + 1: 2 + 2: 2 + 3: 2 + 4: 2 + 5: 2 stepFeatures: - 0: 5 - 1: 5 - 2: 8 - 3: 3 - 4: 3 - 5: 3 + 0: 3 + 1: 3 + 2: 4 + 3: 2 + 4: 2 + 5: 2 HLT_e120_etcut_L1EM22VHI: eventCount: 0 HLT_e120_etcut_L1eEM26M: @@ -1432,7 +1338,7 @@ HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM15: eventCount: 0 stepFeatures: - 0: 15 + 0: 7 HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e14_lhtight_e4_idperf_tight_nogsf_probe_1invmAB5_L1JPSI-1M5-EM12: @@ -1582,7 +1488,7 @@ HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1EM22VHI: HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1eEM26M: eventCount: 0 stepFeatures: - 0: 4 + 0: 3 HLT_e24_lhtight_ivarloose_L1EM22VHI: eventCount: 0 HLT_e24_lhtight_ivarloose_L1eEM26M: @@ -1662,7 +1568,7 @@ HLT_e26_lhtight_e14_etcut_L1EM22VHI: HLT_e26_lhtight_e14_etcut_L1eEM26M: eventCount: 0 stepFeatures: - 0: 5 + 0: 4 HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1EM22VHI: eventCount: 0 HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1eEM26M: @@ -1916,14 +1822,14 @@ HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1EM20VH: HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1eEM24L: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 4 - 1: 2 - 2: 2 + 0: 3 + 1: 1 + 2: 1 3: 1 HLT_e30_lhvloose_L1EM22VHI: eventCount: 0 @@ -2066,14 +1972,14 @@ HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH: HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1eEM24L: eventCount: 0 stepCounts: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 1 stepFeatures: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 1 HLT_e5_idperf_tight_L1EM3: eventCount: 16 @@ -2090,19 +1996,19 @@ HLT_e5_idperf_tight_L1EM3: 3: 25 4: 25 HLT_e5_idperf_tight_L1eEM5: - eventCount: 13 + eventCount: 9 stepCounts: - 0: 19 - 1: 19 - 2: 13 - 3: 13 - 4: 13 + 0: 9 + 1: 9 + 2: 9 + 3: 9 + 4: 9 stepFeatures: - 0: 28 - 1: 28 - 2: 20 - 3: 20 - 4: 20 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 14 HLT_e5_idperf_tight_nogsf_L1EM3: eventCount: 16 stepCounts: @@ -2116,17 +2022,17 @@ HLT_e5_idperf_tight_nogsf_L1EM3: 2: 25 3: 25 HLT_e5_idperf_tight_nogsf_L1eEM5: - eventCount: 13 + eventCount: 9 stepCounts: - 0: 19 - 1: 19 - 2: 13 - 3: 13 + 0: 9 + 1: 9 + 2: 9 + 3: 9 stepFeatures: - 0: 28 - 1: 28 - 2: 20 - 3: 20 + 0: 14 + 1: 14 + 2: 14 + 3: 14 HLT_e5_lhtight_L1EM3: eventCount: 0 stepCounts: @@ -2147,20 +2053,8 @@ HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-eEM15: eventCount: 0 - stepCounts: - 0: 2 - 1: 2 - 2: 1 - 3: 1 - 4: 1 - 5: 1 stepFeatures: - 0: 7 - 1: 5 - 2: 11 - 3: 3 - 4: 2 - 5: 2 + 0: 3 HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: @@ -2168,19 +2062,19 @@ HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-eEM9: eventCount: 0 stepCounts: - 0: 2 - 1: 2 + 0: 1 + 1: 1 2: 1 3: 1 4: 1 5: 1 stepFeatures: - 0: 8 - 1: 6 - 2: 13 - 3: 3 - 4: 2 - 5: 2 + 0: 5 + 1: 2 + 2: 5 + 3: 2 + 4: 1 + 5: 1 HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e5_lhtight_noringer_L1EM3: @@ -2282,20 +2176,6 @@ HLT_e5_lhvloose_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: eventCount: 0 HLT_e5_lhvloose_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF: eventCount: 0 - stepCounts: - 0: 5 - 1: 5 - 2: 3 - 3: 3 - 4: 3 - 5: 3 - stepFeatures: - 0: 6 - 1: 6 - 2: 7 - 3: 4 - 4: 4 - 5: 4 HLT_e5_lhvloose_nogsf_bBeeM6000_L1BPH-0DR3-EM7J15: eventCount: 0 stepCounts: @@ -2387,7 +2267,7 @@ HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM9: eventCount: 0 stepFeatures: - 0: 15 + 0: 10 HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e9_lhtight_e4_idperf_tight_nogsf_probe_1invmAB5_L1JPSI-1M5-EM7: @@ -2447,9 +2327,9 @@ HLT_g0_hiptrt_L1EM22VHI: HLT_g0_hiptrt_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 + 0: 2 stepFeatures: - 0: 3 + 0: 2 HLT_g100_loose_L1EM22VHI: eventCount: 0 HLT_g100_loose_L1eEM26M: @@ -2469,14 +2349,14 @@ HLT_g10_loose_L1EM7: HLT_g10_loose_L1eEM9: eventCount: 4 stepCounts: - 0: 17 - 1: 8 - 2: 8 + 0: 14 + 1: 7 + 2: 7 3: 4 stepFeatures: - 0: 25 - 1: 8 - 2: 9 + 0: 21 + 1: 7 + 2: 8 3: 4 HLT_g120_loose_L1EM22VHI: eventCount: 0 @@ -2521,14 +2401,14 @@ HLT_g15_loose_L1eEM10L_2mu10_msonly_L1MU5VF_EMPTY: HLT_g15_loose_L1eEM12L: eventCount: 3 stepCounts: - 0: 8 - 1: 5 - 2: 4 + 0: 6 + 1: 4 + 2: 3 3: 3 stepFeatures: - 0: 9 - 1: 5 - 2: 4 + 0: 7 + 1: 4 + 2: 3 3: 3 HLT_g15_tight_L1EM10VH: eventCount: 1 @@ -2545,14 +2425,14 @@ HLT_g15_tight_L1EM10VH: HLT_g15_tight_L1eEM12L: eventCount: 1 stepCounts: - 0: 8 - 1: 5 - 2: 4 + 0: 6 + 1: 4 + 2: 3 3: 1 stepFeatures: - 0: 9 - 1: 5 - 2: 4 + 0: 7 + 1: 4 + 2: 3 3: 1 HLT_g20_loose_L1EM15VH: eventCount: 2 @@ -2581,14 +2461,14 @@ HLT_g20_loose_L1EM15VHI: HLT_g20_loose_L1eEM18L: eventCount: 2 stepCounts: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 2 stepFeatures: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 2 HLT_g20_loose_noiso_L1EM15VH: eventCount: 2 @@ -2700,20 +2580,6 @@ HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf 0: 1 HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1eEM22M_jMJJ-300: eventCount: 0 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - 4: 1 - 5: 1 - stepFeatures: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - 4: 1 - 5: 3 HLT_g20_tight_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1EM18VHI_MJJ-300: eventCount: 0 stepCounts: @@ -2775,14 +2641,14 @@ HLT_g25_loose_L1EM20VH: HLT_g25_loose_L1eEM24L: eventCount: 2 stepCounts: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 2 stepFeatures: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 2 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI: eventCount: 0 @@ -2799,15 +2665,15 @@ HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI: HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 - 3: 2 + 0: 2 + 1: 1 + 2: 1 + 3: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 - 3: 2 + 0: 2 + 1: 1 + 2: 1 + 3: 1 HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI: eventCount: 0 stepCounts: @@ -2839,15 +2705,15 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1EM HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 2 HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI: @@ -2865,14 +2731,14 @@ HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI: HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 HLT_g25_medium_L1EM20VH: eventCount: 1 @@ -2893,14 +2759,14 @@ HLT_g25_medium_L1eEM18L_mu24_L1MU18VFCH: HLT_g25_medium_L1eEM24L: eventCount: 1 stepCounts: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 1 stepFeatures: - 0: 4 - 1: 3 - 2: 3 + 0: 3 + 1: 2 + 2: 2 3: 1 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI: eventCount: 0 @@ -2933,15 +2799,15 @@ HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 3 HLT_g25_medium_mu24_L1MU14FCH: @@ -2967,15 +2833,15 @@ HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI: eventCount: 0 stepCounts: @@ -2991,15 +2857,15 @@ HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI: eventCount: 0 stepCounts: @@ -3015,27 +2881,27 @@ HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_dipion4_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI: eventCount: 0 stepCounts: @@ -3051,15 +2917,15 @@ HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI: eventCount: 0 stepCounts: @@ -3075,15 +2941,15 @@ HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI: eventCount: 0 stepCounts: @@ -3099,15 +2965,15 @@ HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI: HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 stepFeatures: - 0: 7 - 1: 6 - 2: 4 - 3: 3 + 0: 5 + 1: 4 + 2: 2 + 3: 2 HLT_g25_tight_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI: eventCount: 0 stepCounts: @@ -3171,16 +3037,16 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 5: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 5: 2 @@ -3247,16 +3113,16 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 5: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 5: 3 @@ -3394,15 +3260,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 5: 1 @@ -3479,15 +3345,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI: @@ -3507,15 +3373,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI: HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1eEM26M: eventCount: 0 stepCounts: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 stepFeatures: - 0: 3 - 1: 2 - 2: 2 + 0: 2 + 1: 1 + 2: 1 3: 1 4: 1 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_xe70_nn_80mTAD_L1EM22VHI: @@ -3985,10 +3851,6 @@ HLT_g45_loose_6j45c_L14J15p0ETA25: eventCount: 0 HLT_g45_loose_6j45c_L14jJ40p0ETA25: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_g45_tight_2j55_0eta200_emergingPTF0p1dR0p4_pf_ftf_L1EM22VHI: eventCount: 0 stepCounts: @@ -4132,31 +3994,19 @@ HLT_hitdvjet200_medium_L1XE55: HLT_hitdvjet200_medium_L1jXE100: eventCount: 0 stepCounts: - 0: 50 - 1: 50 + 0: 2 + 1: 2 stepFeatures: - 0: 50 - 1: 50 + 0: 2 + 1: 2 HLT_hitdvjet260_medium_L1J100: eventCount: 0 HLT_hitdvjet260_medium_L1jJ160: eventCount: 0 - stepCounts: - 0: 47 - 1: 47 - stepFeatures: - 0: 47 - 1: 47 HLT_hitdvjet260_tight_L1J100: eventCount: 0 HLT_hitdvjet260_tight_L1jJ160: eventCount: 0 - stepCounts: - 0: 47 - 1: 47 - stepFeatures: - 0: 47 - 1: 47 HLT_isotrk50_L1XE50: eventCount: 0 HLT_j0_FBDJNOSHARED10etXX20etXX34massXX50fbet_L1J20: @@ -4298,15 +4148,7 @@ HLT_j100_0eta290_020jvt_boffperf_pf_ftf_preselj80_L1J50: 1: 2 2: 2 HLT_j100_0eta290_020jvt_boffperf_pf_ftf_preselj80_L1jJ90: - eventCount: 2 - stepCounts: - 0: 5 - 1: 2 - 2: 2 - stepFeatures: - 0: 5 - 1: 2 - 2: 2 + eventCount: 0 HLT_j110_L1J30: eventCount: 1 stepCounts: @@ -4328,29 +4170,17 @@ HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1J30: 0: 4 1: 1 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1gLJ80: - eventCount: 2 - stepCounts: - 0: 6 - 1: 2 - stepFeatures: - 0: 6 - 1: 2 + eventCount: 0 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1jJ60: eventCount: 2 stepCounts: - 0: 6 + 0: 3 1: 2 stepFeatures: - 0: 6 + 0: 3 1: 2 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1jLJ80: - eventCount: 2 - stepCounts: - 0: 6 - 1: 2 - stepFeatures: - 0: 6 - 1: 2 + eventCount: 0 HLT_j110_a10t_lcw_jes_L1J30: eventCount: 3 stepCounts: @@ -4358,23 +4188,15 @@ HLT_j110_a10t_lcw_jes_L1J30: stepFeatures: 0: 4 HLT_j110_a10t_lcw_jes_L1gLJ80: - eventCount: 6 - stepCounts: - 0: 6 - stepFeatures: - 0: 8 + eventCount: 0 HLT_j110_a10t_lcw_jes_L1jJ60: - eventCount: 6 + eventCount: 3 stepCounts: - 0: 6 + 0: 3 stepFeatures: - 0: 8 + 0: 4 HLT_j110_a10t_lcw_jes_L1jLJ80: - eventCount: 6 - stepCounts: - 0: 6 - stepFeatures: - 0: 8 + eventCount: 0 HLT_j110_pf_ftf_preselj80_L1J30: eventCount: 1 stepCounts: @@ -4386,10 +4208,10 @@ HLT_j110_pf_ftf_preselj80_L1J30: HLT_j110_pf_ftf_preselj80_L1jJ60: eventCount: 2 stepCounts: - 0: 5 + 0: 3 1: 2 stepFeatures: - 0: 5 + 0: 3 1: 2 HLT_j110f_L1J30p31ETA49: eventCount: 0 @@ -4405,10 +4227,6 @@ HLT_j150_2j55_0eta290_020jvt_bdl1d70_pf_ftf_preselj80XX2j45b90_L1J85_3J30: eventCount: 0 HLT_j150_2j55_0eta290_020jvt_bdl1d70_pf_ftf_preselj80XX2j45b90_L1jJ140_3jJ60: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 2 HLT_j15f_L1RD0_FILLED: eventCount: 10 stepCounts: @@ -4437,10 +4255,6 @@ HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_L1J100: eventCount: 0 HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140: eventCount: 0 - stepCounts: - 0: 50 - stepFeatures: - 0: 50 HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj225_L1J100: eventCount: 0 HLT_j175_0eta290_020jvt_bdl1d60_j60_0eta290_020jvt_bdl1d60_pf_ftf_preselj140b85XXj45b85_L1J100: @@ -4473,10 +4287,6 @@ HLT_j175_pf_ftf_preselj140_L1jJ90: eventCount: 0 HLT_j175_tracklessdR1p2_a10r_subjesIS_ftf_0eta200_L1jLJ140: eventCount: 0 - stepCounts: - 0: 50 - stepFeatures: - 0: 50 HLT_j175f_L1J50p31ETA49: eventCount: 0 HLT_j175f_L1jJ90p31ETA49: @@ -4532,25 +4342,25 @@ HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1RD0_FILLED: 1: 71 2: 71 HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1jJ30: - eventCount: 25 + eventCount: 7 stepCounts: - 0: 50 - 1: 25 - 2: 25 + 0: 7 + 1: 7 + 2: 7 stepFeatures: - 0: 50 - 1: 71 - 2: 71 + 0: 7 + 1: 23 + 2: 23 HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1jJ40: - eventCount: 25 + eventCount: 5 stepCounts: - 0: 50 - 1: 25 - 2: 25 + 0: 5 + 1: 5 + 2: 5 stepFeatures: - 0: 50 - 1: 71 - 2: 71 + 0: 5 + 1: 18 + 2: 18 HLT_j20_0eta290_boffperf_pf_ftf_L1HT190-J15s5pETA21: eventCount: 0 HLT_j20_0eta290_boffperf_pf_ftf_preselcHT450_PhysicsTLA_L1HT190-J15s5pETA21: @@ -4566,15 +4376,7 @@ HLT_j20_L1HT190-J15s5pETA21: HLT_j20_PhysicsTLA_L1HT190-J15s5pETA21: eventCount: 0 HLT_j20_PhysicsTLA_L1HT190-jJ40s5pETA21: - eventCount: 35 - stepCounts: - 0: 35 - 1: 35 - 2: 35 - stepFeatures: - 0: 110 - 1: 110 - 2: 35 + eventCount: 0 HLT_j20_PhysicsTLA_L1J100: eventCount: 0 HLT_j20_PhysicsTLA_L1J50_DETA20-J50J: @@ -4588,25 +4390,9 @@ HLT_j20_PhysicsTLA_L1J50_DETA20-J50J: 1: 10 2: 3 HLT_j20_PhysicsTLA_L1jJ160: - eventCount: 38 - stepCounts: - 0: 38 - 1: 38 - 2: 38 - stepFeatures: - 0: 125 - 1: 125 - 2: 38 + eventCount: 0 HLT_j20_PhysicsTLA_L1jJ90_DETA20-jJ90J: - eventCount: 41 - stepCounts: - 0: 41 - 1: 41 - 2: 41 - stepFeatures: - 0: 134 - 1: 134 - 2: 41 + eventCount: 0 HLT_j20_pf_ftf_presel4j85_PhysicsTLA_L13J50: eventCount: 0 HLT_j20_pf_ftf_presel5j50_PhysicsTLA_L14J15: @@ -4741,10 +4527,6 @@ HLT_j260_pf_ftf_preselj200_L1jJ125: eventCount: 0 HLT_j260_tracklessdR1p2_a10r_subjesIS_ftf_0eta200_L1jLJ140: eventCount: 0 - stepCounts: - 0: 50 - stepFeatures: - 0: 50 HLT_j260f_L1J75p31ETA49: eventCount: 0 HLT_j260f_L1jJ125p31ETA49: @@ -4804,15 +4586,15 @@ HLT_j30_0eta290_020jvt_boffperf_pf_ftf_L1J20: 1: 21 2: 21 HLT_j30_0eta290_020jvt_boffperf_pf_ftf_L1jJ50: - eventCount: 19 + eventCount: 4 stepCounts: - 0: 50 - 1: 19 - 2: 19 + 0: 4 + 1: 4 + 2: 4 stepFeatures: - 0: 50 - 1: 33 - 2: 33 + 0: 4 + 1: 9 + 2: 9 HLT_j30_CLEANllp_calratio_L1LLP-NOMATCH: eventCount: 0 HLT_j30_CLEANllp_calratio_L1TAU100: @@ -5048,15 +4830,15 @@ HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1J20: 1: 17 2: 17 HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1jJ50: - eventCount: 9 + eventCount: 4 stepCounts: - 0: 50 - 1: 9 - 2: 9 - stepFeatures: - 0: 50 - 1: 17 - 2: 17 + 0: 4 + 1: 4 + 2: 4 + stepFeatures: + 0: 4 + 1: 7 + 2: 7 HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1J20: eventCount: 9 stepCounts: @@ -5068,15 +4850,15 @@ HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1J20: 1: 17 2: 17 HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1jJ50: - eventCount: 9 + eventCount: 4 stepCounts: - 0: 50 - 1: 9 - 2: 9 + 0: 4 + 1: 4 + 2: 4 stepFeatures: - 0: 50 - 1: 17 - 2: 17 + 0: 4 + 1: 7 + 2: 7 HLT_j45_320eta490_L1J15p31ETA49: eventCount: 1 stepCounts: @@ -5120,13 +4902,13 @@ HLT_j45_pf_ftf_preselj20_L1RD0_FILLED: 0: 41 1: 24 HLT_j45_pf_ftf_preselj20_L1jJ40: - eventCount: 11 + eventCount: 5 stepCounts: - 0: 41 - 1: 11 + 0: 5 + 1: 5 stepFeatures: - 0: 41 - 1: 24 + 0: 5 + 1: 13 HLT_j45f_L1J15p31ETA49: eventCount: 1 stepCounts: @@ -5262,15 +5044,7 @@ HLT_j60_0eta290_020jvt_boffperf_pf_ftf_L1J50: 1: 7 2: 7 HLT_j60_0eta290_020jvt_boffperf_pf_ftf_L1jJ90: - eventCount: 5 - stepCounts: - 0: 50 - 1: 5 - 2: 5 - stepFeatures: - 0: 50 - 1: 8 - 2: 8 + eventCount: 0 HLT_j60_L1J20: eventCount: 8 stepCounts: @@ -5300,13 +5074,13 @@ HLT_j60_pf_ftf_preselj50_L1J20: 0: 11 1: 10 HLT_j60_pf_ftf_preselj50_L1jJ50: - eventCount: 6 + eventCount: 4 stepCounts: - 0: 12 - 1: 6 + 0: 4 + 1: 4 stepFeatures: - 0: 12 - 1: 10 + 0: 4 + 1: 7 HLT_j60f_L1J20p31ETA49: eventCount: 1 stepCounts: @@ -5314,11 +5088,7 @@ HLT_j60f_L1J20p31ETA49: stepFeatures: 0: 1 HLT_j60f_L1jJ50p31ETA49: - eventCount: 1 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 + eventCount: 0 HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1MJJ-500-NFF: eventCount: 0 HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1jMJJ-500-NFF: @@ -5327,16 +5097,10 @@ HLT_j70_j50a_j0_DJMASS1000j50dphi240_xe90_tcpufit_xe50_cell_L1MJJ-500-NFF: eventCount: 0 HLT_j70_j50a_j0_DJMASS1000j50dphi240_xe90_tcpufit_xe50_cell_L1jMJJ-500-NFF: eventCount: 0 - stepFeatures: - 0: 1 HLT_j70a_j50a_2j35a_SHARED_2j35_0eta290_020jvt_bdl1d70_j0_DJMASS1000j50_pf_ftf_presela60XXa40XX2a25_L1MJJ-500-NFF: eventCount: 0 HLT_j70a_j50a_2j35a_SHARED_2j35_0eta290_020jvt_bdl1d70_j0_DJMASS1000j50_pf_ftf_presela60XXa40XX2a25_L1jMJJ-500-NFF: eventCount: 0 - stepCounts: - 0: 3 - stepFeatures: - 0: 15 HLT_j75_0eta290_020jvt_bdl1d60_3j75_pf_ftf_preselj50b85XX3j50_L14J20: eventCount: 0 HLT_j75_0eta290_020jvt_bdl1d60_3j75_pf_ftf_preselj50b85XX3j50_L14jJ50: @@ -5358,15 +5122,7 @@ HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1J50: 1: 5 2: 5 HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1jJ90: - eventCount: 4 - stepCounts: - 0: 50 - 1: 4 - 2: 4 - stepFeatures: - 0: 50 - 1: 5 - 2: 5 + eventCount: 0 HLT_j80_77bdips_roiftf_preselj20_L1J20: eventCount: 0 stepCounts: @@ -5435,12 +5191,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_ 0: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 - stepCounts: - 0: 11 - 1: 1 - stepFeatures: - 0: 55 - 1: 5 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b90_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b90_L1MU8F_2J15_J20: @@ -5497,12 +5247,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_ 0: 10 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25 : eventCount: 0 - stepCounts: - 0: 11 - 1: 1 - stepFeatures: - 0: 55 - 1: 5 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d85_pf_ftf_presel2c20XX2c20b90_L1J45p0ETA21_3J15p0ETA25 @@ -5576,21 +5320,21 @@ HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1J20: 0: 11 1: 9 HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1jJ50: - eventCount: 5 + eventCount: 4 stepCounts: - 0: 19 - 1: 5 + 0: 4 + 1: 4 stepFeatures: - 0: 19 - 1: 9 + 0: 4 + 1: 8 HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1jLJ60: - eventCount: 5 + eventCount: 4 stepCounts: - 0: 19 - 1: 5 + 0: 4 + 1: 4 stepFeatures: - 0: 19 - 1: 9 + 0: 4 + 1: 8 HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1J20: eventCount: 2 stepCounts: @@ -5602,18 +5346,18 @@ HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1J20: HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1jJ50: eventCount: 2 stepCounts: - 0: 19 + 0: 4 1: 2 stepFeatures: - 0: 19 + 0: 4 1: 2 HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1jLJ60: eventCount: 2 stepCounts: - 0: 19 + 0: 4 1: 2 stepFeatures: - 0: 19 + 0: 4 1: 2 HLT_j85_a10t_lcw_jes_L1J20: eventCount: 9 @@ -5622,17 +5366,17 @@ HLT_j85_a10t_lcw_jes_L1J20: stepFeatures: 0: 17 HLT_j85_a10t_lcw_jes_L1jJ50: - eventCount: 14 + eventCount: 4 stepCounts: - 0: 14 + 0: 4 stepFeatures: - 0: 23 + 0: 9 HLT_j85_a10t_lcw_jes_L1jLJ60: - eventCount: 14 + eventCount: 4 stepCounts: - 0: 14 + 0: 4 stepFeatures: - 0: 23 + 0: 9 HLT_j85_a10t_lcw_nojcalib_L1J20: eventCount: 8 stepCounts: @@ -5640,17 +5384,17 @@ HLT_j85_a10t_lcw_nojcalib_L1J20: stepFeatures: 0: 16 HLT_j85_a10t_lcw_nojcalib_L1jJ50: - eventCount: 12 + eventCount: 4 stepCounts: - 0: 12 + 0: 4 stepFeatures: - 0: 21 + 0: 9 HLT_j85_a10t_lcw_nojcalib_L1jLJ60: - eventCount: 12 + eventCount: 4 stepCounts: - 0: 12 + 0: 4 stepFeatures: - 0: 21 + 0: 9 HLT_j85_pf_ftf_preselj50_L1J20: eventCount: 4 stepCounts: @@ -5662,10 +5406,10 @@ HLT_j85_pf_ftf_preselj50_L1J20: HLT_j85_pf_ftf_preselj50_L1jJ50: eventCount: 4 stepCounts: - 0: 12 + 0: 4 1: 4 stepFeatures: - 0: 12 + 0: 4 1: 4 HLT_j85f_L1J20p31ETA49: eventCount: 0 @@ -5721,32 +5465,14 @@ HLT_mu10_j225_0eta290_020jvt_boffperf_pf_ftf_preselj180_dRAB04_L1J100: eventCount: 0 HLT_mu10_j225_0eta290_020jvt_boffperf_pf_ftf_preselj180_dRAB04_L1jJ160: eventCount: 0 - stepCounts: - 0: 4 - 1: 1 - stepFeatures: - 0: 4 - 1: 1 HLT_mu10_j300_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1J100: eventCount: 0 HLT_mu10_j300_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1jJ160: eventCount: 0 - stepCounts: - 0: 4 - 1: 1 - stepFeatures: - 0: 4 - 1: 1 HLT_mu10_j360_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1J100: eventCount: 0 HLT_mu10_j360_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1jJ160: eventCount: 0 - stepCounts: - 0: 4 - 1: 1 - stepFeatures: - 0: 4 - 1: 1 HLT_mu10_l2mt_L1MU10BO: eventCount: 0 HLT_mu10_l2mt_L1MU10BOM: @@ -6427,23 +6153,15 @@ HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB03_L1MU3V_J15: 5: 7 6: 7 HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB03_L1MU3V_jJ40: - eventCount: 1 + eventCount: 0 stepCounts: - 0: 10 - 1: 8 - 2: 5 - 3: 4 - 4: 4 - 5: 4 - 6: 1 + 0: 1 + 1: 1 + 2: 1 stepFeatures: - 0: 12 - 1: 9 - 2: 5 - 3: 4 - 4: 4 - 5: 12 - 6: 12 + 0: 1 + 1: 1 + 2: 1 HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V: eventCount: 2 stepCounts: @@ -6499,23 +6217,15 @@ HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_J12: 5: 15 6: 15 HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30: - eventCount: 2 + eventCount: 0 stepCounts: - 0: 10 - 1: 8 - 2: 5 - 3: 4 - 4: 4 - 5: 4 - 6: 2 + 0: 2 + 1: 2 + 2: 1 stepFeatures: - 0: 12 - 1: 9 - 2: 5 - 3: 4 - 4: 4 - 5: 17 - 6: 17 + 0: 2 + 1: 2 + 2: 1 HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 1 stepCounts: @@ -6536,34 +6246,18 @@ HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 6: 3 HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU3VjJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: eventCount: 0 +HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: + eventCount: 0 stepCounts: 0: 1 + 1: 1 + 2: 1 stepFeatures: 0: 1 -HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: - eventCount: 1 - stepCounts: - 0: 10 - 1: 8 - 2: 5 - 3: 4 - 4: 4 - 5: 1 - 6: 1 - stepFeatures: - 0: 12 - 1: 9 - 2: 5 - 3: 4 - 4: 4 - 5: 3 - 6: 3 + 1: 1 + 2: 1 HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: eventCount: 1 stepCounts: @@ -6575,51 +6269,29 @@ HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 5: 1 6: 1 stepFeatures: - 0: 5 - 1: 4 - 2: 3 - 3: 2 - 4: 2 - 5: 2 - 6: 2 -HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: - eventCount: 1 - stepCounts: - 0: 10 - 1: 8 - 2: 5 - 3: 4 - 4: 4 - 5: 1 - 6: 1 - stepFeatures: - 0: 12 - 1: 9 - 2: 5 - 3: 4 - 4: 4 + 0: 5 + 1: 4 + 2: 3 + 3: 2 + 4: 2 5: 2 6: 2 -HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: +HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: eventCount: 0 -HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF: +HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 0 stepCounts: - 0: 2 - 1: 2 - 2: 2 - 3: 1 + 0: 1 + 1: 1 + 2: 1 stepFeatures: - 0: 2 - 1: 2 - 2: 2 - 3: 1 + 0: 1 + 1: 1 + 2: 1 +HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: + eventCount: 0 +HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF: + eventCount: 0 HLT_mu4_l2io_L1MU3V: eventCount: 4 stepCounts: @@ -6792,18 +6464,6 @@ HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ90: eventCount: 0 HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ90: eventCount: 0 - stepCounts: - 0: 7 - 1: 5 - 2: 3 - 3: 2 - 4: 2 - stepFeatures: - 0: 7 - 1: 5 - 2: 3 - 3: 2 - 4: 2 HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ50: eventCount: 0 HLT_mu6_j45_nojcalib_L1J20: @@ -6832,24 +6492,16 @@ HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15: 4: 1 HLT_mu6_j60_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_mu6_j60_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40: eventCount: 0 stepCounts: - 0: 10 - 1: 7 - 2: 5 - 3: 3 - 4: 3 + 0: 1 + 1: 1 + 2: 1 stepFeatures: - 0: 10 - 1: 7 - 2: 5 - 3: 3 - 4: 3 + 0: 1 + 1: 1 + 2: 1 HLT_mu6_l2io_mu4_l2io_invmDimu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 HLT_mu6_msonly_L1MU5VF: @@ -7202,23 +6854,23 @@ HLT_noalg_L1XE50: HLT_noalg_L1XE55: eventCount: 0 HLT_noalg_L1gJ160: - eventCount: 27 + eventCount: 0 HLT_noalg_L1gLJ160: - eventCount: 30 + eventCount: 0 HLT_noalg_L1gXEJWOJ100: - eventCount: 44 + eventCount: 0 HLT_noalg_L1gXENC100: - eventCount: 46 + eventCount: 0 HLT_noalg_L1gXERHO100: - eventCount: 46 + eventCount: 0 HLT_noalg_L1jJ160: - eventCount: 47 + eventCount: 0 HLT_noalg_L1jJ500: eventCount: 0 HLT_noalg_L1jLJ140: - eventCount: 50 + eventCount: 0 HLT_noalg_L1jXE100: - eventCount: 50 + eventCount: 2 HLT_noalg_L1jXEPerf100: eventCount: 0 HLT_tau0_mediumRNN_tracktwoMVA_tau0_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -7286,7 +6938,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -7294,7 +6946,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -7302,7 +6954,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau160_perf_tracktwoMVABDT_L1TAU100: eventCount: 0 HLT_tau160_perf_tracktwoMVABDT_L1eTAU140: @@ -7324,7 +6976,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -7332,7 +6984,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -7340,7 +6992,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau180_tightRNN_tracktwoLLP_L1TAU100: eventCount: 0 HLT_tau180_tightRNN_tracktwoLLP_L1eTAU140: @@ -7550,7 +7202,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -7558,7 +7210,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -7566,7 +7218,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: eventCount: 0 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: @@ -7640,19 +7292,19 @@ HLT_tau25_idperf_tracktwoMVABDT_L1TAU12IM: 3: 14 4: 14 HLT_tau25_idperf_tracktwoMVABDT_L1cTAU20M: - eventCount: 9 + eventCount: 10 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 9 + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 10 stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 - 4: 13 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 14 HLT_tau25_idperf_tracktwoMVABDT_L1eTAU20: eventCount: 10 stepCounts: @@ -7696,19 +7348,19 @@ HLT_tau25_idperf_tracktwoMVA_L1TAU12IM: 3: 14 4: 14 HLT_tau25_idperf_tracktwoMVA_L1cTAU20M: - eventCount: 9 + eventCount: 10 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 9 + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 10 stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 - 4: 13 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 14 HLT_tau25_idperf_tracktwoMVA_L1eTAU20: eventCount: 10 stepCounts: @@ -7738,19 +7390,19 @@ HLT_tau25_idperf_tracktwoMVA_L1eTAU20M: 3: 17 4: 17 HLT_tau25_idperf_tracktwoMVA_L1jTAU20: - eventCount: 14 + eventCount: 12 stepCounts: - 0: 14 - 1: 14 - 2: 14 - 3: 14 - 4: 14 + 0: 12 + 1: 12 + 2: 12 + 3: 12 + 4: 12 stepFeatures: - 0: 24 - 1: 24 - 2: 24 - 3: 24 - 4: 24 + 0: 20 + 1: 20 + 2: 20 + 3: 20 + 4: 20 HLT_tau25_looseRNN_trackLRT_L1TAU12IM: eventCount: 4 stepCounts: @@ -7806,14 +7458,14 @@ HLT_tau25_mediumRNN_trackLRT_L1TAU12IM: HLT_tau25_mediumRNN_trackLRT_L1cTAU20M: eventCount: 4 stepCounts: - 0: 9 - 1: 9 - 2: 9 + 0: 10 + 1: 10 + 2: 10 3: 4 stepFeatures: - 0: 13 - 1: 13 - 2: 13 + 0: 14 + 1: 14 + 2: 14 3: 4 HLT_tau25_mediumRNN_trackLRT_L1eTAU20: eventCount: 4 @@ -7842,19 +7494,19 @@ HLT_tau25_mediumRNN_tracktwoLLP_L1TAU12IM: 3: 14 4: 5 HLT_tau25_mediumRNN_tracktwoLLP_L1cTAU20M: - eventCount: 4 + eventCount: 5 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 4 + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 5 stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 - 4: 4 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 5 HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM: eventCount: 2 stepCounts: @@ -7870,19 +7522,19 @@ HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM: 3: 14 4: 2 HLT_tau25_mediumRNN_tracktwoMVABDT_L1cTAU20M: - eventCount: 1 + eventCount: 2 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 1 + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 2 stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 - 4: 1 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 2 HLT_tau25_mediumRNN_tracktwoMVABDT_L1eTAU20: eventCount: 2 stepCounts: @@ -7934,19 +7586,19 @@ HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM: 3: 14 4: 2 HLT_tau25_mediumRNN_tracktwoMVA_L1cTAU20M: - eventCount: 1 + eventCount: 2 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 1 + 0: 10 + 1: 10 + 2: 10 + 3: 10 + 4: 2 stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 - 4: 1 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 2 HLT_tau25_mediumRNN_tracktwoMVA_L1eTAU20: eventCount: 2 stepCounts: @@ -7976,19 +7628,19 @@ HLT_tau25_mediumRNN_tracktwoMVA_L1eTAU20M: 3: 17 4: 2 HLT_tau25_mediumRNN_tracktwoMVA_L1jTAU20: - eventCount: 3 + eventCount: 2 stepCounts: - 0: 14 - 1: 14 - 2: 14 - 3: 14 - 4: 3 + 0: 12 + 1: 12 + 2: 12 + 3: 12 + 4: 2 stepFeatures: - 0: 24 - 1: 24 - 2: 24 - 3: 24 - 4: 4 + 0: 20 + 1: 20 + 2: 20 + 3: 20 + 4: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: @@ -7996,7 +7648,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8004,7 +7656,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8012,7 +7664,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -8023,16 +7675,6 @@ HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_j70_j50a_j0_D eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_j70_j50a_j0_DJMASS900j50_L1jMJJ-500-NFF: eventCount: 0 - stepCounts: - 0: 5 - 1: 5 - 2: 5 - 3: 5 - stepFeatures: - 0: 20 - 1: 20 - 2: 20 - 3: 20 HLT_tau25_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: eventCount: 0 HLT_tau25_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25: @@ -8052,19 +7694,19 @@ HLT_tau25_perf_tracktwoMVABDT_L1TAU12IM: 3: 14 4: 8 HLT_tau25_perf_tracktwoMVABDT_L1cTAU20M: - eventCount: 6 + eventCount: 7 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 6 - stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 + 0: 10 + 1: 10 + 2: 10 + 3: 10 4: 7 + stepFeatures: + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 8 HLT_tau25_perf_tracktwoMVABDT_L1eTAU20: eventCount: 7 stepCounts: @@ -8108,19 +7750,19 @@ HLT_tau25_perf_tracktwoMVA_L1TAU12IM: 3: 14 4: 8 HLT_tau25_perf_tracktwoMVA_L1cTAU20M: - eventCount: 6 + eventCount: 7 stepCounts: - 0: 9 - 1: 9 - 2: 9 - 3: 9 - 4: 6 - stepFeatures: - 0: 13 - 1: 13 - 2: 13 - 3: 13 + 0: 10 + 1: 10 + 2: 10 + 3: 10 4: 7 + stepFeatures: + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 8 HLT_tau25_perf_tracktwoMVA_L1eTAU20: eventCount: 7 stepCounts: @@ -8150,19 +7792,19 @@ HLT_tau25_perf_tracktwoMVA_L1eTAU20M: 3: 17 4: 8 HLT_tau25_perf_tracktwoMVA_L1jTAU20: - eventCount: 12 + eventCount: 10 stepCounts: - 0: 14 - 1: 14 - 2: 14 - 3: 14 - 4: 12 + 0: 12 + 1: 12 + 2: 12 + 3: 12 + 4: 10 stepFeatures: - 0: 24 - 1: 24 - 2: 24 - 3: 24 - 4: 15 + 0: 20 + 1: 20 + 2: 20 + 3: 20 + 4: 11 HLT_tau25_tightRNN_trackLRT_L1TAU12IM: eventCount: 3 stepCounts: @@ -8274,11 +7916,11 @@ HLT_tau35_idperf_tracktwoMVA_L1jTAU30: 3: 9 4: 9 stepFeatures: - 0: 15 - 1: 15 - 2: 15 - 3: 15 - 4: 15 + 0: 14 + 1: 14 + 2: 14 + 3: 14 + 4: 14 HLT_tau35_idperf_tracktwoMVA_L1jTAU30M: eventCount: 6 stepCounts: @@ -8288,11 +7930,11 @@ HLT_tau35_idperf_tracktwoMVA_L1jTAU30M: 3: 6 4: 6 stepFeatures: - 0: 10 - 1: 10 - 2: 10 - 3: 10 - 4: 10 + 0: 9 + 1: 9 + 2: 9 + 3: 9 + 4: 9 HLT_tau35_looseRNN_tracktwoMVA_L1TAU20IM: eventCount: 2 stepCounts: @@ -8362,10 +8004,10 @@ HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30: 3: 9 4: 1 stepFeatures: - 0: 15 - 1: 15 - 2: 15 - 3: 15 + 0: 14 + 1: 14 + 2: 14 + 3: 14 4: 1 HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30M: eventCount: 1 @@ -8376,10 +8018,10 @@ HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30M: 3: 6 4: 1 stepFeatures: - 0: 10 - 1: 10 - 2: 10 - 3: 10 + 0: 9 + 1: 9 + 2: 9 + 3: 9 4: 1 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 @@ -8388,7 +8030,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8396,7 +8038,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8404,7 +8046,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25: @@ -8449,16 +8091,6 @@ HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1cTAU30M_2cT 3: 15 HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1cTAU30M_2cTAU20M_4jJ30p0ETA25: eventCount: 0 - stepCounts: - 0: 4 - 1: 4 - 2: 4 - 3: 4 - stepFeatures: - 0: 15 - 1: 15 - 2: 15 - 3: 15 HLT_tau35_perf_tracktwoMVA_L1TAU20IM: eventCount: 5 stepCounts: @@ -8510,10 +8142,10 @@ HLT_tau35_perf_tracktwoMVA_L1jTAU30: 3: 9 4: 6 stepFeatures: - 0: 15 - 1: 15 - 2: 15 - 3: 15 + 0: 14 + 1: 14 + 2: 14 + 3: 14 4: 7 HLT_tau35_perf_tracktwoMVA_L1jTAU30M: eventCount: 2 @@ -8524,10 +8156,10 @@ HLT_tau35_perf_tracktwoMVA_L1jTAU30M: 3: 6 4: 2 stepFeatures: - 0: 10 - 1: 10 - 2: 10 - 3: 10 + 0: 9 + 1: 9 + 2: 9 + 3: 9 4: 2 HLT_tau35_tightRNN_tracktwoMVA_L1TAU20IM: eventCount: 1 @@ -8554,7 +8186,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8562,7 +8194,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8570,7 +8202,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25: eventCount: 0 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25: @@ -8603,48 +8235,18 @@ HLT_tau40_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB_L1cTAU35M_2cT 3: 12 HLT_tau40_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB_L1cTAU35M_2cTAU30M_2jJ55_3jJ50: eventCount: 0 - stepCounts: - 0: 3 - 1: 3 - 2: 3 - 3: 3 - stepFeatures: - 0: 12 - 1: 12 - 2: 12 - 3: 12 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE50: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE55: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1jXE100: eventCount: 0 - stepCounts: - 0: 4 - 1: 4 - 2: 4 - 3: 4 - stepFeatures: - 0: 5 - 1: 5 - 2: 5 - 3: 5 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE50: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE55: eventCount: 0 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1jXE100: eventCount: 0 - stepCounts: - 0: 4 - 1: 4 - 2: 4 - 3: 4 - stepFeatures: - 0: 5 - 1: 5 - 2: 5 - 3: 5 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: @@ -8652,7 +8254,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8660,7 +8262,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8668,7 +8270,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoMVA_L1TAU40: eventCount: 0 stepCounts: @@ -8700,7 +8302,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8708,7 +8310,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8716,7 +8318,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1TAU40_2TAU12IM_XE40: eventCount: 0 HLT_tau80_idperf_trackLRT_L1TAU60: @@ -8786,7 +8388,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8794,7 +8396,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8802,7 +8404,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoLLP_tau60_mediumRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40: eventCount: 0 stepCounts: @@ -8886,7 +8488,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: @@ -8894,7 +8496,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: @@ -8902,7 +8504,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55: HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1TAU60_DR-TAU20ITAU12I: eventCount: 0 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1eTAU80_2cTAU30M_DR-eTAU30eTAU20: @@ -8982,11 +8584,11 @@ HLT_xe30_cell_xe30_tcpufit_L1XE30: stepFeatures: 0: 2 HLT_xe30_cell_xe30_tcpufit_L1jXE70: - eventCount: 5 + eventCount: 3 stepCounts: - 0: 5 + 0: 3 stepFeatures: - 0: 23 + 0: 6 HLT_xe30_cvfpufit_L1XE30: eventCount: 1 stepCounts: @@ -9079,12 +8681,10 @@ HLT_xe30_trkmht_L1XE30: 1: 1 HLT_xe55_cell_xe105_nn_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe55_cell_xe105_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe55_cell_xe70_tcpufit_L1XE50: eventCount: 0 HLT_xe55_cell_xe70_tcpufit_L1XE55: @@ -9096,7 +8696,7 @@ HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE55: HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50: eventCount: 0 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55: @@ -9104,15 +8704,13 @@ HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55: HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe55_cell_xe90_nn_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe55_cell_xe90_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe60_cell_L1XE50: eventCount: 0 HLT_xe60_cell_xe95_pfsum_cssk_L1XE50: @@ -9122,27 +8720,21 @@ HLT_xe60_cell_xe95_pfsum_cssk_L1XE55: HLT_xe60_cell_xe95_pfsum_cssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50: eventCount: 0 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE55: eventCount: 0 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXENC100: eventCount: 0 - stepFeatures: - 0: 46 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXERHO100: eventCount: 0 - stepFeatures: - 0: 46 HLT_xe65_cell_xe100_mhtpufit_pf_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe100_pfopufit_L1XE55: @@ -9150,7 +8742,7 @@ HLT_xe65_cell_xe100_pfopufit_L1XE55: HLT_xe65_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe105_mhtpufit_em_L1XE50: eventCount: 0 HLT_xe65_cell_xe105_mhtpufit_em_L1XE55: @@ -9158,17 +8750,15 @@ HLT_xe65_cell_xe105_mhtpufit_em_L1XE55: HLT_xe65_cell_xe105_mhtpufit_em_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe105_nn_L1XE50: eventCount: 0 HLT_xe65_cell_xe105_nn_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe65_cell_xe105_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe110_tcpufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe110_tcpufit_L1jXE100: @@ -9181,32 +8771,24 @@ HLT_xe65_cell_xe90_nn_L1XE50: eventCount: 0 HLT_xe65_cell_xe90_nn_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe65_cell_xe90_nn_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe90_pfopufit_L1XE50: eventCount: 0 HLT_xe65_cell_xe90_pfopufit_L1XE55: eventCount: 0 HLT_xe65_cell_xe90_pfopufit_L1gXEJWOJ100: eventCount: 0 - stepFeatures: - 0: 44 HLT_xe65_cell_xe90_pfopufit_L1gXENC100: eventCount: 0 - stepFeatures: - 0: 46 HLT_xe65_cell_xe90_pfopufit_L1gXERHO100: eventCount: 0 - stepFeatures: - 0: 46 HLT_xe65_cell_xe90_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE50: eventCount: 0 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE55: @@ -9218,7 +8800,7 @@ HLT_xe65_cell_xe95_pfsum_vssk_L1XE55: HLT_xe65_cell_xe95_pfsum_vssk_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe75_cell_xe100_pfopufit_L1XE50: eventCount: 0 HLT_xe75_cell_xe100_pfopufit_L1XE55: @@ -9226,7 +8808,7 @@ HLT_xe75_cell_xe100_pfopufit_L1XE55: HLT_xe75_cell_xe100_pfopufit_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50: eventCount: 0 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55: @@ -9234,7 +8816,7 @@ HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55: HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe80_cell_xe115_tcpufit_L1XE50: eventCount: 0 HLT_xe80_cell_xe115_tcpufit_L1XE55: @@ -9282,7 +8864,7 @@ HLT_xe80_tcpufit_hitdvjet200_medium_L1XE55: HLT_xe80_tcpufit_hitdvjet200_medium_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE50: eventCount: 0 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55: @@ -9290,7 +8872,7 @@ HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55: HLT_xe80_tcpufit_hitdvjet200_tight_L1jXE100: eventCount: 0 stepFeatures: - 0: 50 + 0: 2 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE50: eventCount: 0 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE55: diff --git a/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py b/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py new file mode 100755 index 0000000000000000000000000000000000000000..46c10e0b901ab77688cb6c8e37103f5f9771b9c5 --- /dev/null +++ b/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + +# art-description: Trigger RDO->RDO_TRIG athena test of the lowMu menu +# art-type: build +# art-include: master/Athena +# art-include: 23.0/Athena +# Skipping art-output which has no effect for build tests. +# If you create a grid version, check art-output in existing grid tests. + +import sys +from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps, Input + +ex = ExecStep.ExecStep('athena') +ex.type = 'other' +ex.executable = 'runHLT_standalone_newJO.py' +ex.input = 'minbias' +ex.args += ' --filesInput='+Input.get_input(ex.input).paths[0] +ex.args += ' Trigger.triggerMenuSetup="PhysicsP1_pp_lowMu_run3_v1"' +ex.args += ' Trigger.disableChains=[]' # Do not disable any chains +ex.args += ' Trigger.doRuntimeNaviVal=True' +ex.args += ' IOVDb.GlobalTag="OFLCOND-MC21-SDR-RUN3-07"' +ex.prmon = False + +test = Test.Test() +test.art_type = 'build' +test.exec_steps = [ex] +test.check_steps = CheckSteps.default_check_steps(test) + +sys.exit(test.run()) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py index c59973a375da0e046e1ca5fed52dd7d659e4fa33..b97226587b3715e25c519b9a4b1891964a0af317 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py @@ -1,11 +1,8 @@ # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -from TrigHypoCommonTools.TrigHypoCommonToolsConf import L1InfoHypo, L1InfoHypoTool - +from AthenaConfiguration.ComponentFactory import CompFactory, isComponentAccumulatorCfg from TriggerMenuMT.HLT.Config.ChainConfigurationBase import ChainConfigurationBase -from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequence, RecoFragmentsPool -from DecisionHandling.DecisionHandlingConf import InputMakerForRoI, ViewCreatorInitialROITool -from AthenaCommon.CFElements import seqAND +from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequenceCA, SelectionCA, InEventRecoCA, menuSequenceCAToGlobalWrapper from AthenaCommon.Logging import logging logging.getLogger().info("Importing %s",__name__) @@ -59,46 +56,51 @@ l1seeds = { 'low' : \ 'L1_TAU20IM_2TAU12IM_XE35',\ 'L1_TAU40',\ 'L1_XE35', - ] } + ] +} -def enhancedBiasAthSequence(flags): - inputMakerAlg = InputMakerForRoI("IM_enhancedBias") - inputMakerAlg.RoITool = ViewCreatorInitialROITool() - inputMakerAlg.RoIs="enhancedBiasInputRoIs" - enhancedBiasSequence = seqAND("enhancedBiasSequence", [inputMakerAlg]) - return (enhancedBiasAthSequence, inputMakerAlg, enhancedBiasSequence) +def enhancedBiasReco(flags): + inputMakerAlg = CompFactory.InputMakerForRoI("IM_enhancedBias") + inputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool() + inputMakerAlg.RoIs="enhancedBiasInputRoIs" + reco = InEventRecoCA("EnhancedBiasReco", inputMaker=inputMakerAlg) + + return reco -def enahncedBiasSequence_Cfg(flags): - return enhancedBiasMenuSequence(flags) + +def EnhancedBiasHypoToolGen(chainDict): + tool = CompFactory.L1InfoHypoTool(chainDict['chainName']) + tool.CTPUnpackingTool.UseTBPBits = True + + key = chainDict['chainParts'][0]['algType'] + if key not in l1seeds: + log.error("No configuration exist for EB chain: ", key) + else: + tool.L1ItemNames = l1seeds[key] + + return tool def enhancedBiasMenuSequence(flags): - # InputMaker and sequence - (_, inputMakerAlg, enhancedBiasSequence) = RecoFragmentsPool.retrieve(enhancedBiasAthSequence, flags) - - # Hypo - hypoAlg = L1InfoHypo("EnhancedBiasHypo") - - # HypoToolGen - def EnhancedBiasHypoToolGen(chainDict): - tool = L1InfoHypoTool(chainDict['chainName']) - tool.CTPUnpackingTool.UseTBPBits = True - - key = chainDict['chainParts'][0]['algType'] - if key not in l1seeds: - log.error("No configuration exist for EB chain: ", key) - else: - tool.L1ItemNames = l1seeds[key] - - return tool - - return MenuSequence(flags, - Sequence = enhancedBiasSequence, - Maker = inputMakerAlg, - Hypo = hypoAlg, - HypoToolGen = EnhancedBiasHypoToolGen) + + reco = enhancedBiasReco(flags) + selAcc = SelectionCA("enhancedBiasSequence") + selAcc.mergeReco(reco) + selAcc.addHypoAlgo(CompFactory.L1InfoHypo("EnhancedBiasHypo")) + + return MenuSequenceCA(flags, + selAcc, + HypoToolGen = EnhancedBiasHypoToolGen) + + + +def enahncedBiasSequence_Cfg(flags): + if isComponentAccumulatorCfg(): + return enhancedBiasMenuSequence(flags) + else: + return menuSequenceCAToGlobalWrapper(enhancedBiasMenuSequence, flags) class EnhancedBiasChainConfiguration(ChainConfigurationBase): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py index a549bb4708fc4a3df4b5122d7b80d56036c54b75..213d9ae82c66f037e717533031ea5bf862eafc3e 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py @@ -1100,7 +1100,13 @@ def menuSequenceCAToGlobalWrapper(gen, flags, *args, **kwargs): with ConfigurableCABehavior(): msca = gen(flags, *args, **kwargs) assert isinstance(msca, MenuSequenceCA), "Function provided to menuSequenceCAToGlobalWrapper does not generate MenuSequenceCA" + return appendMenuSequenceCAToAthena(msca, flags) +def appendMenuSequenceCAToAthena(msca, flags): + """ + Converts MenuSequenceCA into the MenuSequence, in addition appending aux stuff to global configuration. + For use when MSCA generator function returns a tuple instead of bare MSCA + """ from AthenaCommon.AlgSequence import AthSequencer from AthenaCommon.CFElements import compName, isSequence hypo = conf2toConfigurable(msca.hypo.Alg) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py index 0a7cecd1ef2b9564b360d724c431f26bd43d9c0b..ac04df991ba77f7a9d9c10ce45908ed58bc75830 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py @@ -10,17 +10,17 @@ threshold_mapping = { 'eEM': { # TODO: Update when eFEX EM calibrations are applied - 5:3, - 7:5, - 9:7, - 10:8, - 12:10, - 15:12, - 18:15, - 22:18, - 24:20, - 26:22, - 28:24, + 5:4, + 7:6, + 9:8, + 10:9, + 12:11, + 15:14, + 18:17, + 22:21, + 24:23, + 26:25, + 28:27, }, 'jEM': { 20:15, @@ -61,7 +61,7 @@ threshold_mapping = { 140:140, 160:160, 180:180, - 500:500, + 500:400, }, 'gJ': { diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py index b35ae57206f27a5b6dd3bfe24098d4b7d7dabb3d..8daab947e41d1141522f16185d1496192d10cda4 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py @@ -114,15 +114,15 @@ def getConfig_eEM(): bitshift_reta = 3 bitshift_rhad = 3 bitshift_wstot = 5 - reta_fw_loose = 53 - reta_fw_medium = 65 - reta_fw_tight = 72 - rhad_fw_loose = 16 - rhad_fw_medium = 22 - rhad_fw_tight = 23 + reta_fw_loose = 72 + reta_fw_medium = 81 + reta_fw_tight = 92 + rhad_fw_loose = 92 + rhad_fw_medium = 126 + rhad_fw_tight = 192 wstot_fw_loose = 8 - wstot_fw_medium = 9 - wstot_fw_tight = 25 + wstot_fw_medium = 16 + wstot_fw_tight = 29 # based on https://indico.cern.ch/event/1035198/contributions/4378014/attachments/2251846/3820098/20210526_l1calo_TGM.pdf confObj["workingPoints"]["Loose"] = [ odict([("reta_fw", reta_fw_loose), ("reta", eFEXfwToFloatConversion(reta_fw_loose,bitshift_reta)), @@ -196,7 +196,7 @@ def getConfig_eEM(): ("etamin", 14), ("etamax", 15), ("priority", 1)]), ] confObj["ptMinToTopo"] = 3 - confObj["maxEt"] = 50 + confObj["maxEt"] = 60 confObj["resolutionMeV"] = 100 # Check that FW values are integers