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
0008
0009 MPCleanHitsFilter::MPCleanHitsFilter(const ParameterSet &pset)
0010 : MPFilter(pset), debug_(pset.getUntrackedParameter<bool>("debug")) {
0011 timeTolerance_ = pset.getParameter<int>("timeTolerance");
0012
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);
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);
0033 mpath->primitive(i)->setChannelId(-1);
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 }