File indexing completed on 2024-04-06 12:19:45
0001 #ifndef Phase2L1Trigger_DTTrigger_PseudoBayesGrouping_h
0002 #define Phase2L1Trigger_DTTrigger_PseudoBayesGrouping_h
0003
0004 #include "L1Trigger/DTTriggerPhase2/interface/MotherGrouping.h"
0005 #include "L1Trigger/DTTriggerPhase2/interface/DTPattern.h"
0006 #include "L1Trigger/DTTriggerPhase2/interface/CandidateGroup.h"
0007
0008
0009
0010
0011
0012
0013 class PseudoBayesGrouping : public MotherGrouping {
0014 public:
0015
0016 PseudoBayesGrouping(const edm::ParameterSet& pset, edm::ConsumesCollector& iC);
0017 ~PseudoBayesGrouping() override;
0018
0019
0020 void initialise(const edm::EventSetup& iEventSetup) override;
0021 void run(edm::Event& iEvent,
0022 const edm::EventSetup& iEventSetup,
0023 const DTDigiCollection& digis,
0024 MuonPathPtrs& outMpath) override;
0025 void finish() override;
0026
0027
0028
0029
0030
0031 private:
0032
0033 void LoadPattern(TString pattern_file_name, int MB_number_input, int SL_shift);
0034 void FillDigisByLayer(const DTDigiCollection* digis);
0035 void CleanDigisByLayer();
0036 void RecognisePatternsByLayerPairs(DTChamberId chamber_ID);
0037 void RecognisePatterns(std::vector<DTPrimitive> digisinLDown,
0038 std::vector<DTPrimitive> digisinLUp,
0039 dtbayesam::DTPatternPtrs patterns);
0040 void ReCleanPatternsAndDigis();
0041 void FillMuonPaths(MuonPathPtrs& mpaths);
0042
0043
0044 struct CandPointGreat {
0045 bool operator()(dtbayesam::CandidateGroupPtr c1, dtbayesam::CandidateGroupPtr c2) { return *c1 > *c2; }
0046 };
0047
0048
0049
0050 const bool debug_;
0051 std::string pattern_filename_;
0052 int pidx_;
0053 int minNLayerHits_;
0054 int allowedVariance_;
0055 bool allowDuplicates_;
0056 bool allowUncorrelatedPatterns_;
0057 bool setLateralities_;
0058 bool saveOnPlace_;
0059 int minSingleSLHitsMax_;
0060 int minSingleSLHitsMin_;
0061 int minUncorrelatedHits_;
0062 uint maxPathsPerMatch_;
0063
0064
0065 std::vector<DTPrimitive> alldigis_;
0066
0067 std::vector<DTPrimitive> digisinL0_;
0068 std::vector<DTPrimitive> digisinL1_;
0069 std::vector<DTPrimitive> digisinL2_;
0070 std::vector<DTPrimitive> digisinL3_;
0071 std::vector<DTPrimitive> digisinL4_;
0072 std::vector<DTPrimitive> digisinL5_;
0073 std::vector<DTPrimitive> digisinL6_;
0074 std::vector<DTPrimitive> digisinL7_;
0075
0076
0077 std::unique_ptr<dtbayesam::CandidateGroupPtrs> prelimMatches_;
0078 std::unique_ptr<dtbayesam::CandidateGroupPtrs> allMatches_;
0079 std::unique_ptr<dtbayesam::CandidateGroupPtrs> finalMatches_;
0080
0081
0082 int nPatterns_;
0083
0084
0085
0086 dtbayesam::DTPatternPtrs allPatterns_[4][3];
0087
0088 dtbayesam::DTPatternPtrs L0L7Patterns_[4][3];
0089 dtbayesam::DTPatternPtrs L1L7Patterns_[4][3];
0090 dtbayesam::DTPatternPtrs L2L7Patterns_[4][3];
0091 dtbayesam::DTPatternPtrs L3L7Patterns_[4][3];
0092 dtbayesam::DTPatternPtrs L4L7Patterns_[4][3];
0093 dtbayesam::DTPatternPtrs L5L7Patterns_[4][3];
0094 dtbayesam::DTPatternPtrs L6L7Patterns_[4][3];
0095
0096 dtbayesam::DTPatternPtrs L0L6Patterns_[4][3];
0097 dtbayesam::DTPatternPtrs L1L6Patterns_[4][3];
0098 dtbayesam::DTPatternPtrs L2L6Patterns_[4][3];
0099 dtbayesam::DTPatternPtrs L3L6Patterns_[4][3];
0100 dtbayesam::DTPatternPtrs L4L6Patterns_[4][3];
0101 dtbayesam::DTPatternPtrs L5L6Patterns_[4][3];
0102
0103 dtbayesam::DTPatternPtrs L0L5Patterns_[4][3];
0104 dtbayesam::DTPatternPtrs L1L5Patterns_[4][3];
0105 dtbayesam::DTPatternPtrs L2L5Patterns_[4][3];
0106 dtbayesam::DTPatternPtrs L3L5Patterns_[4][3];
0107 dtbayesam::DTPatternPtrs L4L5Patterns_[4][3];
0108
0109 dtbayesam::DTPatternPtrs L0L4Patterns_[4][3];
0110 dtbayesam::DTPatternPtrs L1L4Patterns_[4][3];
0111 dtbayesam::DTPatternPtrs L2L4Patterns_[4][3];
0112 dtbayesam::DTPatternPtrs L3L4Patterns_[4][3];
0113
0114 dtbayesam::DTPatternPtrs L0L3Patterns_[4][3];
0115 dtbayesam::DTPatternPtrs L1L3Patterns_[4][3];
0116 dtbayesam::DTPatternPtrs L2L3Patterns_[4][3];
0117
0118 dtbayesam::DTPatternPtrs L0L2Patterns_[4][3];
0119 dtbayesam::DTPatternPtrs L1L2Patterns_[4][3];
0120
0121 dtbayesam::DTPatternPtrs L0L1Patterns_[4][3];
0122 };
0123
0124 #endif