19 void LxEff::AnalyzeNotMatched(ofstream& out,
21 out <<
"AnalyzeNotMatched:" << endl;
24 out <<
"Segments #" << stNum << endl;
32 Double_t minDx = 1000;
33 Double_t minDy = 1000;
34 Double_t minDtx = 1000;
35 Double_t minDty = 1000;
37 for (list<LxPoint*>::iterator l0 = lHits[0].begin(); l0 != lHits[0].end();
39 for (list<LxPoint*>::iterator l1 = lHits[1].begin(); l1 != lHits[1].end();
41 for (list<LxPoint*>::iterator l2 = lHits[2].begin();
44 for (list<LxPoint*>::iterator r0 = rHits[0].begin();
47 for (list<LxPoint*>::iterator r1 = rHits[1].begin();
50 for (list<LxPoint*>::iterator r2 = rHits[2].begin();
65 Double_t tx1 = ray1->
tx;
66 Double_t ty1 = ray1->
ty;
75 if (minDtx > ray1->
dtx) minDtx = ray1->
dtx;
77 if (minDty > ray1->
dty) minDty = ray1->
dty;
80 LxRay* ray2 = rays[j];
81 Double_t tx2 = ray2->
tx;
82 Double_t ty2 = ray2->
ty;
84 Double_t diffZ =
z1 -
z2;
85 Double_t x2 = ray2->
source->
x + tx2 * diffZ;
86 Double_t y2 = ray2->
source->
y + ty2 * diffZ;
88 Double_t dtx = abs(tx2 - tx1);
89 Double_t dty = abs(ty2 - ty1);
90 Double_t dx = abs(x2 - x1);
91 Double_t dy = abs(y2 - y1);
93 if (maxDx < dx) maxDx = dx;
95 if (maxDy < dy) maxDy = dy;
97 if (maxDtx < dtx) maxDtx = dtx;
99 if (maxDty < dty) maxDty = dty;
123 *
sqrt(minDtx * minDtx
128 *
sqrt(minDty * minDty
136 void LxEff::AnalyzeNotMatched2(ofstream& out,
138 out <<
"AnalyzeNotMatched2:" << endl;
141 out <<
"Segments #" << stNum <<
" has ";
145 Int_t maxOccupiedLevels = 0;
146 Int_t maxNumPointsWithRays = 0;
148 for (list<LxPoint*>::iterator l0 = lHits[0].begin(); l0 != lHits[0].end();
150 for (list<LxPoint*>::iterator l1 = lHits[1].begin(); l1 != lHits[1].end();
152 for (list<LxPoint*>::iterator l2 = lHits[2].begin();
153 l2 != lHits[2].end();
155 for (list<LxPoint*>::iterator r0 = rHits[0].begin();
156 r0 != rHits[0].end();
158 for (list<LxPoint*>::iterator r1 = rHits[1].begin();
159 r1 != rHits[1].end();
161 for (list<LxPoint*>::iterator r2 = rHits[2].begin();
162 r2 != rHits[2].end();
166 Int_t occupiedLevels = 0;
167 Int_t numPointsWithRays = 0;
172 if (!rPoint->
rays.empty()) ++numPointsWithRays;
174 for (Int_t j = 0; j <
LXLAYERS; ++j) {
177 for (list<LxRay*>::iterator k = rPoint->
rays.begin();
178 k != rPoint->
rays.end();
182 if (ray->
end == lPoint) {
190 if (occupiedLevels > maxOccupiedLevels)
191 maxOccupiedLevels = occupiedLevels;
193 if (numPointsWithRays > maxNumPointsWithRays)
194 maxNumPointsWithRays = numPointsWithRays;
202 out << maxOccupiedLevels <<
" of occupied levels and "
203 << maxNumPointsWithRays <<
" points with rays" << endl
216 for (Int_t j = 0; j <
LXLAYERS; ++j) {
219 for (list<LxPoint*>::iterator k =
hits[
i][j].begin();
220 k !=
hits[
i][j].end();
246 #endif //CLUSTER_MODE
250 out <<
"Not matched MC track:" << endl;
251 out <<
"All triplets: ";
254 Int_t tripletsCount = 0;
256 for (list<LxPoint*>::iterator j =
hits[
i][1].begin(); j !=
hits[
i][1].end();
259 tripletsCount += point->
triplets.size();
262 out <<
"[" << tripletsCount <<
"]";
265 out << endl <<
"True triplets: ";
268 Int_t trueTripletsCount = 0;
270 for (list<LxPoint*>::iterator j =
hits[
i][1].begin(); j !=
hits[
i][1].end();
274 for (list<LxTriplet*>::iterator k = point->
triplets.begin();
280 bool trueLPoint =
false;
281 bool trueRPoint =
false;
283 for (list<LxPoint*>::iterator l =
hits[
i][0].begin();
284 l !=
hits[
i][0].end();
286 if (*l == lPoint) trueLPoint =
true;
289 for (list<LxPoint*>::iterator l =
hits[
i][2].begin();
290 l !=
hits[
i][2].end();
292 if (*l == rPoint) trueRPoint =
true;
295 if (trueLPoint && trueRPoint) ++trueTripletsCount;
299 out <<
"[" << trueTripletsCount <<
"]";
302 out << endl <<
"Have neighbors: ";
310 set<LxTriplet*> neighbours;
312 for (list<LxPoint*>::iterator j =
hits[
i][1].begin();
313 j !=
hits[
i][1].end();
317 for (list<LxTriplet*>::iterator k = rPoint->
triplets.begin();
322 for (list<LxPoint*>::iterator l =
hits[
i - 1][1].begin();
323 l !=
hits[
i - 1][1].end();
327 for (list<LxTriplet*>::iterator
m = lPoint->
triplets.begin();
332 for (list<pair<LxTriplet*, Double_t>>::iterator n =
336 pair<LxTriplet*, Double_t>& tc2 = *n;
338 if (tc2.first == lTriplet) neighbours.insert(lTriplet);
345 out << neighbours.size();
361 for (list<LxPoint*>::iterator j =
hits[
i][1].begin(); j !=
hits[
i][1].end();
364 Double_t cTx = cPoint->
x / cPoint->
z;
365 Double_t cTy = cPoint->
y / cPoint->
z;
367 for (list<LxPoint*>::iterator k =
hits[
i][2].begin();
368 k !=
hits[
i][2].end();
371 Double_t crDeltaZ = rPoint->
z - cPoint->
z;
372 Double_t crTx = (rPoint->
x - cPoint->
x) / crDeltaZ;
373 Double_t crTy = (rPoint->
y - cPoint->
y) / crDeltaZ;
374 Double_t crDx = abs(rPoint->
x - cPoint->
x - cTx * crDeltaZ);
375 Double_t crDy = abs(rPoint->
y - cPoint->
y - cTy * crDeltaZ);
377 if (maxCrDx[
i] < crDx) {
379 crDxDx2[
i] = cPoint->
dx * cPoint->
dx + rPoint->
dx * rPoint->
dx;
382 if (maxCrDy[
i] < crDy) {
384 crDyDy2[
i] = cPoint->
dy * cPoint->
dy + rPoint->
dy * rPoint->
dy;
387 for (list<LxPoint*>::iterator l =
hits[
i][0].begin();
388 l !=
hits[
i][0].end();
391 Double_t clDeltaZ = lPoint->
z - cPoint->
z;
392 Double_t clDx = abs(lPoint->
x - cPoint->
x - crTx * clDeltaZ);
393 Double_t clDy = abs(lPoint->
y - cPoint->
y - crTy * clDeltaZ);
395 if (maxClDx[
i] < clDx) {
397 clDxDx2[
i] = lPoint->
dx * lPoint->
dx + cPoint->
dx * cPoint->
dx
398 + rPoint->
dx * rPoint->
dx;
401 if (maxClDy[
i] < clDy) {
403 clDyDy2[
i] = lPoint->
dy * lPoint->
dy + cPoint->
dy * cPoint->
dy
404 + rPoint->
dy * rPoint->
dy;
411 out << endl <<
"Triplet C-->R X dispersions: ";
419 out << endl <<
"Triplet C-->R Y dispersions: ";
427 out << endl <<
"Triplet C-->L X dispersions: ";
434 out << endl <<
"Triplet C-->L Y dispersions: ";
451 for (list<LxPoint*>::iterator j =
hits[
i][1].begin(); j !=
hits[
i][1].end();
455 for (list<LxPoint*>::iterator k =
hits[
i - 1][1].begin();
456 k !=
hits[
i - 1][1].end();
459 Double_t deltaZ = lPoint->
z - rPoint->
z;
461 for (list<LxPoint*>::iterator l =
hits[
i][0].begin();
462 l !=
hits[
i][0].end();
466 for (list<LxPoint*>::iterator
m =
hits[
i][2].begin();
470 Double_t rdz = rPoint2->
z - rPoint0->
z;
471 Double_t rdz2 = rdz * rdz;
472 Double_t rtx = (rPoint2->
x - rPoint0->
x) / rdz;
473 Double_t rty = (rPoint2->
y - rPoint0->
y) / rdz;
474 Double_t rdtx2 = (rPoint0->
dx2 + rPoint2->
dx2) / rdz2;
475 Double_t rdty2 = (rPoint0->
dy2 + rPoint2->
dy2) / rdz2;
477 #ifdef OUT_DISP_BY_TRIPLET_DIR
478 Double_t dx = abs(lPoint->
x - rPoint->
x - rtx * deltaZ);
479 Double_t dy = abs(lPoint->
y - rPoint->
y - rty * deltaZ);
480 #else //OUT_DISP_BY_TRIPLET_DIR
482 abs(lPoint->
x - rPoint->
x - deltaZ * rPoint->
x / rPoint->
z);
484 abs(lPoint->
y - rPoint->
y - deltaZ * rPoint->
y / rPoint->
z);
485 #endif //OUT_DISP_BY_TRIPLET_DIR
487 if (dx > maxDx[
i - 1]) {
489 dxDx2[
i - 1] = lPoint->
dx2 + rPoint->
dx2;
492 if (dy > maxDy[
i - 1]) {
494 dyDy2[
i - 1] = lPoint->
dy2 + rPoint->
dy2;
497 for (list<LxPoint*>::iterator n =
hits[
i - 1][0].begin();
498 n !=
hits[
i - 1][0].end();
502 for (list<LxPoint*>::iterator o =
hits[
i - 1][2].begin();
503 o !=
hits[
i - 1][2].end();
506 Double_t ldz = lPoint2->
z - lPoint0->
z;
507 Double_t ldz2 = ldz * ldz;
508 Double_t ltx = (lPoint2->
x - lPoint0->
x) / ldz;
509 Double_t lty = (lPoint2->
y - lPoint0->
y) / ldz;
510 Double_t ldtx2 = (lPoint0->
dx2 + lPoint2->
dx2) / ldz2;
511 Double_t ldty2 = (lPoint0->
dy2 + lPoint2->
dy2) / ldz2;
513 Double_t dtx = abs(ltx - rtx);
514 Double_t dty = abs(lty - rty);
516 if (dtx > maxDtx[
i - 1]) {
518 dtxDtx2[
i - 1] = rdtx2 + ldtx2;
521 if (dty > maxDty[
i - 1]) {
523 dtyDty2[
i - 1] = rdty2 + ldty2;
533 out << endl <<
"X dispersions: ";
536 #ifdef OUT_DISP_BY_TRIPLET_DIR
541 #else //OUT_DISP_BY_TRIPLET_DIR
546 #endif //OUT_DISP_BY_TRIPLET_DIR
548 out << endl <<
"Y dispersions: ";
551 #ifdef OUT_DISP_BY_TRIPLET_DIR
556 #else //OUT_DISP_BY_TRIPLET_DIR
561 #endif //OUT_DISP_BY_TRIPLET_DIR
563 out << endl <<
"Tx dispersions: ";
572 out << endl <<
"Ty dispersions: ";
587 Double_t x1 = point1->
x;
588 Double_t y1 = point1->
y;
589 Double_t
z1 = point1->
z;
594 Double_t ax = triplet1->
tx;
595 Double_t ay = triplet1->
ty;
600 Double_t x2 = point2->
x;
601 Double_t y2 = point2->
y;
602 Double_t
z2 = point2->
z;
607 Double_t bx = triplet2->
tx;
608 Double_t by = triplet2->
ty;
611 Double_t A = ay * bz - az * by;
612 Double_t B = az * bx - ax * bz;
613 Double_t C = ax * by - ay * bx;
614 Double_t P = A * x2 + B * y2 + C *
z2;
616 Double_t ABCLen =
sqrt(A * A + B * B + C * C);
618 Double_t cosA = A / ABCLen;
619 Double_t cosB = B / ABCLen;
620 Double_t cosC = C / ABCLen;
621 Double_t p = P / ABCLen;
622 Double_t interTrackDistance = abs(cosA * x1 + cosB * y1 + cosC *
z1 - p);
624 return interTrackDistance;
628 Double_t breakChi2 = 0;
630 for (Int_t j = recoTrack->
length - 1; j > 0; --j) {
636 (lTriplet->
tx - rTriplet->
tx) * (lTriplet->
tx - rTriplet->
tx)
638 + (lTriplet->
ty - rTriplet->
ty) * (lTriplet->
ty - rTriplet->
ty)
642 breakChi2 /= 2 * (recoTrack->
length - 1);
649 static Int_t signalRecoTracks = 0;
650 static Int_t signalMCTracks = 0;
653 static Int_t mc2recoZeroMatched = 0;
654 static Int_t mc2recoIncomplete = 0;
656 bool hasPositiveMCTrack =
false;
657 bool hasNegativeMCTrack =
false;
663 Int_t pdgCode = mcTrack.
pdg;
667 bool isSignal =
true;
670 for (vector<LxMCPoint*>::iterator j = mcTrack.
Points.begin();
671 j != mcTrack.
Points.end();
675 for (list<LxPoint*>::iterator k = pMCPoint->
lxPoints.begin();
686 if (0 == track)
continue;
690 if (track->
clone)
continue;
692 map<LxTrack*, int>::iterator l = recoTracks.find(track);
694 if (l != recoTracks.end())
697 recoTracks[track] = 1;
701 bool enoughHits =
true;
708 for (Int_t k = 0; k <
LXLAYERS; ++k) {
721 Double_t pt2 = mcTrack.
px * mcTrack.
px + mcTrack.
py * mcTrack.
py;
723 if (!enoughHits || mcTrack.
mother_ID >= 0
724 || (pdgCode != 13 && pdgCode != -13)
732 hasPositiveMCTrack =
true;
734 hasNegativeMCTrack =
true;
738 Int_t matchedPoints = 0;
740 for (map<LxTrack*, Int_t>::iterator j = recoTracks.begin();
741 j != recoTracks.end();
743 if (0 == matchTrack || matchedPoints < j->second) {
744 matchTrack = j->first;
745 matchedPoints = j->second;
749 if (0 == matchTrack) {
753 #endif //MAKE_EFF_CALC \
754 //cout << "MC track does not have common point with a reconstructed" << endl;
756 ++mc2recoZeroMatched;
761 if (isSignal) DumpNotMatchedMC(mcTrackHits);
762 #endif //CLUSTER_MODE
769 if (matchedPoints < 0.7 * numberOfMuchMCPoints) {
773 #endif //MAKE_EFF_CALC \
774 //cout << "MC track have only " << matchedPoints << " common points with reconstructed" << endl;
781 if (isSignal) DumpNotMatchedMC(mcTrackHits);
782 #endif //CLUSTER_MODE
787 matchTrack->
mcTrack = &mcTrack;
790 if (!isSignal)
continue;
792 #ifdef CALC_LINK_WITH_STS_EFF
793 if (0 != matchTrack && matchedPoints >= 0.7 * numberOfMuchMCPoints)
794 matchTrack->
mcTracks.push_back(&mcTrack);
795 #endif //CALC_LINK_WITH_STS_EFF
807 result = 100 * signalRecoTracks;
808 result /= signalMCTracks;
813 #endif //MAKE_EFF_CALC
815 cout <<
"LxEff::CalcRecoEff signal efficiency: " << result <<
"( "
816 << signalRecoTracks <<
" / " << signalMCTracks <<
" )" << endl;
817 cout <<
"LxEff::CalcRecoEff: zero-matched: " << mc2recoZeroMatched
818 <<
", incomplete: " << mc2recoIncomplete << endl;
820 bool hasPositiveTrack =
false;
821 bool hasNegativeTrack =
false;
828 if (recoTrack->
clone)
continue;
835 Double_t particleSign = firstTriplet->
tx - firstPoint->
x / firstPoint->
z;
839 (secondPoint->
x - firstPoint->
x) / (secondPoint->
z - firstPoint->
z);
840 Double_t particleSign2 = tx - firstPoint->
x / firstPoint->
z;
847 if (particleSign > 0 && particleSign2 > 0)
848 hasPositiveTrack =
true;
849 else if (particleSign < 0 && particleSign2 < 0)
850 hasNegativeTrack =
true;
854 static Int_t numberOfJpsi = 0;
856 if (hasPositiveTrack && hasNegativeTrack) ++numberOfJpsi;
858 static Int_t numberOfMCJpsi = 0;
859 static Int_t numberOfTrueJpsi = 0;
861 if (hasPositiveMCTrack && hasNegativeMCTrack) {
864 if (hasPositiveTrack && hasNegativeTrack) ++numberOfTrueJpsi;
867 cout <<
"LxEff::CalcRecoEff: number of J/Psi hypoteses " << numberOfJpsi
869 result = 100 * numberOfTrueJpsi;
870 result /= numberOfMCJpsi;
871 cout <<
"LxEff::CalcRecoEff: J/Psi efficiency " << result <<
" % ( "
872 << numberOfTrueJpsi <<
" / " << numberOfMCJpsi <<
" )" << endl;
877 static Int_t recoTracks = 0;
878 static Int_t matchedMCTracks = 0;
879 static Int_t completeleyUnmatched = 0;
880 static Int_t notEnoughPoints = 0;
881 static Int_t notEnoughStations = 0;
882 static Int_t incompleteStations[
LXSTATIONS] = {};
883 static Int_t doesntHaveStsPart = 0;
884 static Int_t doesntHaveStsPart1 = 0;
885 static Int_t doesntHaveStsPart2 = 0;
886 static Int_t unmatchedButHaveStsPart = 0;
894 if (recoTrack->
clone)
continue;
896 map<LxMCTrack*, Int_t>
900 for (Int_t ii = 0; ii < recoTrack->
length; ++ii) {
903 for (list<LxPoint*>::iterator j = ray->clusterPoints.begin();
904 j != ray->clusterPoints.
end();
910 #endif //CLUSTER_MODE
912 if (0 == recoPoint)
continue;
914 for (list<LxMCPoint*>::iterator k = recoPoint->
mcPoints.begin();
920 if (0 == mcTrack)
continue;
922 map<LxMCTrack*, Int_t>::iterator mcIter =
mcTracks.find(mcTrack);
931 #endif //CLUSTER_MODE
935 Int_t matchedPoints = 0;
937 for (map<LxMCTrack*, Int_t>::iterator j =
mcTracks.begin();
940 if (0 == bestMatch || j->second > matchedPoints) {
941 bestMatch = j->first;
942 matchedPoints = j->second;
946 if (0 == bestMatch) {
947 ++completeleyUnmatched;
948 cout <<
"This reconstructed track is not intersected with any MC track "
959 bool unmatched =
false;
963 cout <<
"This reconstructed track match with an MC track in only "
964 << matchedPoints <<
"points" << endl;
979 char drawSaveName[64];
985 gPad->WaitPrimitive();
990 Int_t hitsOnStation = 0;
992 for (Int_t k = 0; k <
LXLAYERS; ++k) {
996 if (hitsOnStation < 3) ++incompleteStations[j];
999 cout <<
"The matched MC track has hits not on all stations. Only on: "
1005 ++doesntHaveStsPart;
1008 ++doesntHaveStsPart1;
1010 ++doesntHaveStsPart2;
1021 cout <<
"LxEff::CalcRecoEff: STS track not found" << endl;
1026 cout <<
"LxEff::CalcRecoEff: STS track determined wrongly" << endl;
1030 ++unmatchedButHaveStsPart;
1033 result = 100 * matchedMCTracks;
1034 result /= recoTracks;
1035 cout <<
"LxEff::CalcRecoEff matching reconstucted efficiency: " << result
1036 <<
"( " << matchedMCTracks <<
" / " << recoTracks <<
" )" << endl;
1037 cout <<
"LxEff::CalcRecoEff 0-matched: " << completeleyUnmatched
1038 <<
", not enough points: " << notEnoughPoints
1039 <<
", not enough stations: " << notEnoughStations <<
" : ";
1042 cout <<
"[" << incompleteStations[
i] <<
"]";
1045 cout <<
"LxEff::CalcRecoEff doesn't have an STS part: " << doesntHaveStsPart
1046 <<
", unmatched: " << doesntHaveStsPart1
1047 <<
", matched: " << doesntHaveStsPart2 << endl;
1048 cout <<
"LxEff::CalcRecoEff unmatched but have an STS part: "
1049 << unmatchedButHaveStsPart << endl;
1053 static Int_t recoTracks = 0;
1054 static Int_t matchedTracks = 0;
1056 Double_t positiveDelta = 0;
1057 Double_t negativeDelta = 0;
1059 list<LxTrack*> positiveBgrs;
1060 list<LxTrack*> negativeBgrs;
1067 if (recoTrack->
clone)
continue;
1071 map<LxMCTrack*, Int_t>
1077 if (0 == recoPoint)
continue;
1079 for (list<LxMCPoint*>::iterator k = recoPoint->
mcPoints.begin();
1085 if (0 == mcTrack)
continue;
1087 map<LxMCTrack*, Int_t>::iterator mcIter =
mcTracks.find(mcTrack);
1097 Int_t matchedPoints = 0;
1099 for (map<LxMCTrack*, Int_t>::iterator j =
mcTracks.begin();
1102 if (0 == bestMatch || j->second > matchedPoints) {
1103 bestMatch = j->first;
1104 matchedPoints = j->second;
1110 Double_t particleSign = firstTriplet->
tx - firstPoint->
x / firstPoint->
z;
1111 Double_t yAtZ0 = firstPoint->
y - firstTriplet->
ty * firstPoint->
z;
1114 Double_t yAtZ0_2 = firstPoint->
y
1115 - firstPoint->
z * (secondPoint->
y - firstPoint->
y)
1116 / (secondPoint->
z - firstPoint->
z);
1121 if (particleSign > 0)
1122 positiveBgrs.push_back(recoTrack);
1123 else if (particleSign < 0)
1124 negativeBgrs.push_back(recoTrack);
1126 bgrYAtZ0->Fill(yAtZ0);
1127 bgrYAtZ0_2->Fill(yAtZ0_2);
1128 backgroundChi2Histo->Fill(breakChi2);
1136 && (-13 == bestMatch->
pdg || 13 == bestMatch->
pdg)) {
1137 if (particleSign > 0 && -13 == bestMatch->
pdg) {
1138 positiveSignal = recoTrack;
1139 positiveDelta = particleSign;
1140 }
else if (particleSign < 0 && 13 == bestMatch->pdg) {
1141 negativeSignal = recoTrack;
1142 negativeDelta = particleSign;
1145 signalYAtZ0->Fill(yAtZ0);
1146 signalYAtZ0_2->Fill(yAtZ0_2);
1147 signalChi2Histo->Fill(breakChi2);
1149 if (particleSign > 0)
1150 positiveBgrs.push_back(recoTrack);
1151 else if (particleSign < 0)
1152 negativeBgrs.push_back(recoTrack);
1154 bgrYAtZ0->Fill(yAtZ0);
1155 bgrYAtZ0_2->Fill(yAtZ0_2);
1156 backgroundChi2Histo->Fill(breakChi2);
1160 Double_t result = 100 * matchedTracks;
1161 result /= recoTracks;
1162 cout <<
"LxFinderTriplet::MatchRecoToMC(): efficiency: " << result <<
" % ( "
1163 << matchedTracks <<
" / " << recoTracks <<
" )" << endl;
1165 if (0 != positiveSignal && 0 != negativeSignal) {
1166 signalInterTracksDistance->Fill(
1168 signalSignDefect->Fill(positiveDelta + negativeDelta);
1173 Double_t bgrDist = 10000;
1174 Double_t signDefect = 10000;
1176 for (list<LxTrack*>::iterator
i = positiveBgrs.begin();
1177 i != positiveBgrs.end();
1181 for (list<LxTrack*>::iterator j = negativeBgrs.begin();
1182 j != negativeBgrs.end();
1187 if (dist < bgrDist) {
1195 Double_t particleSign1 =
1196 firstTriplet1->
tx - firstPoint1->
x / firstPoint1->
z;
1200 Double_t particleSign2 =
1201 firstTriplet2->
tx - firstPoint2->
x / firstPoint2->
z;
1203 Double_t defect = particleSign1 + particleSign2;
1205 if (abs(defect) < abs(signDefect)) signDefect = defect;
1209 if (0 != posBgr && 0 != negBgr) {
1210 bgrInterTracksDistance->Fill(bgrDist);
1211 bgrSignDefect->Fill(signDefect);