49 if (in_clusters ==
nullptr) {
50 edm::LogWarning(
"GEMClusterProcessor") <<
"Attempt to run without valid in_clusters pointer.";
65 std::vector<GEMInternalCluster>
output;
69 if (
cl.bx() ==
bx and
cl.isValid()) {
84 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
85 const GEMDetId&
id = (*det_range).first;
103 auto co_clusters_range = in_clusters->get(co_id);
106 if (co_clusters_range.first == co_clusters_range.second)
110 const auto& pads_range = (*det_range).second;
111 for (
auto p = pads_range.first;
p != pads_range.second; ++
p) {
122 for (
auto co_p = co_clusters_range.first; co_p != co_clusters_range.second; ++co_p) {
124 if (!co_p->isValid())
136 int cl2_min = co_p->pads().front();
137 int cl2_max = co_p->pads().back();
140 const bool condition1(cl1_min <= cl2_min and cl1_max >= cl2_min);
141 const bool condition2(cl1_min <= cl2_max and cl1_max >= cl2_max);
142 const bool match(condition1
or condition2);
158 const std::vector<GEMInternalCluster>& coincidences =
clusters_;
161 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
162 const GEMDetId&
id = (*det_range).first;
172 const auto& clusters_range = (*det_range).second;
173 for (
auto p = clusters_range.first;
p != clusters_range.second; ++
p) {
186 return q.has_cluster(*
p);
191 if (
id.
layer() == 1) {
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_es = -1;
212 int layer1_pad_to_last_es = -1;
214 int layer1_pad_to_first_es_me1a = -1;
215 int layer1_pad_to_last_es_me1a = -1;
246 int layer1_middle_es = (layer1_pad_to_first_es + layer1_pad_to_last_es) / 2.;
247 int layer1_middle_es_me1a = (layer1_pad_to_first_es_me1a + layer1_pad_to_last_es_me1a) / 2.;
249 cluster.set_layer1_first_es(layer1_pad_to_first_es);
250 cluster.set_layer1_last_es(layer1_pad_to_last_es);
251 cluster.set_layer1_middle_es(layer1_middle_es);
254 cluster.set_layer1_first_es_me1a(layer1_pad_to_first_es_me1a);
255 cluster.set_layer1_last_es_me1a(layer1_pad_to_last_es_me1a);
256 cluster.set_layer1_middle_es_me1a(layer1_middle_es_me1a);
261 const int roll = cluster.roll1() - 1;
263 int roll_l1_to_min_wg = -1;
264 int roll_l1_to_max_wg = -1;
289 cluster.set_layer1_min_wg(roll_l1_to_min_wg);
290 cluster.set_layer1_max_wg(roll_l1_to_max_wg);
293 if (cluster.cl2().isValid()) {
295 const int layer2_first_pad = cluster.layer2_pad();
296 const int layer2_last_pad = layer2_first_pad + cluster.layer2_size() - 1;
299 int layer2_pad_to_first_es = -1;
300 int layer2_pad_to_last_es = -1;
302 int layer2_pad_to_first_es_me1a = -1;
303 int layer2_pad_to_last_es_me1a = -1;
334 int layer2_middle_es =
int((layer2_pad_to_first_es + layer2_pad_to_last_es) / 2.0);
335 int layer2_middle_es_me1a =
int((layer2_pad_to_first_es_me1a + layer2_pad_to_last_es_me1a) / 2.0);
337 cluster.set_layer2_first_es(layer2_pad_to_first_es);
338 cluster.set_layer2_last_es(layer2_pad_to_last_es);
339 cluster.set_layer2_middle_es(layer2_middle_es);
342 cluster.set_layer2_first_es_me1a(layer2_pad_to_first_es_me1a);
343 cluster.set_layer2_last_es_me1a(layer2_pad_to_last_es_me1a);
344 cluster.set_layer2_middle_es_me1a(layer2_middle_es_me1a);
350 const int roll = cluster.roll2() - 1;
352 int roll_l2_to_min_wg = -1;
353 int roll_l2_to_max_wg = -1;
378 cluster.set_layer2_min_wg(roll_l2_to_min_wg);
379 cluster.set_layer2_max_wg(roll_l2_to_max_wg);
384 std::vector<GEMCoPadDigi>
output;
389 if (!cluster.isCoincidence())
393 output.emplace_back(cluster.roll2(), cluster.mid1(), cluster.mid2());
T getParameter(std::string const &) const
std::vector< GEMInternalCluster > clusters_
unsigned GEM_roll_L1_CSC_min_wg_ME21_even(unsigned roll) const
void run(const GEMPadDigiClusterCollection *)
bool isME0(GeomDetEnumerators::SubDetector m)
unsigned GEM_roll_CSC_min_wg_ME11_odd(unsigned roll) const
unsigned GEM_pad_CSC_es_ME11b_odd(unsigned pad) const
std::vector< GEMInternalCluster > getClusters(int bx, ClusterTypes option=AllClusters) const
void doCoordinateConversion()
unsigned GEM_pad_CSC_es_ME21_even(unsigned pad) const
unsigned GEM_pad_CSC_es_ME11a_even(unsigned pad) const
unsigned GEM_roll_L1_CSC_max_wg_ME21_odd(unsigned roll) const
constexpr std::array< uint8_t, layerIndexSize > layer
unsigned GEM_pad_CSC_es_ME11b_even(unsigned pad) const
unsigned int tmbL1aWindowSize_
unsigned GEM_pad_CSC_es_ME21_odd(unsigned pad) const
unsigned GEM_roll_CSC_min_wg_ME11_even(unsigned roll) const
unsigned GEM_roll_CSC_max_wg_ME11_even(unsigned roll) const
unsigned GEM_roll_L2_CSC_max_wg_ME21_odd(unsigned roll) const
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::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Abs< T >::type abs(const T &t)
void addSingleClusters(const GEMPadDigiClusterCollection *)
std::vector< GEMCoPadDigi > readoutCoPads() const
unsigned GEM_roll_L1_CSC_max_wg_ME21_even(unsigned roll) const
bool hasGE21Geometry16Partitions_
unsigned GEM_roll_L2_CSC_max_wg_ME21_even(unsigned roll) const
unsigned GEM_roll_L2_CSC_min_wg_ME21_even(unsigned roll) const
unsigned GEM_pad_CSC_es_ME11a_odd(unsigned pad) const
unsigned int maxDeltaRoll_
const CSCL1TPLookupTableME21ILT * lookupTableME21ILT_
void setESLookupTables(const CSCL1TPLookupTableME11ILT *conf)
unsigned GEM_roll_CSC_max_wg_ME11_odd(unsigned roll) const
void addCoincidenceClusters(const GEMPadDigiClusterCollection *)
unsigned GEM_roll_L1_CSC_min_wg_ME21_odd(unsigned roll) 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_min_wg_ME21_odd(unsigned roll) const
GEMClusterProcessor(int region, unsigned station, unsigned chamber, const edm::ParameterSet &conf)
Log< level::Warning, false > LogWarning
unsigned int delayGEMinOTMB_
const CSCL1TPLookupTableME11ILT * lookupTableME11ILT_
unsigned int maxDeltaPad_