Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:47

0001 #include "L1Trigger/DTTriggerPhase2/interface/MPCleanHitsFilter.h"
0002 
0003 using namespace edm;
0004 using namespace std;
0005 
0006 // ============================================================================
0007 // Constructors and destructor
0008 // ============================================================================
0009 MPCleanHitsFilter::MPCleanHitsFilter(const ParameterSet &pset)
0010     : MPFilter(pset), debug_(pset.getUntrackedParameter<bool>("debug")) {
0011   timeTolerance_ = pset.getParameter<int>("timeTolerance");
0012   // probably something close to the max time drift (400ns/2) is a reasonable value
0013 }
0014 void MPCleanHitsFilter::run(edm::Event &iEvent,
0015                             const edm::EventSetup &iEventSetup,
0016                             MuonPathPtrs &inMPaths,
0017                             MuonPathPtrs &outMPaths) {
0018   for (const auto &mpath : inMPaths) {
0019     auto mpAux = std::make_shared<MuonPath>(*mpath);
0020     removeOutliers(mpAux);  // remove hits that are more than 1 bX from the meantime.
0021 
0022     outMPaths.emplace_back(mpAux);
0023   }
0024 }
0025 
0026 void MPCleanHitsFilter::removeOutliers(MuonPathPtr &mpath) {
0027   int MeanTime = getMeanTime(mpath);
0028   for (int i = 0; i < mpath->nprimitives(); i++) {
0029     if (!mpath->primitive(i)->isValidTime())
0030       continue;
0031     if (std::abs(mpath->primitive(i)->tdcTimeStamp() - MeanTime) > timeTolerance_) {
0032       mpath->primitive(i)->setTDCTimeStamp(-1);  //invalidate hit
0033       mpath->primitive(i)->setChannelId(-1);     //invalidate hit
0034     }
0035   }
0036 }
0037 
0038 double MPCleanHitsFilter::getMeanTime(MuonPathPtr &mpath) {
0039   float meantime = 0.;
0040   float count = 0.;
0041   for (int i = 0; i < mpath->nprimitives(); i++) {
0042     if (mpath->primitive(i) == nullptr)
0043       continue;
0044     if (!mpath->primitive(i)->isValidTime())
0045       continue;
0046     meantime += mpath->primitive(i)->tdcTimeStamp();
0047     count++;
0048   }
0049   return meantime / count;
0050 }