23 return selectedSegments;
32 if (!
select(summary, &
sel)) {
return false; }
33 double chi2Ndof = segment.
chi2();
36 if (!segment.
mdtHOT().empty()) ndof = segment.
mdtHOT().size() - 2;
37 if (!segment.
cscHOT().empty()) ndof = segment.
cscHOT().size() - 2;
38 if (ndof != 0.) chi2Ndof /= ndof;
39 if (chi2Ndof >
sel.maxChi2Ndof) {
return false; }
41 if (segmentSelection) {
45 if (segmentSelection->
singleML && summary.nmdtHitsPerMl(1) > 0 && summary.nmdtHitsPerMl(2) > 0)
return false;
47 if (segmentSelection->
twoML && (summary.nmdtHitsPerMl(1) == 0 || summary.nmdtHitsPerMl(2) == 0))
return false;
49 float adcGoodHitFraction = (summary.nmdtHits - summary.nmdtHitsBelowADCCut) / summary.nmdtHits;
50 if (adcGoodHitFraction < segmentSelection->minAdcGoodFraction)
return false;
60 if (summary.nmdtHits <
sel.nminMdtHits)
return false;
62 if (summary.nphiTrigHits() <
sel.nminPhiTrigHits)
return false;
64 if (summary.netaTrigHits() <
sel.nminEtaTrigHits)
return false;
66 if (summary.noutliers >
sel.nmaxOutliers)
return false;
68 if (summary.npseudo >
sel.nmaxPseudo)
return false;
70 if (summary.nmdtHitsPerMl(1) <
sel.nminMdtMl1)
return false;
71 if (summary.nmdtHitsPerMl(2) <
sel.nminMdtMl2)
return false;
72 unsigned int nmdtCh = summary.nmdtCh();
73 if (nmdtCh <
sel.nminMdtCh)
return false;
74 if (nmdtCh >
sel.nmaxMdtCh)
return false;
87 return selectedTracks;
98 double chi2Ndof = track.chi2();
99 int ndof = track.ndof();
100 if (ndof != 0.) chi2Ndof /= ndof;
101 if (chi2Ndof >
sel.maxChi2Ndof)
return false;
104 if (trackSelection) {
107 if (!summary.hasBarrel)
return false;
110 if (!trackSelection->
endcapTrackA && summary.hasEndcapA)
return false;
111 if (!trackSelection->
endcapTrackC && summary.hasEndcapC)
return false;
116 if (!summary.hasEndcapA)
return false;
119 if (!trackSelection->
barrelTrack && summary.hasBarrel)
return false;
120 if (!trackSelection->
endcapTrackC && summary.hasEndcapC)
return false;
125 if (!summary.hasEndcapC)
return false;
128 if (!trackSelection->
barrelTrack && summary.hasBarrel)
return false;
129 if (!trackSelection->
endcapTrackA && summary.hasEndcapA)
return false;
132 if (std::abs(track.d0()) > trackSelection->
maxr0)
return false;
133 if (std::abs(track.z0ip()) > trackSelection->
maxz0)
return false;
MuonCalibExtendedRawHits::ExtendedSegPtr ExtendedSegmentPtr
MuonCalibExtendedRawHits::ExtendedTrkPtr ExtendedTrackPtr
A segment plus everything one can dream of knowing about it.
const MuonCalibTrackSummary & summary() const
access to hit counts
A track plus everything one can dream of knowing about a track.
bool hasFittedT0() const
check whether t0 was fitted
const CscHitVec & cscHOT() const
retrieve the full set of CscCalibHitBase s assigned to this segment
double chi2() const
retrieve chi2
const MdtHitVec & mdtHOT() const
retrieve the full set of MdtCalibHitBase s assigned to this segment
double fittedT0() const
retrieve fitted T0, return -99999 if no fit was performed
SegVec select(const SegVec &segments, const Selection *selection=nullptr) const
select segments satisfying selection.
EventHandler::SegmentVec SegVec
EventHandler::TrackVec TrackVec
const std::string selection
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
double maxr0
maximum transverse impact parameter wrt I.P.
double maxz0
maximum longitudinal impact parameter at I.P.