15 std::shared_ptr<GlobalCoordsObtainer> &globalcoordsobtainer)
16 : debug_(
pset.getUntrackedParameter<
bool>(
"debug")),
17 clean_chi2_correlation_(
pset.getParameter<
bool>(
"clean_chi2_correlation")),
18 useBX_correlation_(
pset.getParameter<
bool>(
"useBX_correlation")),
19 allow_confirmation_(
pset.getParameter<
bool>(
"allow_confirmation")),
20 dT0_correlate_TP_(
pset.getParameter<double>(
"dT0_correlate_TP")),
21 dBX_correlate_TP_(
pset.getParameter<
int>(
"dBX_correlate_TP")),
22 dTanPsi_correlate_TP_(
pset.getParameter<double>(
"dTanPsi_correlate_TP")),
23 minx_match_2digis_(
pset.getParameter<double>(
"minx_match_2digis")),
24 chi2corTh_(
pset.getParameter<double>(
"chi2corTh")) {
28 LogDebug(
"MuonPathAssociator") <<
"MuonPathAssociator: constructor";
39 while (ifin3.good()) {
40 ifin3 >> rawId >>
shift;
50 LogDebug(
"MuonPathAssociator") <<
"MuonPathAssociator: destructor";
58 LogDebug(
"MuonPathAssociator") <<
"MuonPathAssociator::initialiase";
67 std::vector<metaPrimitive> &inMPaths,
68 std::vector<metaPrimitive> &outMPaths) {
72 outMPaths.insert(outMPaths.end(), inMPaths.begin(), inMPaths.end());
78 LogDebug(
"MuonPathAssociator") <<
"MuonPathAssociator: finish";
82 std::vector<metaPrimitive> &inMPaths,
83 std::vector<metaPrimitive> &outMPaths) {
85 LogDebug(
"MuonPathAssociator") <<
"starting correlation";
87 for (
int wh = -2; wh <= 2; wh++) {
88 for (
int st = 1; st <= 4; st++) {
89 for (
int se = 1; se <= 14; se++) {
90 if (se >= 13 && st != 4)
98 std::vector<metaPrimitive> SL1metaPrimitives;
99 for (
const auto &metaprimitiveIt : inMPaths) {
100 if (metaprimitiveIt.rawId == sl1Id.
rawId())
101 SL1metaPrimitives.push_back(metaprimitiveIt);
105 std::vector<metaPrimitive> SL3metaPrimitives;
106 for (
const auto &metaprimitiveIt : inMPaths) {
107 if (metaprimitiveIt.rawId == sl3Id.
rawId())
108 SL3metaPrimitives.push_back(metaprimitiveIt);
111 if (SL1metaPrimitives.empty() and SL3metaPrimitives.empty())
115 LogDebug(
"MuonPathAssociator") <<
"correlating " << SL1metaPrimitives.size() <<
" metaPrim in SL1 and " 116 << SL3metaPrimitives.size() <<
" in SL3 for " << sl3Id;
118 bool at_least_one_correlation =
false;
119 bool at_least_one_SL1_confirmation =
false;
120 bool at_least_one_SL3_confirmation =
false;
122 bool useFitSL1[SL1metaPrimitives.size()];
123 for (
unsigned int i = 0;
i < SL1metaPrimitives.size();
i++)
124 useFitSL1[
i] =
false;
125 bool useFitSL3[SL3metaPrimitives.size()];
126 for (
unsigned int i = 0;
i < SL3metaPrimitives.size();
i++)
127 useFitSL3[
i] =
false;
130 vector<metaPrimitive> chamberMetaPrimitives;
131 vector<metaPrimitive> confirmedMetaPrimitives;
132 vector<metaPrimitive> normalMetaPrimitives;
135 for (
auto SL1metaPrimitive = SL1metaPrimitives.begin(); SL1metaPrimitive != SL1metaPrimitives.end();
136 ++SL1metaPrimitive, sl1++, sl3 = -1) {
138 at_least_one_correlation =
false;
139 for (
auto SL3metaPrimitive = SL3metaPrimitives.begin(); SL3metaPrimitive != SL3metaPrimitives.end();
140 ++SL3metaPrimitive, sl3++) {
153 double NewSlope = -999.;
155 long int pos = (PosSL3 + PosSL1) / 2;
158 if (((PosSL3 + PosSL1) % 2 != 0) && (
pos < 0)) {
162 long int difPos_mm_x4 = PosSL3 - PosSL1;
168 double MeanT0 = (SL1metaPrimitive->t0 + SL3metaPrimitive->t0) / 2;
178 if (shift_sl1 < shift_sl3) {
183 int wi[8], tdc[8],
lat[8];
184 wi[0] = SL1metaPrimitive->wi1;
185 tdc[0] = SL1metaPrimitive->tdc1;
186 lat[0] = SL1metaPrimitive->lat1;
187 wi[1] = SL1metaPrimitive->wi2;
188 tdc[1] = SL1metaPrimitive->tdc2;
189 lat[1] = SL1metaPrimitive->lat2;
190 wi[2] = SL1metaPrimitive->wi3;
191 tdc[2] = SL1metaPrimitive->tdc3;
192 lat[2] = SL1metaPrimitive->lat3;
193 wi[3] = SL1metaPrimitive->wi4;
194 tdc[3] = SL1metaPrimitive->tdc4;
195 lat[3] = SL1metaPrimitive->lat4;
196 wi[4] = SL3metaPrimitive->wi1;
197 tdc[4] = SL3metaPrimitive->tdc1;
198 lat[4] = SL3metaPrimitive->lat1;
199 wi[5] = SL3metaPrimitive->wi2;
200 tdc[5] = SL3metaPrimitive->tdc2;
201 lat[5] = SL3metaPrimitive->lat2;
202 wi[6] = SL3metaPrimitive->wi3;
203 tdc[6] = SL3metaPrimitive->tdc3;
204 lat[6] = SL3metaPrimitive->lat3;
205 wi[7] = SL3metaPrimitive->wi4;
206 tdc[7] = SL3metaPrimitive->tdc4;
207 lat[7] = SL3metaPrimitive->lat4;
211 long int Z_FACTOR_CORR[8] = {-6, -2, 2, 6, -6, -2, 2, 6};
213 for (
int i = 0;
i < 8;
i++) {
214 int sign = 2 * (
i / 4) - 1;
217 long int sum_A, sum_B;
219 long int shift, slTime;
222 slTime = SL1metaPrimitive->t0;
225 slTime = SL3metaPrimitive->t0;
229 long int wireHorizPos_x4 =
234 pos_mm_x4 = wireHorizPos_x4 - (drift_dist_um_x4 >> 10);
236 pos_mm_x4 = wireHorizPos_x4 + (drift_dist_um_x4 >> 10);
241 chi2 += ((sum_A - sum_B) * (sum_A - sum_B)) >> 2;
251 useFitSL1[sl1] =
true;
252 useFitSL3[sl3] =
true;
255 if (SL3metaPrimitive->quality ==
LOWQ and SL1metaPrimitive->quality ==
LOWQ)
258 if ((SL3metaPrimitive->quality ==
HIGHQ && SL1metaPrimitive->quality ==
LOWQ)
or 259 (SL1metaPrimitive->quality ==
HIGHQ && SL3metaPrimitive->quality ==
LOWQ))
262 if (SL3metaPrimitive->quality ==
HIGHQ && SL1metaPrimitive->quality ==
HIGHQ)
267 double phi_cmssw = -999.;
268 double phiB_cmssw = -999.;
270 if (
ChId.station() >= 3)
274 int thisec =
ChId.sector();
279 phi_cmssw = jm_x_cmssw_global.
phi() -
PHI_CONV * (thisec - 1);
280 double psi = atan(NewSlope);
284 phi = global_coords[0];
285 phiB = global_coords[1];
288 outMPaths.emplace_back(
ChId.rawId(),
298 SL1metaPrimitive->wi1,
299 SL1metaPrimitive->tdc1,
300 SL1metaPrimitive->lat1,
301 SL1metaPrimitive->wi2,
302 SL1metaPrimitive->tdc2,
303 SL1metaPrimitive->lat2,
304 SL1metaPrimitive->wi3,
305 SL1metaPrimitive->tdc3,
306 SL1metaPrimitive->lat3,
307 SL1metaPrimitive->wi4,
308 SL1metaPrimitive->tdc4,
309 SL1metaPrimitive->lat4,
310 SL3metaPrimitive->wi1,
311 SL3metaPrimitive->tdc1,
312 SL3metaPrimitive->lat1,
313 SL3metaPrimitive->wi2,
314 SL3metaPrimitive->tdc2,
315 SL3metaPrimitive->lat2,
316 SL3metaPrimitive->wi3,
317 SL3metaPrimitive->tdc3,
318 SL3metaPrimitive->lat3,
319 SL3metaPrimitive->wi4,
320 SL3metaPrimitive->tdc4,
321 SL3metaPrimitive->lat4);
323 chamberMetaPrimitives.emplace_back(
ChId.rawId(),
333 SL1metaPrimitive->wi1,
334 SL1metaPrimitive->tdc1,
335 SL1metaPrimitive->lat1,
336 SL1metaPrimitive->wi2,
337 SL1metaPrimitive->tdc2,
338 SL1metaPrimitive->lat2,
339 SL1metaPrimitive->wi3,
340 SL1metaPrimitive->tdc3,
341 SL1metaPrimitive->lat3,
342 SL1metaPrimitive->wi4,
343 SL1metaPrimitive->tdc4,
344 SL1metaPrimitive->lat4,
345 SL3metaPrimitive->wi1,
346 SL3metaPrimitive->tdc1,
347 SL3metaPrimitive->lat1,
348 SL3metaPrimitive->wi2,
349 SL3metaPrimitive->tdc2,
350 SL3metaPrimitive->lat2,
351 SL3metaPrimitive->wi3,
352 SL3metaPrimitive->tdc3,
353 SL3metaPrimitive->lat3,
354 SL3metaPrimitive->wi4,
355 SL3metaPrimitive->tdc4,
356 SL3metaPrimitive->lat4);
358 at_least_one_correlation =
true;
361 if (at_least_one_correlation ==
false &&
363 int matched_digis = 0;
375 for (
const auto &dtLayerId_It : *dtdigis) {
376 const DTLayerId dtLId = dtLayerId_It.first;
379 if (dtSLId.rawId() != sl3Id.
rawId())
382 if (dtLId.
layer() == 4)
384 else if (dtLId.
layer() == 3)
386 else if (dtLId.
layer() == 2)
388 else if (dtLId.
layer() == 1)
390 double x_inSL3 = SL1metaPrimitive->x - SL1metaPrimitive->tanPhi * (
VERT_PHI1_PHI3 + l_shift);
391 for (
auto digiIt = (dtLayerId_It.second).first; digiIt != (dtLayerId_It.second).
second; ++digiIt) {
392 DTWireId wireId(dtLId, (*digiIt).wire());
399 x_wire = x_wire_left;
402 if (
std::abs(x_inSL3 - x_wire) < minx) {
405 next_wire = best_wire;
407 next_layer = best_layer;
410 best_wire = (*digiIt).wire();
411 best_tdc = (*digiIt).time();
412 best_layer = dtLId.
layer();
415 }
else if ((
std::abs(x_inSL3 - x_wire) >= minx) && (
std::abs(x_inSL3 - x_wire) < min2x)) {
417 next_wire = (*digiIt).wire();
418 next_tdc = (*digiIt).time();
419 next_layer = dtLId.
layer();
425 if (matched_digis >= 2 and best_layer != -1 and next_layer != -1) {
427 if (SL1metaPrimitive->quality ==
LOWQ)
443 if (next_layer == 1) {
448 if (next_layer == 2) {
453 if (next_layer == 3) {
458 if (next_layer == 4) {
464 if (best_layer == 1) {
469 if (best_layer == 2) {
474 if (best_layer == 3) {
479 if (best_layer == 4) {
487 SL1metaPrimitive->t0,
489 SL1metaPrimitive->tanPhi,
490 SL1metaPrimitive->phi,
491 SL1metaPrimitive->phiB,
492 SL1metaPrimitive->phi_cmssw,
493 SL1metaPrimitive->phiB_cmssw,
494 SL1metaPrimitive->chi2,
496 SL1metaPrimitive->wi1,
497 SL1metaPrimitive->tdc1,
498 SL1metaPrimitive->lat1,
499 SL1metaPrimitive->wi2,
500 SL1metaPrimitive->tdc2,
501 SL1metaPrimitive->lat2,
502 SL1metaPrimitive->wi3,
503 SL1metaPrimitive->tdc3,
504 SL1metaPrimitive->lat3,
505 SL1metaPrimitive->wi4,
506 SL1metaPrimitive->tdc4,
507 SL1metaPrimitive->lat4,
523 SL1metaPrimitive->t0,
525 SL1metaPrimitive->tanPhi,
526 SL1metaPrimitive->phi,
527 SL1metaPrimitive->phiB,
528 SL1metaPrimitive->phi_cmssw,
529 SL1metaPrimitive->phiB_cmssw,
530 SL1metaPrimitive->chi2,
532 SL1metaPrimitive->wi1,
533 SL1metaPrimitive->tdc1,
534 SL1metaPrimitive->lat1,
535 SL1metaPrimitive->wi2,
536 SL1metaPrimitive->tdc2,
537 SL1metaPrimitive->lat2,
538 SL1metaPrimitive->wi3,
539 SL1metaPrimitive->tdc3,
540 SL1metaPrimitive->lat3,
541 SL1metaPrimitive->wi4,
542 SL1metaPrimitive->tdc4,
543 SL1metaPrimitive->lat4,
557 useFitSL1[sl1] =
true;
558 at_least_one_SL1_confirmation =
true;
567 for (
auto SL3metaPrimitive = SL3metaPrimitives.begin(); SL3metaPrimitive != SL3metaPrimitives.end();
568 ++SL3metaPrimitive, sl3++) {
574 int matched_digis = 0;
587 for (
const auto &dtLayerId_It : *dtdigis) {
588 const DTLayerId dtLId = dtLayerId_It.first;
591 if (dtSLId.rawId() != sl1Id.
rawId())
594 if (dtLId.
layer() == 4)
596 if (dtLId.
layer() == 3)
598 if (dtLId.
layer() == 2)
600 if (dtLId.
layer() == 1)
602 double x_inSL1 = SL3metaPrimitive->x + SL3metaPrimitive->tanPhi * (
VERT_PHI1_PHI3 - l_shift);
603 for (
auto digiIt = (dtLayerId_It.second).first; digiIt != (dtLayerId_It.second).
second; ++digiIt) {
604 DTWireId wireId(dtLId, (*digiIt).wire());
611 x_wire = x_wire_left;
614 if (
std::abs(x_inSL1 - x_wire) < minx) {
616 next_wire = best_wire;
618 next_layer = best_layer;
621 best_wire = (*digiIt).wire();
622 best_tdc = (*digiIt).time();
623 best_layer = dtLId.
layer();
626 }
else if ((
std::abs(x_inSL1 - x_wire) >= minx) && (
std::abs(x_inSL1 - x_wire) < min2x)) {
628 next_wire = (*digiIt).wire();
629 next_tdc = (*digiIt).time();
630 next_layer = dtLId.
layer();
636 if (matched_digis >= 2 and best_layer != -1 and next_layer != -1) {
638 if (SL3metaPrimitive->quality ==
LOWQ)
654 if (next_layer == 1) {
659 if (next_layer == 2) {
664 if (next_layer == 3) {
669 if (next_layer == 4) {
675 if (best_layer == 1) {
680 if (best_layer == 2) {
685 if (best_layer == 3) {
690 if (best_layer == 4) {
698 SL3metaPrimitive->t0,
700 SL3metaPrimitive->tanPhi,
701 SL3metaPrimitive->phi,
702 SL3metaPrimitive->phiB,
703 SL3metaPrimitive->phi_cmssw,
704 SL3metaPrimitive->phiB_cmssw,
705 SL3metaPrimitive->chi2,
719 SL3metaPrimitive->wi1,
720 SL3metaPrimitive->tdc1,
721 SL3metaPrimitive->lat1,
722 SL3metaPrimitive->wi2,
723 SL3metaPrimitive->tdc2,
724 SL3metaPrimitive->lat2,
725 SL3metaPrimitive->wi3,
726 SL3metaPrimitive->tdc3,
727 SL3metaPrimitive->lat3,
728 SL3metaPrimitive->wi4,
729 SL3metaPrimitive->tdc4,
730 SL3metaPrimitive->lat4,
734 SL3metaPrimitive->t0,
736 SL3metaPrimitive->tanPhi,
737 SL3metaPrimitive->phi,
738 SL3metaPrimitive->phiB,
739 SL3metaPrimitive->phi_cmssw,
740 SL3metaPrimitive->phiB_cmssw,
741 SL3metaPrimitive->chi2,
755 SL3metaPrimitive->wi1,
756 SL3metaPrimitive->tdc1,
757 SL3metaPrimitive->lat1,
758 SL3metaPrimitive->wi2,
759 SL3metaPrimitive->tdc2,
760 SL3metaPrimitive->lat2,
761 SL3metaPrimitive->wi3,
762 SL3metaPrimitive->tdc3,
763 SL3metaPrimitive->lat3,
764 SL3metaPrimitive->wi4,
765 SL3metaPrimitive->tdc4,
766 SL3metaPrimitive->lat4,
768 useFitSL3[sl3] =
true;
769 at_least_one_SL3_confirmation =
true;
776 LogDebug(
"MuonPathAssociator") <<
"Pushing back correlated MPs to the MPs collection";
781 LogDebug(
"MuonPathAssociator") <<
"Pushing back confirmed MPs to the complete vector";
787 if (
debug_ && !at_least_one_correlation)
789 <<
"correlation we found zero correlations, adding both collections as they are to the outMPaths";
792 <<
"correlation sizes:" << SL1metaPrimitives.size() <<
" " << SL3metaPrimitives.size();
795 for (
auto SL1metaPrimitive = SL1metaPrimitives.begin(); SL1metaPrimitive != SL1metaPrimitives.end();
796 ++SL1metaPrimitive, sl1++) {
803 SL1metaPrimitive->t0,
805 SL1metaPrimitive->tanPhi,
806 SL1metaPrimitive->phi,
807 SL1metaPrimitive->phiB,
808 SL1metaPrimitive->phi_cmssw,
809 SL1metaPrimitive->phiB_cmssw,
810 SL1metaPrimitive->chi2,
811 SL1metaPrimitive->quality,
812 SL1metaPrimitive->wi1,
813 SL1metaPrimitive->tdc1,
814 SL1metaPrimitive->lat1,
815 SL1metaPrimitive->wi2,
816 SL1metaPrimitive->tdc2,
817 SL1metaPrimitive->lat2,
818 SL1metaPrimitive->wi3,
819 SL1metaPrimitive->tdc3,
820 SL1metaPrimitive->lat3,
821 SL1metaPrimitive->wi4,
822 SL1metaPrimitive->tdc4,
823 SL1metaPrimitive->lat4,
849 outMPaths.push_back(newSL1metaPrimitive);
851 normalMetaPrimitives.push_back(newSL1metaPrimitive);
856 for (
auto SL3metaPrimitive = SL3metaPrimitives.begin(); SL3metaPrimitive != SL3metaPrimitives.end();
857 ++SL3metaPrimitive, sl3++) {
863 SL3metaPrimitive->t0,
865 SL3metaPrimitive->tanPhi,
866 SL3metaPrimitive->phi,
867 SL3metaPrimitive->phiB,
868 SL3metaPrimitive->phi_cmssw,
869 SL3metaPrimitive->phiB_cmssw,
870 SL3metaPrimitive->chi2,
871 SL3metaPrimitive->quality,
884 SL3metaPrimitive->wi1,
885 SL3metaPrimitive->tdc1,
886 SL3metaPrimitive->lat1,
887 SL3metaPrimitive->wi2,
888 SL3metaPrimitive->tdc2,
889 SL3metaPrimitive->lat2,
890 SL3metaPrimitive->wi3,
891 SL3metaPrimitive->tdc3,
892 SL3metaPrimitive->lat3,
893 SL3metaPrimitive->wi4,
894 SL3metaPrimitive->tdc4,
895 SL3metaPrimitive->lat4,
899 outMPaths.push_back(newSL3metaPrimitive);
901 normalMetaPrimitives.push_back(newSL3metaPrimitive);
906 SL1metaPrimitives.clear();
907 SL1metaPrimitives.erase(SL1metaPrimitives.begin(), SL1metaPrimitives.end());
908 SL3metaPrimitives.clear();
909 SL3metaPrimitives.erase(SL3metaPrimitives.begin(), SL3metaPrimitives.end());
911 vector<metaPrimitive> auxMetaPrimitives;
914 LogDebug(
"MuonPathAssociator") <<
"Pushing back normal MPs to the auxiliar vector";
915 removeSharingHits(normalMetaPrimitives, confirmedMetaPrimitives, auxMetaPrimitives);
919 LogDebug(
"MuonPathAssociator") <<
"Pushing back normal MPs to the MPs collection";
927 std::vector<metaPrimitive> SL2metaPrimitives;
929 for (
int wh = -2; wh <= 2; wh++) {
930 for (
int st = 1; st <= 4; st++) {
931 for (
int se = 1; se <= 14; se++) {
932 if (se >= 13 && st != 4)
939 for (
auto metaprimitiveIt = inMPaths.begin(); metaprimitiveIt != inMPaths.end(); ++metaprimitiveIt)
940 if (metaprimitiveIt->rawId == sl2Id.
rawId()) {
941 SL2metaPrimitives.push_back(*metaprimitiveIt);
943 outMPaths.push_back(*metaprimitiveIt);
949 LogDebug(
"MuonPathAssociator") <<
"\t etaTP: added " << SL2metaPrimitives.size() <<
"to outMPaths" << std::endl;
951 SL2metaPrimitives.clear();
952 SL2metaPrimitives.erase(SL2metaPrimitives.begin(), SL2metaPrimitives.end());
956 bool useFit[chamberMPaths.size()];
957 for (
unsigned int i = 0;
i < chamberMPaths.size();
i++) {
960 for (
unsigned int i = 0;
i < chamberMPaths.size();
i++) {
962 LogDebug(
"MuonPathAssociator") <<
"Looking at prim" <<
i;
965 for (
unsigned int j =
i + 1;
j < chamberMPaths.size();
j++) {
967 LogDebug(
"MuonPathAssociator") <<
"Comparing with prim " <<
j;
990 allMPaths.push_back(chamberMPaths[
i]);
994 LogDebug(
"MuonPathAssociator") <<
"---Swapping chamber---";
998 std::vector<metaPrimitive> &secondMPaths,
999 std::vector<metaPrimitive> &allMPaths) {
1000 for (
auto &firstMP : firstMPaths) {
1002 LogDebug(
"MuonPathAssociator") <<
"----------------------------------";
1004 LogDebug(
"MuonPathAssociator") <<
"Turn for ";
1008 for (
auto &secondMP : secondMPaths) {
1010 LogDebug(
"MuonPathAssociator") <<
"Comparing with ";
1019 allMPaths.push_back(firstMP);
1024 LogDebug(
"MuonPathAssociator") <<
"----------------------------------";
1038 if (lay1 && lay2 && lay3 && lay4) {
1039 if (lay5 || lay6 || lay7 || lay8)
1043 }
else if (lay5 && lay6 && lay7 && lay8) {
1044 if (lay1 || lay2 || lay3 || lay4)
1065 return (((!lay1 && !lay2 && !lay3 && !lay4) || hitsSL1 < 3) && ((!lay5 && !lay6 && !lay7 && !lay8) || hitsSL3 < 3));
1071 <<
" " << setw(2) << left << mP.
wi1 <<
" " << setw(2) << left << mP.
wi2 <<
" " 1072 << setw(2) << left << mP.
wi3 <<
" " << setw(2) << left << mP.
wi4 <<
" " << setw(2)
1073 << left << mP.
wi5 <<
" " << setw(2) << left << mP.
wi6 <<
" " << setw(2) << left
1074 << mP.
wi7 <<
" " << setw(2) << left << mP.
wi8 <<
" " << setw(5) << left << mP.
tdc1 1075 <<
" " << setw(5) << left << mP.
tdc2 <<
" " << setw(5) << left << mP.
tdc3 <<
" " 1076 << setw(5) << left << mP.
tdc4 <<
" " << setw(5) << left << mP.
tdc5 <<
" " << setw(5)
1077 << left << mP.
tdc6 <<
" " << setw(5) << left << mP.
tdc7 <<
" " << setw(5) << left
1078 << mP.
tdc8 <<
" " << setw(2) << left << mP.
lat1 <<
" " << setw(2) << left << mP.
lat2 1079 <<
" " << setw(2) << left << mP.
lat3 <<
" " << setw(2) << left << mP.
lat4 <<
" " 1080 << setw(2) << left << mP.
lat5 <<
" " << setw(2) << left << mP.
lat6 <<
" " << setw(2)
1081 << left << mP.
lat7 <<
" " << setw(2) << left << mP.
lat8 <<
" " << setw(10) << right
1082 << mP.
x <<
" " << setw(9) << left << mP.
tanPhi <<
" " << setw(5) << left << mP.
t0 1083 <<
" " << setw(13) << left << mP.
chi2 <<
" \n";
bool isNotAPrimo(cmsdt::metaPrimitive first, cmsdt::metaPrimitive second)
int station() const
Return the station number.
constexpr int CH_CENTER_TO_MID_SL_X2
Point3DBase< Scalar, LocalTag > LocalPoint
constexpr int DRIFT_SPEED_X4
void correlateMPaths(edm::Handle< DTDigiCollection > digis, std::vector< cmsdt::metaPrimitive > &inMPaths, std::vector< cmsdt::metaPrimitive > &outMPaths)
std::string fullPath() const
Geom::Phi< T > phi() const
double dTanPsi_correlate_TP_
std::map< int, float > shiftinfo_
edm::FileInPath shift_filename_
void run(edm::Event &iEvent, const edm::EventSetup &iEventSetup, edm::Handle< DTDigiCollection > digis, std::vector< cmsdt::metaPrimitive > &inMPaths, std::vector< cmsdt::metaPrimitive > &outMPaths)
constexpr int VERT_PHI1_PHI3_INV
std::map< std::string, int, std::less< std::string > > psi
std::shared_ptr< GlobalCoordsObtainer > globalcoordsobtainer_
constexpr int CELL_LENGTH
constexpr int CELL_SEMILENGTH
U second(std::pair< T, U > const &p)
void removeSharingHits(std::vector< cmsdt::metaPrimitive > &firstMPaths, std::vector< cmsdt::metaPrimitive > &secondMPaths, std::vector< cmsdt::metaPrimitive > &allMPaths)
constexpr int INCREASED_RES_SLOPE_POW
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
constexpr float Z_SHIFT_MB4
Abs< T >::type abs(const T &t)
constexpr int CELL_HEIGHT
constexpr double X_POS_L4
void printmPC(cmsdt::metaPrimitive mP)
bool clean_chi2_correlation_
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
constexpr double PHI_CONV
constexpr uint32_t rawId() const
get the raw id
constexpr int NUM_LAYERS_2SL
constexpr float VERT_PHI1_PHI3
bool shareFit(cmsdt::metaPrimitive first, cmsdt::metaPrimitive second)
constexpr int LHC_CLK_FREQ
edm::ESGetToken< DTGeometry, MuonGeometryRecord > dtGeomH_
int layer() const
Return the layer number.
void initialise(const edm::EventSetup &iEventSetup)
bool hasPosRF(int wh, int sec)
int wheel() const
Return the wheel number.
static unsigned int const shift
double minx_match_2digis_
DTGeometry const * dtGeo_
constexpr int INCREASED_RES_POS_POW
void removeSharingFits(std::vector< cmsdt::metaPrimitive > &chamberMPaths, std::vector< cmsdt::metaPrimitive > &allMPaths)
MuonPathAssociator(const edm::ParameterSet &pset, edm::ConsumesCollector &iC, std::shared_ptr< GlobalCoordsObtainer > &globalcoordsobtainer)
const DTChamber * chamber(const DTChamberId &id) const
Return a DTChamber given its id.
Power< A, B >::type pow(const A &a, const B &b)
constexpr float DRIFT_SPEED
constexpr double X_POS_L3
constexpr int INCREASED_RES_POS