File indexing completed on 2024-04-06 12:19:34
0001 #ifndef L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboard_h
0002 #define L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboard_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include "L1Trigger/CSCTriggerPrimitives/interface/CSCMotherboard.h"
0016 #include "L1Trigger/CSCTriggerPrimitives/interface/GEMInternalCluster.h"
0017 #include "L1Trigger/CSCTriggerPrimitives/interface/GEMClusterProcessor.h"
0018 #include "L1Trigger/CSCTriggerPrimitives/interface/CSCGEMMatcher.h"
0019 #include "Geometry/GEMGeometry/interface/GEMGeometry.h"
0020
0021 class CSCGEMMotherboard : public CSCMotherboard {
0022 public:
0023 typedef std::vector<GEMInternalCluster> GEMInternalClusters;
0024
0025
0026 CSCGEMMotherboard(unsigned endcap,
0027 unsigned station,
0028 unsigned sector,
0029 unsigned subsector,
0030 unsigned chamber,
0031 CSCBaseboard::Parameters& conf);
0032
0033 ~CSCGEMMotherboard() override;
0034
0035
0036 void clear();
0037
0038
0039 uint16_t Run2PatternConverter(const int slope) const;
0040
0041 struct RunContext {
0042
0043 const GEMGeometry* gemGeometry_;
0044 const CSCGeometry* cscGeometry_;
0045
0046 const CSCL1TPLookupTableCCLUT* lookupTableCCLUT_;
0047 const CSCL1TPLookupTableME11ILT* lookupTableME11ILT_;
0048 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT_;
0049 const CSCDBL1TPParameters* parameters_;
0050 };
0051
0052 void run(const CSCWireDigiCollection* wiredc,
0053 const CSCComparatorDigiCollection* compdc,
0054 const GEMPadDigiClusterCollection* gemPads,
0055 RunContext const&);
0056
0057
0058 std::shared_ptr<GEMClusterProcessor> clusterProc() const { return clusterProc_; }
0059
0060 private:
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072 void matchALCTCLCTGEM(const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
0073 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT);
0074
0075
0076 void correlateLCTsGEM(const CSCALCTDigi& ALCT,
0077 const CSCCLCTDigi& CLCT,
0078 const GEMInternalClusters& clusters,
0079 const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
0080 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
0081 CSCCorrelatedLCTDigi& lct) const;
0082
0083
0084 void correlateLCTsGEM(const CSCALCTDigi& ALCT, const CSCCLCTDigi& CLCT, CSCCorrelatedLCTDigi& lct) const;
0085
0086
0087 void correlateLCTsGEM(const CSCCLCTDigi& CLCT,
0088 const GEMInternalClusters& clusters,
0089 const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
0090 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
0091 CSCCorrelatedLCTDigi& lct) const;
0092
0093
0094 void correlateLCTsGEM(const CSCALCTDigi& ALCT, const GEMInternalClusters& clusters, CSCCorrelatedLCTDigi& lct) const;
0095
0096
0097 void constructLCTsGEM(const CSCALCTDigi& alct,
0098 const CSCCLCTDigi& clct,
0099 const GEMInternalCluster& gem,
0100 const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
0101 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
0102 CSCCorrelatedLCTDigi& lct) const;
0103
0104
0105 void constructLCTsGEM(const CSCALCTDigi& alct, const CSCCLCTDigi& clct, CSCCorrelatedLCTDigi& lct) const;
0106
0107
0108 void constructLCTsGEM(const CSCCLCTDigi& clct,
0109 const GEMInternalCluster& gem,
0110 const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
0111 const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
0112 CSCCorrelatedLCTDigi& lct) const;
0113
0114
0115 void constructLCTsGEM(const CSCALCTDigi& alct, const GEMInternalCluster& gem, CSCCorrelatedLCTDigi& lct) const;
0116
0117
0118
0119 void sortLCTs(std::vector<CSCCorrelatedLCTDigi>& lcts) const;
0120
0121
0122 unsigned gemId;
0123
0124
0125 std::map<int, GEMInternalClusters> clusters_;
0126
0127
0128 std::unique_ptr<CSCGEMMatcher> cscGEMMatcher_;
0129
0130
0131 std::shared_ptr<GEMClusterProcessor> clusterProc_;
0132
0133
0134 bool drop_low_quality_alct_;
0135 bool drop_low_quality_clct_;
0136
0137 bool drop_low_quality_clct_me1a_;
0138
0139
0140 bool build_lct_from_alct_gem_;
0141 bool build_lct_from_clct_gem_;
0142
0143
0144 unsigned alct_gem_bx_window_size_;
0145 unsigned clct_gem_bx_window_size_;
0146
0147
0148 bool assign_gem_csc_bending_;
0149
0150
0151
0152 bool hasGE21Geometry16Partitions_;
0153 };
0154
0155 #endif