Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:55:22

0001 #ifndef L1TMUONBARRELKALMANSECTORPROCESSOR_H
0002 #define L1TMUONBARRELKALMANSECTORPROCESSOR_H
0003 
0004 #include "DataFormats/L1TMuon/interface/L1MuKBMTCombinedStub.h"
0005 #include "L1Trigger/L1TMuonBarrel/interface/L1TMuonBarrelKalmanAlgo.h"
0006 #include "L1Trigger/L1TMuonBarrel/interface/L1TMuonBarrelKalmanRegionModule.h"
0007 
0008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0009 
0010 class L1TMuonBarrelKalmanSectorProcessor {
0011 public:
0012   L1TMuonBarrelKalmanSectorProcessor(const edm::ParameterSet&, int sector);
0013   ~L1TMuonBarrelKalmanSectorProcessor();
0014 
0015   L1MuKBMTrackCollection process(L1TMuonBarrelKalmanAlgo*, const L1MuKBMTCombinedStubRefVector& stubs, int bx);
0016   void verbose(L1TMuonBarrelKalmanAlgo*, const L1MuKBMTrackCollection&);
0017 
0018 private:
0019   class TrackSorter {
0020   public:
0021     TrackSorter() {}
0022 
0023     bool operator()(const L1MuKBMTrack& a, const L1MuKBMTrack& b) {
0024       if (a.pt() >= b.pt())
0025         return true;
0026       return false;
0027     }
0028   };
0029 
0030   int verbose_;
0031   int sector_;
0032 
0033   std::vector<L1TMuonBarrelKalmanRegionModule> regions_;
0034 
0035   //For patterns
0036   typedef struct {
0037     int pt_1;
0038     int qual_1;
0039     int eta_1;
0040     int HF_1;
0041     int phi_1;
0042     int bx0_1;
0043     int charge_1;
0044     int chargeValid_1;
0045     int dxy_1;
0046     int addr1_1;
0047     int addr2_1;
0048     int addr3_1;
0049     int addr4_1;
0050     int reserved_1;
0051     int wheel_1;
0052     int ptSTA_1;
0053     int SE_1;
0054 
0055     int pt_2;
0056     int qual_2;
0057     int eta_2;
0058     int HF_2;
0059     int phi_2;
0060     int bx0_2;
0061     int charge_2;
0062     int chargeValid_2;
0063     int dxy_2;
0064     int addr1_2;
0065     int addr2_2;
0066     int addr3_2;
0067     int addr4_2;
0068     int reserved_2;
0069     int wheel_2;
0070     int ptSTA_2;
0071     int SE_2;
0072 
0073     int pt_3;
0074     int qual_3;
0075     int eta_3;
0076     int HF_3;
0077     int phi_3;
0078     int bx0_3;
0079     int charge_3;
0080     int chargeValid_3;
0081     int dxy_3;
0082     int addr1_3;
0083     int addr2_3;
0084     int addr3_3;
0085     int addr4_3;
0086     int reserved_3;
0087     int wheel_3;
0088     int ptSTA_3;
0089     int SE_3;
0090 
0091   } bmtf_out;
0092 
0093   bmtf_out makeWord(L1TMuonBarrelKalmanAlgo*, const L1MuKBMTrackCollection&);
0094   //  L1MuKBMTrackCollection cleanAndSort(const L1MuKBMTrackCollection&,uint keep);
0095 
0096   L1MuKBMTrackCollection cleanNeighbor(const L1MuKBMTrackCollection&, const L1MuKBMTrackCollection&);
0097   L1MuKBMTrackCollection cleanNeighbors(const L1MuKBMTrackCollection&,
0098                                         const L1MuKBMTrackCollection&,
0099                                         const L1MuKBMTrackCollection&);
0100   L1MuKBMTrackCollection wedgeSort(const L1MuKBMTrackCollection&,
0101                                    const L1MuKBMTrackCollection&,
0102                                    const L1MuKBMTrackCollection&,
0103                                    const L1MuKBMTrackCollection&,
0104                                    const L1MuKBMTrackCollection&);
0105 };
0106 
0107 #endif