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 = 0) {
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());
393 if ((*digiIt).time() < SL1metaPrimitive->t0)
401 x_wire = x_wire_left;
404 if (
std::abs(x_inSL3 - x_wire) < minx) {
409 if (dtLId.
layer() != best_layer) {
411 next_wire = best_wire;
413 next_layer = best_layer;
417 best_wire = (*digiIt).wire();
418 best_tdc = (*digiIt).time();
419 best_layer = dtLId.
layer();
422 }
else if ((
std::abs(x_inSL3 - x_wire) >= minx) && (
std::abs(x_inSL3 - x_wire) < min2x)) {
424 if (dtLId.
layer() == best_layer)
434 next_wire = (*digiIt).wire();
435 next_tdc = (*digiIt).time();
436 next_layer = dtLId.
layer();
441 if (matched_digis >= 2 and best_layer != -1 and next_layer != -1) {
443 if (SL1metaPrimitive->quality ==
LOWQ)
459 if (next_layer == 1) {
464 if (next_layer == 2) {
469 if (next_layer == 3) {
474 if (next_layer == 4) {
480 if (best_layer == 1) {
485 if (best_layer == 2) {
490 if (best_layer == 3) {
495 if (best_layer == 4) {
503 SL1metaPrimitive->t0,
505 SL1metaPrimitive->tanPhi,
506 SL1metaPrimitive->phi,
507 SL1metaPrimitive->phiB,
508 SL1metaPrimitive->phi_cmssw,
509 SL1metaPrimitive->phiB_cmssw,
510 SL1metaPrimitive->chi2,
512 SL1metaPrimitive->wi1,
513 SL1metaPrimitive->tdc1,
514 SL1metaPrimitive->lat1,
515 SL1metaPrimitive->wi2,
516 SL1metaPrimitive->tdc2,
517 SL1metaPrimitive->lat2,
518 SL1metaPrimitive->wi3,
519 SL1metaPrimitive->tdc3,
520 SL1metaPrimitive->lat3,
521 SL1metaPrimitive->wi4,
522 SL1metaPrimitive->tdc4,
523 SL1metaPrimitive->lat4,
539 SL1metaPrimitive->t0,
541 SL1metaPrimitive->tanPhi,
542 SL1metaPrimitive->phi,
543 SL1metaPrimitive->phiB,
544 SL1metaPrimitive->phi_cmssw,
545 SL1metaPrimitive->phiB_cmssw,
546 SL1metaPrimitive->chi2,
548 SL1metaPrimitive->wi1,
549 SL1metaPrimitive->tdc1,
550 SL1metaPrimitive->lat1,
551 SL1metaPrimitive->wi2,
552 SL1metaPrimitive->tdc2,
553 SL1metaPrimitive->lat2,
554 SL1metaPrimitive->wi3,
555 SL1metaPrimitive->tdc3,
556 SL1metaPrimitive->lat3,
557 SL1metaPrimitive->wi4,
558 SL1metaPrimitive->tdc4,
559 SL1metaPrimitive->lat4,
573 useFitSL1[sl1] =
true;
574 at_least_one_SL1_confirmation =
true;
583 for (
auto SL3metaPrimitive = SL3metaPrimitives.begin(); SL3metaPrimitive != SL3metaPrimitives.end();
584 ++SL3metaPrimitive, sl3++) {
590 int matched_digis = 0;
603 for (
const auto &dtLayerId_It : *dtdigis) {
604 const DTLayerId dtLId = dtLayerId_It.first;
607 if (dtSLId.rawId() != sl1Id.
rawId())
610 if (dtLId.
layer() == 4)
612 if (dtLId.
layer() == 3)
614 if (dtLId.
layer() == 2)
616 if (dtLId.
layer() == 1)
618 double x_inSL1 = SL3metaPrimitive->x + SL3metaPrimitive->tanPhi * (
VERT_PHI1_PHI3 - l_shift);
619 for (
auto digiIt = (dtLayerId_It.second).first; digiIt != (dtLayerId_It.second).
second; ++digiIt) {
620 DTWireId wireId(dtLId, (*digiIt).wire());
621 if ((*digiIt).time() < SL3metaPrimitive->t0)
629 x_wire = x_wire_left;
632 if (
std::abs(x_inSL1 - x_wire) < minx) {
637 if (dtLId.
layer() != best_layer) {
639 next_wire = best_wire;
641 next_layer = best_layer;
645 best_wire = (*digiIt).wire();
646 best_tdc = (*digiIt).time();
647 best_layer = dtLId.
layer();
649 }
else if ((
std::abs(x_inSL1 - x_wire) >= minx) && (
std::abs(x_inSL1 - x_wire) < min2x)) {
651 if (dtLId.
layer() == best_layer)
661 next_wire = (*digiIt).wire();
662 next_tdc = (*digiIt).time();
663 next_layer = dtLId.
layer();
668 if (matched_digis >= 2 and best_layer != -1 and next_layer != -1) {
670 if (SL3metaPrimitive->quality ==
LOWQ)
686 if (next_layer == 1) {
691 if (next_layer == 2) {
696 if (next_layer == 3) {
701 if (next_layer == 4) {
707 if (best_layer == 1) {
712 if (best_layer == 2) {
717 if (best_layer == 3) {
722 if (best_layer == 4) {
730 SL3metaPrimitive->t0,
732 SL3metaPrimitive->tanPhi,
733 SL3metaPrimitive->phi,
734 SL3metaPrimitive->phiB,
735 SL3metaPrimitive->phi_cmssw,
736 SL3metaPrimitive->phiB_cmssw,
737 SL3metaPrimitive->chi2,
751 SL3metaPrimitive->wi1,
752 SL3metaPrimitive->tdc1,
753 SL3metaPrimitive->lat1,
754 SL3metaPrimitive->wi2,
755 SL3metaPrimitive->tdc2,
756 SL3metaPrimitive->lat2,
757 SL3metaPrimitive->wi3,
758 SL3metaPrimitive->tdc3,
759 SL3metaPrimitive->lat3,
760 SL3metaPrimitive->wi4,
761 SL3metaPrimitive->tdc4,
762 SL3metaPrimitive->lat4,
766 SL3metaPrimitive->t0,
768 SL3metaPrimitive->tanPhi,
769 SL3metaPrimitive->phi,
770 SL3metaPrimitive->phiB,
771 SL3metaPrimitive->phi_cmssw,
772 SL3metaPrimitive->phiB_cmssw,
773 SL3metaPrimitive->chi2,
787 SL3metaPrimitive->wi1,
788 SL3metaPrimitive->tdc1,
789 SL3metaPrimitive->lat1,
790 SL3metaPrimitive->wi2,
791 SL3metaPrimitive->tdc2,
792 SL3metaPrimitive->lat2,
793 SL3metaPrimitive->wi3,
794 SL3metaPrimitive->tdc3,
795 SL3metaPrimitive->lat3,
796 SL3metaPrimitive->wi4,
797 SL3metaPrimitive->tdc4,
798 SL3metaPrimitive->lat4,
800 useFitSL3[sl3] =
true;
801 at_least_one_SL3_confirmation =
true;
808 LogDebug(
"MuonPathAssociator") <<
"Pushing back correlated MPs to the MPs collection";
813 LogDebug(
"MuonPathAssociator") <<
"Pushing back confirmed MPs to the complete vector";
819 if (
debug_ && !at_least_one_correlation)
821 <<
"correlation we found zero correlations, adding both collections as they are to the outMPaths";
824 <<
"correlation sizes:" << SL1metaPrimitives.size() <<
" " << SL3metaPrimitives.size();
827 for (
auto SL1metaPrimitive = SL1metaPrimitives.begin(); SL1metaPrimitive != SL1metaPrimitives.end();
828 ++SL1metaPrimitive, sl1++) {
835 SL1metaPrimitive->t0,
837 SL1metaPrimitive->tanPhi,
838 SL1metaPrimitive->phi,
839 SL1metaPrimitive->phiB,
840 SL1metaPrimitive->phi_cmssw,
841 SL1metaPrimitive->phiB_cmssw,
842 SL1metaPrimitive->chi2,
843 SL1metaPrimitive->quality,
844 SL1metaPrimitive->wi1,
845 SL1metaPrimitive->tdc1,
846 SL1metaPrimitive->lat1,
847 SL1metaPrimitive->wi2,
848 SL1metaPrimitive->tdc2,
849 SL1metaPrimitive->lat2,
850 SL1metaPrimitive->wi3,
851 SL1metaPrimitive->tdc3,
852 SL1metaPrimitive->lat3,
853 SL1metaPrimitive->wi4,
854 SL1metaPrimitive->tdc4,
855 SL1metaPrimitive->lat4,
881 outMPaths.push_back(newSL1metaPrimitive);
883 normalMetaPrimitives.push_back(newSL1metaPrimitive);
888 for (
auto SL3metaPrimitive = SL3metaPrimitives.begin(); SL3metaPrimitive != SL3metaPrimitives.end();
889 ++SL3metaPrimitive, sl3++) {
895 SL3metaPrimitive->t0,
897 SL3metaPrimitive->tanPhi,
898 SL3metaPrimitive->phi,
899 SL3metaPrimitive->phiB,
900 SL3metaPrimitive->phi_cmssw,
901 SL3metaPrimitive->phiB_cmssw,
902 SL3metaPrimitive->chi2,
903 SL3metaPrimitive->quality,
916 SL3metaPrimitive->wi1,
917 SL3metaPrimitive->tdc1,
918 SL3metaPrimitive->lat1,
919 SL3metaPrimitive->wi2,
920 SL3metaPrimitive->tdc2,
921 SL3metaPrimitive->lat2,
922 SL3metaPrimitive->wi3,
923 SL3metaPrimitive->tdc3,
924 SL3metaPrimitive->lat3,
925 SL3metaPrimitive->wi4,
926 SL3metaPrimitive->tdc4,
927 SL3metaPrimitive->lat4,
931 outMPaths.push_back(newSL3metaPrimitive);
933 normalMetaPrimitives.push_back(newSL3metaPrimitive);
938 SL1metaPrimitives.clear();
939 SL1metaPrimitives.erase(SL1metaPrimitives.begin(), SL1metaPrimitives.end());
940 SL3metaPrimitives.clear();
941 SL3metaPrimitives.erase(SL3metaPrimitives.begin(), SL3metaPrimitives.end());
943 vector<metaPrimitive> auxMetaPrimitives;
946 LogDebug(
"MuonPathAssociator") <<
"Pushing back normal MPs to the auxiliar vector";
947 removeSharingHits(normalMetaPrimitives, confirmedMetaPrimitives, auxMetaPrimitives);
951 LogDebug(
"MuonPathAssociator") <<
"Pushing back normal MPs to the MPs collection";
959 std::vector<metaPrimitive> SL2metaPrimitives;
961 for (
int wh = -2; wh <= 2; wh++) {
962 for (
int st = 1; st <= 4; st++) {
963 for (
int se = 1; se <= 14; se++) {
964 if (se >= 13 && st != 4)
971 for (
auto metaprimitiveIt = inMPaths.begin(); metaprimitiveIt != inMPaths.end(); ++metaprimitiveIt)
972 if (metaprimitiveIt->rawId == sl2Id.
rawId()) {
973 SL2metaPrimitives.push_back(*metaprimitiveIt);
976 outMPaths.push_back(*metaprimitiveIt);
982 LogDebug(
"MuonPathAssociator") <<
"\t etaTP: added " << SL2metaPrimitives.size() <<
"to outMPaths" << std::endl;
984 SL2metaPrimitives.clear();
985 SL2metaPrimitives.erase(SL2metaPrimitives.begin(), SL2metaPrimitives.end());
989 bool useFit[chamberMPaths.size()];
990 for (
unsigned int i = 0;
i < chamberMPaths.size();
i++) {
993 for (
unsigned int i = 0;
i < chamberMPaths.size();
i++) {
995 LogDebug(
"MuonPathAssociator") <<
"Looking at prim" <<
i;
998 for (
unsigned int j =
i + 1;
j < chamberMPaths.size();
j++) {
1000 LogDebug(
"MuonPathAssociator") <<
"Comparing with prim " <<
j;
1023 allMPaths.push_back(chamberMPaths[
i]);
1027 LogDebug(
"MuonPathAssociator") <<
"---Swapping chamber---";
1031 std::vector<metaPrimitive> &secondMPaths,
1032 std::vector<metaPrimitive> &allMPaths) {
1033 for (
auto &firstMP : firstMPaths) {
1035 LogDebug(
"MuonPathAssociator") <<
"----------------------------------";
1037 LogDebug(
"MuonPathAssociator") <<
"Turn for ";
1041 for (
auto &secondMP : secondMPaths) {
1043 LogDebug(
"MuonPathAssociator") <<
"Comparing with ";
1052 allMPaths.push_back(firstMP);
1057 LogDebug(
"MuonPathAssociator") <<
"----------------------------------";
1071 if (lay1 && lay2 && lay3 && lay4) {
1072 if (lay5 || lay6 || lay7 || lay8)
1076 }
else if (lay5 && lay6 && lay7 && lay8) {
1077 if (lay1 || lay2 || lay3 || lay4)
1098 return (((!lay1 && !lay2 && !lay3 && !lay4) || hitsSL1 < 3) && ((!lay5 && !lay6 && !lay7 && !lay8) || hitsSL3 < 3));
1104 <<
" " << setw(2) << left << mP.
wi1 <<
" " << setw(2) << left << mP.
wi2 <<
" " 1105 << setw(2) << left << mP.
wi3 <<
" " << setw(2) << left << mP.
wi4 <<
" " << setw(2)
1106 << left << mP.
wi5 <<
" " << setw(2) << left << mP.
wi6 <<
" " << setw(2) << left
1107 << mP.
wi7 <<
" " << setw(2) << left << mP.
wi8 <<
" " << setw(5) << left << mP.
tdc1 1108 <<
" " << setw(5) << left << mP.
tdc2 <<
" " << setw(5) << left << mP.
tdc3 <<
" " 1109 << setw(5) << left << mP.
tdc4 <<
" " << setw(5) << left << mP.
tdc5 <<
" " << setw(5)
1110 << left << mP.
tdc6 <<
" " << setw(5) << left << mP.
tdc7 <<
" " << setw(5) << left
1111 << mP.
tdc8 <<
" " << setw(2) << left << mP.
lat1 <<
" " << setw(2) << left << mP.
lat2 1112 <<
" " << setw(2) << left << mP.
lat3 <<
" " << setw(2) << left << mP.
lat4 <<
" " 1113 << setw(2) << left << mP.
lat5 <<
" " << setw(2) << left << mP.
lat6 <<
" " << setw(2)
1114 << left << mP.
lat7 <<
" " << setw(2) << left << mP.
lat8 <<
" " << setw(10) << right
1115 << mP.
x <<
" " << setw(9) << left << mP.
tanPhi <<
" " << setw(5) << left << mP.
t0 1116 <<
" " << 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
int superLayer() const
Return the superlayer number.
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