File indexing completed on 2024-04-06 12:19:34
0001 #ifndef L1Trigger_CSCTriggerPrimitives_CSCTriggerPrimitivesBuilder_h
0002 #define L1Trigger_CSCTriggerPrimitives_CSCTriggerPrimitivesBuilder_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include "CondFormats/CSCObjects/interface/CSCBadChambers.h"
0022 #include "CondFormats/CSCObjects/interface/CSCL1TPLookupTableCCLUT.h"
0023 #include "CondFormats/CSCObjects/interface/CSCL1TPLookupTableME21ILT.h"
0024 #include "CondFormats/CSCObjects/interface/CSCL1TPLookupTableME11ILT.h"
0025 #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h"
0026 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
0027 #include "DataFormats/CSCDigi/interface/CSCALCTDigiCollection.h"
0028 #include "DataFormats/CSCDigi/interface/CSCCLCTDigiCollection.h"
0029 #include "DataFormats/CSCDigi/interface/CSCALCTPreTriggerDigiCollection.h"
0030 #include "DataFormats/CSCDigi/interface/CSCCLCTPreTriggerDigiCollection.h"
0031 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
0032 #include "DataFormats/CSCDigi/interface/CSCCLCTPreTriggerCollection.h"
0033 #include "DataFormats/CSCDigi/interface/CSCShowerDigiCollection.h"
0034 #include "DataFormats/GEMDigi/interface/GEMPadDigiClusterCollection.h"
0035 #include "DataFormats/GEMDigi/interface/GEMCoPadDigiCollection.h"
0036 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0037 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0038
0039 class CSCDBL1TPParameters;
0040 class CSCMotherboard;
0041 class CSCMuonPortCard;
0042 class CSCGeometry;
0043 class GEMGeometry;
0044 class CSCTriggerPrimitivesBuilder {
0045 public:
0046
0047
0048
0049
0050 explicit CSCTriggerPrimitivesBuilder(const edm::ParameterSet&);
0051
0052 ~CSCTriggerPrimitivesBuilder();
0053
0054 struct BuildContext {
0055 const CSCL1TPLookupTableCCLUT* cclut_;
0056 const CSCL1TPLookupTableME11ILT* me11ilt_;
0057 const CSCL1TPLookupTableME21ILT* me21ilt_;
0058 const CSCGeometry* cscgeom_;
0059 const GEMGeometry* gemgeom_;
0060 const CSCDBL1TPParameters* parameters_;
0061 };
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072 void build(const CSCBadChambers* badChambers,
0073 const CSCWireDigiCollection* wiredc,
0074 const CSCComparatorDigiCollection* compdc,
0075 const GEMPadDigiClusterCollection* gemPadClusters,
0076 const BuildContext& context,
0077 CSCALCTDigiCollection& oc_alct,
0078 CSCCLCTDigiCollection& oc_clct,
0079 CSCALCTPreTriggerDigiCollection& oc_alctpretrigger,
0080 CSCCLCTPreTriggerDigiCollection& oc_clctpretrigger,
0081 CSCCLCTPreTriggerCollection& oc_pretrig,
0082 CSCCorrelatedLCTDigiCollection& oc_lct,
0083 CSCCorrelatedLCTDigiCollection& oc_sorted_lct,
0084 CSCShowerDigiCollection& oc_shower_anode,
0085 CSCShowerDigiCollection& oc_shower_cathode,
0086 CSCShowerDigiCollection& oc_shower,
0087 GEMCoPadDigiCollection& oc_gemcopad);
0088
0089
0090
0091 enum trig_cscs { MAX_ENDCAPS = 2, MAX_STATIONS = 4, MAX_SECTORS = 6, MAX_SUBSECTORS = 2, MAX_CHAMBERS = 9 };
0092
0093 private:
0094
0095
0096
0097 template <class T, class S>
0098 void put(const T&, S&, const CSCDetId&, std::string comment);
0099
0100
0101
0102 static const int min_endcap;
0103 static const int max_endcap;
0104 static const int min_station;
0105 static const int max_station;
0106 static const int min_sector;
0107 static const int max_sector;
0108 static const int min_subsector;
0109 static const int max_subsector;
0110 static const int min_chamber;
0111 static const int max_chamber;
0112
0113
0114 int infoV;
0115
0116
0117 bool checkBadChambers_;
0118
0119
0120 bool runPhase2_;
0121
0122
0123 bool disableME42_;
0124
0125
0126 bool runME11Up_;
0127 bool runME21Up_;
0128
0129
0130 bool runME11ILT_;
0131
0132
0133 bool runME21ILT_;
0134
0135
0136 std::vector<std::string> selectedChambers_;
0137
0138
0139 std::unique_ptr<CSCMotherboard> tmb_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS][MAX_SUBSECTORS][MAX_CHAMBERS];
0140
0141
0142 std::unique_ptr<CSCMuonPortCard> mpc_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS];
0143 };
0144
0145 template <class T, class S>
0146 void CSCTriggerPrimitivesBuilder::put(const T& t, S& s, const CSCDetId& detid, std::string comment) {
0147 if (!t.empty()) {
0148 LogTrace("L1CSCTrigger") << "Put " << t.size() << comment << ((t.size() > 1) ? "s " : " ") << "in collection\n";
0149 s.put(std::make_pair(t.begin(), t.end()), detid);
0150 }
0151 }
0152
0153 #endif