CMS 3D CMS Logo

CSCTriggerPrimitivesBuilder.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCTriggerPrimitivesBuilder_h
2 #define L1Trigger_CSCTriggerPrimitives_CSCTriggerPrimitivesBuilder_h
3 
38 
40 class CSCMotherboard;
41 class CSCMuonPortCard;
42 class CSCGeometry;
43 class GEMGeometry;
45 public:
51 
53 
55  void setConfigParameters(const CSCDBL1TPParameters* conf);
59 
61  void setCSCGeometry(const CSCGeometry* g) { csc_g = g; }
62  void setGEMGeometry(const GEMGeometry* g) { gem_g = g; }
63 
64  // Build anode, cathode, and correlated LCTs in each chamber and fill them
65  // into output collections. Pass collections of wire and comparator digis
66  // to Trigger MotherBoard (TMB) processors, which, in turn, pass them to
67  // ALCT and CLCT processors. Up to 2 anode and 2 cathode LCTs can be found
68  // in each chamber during any bunch crossing. The 2 projections are then
69  // combined into three-dimensional "correlated" LCTs in the TMB. Finally,
70  // MPC processor sorts up to 18 LCTs from 9 TMBs and writes collections of
71  // up to 3 best LCTs per (sub)sector into Event (to be used by the Sector
72  // Receiver).
73  void build(const CSCBadChambers* badChambers,
74  const CSCWireDigiCollection* wiredc,
75  const CSCComparatorDigiCollection* compdc,
76  const GEMPadDigiClusterCollection* gemPadClusters,
77  CSCALCTDigiCollection& oc_alct,
78  CSCCLCTDigiCollection& oc_clct,
79  CSCALCTPreTriggerDigiCollection& oc_alctpretrigger,
80  CSCCLCTPreTriggerDigiCollection& oc_clctpretrigger,
81  CSCCLCTPreTriggerCollection& oc_pretrig,
83  CSCCorrelatedLCTDigiCollection& oc_sorted_lct,
84  CSCShowerDigiCollection& oc_shower_anode,
85  CSCShowerDigiCollection& oc_shower_cathode,
86  CSCShowerDigiCollection& oc_shower,
87  GEMCoPadDigiCollection& oc_gemcopad);
88 
92 
93 private:
97  template <class T, class S>
98  void put(const T&, S&, const CSCDetId&, std::string comment);
99 
102  static const int min_endcap; // endcaps
103  static const int max_endcap;
104  static const int min_station; // stations per endcap
105  static const int max_station;
106  static const int min_sector; // trigger sectors per station
107  static const int max_sector;
108  static const int min_subsector; // trigger subsectors per sector
109  static const int max_subsector;
110  static const int min_chamber; // chambers per trigger subsector
111  static const int max_chamber;
112 
113  // debug
114  int infoV;
115 
118 
121 
124 
128 
131 
134 
136  std::vector<std::string> selectedChambers_;
137 
139  std::unique_ptr<CSCMotherboard> tmb_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS][MAX_SUBSECTORS][MAX_CHAMBERS];
140 
142  std::unique_ptr<CSCMuonPortCard> mpc_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS];
143 
144  // pointers to the geometry
147 };
148 
149 template <class T, class S>
150 void CSCTriggerPrimitivesBuilder::put(const T& t, S& s, const CSCDetId& detid, std::string comment) {
151  if (!t.empty()) {
152  LogTrace("L1CSCTrigger") << "Put " << t.size() << comment << ((t.size() > 1) ? "s " : " ") << "in collection\n";
153  s.put(std::make_pair(t.begin(), t.end()), detid);
154  }
155 }
156 
157 #endif
void build(const CSCBadChambers *badChambers, const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiClusterCollection *gemPadClusters, CSCALCTDigiCollection &oc_alct, CSCCLCTDigiCollection &oc_clct, CSCALCTPreTriggerDigiCollection &oc_alctpretrigger, CSCCLCTPreTriggerDigiCollection &oc_clctpretrigger, CSCCLCTPreTriggerCollection &oc_pretrig, CSCCorrelatedLCTDigiCollection &oc_lct, CSCCorrelatedLCTDigiCollection &oc_sorted_lct, CSCShowerDigiCollection &oc_shower_anode, CSCShowerDigiCollection &oc_shower_cathode, CSCShowerDigiCollection &oc_shower, GEMCoPadDigiCollection &oc_gemcopad)
std::unique_ptr< CSCMotherboard > tmb_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS][MAX_SUBSECTORS][MAX_CHAMBERS]
void setGEMGeometry(const GEMGeometry *g)
void setCSCGeometry(const CSCGeometry *g)
set CSC and GEM geometries for the matching needs
std::unique_ptr< CSCMuonPortCard > mpc_[MAX_ENDCAPS][MAX_STATIONS][MAX_SECTORS]
std::vector< std::string > selectedChambers_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
#define LogTrace(id)
void setConfigParameters(const CSCDBL1TPParameters *conf)
CSCTriggerPrimitivesBuilder(const edm::ParameterSet &)
void setESLookupTables(const CSCL1TPLookupTableCCLUT *conf)
void put(const T &, S &, const CSCDetId &, std::string comment)
bool checkBadChambers_
a flag whether to skip chambers from the bad chambers map
long double T
A container for a generic type of digis indexed by some index, implemented with a map<IndexType...