47 if (in_clusters ==
nullptr) {
48 edm::LogWarning(
"GEMClusterProcessor") <<
"Attempt to run without valid in_clusters pointer.";
63 std::vector<GEMInternalCluster>
output;
67 if (
cl.bx() ==
bx and
cl.isValid()) {
82 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
83 const GEMDetId&
id = (*det_range).first;
101 auto co_clusters_range = in_clusters->get(co_id);
104 if (co_clusters_range.first == co_clusters_range.second)
108 const auto& pads_range = (*det_range).second;
109 for (
auto p = pads_range.first;
p != pads_range.second; ++
p) {
120 for (
auto co_p = co_clusters_range.first; co_p != co_clusters_range.second; ++co_p) {
122 if (!co_p->isValid())
134 int cl2_min = co_p->pads().front();
135 int cl2_max = co_p->pads().back();
138 const bool condition1(cl1_min <= cl2_min and cl1_max >= cl2_min);
139 const bool condition2(cl1_min <= cl2_max and cl1_max >= cl2_max);
140 const bool match(condition1
or condition2);
156 const std::vector<GEMInternalCluster>& coincidences =
clusters_;
159 for (
auto det_range = in_clusters->begin(); det_range != in_clusters->end(); ++det_range) {
160 const GEMDetId&
id = (*det_range).first;
170 const auto& clusters_range = (*det_range).second;
171 for (
auto p = clusters_range.first;
p != clusters_range.second; ++
p) {
183 if (std::find_if(std::begin(coincidences), std::end(coincidences), [
p](
const GEMInternalCluster&
q) {
184 return q.has_cluster(*
p);
185 }) != std::end(coincidences))
189 if (
id.
layer() == 1) {
204 if (cluster.cl1().isValid()) {
206 const int layer1_first_pad = cluster.layer1_pad();
207 const int layer1_last_pad = layer1_first_pad + cluster.layer1_size() - 1;
210 int layer1_pad_to_first_es = -1;
211 int layer1_pad_to_last_es = -1;
213 int layer1_pad_to_first_es_me1a = -1;
214 int layer1_pad_to_last_es_me1a = -1;
245 int layer1_middle_es = (layer1_pad_to_first_es + layer1_pad_to_last_es) / 2.;
246 int layer1_middle_es_me1a = (layer1_pad_to_first_es_me1a + layer1_pad_to_last_es_me1a) / 2.;
248 cluster.set_layer1_first_es(layer1_pad_to_first_es);
249 cluster.set_layer1_last_es(layer1_pad_to_last_es);
250 cluster.set_layer1_middle_es(layer1_middle_es);
253 cluster.set_layer1_first_es_me1a(layer1_pad_to_first_es_me1a);
254 cluster.set_layer1_last_es_me1a(layer1_pad_to_last_es_me1a);
255 cluster.set_layer1_middle_es_me1a(layer1_middle_es_me1a);
260 const int roll = cluster.roll1() - 1;
262 int roll_l1_to_min_wg = -1;
263 int roll_l1_to_max_wg = -1;
288 cluster.set_layer1_min_wg(roll_l1_to_min_wg);
289 cluster.set_layer1_max_wg(roll_l1_to_max_wg);
292 if (cluster.cl2().isValid()) {
294 const int layer2_first_pad = cluster.layer2_pad();
295 const int layer2_last_pad = layer2_first_pad + cluster.layer2_size() - 1;
298 int layer2_pad_to_first_es = -1;
299 int layer2_pad_to_last_es = -1;
301 int layer2_pad_to_first_es_me1a = -1;
302 int layer2_pad_to_last_es_me1a = -1;
333 int layer2_middle_es =
int((layer2_pad_to_first_es + layer2_pad_to_last_es) / 2.0);
334 int layer2_middle_es_me1a =
int((layer2_pad_to_first_es_me1a + layer2_pad_to_last_es_me1a) / 2.0);
336 cluster.set_layer2_first_es(layer2_pad_to_first_es);
337 cluster.set_layer2_last_es(layer2_pad_to_last_es);
338 cluster.set_layer2_middle_es(layer2_middle_es);
341 cluster.set_layer2_first_es_me1a(layer2_pad_to_first_es_me1a);
342 cluster.set_layer2_last_es_me1a(layer2_pad_to_last_es_me1a);
343 cluster.set_layer2_middle_es_me1a(layer2_middle_es_me1a);
349 const int roll = cluster.roll2() - 1;
351 int roll_l2_to_min_wg = -1;
352 int roll_l2_to_max_wg = -1;
377 cluster.set_layer2_min_wg(roll_l2_to_min_wg);
378 cluster.set_layer2_max_wg(roll_l2_to_max_wg);
383 std::vector<GEMCoPadDigi>
output;
388 if (!cluster.isCoincidence())
392 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
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
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
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 run(const GEMPadDigiClusterCollection *, const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT)
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_
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_
void doCoordinateConversion(const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT)
unsigned int maxDeltaPad_