8 : region_(region), station_(station), chamber_(chamber) {
39 if (in_clusters ==
nullptr) {
40 edm::LogWarning(
"GEMClusterProcessor") <<
"Attempt to run without valid in_clusters pointer.";
55 std::vector<GEMInternalCluster>
output;
74 std::vector<GEMInternalCluster>
output;
78 if (
cl.bx() == bx and
cl.isCoincidence()) {
88 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
89 const GEMDetId&
id = (*det_range).first;
107 auto co_clusters_range = in_clusters->get(co_id);
110 if (co_clusters_range.first == co_clusters_range.second)
114 const auto& pads_range = (*det_range).second;
115 for (
auto p = pads_range.first;
p != pads_range.second; ++
p) {
126 for (
auto co_p = co_clusters_range.first; co_p != co_clusters_range.second; ++co_p) {
128 if (!co_p->isValid())
140 int cl2_min = co_p->pads().front();
141 int cl2_max = co_p->pads().back();
144 const bool condition1(cl1_min <= cl2_min and cl1_max >= cl2_min);
145 const bool condition2(cl1_min <= cl2_max and cl1_max >= cl2_max);
146 const bool match(condition1
or condition2);
161 const std::vector<GEMInternalCluster>& coincidences =
clusters_;
164 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
165 const GEMDetId&
id = (*det_range).first;
175 const auto& clusters_range = (*det_range).second;
176 for (
auto p = clusters_range.first;
p != clusters_range.second; ++
p) {
205 if (cluster.cl1().isValid()) {
207 const int layer1_first_pad = cluster.layer1_pad();
208 const int layer1_last_pad = layer1_first_pad + cluster.layer1_size() - 1;
211 int layer1_pad_to_first_hs = -1;
212 int layer1_pad_to_last_hs = -1;
213 int layer1_pad_to_first_hs_me1a = -1;
214 int layer1_pad_to_last_hs_me1a = -1;
245 int layer1_middle_hs = 0.5 * (layer1_pad_to_first_hs + layer1_pad_to_last_hs);
246 int layer1_middle_hs_me1a = 0.5 * (layer1_pad_to_first_hs_me1a + layer1_pad_to_last_hs_me1a);
249 cluster.set_layer1_first_hs(layer1_pad_to_first_hs);
250 cluster.set_layer1_last_hs(layer1_pad_to_last_hs);
251 cluster.set_layer1_middle_hs(layer1_middle_hs);
254 cluster.set_layer1_first_hs_me1a(layer1_pad_to_first_hs_me1a);
255 cluster.set_layer1_last_hs_me1a(layer1_pad_to_last_hs_me1a);
256 cluster.set_layer1_middle_hs_me1a(layer1_middle_hs_me1a);
259 int layer1_pad_to_first_es = -1;
260 int layer1_pad_to_last_es = -1;
262 int layer1_pad_to_first_es_me1a = -1;
263 int layer1_pad_to_last_es_me1a = -1;
294 int layer1_middle_es = 0.5 * (layer1_pad_to_first_es + layer1_pad_to_last_es);
295 int layer1_middle_es_me1a = 0.5 * (layer1_pad_to_first_es_me1a + layer1_pad_to_last_es_me1a);
297 cluster.set_layer1_first_es(layer1_pad_to_first_es);
298 cluster.set_layer1_last_es(layer1_pad_to_last_es);
299 cluster.set_layer1_middle_es(layer1_middle_es);
302 cluster.set_layer1_first_es_me1a(layer1_pad_to_first_es_me1a);
303 cluster.set_layer1_last_es_me1a(layer1_pad_to_last_es_me1a);
304 cluster.set_layer1_middle_es_me1a(layer1_middle_es_me1a);
309 const int roll = cluster.roll() - 1;
311 int roll_l1_to_min_wg = -1;
312 int roll_l1_to_max_wg = -1;
337 cluster.set_layer1_min_wg(roll_l1_to_min_wg);
338 cluster.set_layer1_max_wg(roll_l1_to_max_wg);
341 if (cluster.cl2().isValid()) {
343 const int layer2_first_pad = cluster.layer2_pad();
344 const int layer2_last_pad = layer2_first_pad + cluster.layer2_size() - 1;
347 int layer2_pad_to_first_hs = -1;
348 int layer2_pad_to_last_hs = -1;
349 int layer2_pad_to_first_hs_me1a = -1;
350 int layer2_pad_to_last_hs_me1a = -1;
380 int layer2_middle_hs = 0.5 * (layer2_pad_to_first_hs + layer2_pad_to_last_hs);
381 int layer2_middle_hs_me1a = 0.5 * (layer2_pad_to_first_hs_me1a + layer2_pad_to_last_hs_me1a);
384 cluster.set_layer2_first_hs(layer2_pad_to_first_hs);
385 cluster.set_layer2_last_hs(layer2_pad_to_last_hs);
386 cluster.set_layer2_middle_hs(layer2_middle_hs);
389 cluster.set_layer2_first_hs_me1a(layer2_pad_to_first_hs_me1a);
390 cluster.set_layer2_last_hs_me1a(layer2_pad_to_last_hs_me1a);
391 cluster.set_layer2_middle_hs_me1a(layer2_middle_hs_me1a);
394 int layer2_pad_to_first_es = -1;
395 int layer2_pad_to_last_es = -1;
397 int layer2_pad_to_first_es_me1a = -1;
398 int layer2_pad_to_last_es_me1a = -1;
429 int layer2_middle_es = 0.5 * (layer2_pad_to_first_es + layer2_pad_to_last_es);
430 int layer2_middle_es_me1a = 0.5 * (layer2_pad_to_first_es_me1a + layer2_pad_to_last_es_me1a);
432 cluster.set_layer2_first_es(layer2_pad_to_first_es);
433 cluster.set_layer2_last_es(layer2_pad_to_last_es);
434 cluster.set_layer2_middle_es(layer2_middle_es);
437 cluster.set_layer2_first_es_me1a(layer2_pad_to_first_es_me1a);
438 cluster.set_layer2_last_es_me1a(layer2_pad_to_last_es_me1a);
439 cluster.set_layer2_middle_es_me1a(layer2_middle_es_me1a);
445 const int roll = cluster.roll() - 1;
447 int roll_l2_to_min_wg = -1;
448 int roll_l2_to_max_wg = -1;
473 cluster.set_layer2_min_wg(roll_l2_to_min_wg);
474 cluster.set_layer2_max_wg(roll_l2_to_max_wg);
479 std::vector<GEMCoPadDigi>
output;
484 if (!cluster.isCoincidence())
488 output.emplace_back(cluster.roll(), cluster.mid1(), cluster.mid2());
unsigned GEM_pad_CSC_es_ME1b_odd(unsigned pad) const
unsigned GEM_pad_CSC_es_ME21_even(unsigned pad) const
unsigned GEM_roll_L2_CSC_max_wg_ME21_odd(unsigned roll) const
std::vector< GEMInternalCluster > clusters_
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< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
unsigned GEM_roll_L2_CSC_min_wg_ME21_even(unsigned roll) const
unsigned GEM_pad_CSC_hs_ME1b_odd(unsigned pad) const
unsigned GEM_roll_L1_CSC_min_wg_ME21_odd(unsigned roll) const
void run(const GEMPadDigiClusterCollection *)
unsigned GEM_roll_L2_CSC_min_wg_ME11_odd(unsigned roll) const
bool isME0(GeomDetEnumerators::SubDetector m)
unsigned GEM_roll_L1_CSC_max_wg_ME11_odd(unsigned roll) const
void doCoordinateConversion()
unsigned GEM_pad_CSC_hs_ME21_even(unsigned pad) const
unsigned GEM_pad_CSC_es_ME1a_even(unsigned pad) const
constexpr std::array< uint8_t, layerIndexSize > layer
unsigned GEM_pad_CSC_es_ME21_odd(unsigned pad) const
std::vector< GEMCoPadDigi > readoutCoPads() const
unsigned GEM_roll_L1_CSC_max_wg_ME21_even(unsigned roll) const
Abs< T >::type abs(const T &t)
unsigned GEM_pad_CSC_hs_ME1a_odd(unsigned pad) const
void addSingleClusters(const GEMPadDigiClusterCollection *)
unsigned GEM_roll_L1_CSC_max_wg_ME21_odd(unsigned roll) const
unsigned GEM_roll_L1_CSC_min_wg_ME11_even(unsigned roll) const
bool hasGE21Geometry16Partitions_
unsigned GEM_roll_L2_CSC_max_wg_ME11_even(unsigned roll) const
unsigned int maxDeltaRoll_
unsigned GEM_roll_L1_CSC_max_wg_ME11_even(unsigned roll) const
unsigned GEM_pad_CSC_es_ME1b_even(unsigned pad) const
unsigned GEM_roll_L2_CSC_min_wg_ME21_odd(unsigned roll) const
const CSCL1TPLookupTableME21ILT * lookupTableME21ILT_
void setESLookupTables(const CSCL1TPLookupTableME11ILT *conf)
T getParameter(std::string const &) const
unsigned GEM_pad_CSC_hs_ME1b_even(unsigned pad) const
unsigned GEM_roll_L1_CSC_min_wg_ME21_even(unsigned roll) const
void addCoincidenceClusters(const GEMPadDigiClusterCollection *)
unsigned GEM_pad_CSC_hs_ME1a_even(unsigned pad) const
unsigned GEM_pad_CSC_es_ME1a_odd(unsigned pad) const
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
unsigned GEM_roll_L2_CSC_max_wg_ME21_even(unsigned roll) const
GEMClusterProcessor(int region, unsigned station, unsigned chamber, const edm::ParameterSet &conf)
Log< level::Warning, false > LogWarning
unsigned GEM_roll_L2_CSC_max_wg_ME11_odd(unsigned roll) const
bool has_cluster(const GEMPadDigiCluster &cluster) const
const CSCL1TPLookupTableME11ILT * lookupTableME11ILT_
unsigned GEM_roll_L2_CSC_min_wg_ME11_even(unsigned roll) const
std::vector< GEMInternalCluster > getClusters(int bx, int deltaBX=0, ClusterTypes option=AllClusters) const
unsigned GEM_roll_L1_CSC_min_wg_ME11_odd(unsigned roll) const
unsigned GEM_pad_CSC_hs_ME21_odd(unsigned pad) const
std::vector< GEMInternalCluster > getCoincidenceClusters(int bx) const
unsigned int maxDeltaPad_