File indexing completed on 2024-09-07 04:36:59
0001 #ifndef OMTF_OMTFProcessor_H
0002 #define OMTF_OMTFProcessor_H
0003
0004 #include <map>
0005
0006 #include "L1Trigger/L1TMuonOverlap/interface/GoldenPattern.h"
0007 #include "L1Trigger/L1TMuonOverlap/interface/OMTFResult.h"
0008 #include "L1Trigger/L1TMuonOverlap/interface/OMTFConfiguration.h"
0009
0010 class L1TMuonOverlapParams;
0011 class OMTFinput;
0012
0013 class SimTrack;
0014
0015 namespace edm {
0016 class ParameterSet;
0017 }
0018
0019 class OMTFProcessor {
0020 public:
0021 typedef std::map<Key, OMTFResult> resultsMap;
0022
0023 OMTFProcessor() {}
0024
0025 ~OMTFProcessor();
0026
0027
0028 bool configure(const OMTFConfiguration *omtfParams, const L1TMuonOverlapParams *omtfPatterns);
0029
0030
0031
0032
0033
0034 const std::vector<OMTFProcessor::resultsMap> &processInput(unsigned int iProcessor, const OMTFinput &aInput);
0035
0036
0037 const std::map<Key, GoldenPattern *> &getPatterns() const;
0038
0039
0040
0041
0042 void fillCounts(unsigned int iProcessor, const OMTFinput &aInput, const SimTrack *aSimMuon);
0043
0044
0045
0046
0047 void averagePatterns(int charge);
0048
0049 private:
0050
0051 void resetConfiguration();
0052
0053
0054
0055 bool addGP(GoldenPattern *aGP);
0056
0057
0058
0059 void shiftGP(GoldenPattern *aGP,
0060 const GoldenPattern::vector2D &meanDistPhiNew,
0061 const GoldenPattern::vector2D &meanDistPhiOld);
0062
0063
0064
0065 void fillInputRange(unsigned int iProcessor, unsigned int iCone, const OMTFinput &aInput);
0066
0067 void fillInputRange(unsigned int iProcessor, unsigned int iCone, unsigned int iRefLayer, unsigned int iHit);
0068
0069
0070
0071 OMTFinput::vector1D restrictInput(unsigned int iProcessor,
0072 unsigned int iCone,
0073 unsigned int iLayer,
0074 const OMTFinput::vector1D &layerHits);
0075
0076
0077 std::map<Key, GoldenPattern *> theGPs;
0078
0079
0080
0081
0082 std::vector<OMTFProcessor::resultsMap> myResults;
0083
0084
0085
0086 const OMTFConfiguration *myOmtfConfig;
0087 };
0088
0089 #endif