diff --git a/core/base/CbmHistManager.cxx b/core/base/CbmHistManager.cxx old mode 100755 new mode 100644 index 1cc8bc50aa1e21b3e431495d4466fb94d3c4bf37..f8a7d69873eb9f857c9b815d9841dd669e57025d --- a/core/base/CbmHistManager.cxx +++ b/core/base/CbmHistManager.cxx @@ -47,14 +47,6 @@ using std::sort; using std::string; using std::vector; -class CompareTNamedMore : public std::binary_function<const TNamed*, const TNamed*, Bool_t> { -public: - Bool_t operator()(const TNamed* object1, const TNamed* object2) const - { - return string(object1->GetName()) > string(object2->GetName()); - } -}; - CbmHistManager::CbmHistManager() : fMap(), fCanvases() {} CbmHistManager::~CbmHistManager() {} @@ -78,7 +70,9 @@ vector<T> CbmHistManager::ObjectVector(const string& pattern) const LOG(info) << "Exception in CbmHistManager::ObjectVector: " << ex.what(); } - sort(objects.begin(), objects.end(), CompareTNamedMore()); + sort(objects.begin(), objects.end(), [](const TNamed* object1, const TNamed* object2) { + return string(object1->GetName()) > string(object2->GetName()); + }); return objects; } diff --git a/reco/detectors/rich/finder/CbmRichRingFinderData.h b/reco/detectors/rich/finder/CbmRichRingFinderData.h index 89e859de3e5b52f0360aa67a9cbc26526d6ea3e9..7dbf295d07b5e8fa649780df9b63b3d5bfa3ec4e 100644 --- a/reco/detectors/rich/finder/CbmRichRingFinderData.h +++ b/reco/detectors/rich/finder/CbmRichRingFinderData.h @@ -18,7 +18,7 @@ * \date 2008 **/ class CbmRichHoughHit { -public: + public: /** * \brief Standard constructor. */ @@ -32,39 +32,4 @@ public: bool fIsUsed; }; -/** -* \class CbmRichHoughHitCmpUp -* -* \brief CbmRichHoughHit comparator for hits sorting by X coordinate. -* -* \author Semen Lebedev -* \date 2008 -**/ -class CbmRichHoughHitCmpUp : public std::binary_function<const CbmRichHoughHit, const CbmRichHoughHit, bool> { -public: - virtual ~CbmRichHoughHitCmpUp() {} - - bool operator()(const CbmRichHoughHit& m1, const CbmRichHoughHit& m2) const { return m1.fHit.fX < m2.fHit.fX; } -}; - - -/** -* \class CbmRichRingComparatorMore -* -* \brief CbmRichRingLight comparator based on the selection ANN criterion. -* -* \author Semen Lebedev -* \date 2008 -**/ -class CbmRichRingComparatorMore : public std::binary_function<const CbmRichRingLight*, const CbmRichRingLight*, bool> { -public: - virtual ~CbmRichRingComparatorMore() {} - - bool operator()(const CbmRichRingLight* ring1, const CbmRichRingLight* ring2) const - { - return ring1->GetSelectionNN() > ring2->GetSelectionNN(); - } -}; - - #endif /* CBM_RICH_RING_FINDER_DATA_H_ */ diff --git a/reco/detectors/rich/finder/CbmRichRingFinderHoughImpl.cxx b/reco/detectors/rich/finder/CbmRichRingFinderHoughImpl.cxx index ac27eacb1807a17dbc5e6d16808a4706d22522b5..205bf123bacfc377b878d38b8336f7bb43c95639 100644 --- a/reco/detectors/rich/finder/CbmRichRingFinderHoughImpl.cxx +++ b/reco/detectors/rich/finder/CbmRichRingFinderHoughImpl.cxx @@ -15,15 +15,13 @@ #include "CbmRichRingFitterCOP.h" #include "CbmRichRingLight.h" #include "CbmRichRingSelectAnn.h" - #include "TSystem.h" #include <algorithm> +#include <cmath> #include <iostream> #include <set> -#include <cmath> - using std::cout; using std::endl; using std::set; @@ -128,7 +126,8 @@ void CbmRichRingFinderHoughImpl::DoFind() fFoundRings.clear(); fFoundRings.reserve(100); - std::sort(fData.begin(), fData.end(), CbmRichHoughHitCmpUp()); + std::sort(fData.begin(), fData.end(), + [](const CbmRichHoughHit& m1, const CbmRichHoughHit& m2) { return m1.fHit.fX < m2.fHit.fX; }); HoughTransformReconstruction(); RingSelection(); fData.clear(); @@ -193,10 +192,14 @@ void CbmRichRingFinderHoughImpl::DefineLocalAreaAndHits(float x0, float y0, int* //find all hits which are in the corridor mpnt.fHit.fX = x0 - fMaxDistance; - itmin = std::lower_bound(fData.begin(), fData.end(), mpnt, CbmRichHoughHitCmpUp()); + itmin = std::lower_bound(fData.begin(), fData.end(), mpnt, [](const CbmRichHoughHit& m1, const CbmRichHoughHit& m2) { + return m1.fHit.fX < m2.fHit.fX; + }); mpnt.fHit.fX = x0 + fMaxDistance; - itmax = std::lower_bound(fData.begin(), fData.end(), mpnt, CbmRichHoughHitCmpUp()) - 1; + itmax = std::lower_bound(fData.begin(), fData.end(), mpnt, + [](const CbmRichHoughHit& m1, const CbmRichHoughHit& m2) { return m1.fHit.fX < m2.fHit.fX; }) + - 1; *indmin = itmin - fData.begin(); *indmax = itmax - fData.begin(); @@ -404,7 +407,9 @@ void CbmRichRingFinderHoughImpl::FindPeak(int indmin, int indmax) // cout << select << endl; // Remove found hits only for good quality rings - if (select > fAnnCut) { RemoveHitsAroundRing(indmin, indmax, ring2); } + if (select > fAnnCut) { + RemoveHitsAroundRing(indmin, indmax, ring2); + } if (select > -0.7) { fFoundRings.push_back(ring2); @@ -425,14 +430,18 @@ void CbmRichRingFinderHoughImpl::RemoveHitsAroundRing(int indmin, int indmax, Cb float ry = fData[j].fHit.fY - ring->GetCenterY(); float dr = fabs(sqrt(rx * rx + ry * ry) - ring->GetRadius()); - if (dr < dCut) { fData[j].fIsUsed = true; } + if (dr < dCut) { + fData[j].fIsUsed = true; + } } } void CbmRichRingFinderHoughImpl::RingSelection() { int nofRings = fFoundRings.size(); - sort(fFoundRings.begin(), fFoundRings.end(), CbmRichRingComparatorMore()); + sort(fFoundRings.begin(), fFoundRings.end(), [](const CbmRichRingLight* ring1, const CbmRichRingLight* ring2) { + return ring1->GetSelectionNN() > ring2->GetSelectionNN(); + }); set<unsigned int> usedHitsAll; vector<unsigned int> goodRingIndex; goodRingIndex.reserve(nofRings); @@ -446,9 +455,13 @@ void CbmRichRingFinderHoughImpl::RingSelection() int nofUsedHitsAll = 0; for (int iHit = 0; iHit < nofHits; iHit++) { set<unsigned int>::iterator it = usedHitsAll.find(ring->GetHitId(iHit)); - if (it != usedHitsAll.end()) { nofUsedHitsAll++; } + if (it != usedHitsAll.end()) { + nofUsedHitsAll++; + } + } + if ((float) nofUsedHitsAll / (float) nofHits > fUsedHitsAllCut) { + isGoodRingAll = false; } - if ((float) nofUsedHitsAll / (float) nofHits > fUsedHitsAllCut) { isGoodRingAll = false; } if (isGoodRingAll) { fFoundRings[iRing]->SetRecFlag(1); @@ -490,7 +503,9 @@ void CbmRichRingFinderHoughImpl::ReAssignSharedHits(int ringInd1, int ringInd2) float ry2 = hitY - ring2->GetCenterY(); float dr2 = fabs(sqrt(rx2 * rx2 + ry2 * ry2) - ring2->GetRadius()); - if (dr1 > dr2) { ring1->RemoveHit(hitId1); } + if (dr1 > dr2) { + ring1->RemoveHit(hitId1); + } else { ring2->RemoveHit(hitId2); } diff --git a/reco/littrack/parallel/LitScalTrack.h b/reco/littrack/parallel/LitScalTrack.h index 9954c7add5fa6b8e723d0c645a9e747d3e4a0d8a..5ca5ea9b08a3f7fac98763e926e18504a33481da 100644 --- a/reco/littrack/parallel/LitScalTrack.h +++ b/reco/littrack/parallel/LitScalTrack.h @@ -12,13 +12,13 @@ #ifndef LITSCALTRACK_H_ #define LITSCALTRACK_H_ +#include "LitScalPixelHit.h" +#include "LitTrackParam.h" + #include <sstream> #include <string> #include <vector> -#include "LitScalPixelHit.h" -#include "LitTrackParam.h" - using std::string; using std::stringstream; using std::vector; @@ -38,7 +38,7 @@ namespace lit * tracking algorithm. */ class LitScalTrack { - public: + public: /** * \brief Constructor. */ @@ -220,7 +220,7 @@ namespace lit return strm; } - private: + private: vector<const LitScalPixelHit*> fHits; // Array of hits LitTrackParamScal fParamFirst; // First track parameter LitTrackParamScal fParamLast; // Last track parameter @@ -232,65 +232,6 @@ namespace lit bool fIsGood; // true id track is "good" }; - - /** -* \class CompareLitScalTrackChiSqOverNdfLess -* \brief Comparator class used in STL algorithms for \c LitScalTrack class. -* \author Andrey Lebedev <andrey.lebedev@gsi.de> -* \date 2013 -* -* This comparator class can be used in STL sort and find algorithms -* to sort in \a ascending order \c LitScalTracks objects by its -* (chi-square / NDF) value. -*/ - class CompareLitScalTrackChiSqOverNdfLess : - public std::binary_function<const LitScalTrack*, const LitScalTrack*, bool> { - public: - bool operator()(const LitScalTrack* track1, const LitScalTrack* track2) const - { - return ((track1->GetChiSq() / track1->GetNDF()) < (track2->GetChiSq() / track2->GetNDF())); - } - }; - - - /** -* \class CompareLitScalTrackNofHitsMore -* \brief Comparator class used in STL algorithms for \c LitScalTrack class. -* \author Andrey Lebedev <andrey.lebedev@gsi.de> -* \date 2013 -* -* This comparator class can be used in STL sort and find algorithms -* to sort in \a descending order \c LitScalTracks objects by a -* number of hits. -*/ - class CompareLitScalTrackNofHitsMore : public std::binary_function<const LitScalTrack*, const LitScalTrack*, bool> { - public: - bool operator()(const LitScalTrack* track1, const LitScalTrack* track2) const - { - return track1->GetNofHits() > track2->GetNofHits(); - } - }; - - - /** -* \class CompareLitScalTrackLastStationIdMore -* \brief Comparator class used in STL algorithms for \c LitScalTrack class. -* \author Andrey Lebedev <andrey.lebedev@gsi.de> -* \date 2013 -* -* This comparator class can be used in STL sort and find algorithms -* to sort in \a descending order \c LitScalTracks objects by a -* last station ID. -*/ - class CompareLitScalTrackLastStationIdMore : - public std::binary_function<const LitScalTrack*, const LitScalTrack*, bool> { - public: - bool operator()(const LitScalTrack* track1, const LitScalTrack* track2) const - { - return track1->GetLastStationId() > track2->GetLastStationId(); - } - }; - } // namespace parallel } // namespace lit diff --git a/reco/littrack/parallel/LitTrackSelection.h b/reco/littrack/parallel/LitTrackSelection.h index b8deef840ba2f8ec587ed6f4d972520892a6f74b..0b62223cce67a05aa55612121f7e5a5f5f96994e 100644 --- a/reco/littrack/parallel/LitTrackSelection.h +++ b/reco/littrack/parallel/LitTrackSelection.h @@ -14,14 +14,14 @@ #ifndef LITTRACKSELECTION_H_ #define LITTRACKSELECTION_H_ +#include "LitScalTrack.h" + #include <algorithm> #include <functional> #include <set> #include <utility> #include <vector> -#include "LitScalTrack.h" - using std::equal_range; using std::pair; using std::set; @@ -35,7 +35,9 @@ namespace lit void DoSortNofHits(vector<LitScalTrack*>& tracks) { - sort(tracks.begin(), tracks.end(), CompareLitScalTrackNofHitsMore()); + sort(tracks.begin(), tracks.end(), [](const LitScalTrack* track1, const LitScalTrack* track2) { + return track1->GetNofHits() > track2->GetNofHits(); + }); unsigned int maxNofHits = tracks.front()->GetNofHits(); unsigned int minNofHits = tracks.back()->GetNofHits(); @@ -45,17 +47,26 @@ namespace lit value.SetNofHits(iNofHits); pair<vector<LitScalTrack*>::iterator, vector<LitScalTrack*>::iterator> bounds; - bounds = equal_range(tracks.begin(), tracks.end(), &value, CompareLitScalTrackNofHitsMore()); + bounds = + equal_range(tracks.begin(), tracks.end(), &value, [](const LitScalTrack* track1, const LitScalTrack* track2) { + return track1->GetNofHits() > track2->GetNofHits(); + }); - if (bounds.first == bounds.second) { continue; } + if (bounds.first == bounds.second) { + continue; + } - sort(bounds.first, bounds.second, CompareLitScalTrackChiSqOverNdfLess()); + sort(bounds.first, bounds.second, [](const LitScalTrack* track1, const LitScalTrack* track2) { + return ((track1->GetChiSq() / track1->GetNDF()) < (track2->GetChiSq() / track2->GetNDF())); + }); } } void DoSortLastStation(vector<LitScalTrack*>& tracks) { - sort(tracks.begin(), tracks.end(), CompareLitScalTrackLastStationIdMore()); + sort(tracks.begin(), tracks.end(), [](const LitScalTrack* track1, const LitScalTrack* track2) { + return track1->GetLastStationId() > track2->GetLastStationId(); + }); unsigned int maxPlaneId = tracks.front()->GetLastStationId(); unsigned int minPlaneId = tracks.back()->GetLastStationId(); @@ -65,17 +76,26 @@ namespace lit value.SetLastStationId(iPlaneId); pair<vector<LitScalTrack*>::iterator, vector<LitScalTrack*>::iterator> bounds; - bounds = equal_range(tracks.begin(), tracks.end(), &value, CompareLitScalTrackLastStationIdMore()); + bounds = + equal_range(tracks.begin(), tracks.end(), &value, [](const LitScalTrack* track1, const LitScalTrack* track2) { + return track1->GetLastStationId() > track2->GetLastStationId(); + }); - if (bounds.first == bounds.second) { continue; } + if (bounds.first == bounds.second) { + continue; + } - sort(bounds.first, bounds.second, CompareLitScalTrackChiSqOverNdfLess()); + sort(bounds.first, bounds.second, [](const LitScalTrack* track1, const LitScalTrack* track2) { + return ((track1->GetChiSq() / track1->GetNDF()) < (track2->GetChiSq() / track2->GetNDF())); + }); } } void DoSortChiSqOverNDF(vector<LitScalTrack*>& tracks) { - sort(tracks.begin(), tracks.end(), CompareLitScalTrackChiSqOverNdfLess()); + sort(tracks.begin(), tracks.end(), [](const LitScalTrack* track1, const LitScalTrack* track2) { + return ((track1->GetChiSq() / track1->GetNDF()) < (track2->GetChiSq() / track2->GetNDF())); + }); } @@ -94,7 +114,9 @@ namespace lit for (unsigned int iTrack = 0; iTrack < nofTracks; iTrack++) { LitScalTrack* track = tracks[iTrack]; - if (!track->IsGood()) { continue; } + if (!track->IsGood()) { + continue; + } int nofSharedHits = 0; int nofHits = track->GetNofHits(); @@ -113,7 +135,9 @@ namespace lit } } - if (!track->IsGood()) { continue; } + if (!track->IsGood()) { + continue; + } for (int iHit = 0; iHit < nofHits; iHit++) { int hitId = track->GetHit(iHit)->refId; diff --git a/reco/littrack/std/data/CbmLitHit.h b/reco/littrack/std/data/CbmLitHit.h index 68bb74cabde4185ec50ecdbad19efb56fc19d41f..e8d1d319c57d5a31341390d1312fb5a50c8d1fea 100644 --- a/reco/littrack/std/data/CbmLitHit.h +++ b/reco/littrack/std/data/CbmLitHit.h @@ -12,11 +12,10 @@ #ifndef CBMLITHIT_H_ #define CBMLITHIT_H_ +#include "TObject.h" #include "base/CbmLitEnums.h" #include "base/CbmLitFloat.h" -#include "TObject.h" - #include <functional> #include <string> using std::string; @@ -28,7 +27,7 @@ using std::string; * \brief Base data class for hits. **/ class CbmLitHit { -public: + public: /** * \brief Constructor. */ @@ -64,7 +63,7 @@ public: */ virtual string ToString() const { return ""; } -private: + private: Int_t fRefId; // reference to MC LitHitType fHitType; // type of the hit (strip, pixel, etc). Used to safely cast to the proper type. litfloat fZ; // Z position of the hit [cm] @@ -85,20 +84,4 @@ private: static const Int_t SB_STATION = 4; }; -/** - * \class Comparator for STL sorting algorithms. - */ -class CompareHitPtrZLess : public std::binary_function<const CbmLitHit*, const CbmLitHit*, bool> { -public: - bool operator()(const CbmLitHit* hit1, const CbmLitHit* hit2) const { return hit1->GetZ() < hit2->GetZ(); } -}; - -/** - * \class Comparator for STL sorting algorithms. - */ -class CompareHitPtrZMore : public std::binary_function<const CbmLitHit*, const CbmLitHit*, bool> { -public: - bool operator()(const CbmLitHit* hit1, const CbmLitHit* hit2) const { return hit1->GetZ() > hit2->GetZ(); } -}; - #endif /*CBMLITHIT_H_*/ diff --git a/reco/littrack/std/data/CbmLitTrack.h b/reco/littrack/std/data/CbmLitTrack.h index e5619d36888c45e213a615c155cc2436310ad94a..dbe43236f70ec7cbf30e3a56fefcd7cc3242ff7b 100644 --- a/reco/littrack/std/data/CbmLitTrack.h +++ b/reco/littrack/std/data/CbmLitTrack.h @@ -32,7 +32,7 @@ using std::vector; * \brief Base data class for track. **/ class CbmLitTrack { -public: + public: /** * \brief Constructor. */ @@ -108,7 +108,9 @@ public: void RemoveHit(Int_t index) { fHits.erase(fHits.begin() + index); - if (!fFitNodes.empty()) { fFitNodes.erase(fFitNodes.begin() + index); }; + if (!fFitNodes.empty()) { + fFitNodes.erase(fFitNodes.begin() + index); + }; } /** @@ -117,9 +119,13 @@ public: */ void SortHits(Bool_t downstream = true) { - if (downstream) { sort(fHits.begin(), fHits.end(), CompareHitPtrZLess()); } + if (downstream) { + sort(fHits.begin(), fHits.end(), + [](const CbmLitHit* hit1, const CbmLitHit* hit2) { return hit1->GetZ() < hit2->GetZ(); }); + } else { - sort(fHits.begin(), fHits.end(), CompareHitPtrZMore()); + sort(fHits.begin(), fHits.end(), + [](const CbmLitHit* hit1, const CbmLitHit* hit2) { return hit1->GetZ() > hit2->GetZ(); }); } } @@ -133,7 +139,9 @@ public: std::vector<litfloat> covLast(fParamLast.GetCovMatrix()); // don't check the time error, because time can be unmeasured -- S.Gorbunov for (Int_t i = 0; i < 15; i++) { - if (std::abs(covFirst[i]) > 10000. || std::abs(covLast[i]) > 10000.) { return false; } + if (std::abs(covFirst[i]) > 10000. || std::abs(covLast[i]) > 10000.) { + return false; + } } return true; } @@ -151,7 +159,7 @@ public: return ss.str(); } -private: + private: vector<const CbmLitHit*> fHits; // Array of hits CbmLitTrackParam fParamFirst; // First track parameter CbmLitTrackParam fParamLast; // Last track parameter @@ -167,63 +175,4 @@ private: litfloat fLength; // Track length }; -/** - * \brief Comparator for STL sorting algorithms. - */ -class CompareTrackPtrChiSqOverNdfLess : public std::binary_function<const CbmLitTrack*, const CbmLitTrack*, Bool_t> { -public: - Bool_t operator()(const CbmLitTrack* track1, const CbmLitTrack* track2) const - { - return ((track1->GetChi2() / track1->GetNDF()) < (track2->GetChi2() / track2->GetNDF())); - } -}; - - -/** - * \brief Comparator for STL sorting algorithms. - */ -class CompareTrackPtrPrevTrackIdLess : public std::binary_function<const CbmLitTrack*, const CbmLitTrack*, Bool_t> { -public: - Bool_t operator()(const CbmLitTrack* track1, const CbmLitTrack* track2) const - { - return track1->GetPreviousTrackId() < track2->GetPreviousTrackId(); - } -}; - - -/** - * \brief Comparator for STL sorting algorithms. - */ -class CompareTrackPtrNofHitsMore : public std::binary_function<const CbmLitTrack*, const CbmLitTrack*, Bool_t> { -public: - Bool_t operator()(const CbmLitTrack* track1, const CbmLitTrack* track2) const - { - return track1->GetNofHits() > track2->GetNofHits(); - } -}; - - -/** - * \brief Comparator for STL sorting algorithms. - */ -class CompareTrackPtrNofHitsLess : public std::binary_function<const CbmLitTrack*, const CbmLitTrack*, Bool_t> { -public: - Bool_t operator()(const CbmLitTrack* track1, const CbmLitTrack* track2) const - { - return track1->GetNofHits() < track2->GetNofHits(); - } -}; - - -/** - * \brief Comparator for STL sorting algorithms. - */ -class CompareTrackPtrLastStationIdMore : public std::binary_function<const CbmLitTrack*, const CbmLitTrack*, Bool_t> { -public: - Bool_t operator()(const CbmLitTrack* track1, const CbmLitTrack* track2) const - { - return track1->GetLastStationId() > track2->GetLastStationId(); - } -}; - #endif /*CBMLITTRACK_H_*/ diff --git a/reco/littrack/std/selection/CbmLitQualitySort.cxx b/reco/littrack/std/selection/CbmLitQualitySort.cxx index 73f4691d9e56d746f12c42a5f7c3e9494c273130..adefdd0486bc3a8875987b906fadf867adb8a648 100644 --- a/reco/littrack/std/selection/CbmLitQualitySort.cxx +++ b/reco/littrack/std/selection/CbmLitQualitySort.cxx @@ -32,7 +32,9 @@ CbmLitQualitySort::~CbmLitQualitySort() {} LitStatus CbmLitQualitySort::DoSortNofHits(TrackPtrIterator itBegin, TrackPtrIterator itEnd) { - std::sort(itBegin, itEnd, CompareTrackPtrNofHitsMore()); + std::sort(itBegin, itEnd, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return track1->GetNofHits() > track2->GetNofHits(); + }); Int_t maxNofHits = (*itBegin)->GetNofHits(); Int_t minNofHits = (*(itEnd - 1))->GetNofHits(); @@ -42,18 +44,26 @@ LitStatus CbmLitQualitySort::DoSortNofHits(TrackPtrIterator itBegin, TrackPtrIte value.SetNofHits(iNofHits); std::pair<TrackPtrIterator, TrackPtrIterator> bounds; - bounds = std::equal_range(itBegin, itEnd, &value, CompareTrackPtrNofHitsMore()); + bounds = std::equal_range(itBegin, itEnd, &value, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return track1->GetNofHits() > track2->GetNofHits(); + }); - if (bounds.first == bounds.second) { continue; } + if (bounds.first == bounds.second) { + continue; + } - std::sort(bounds.first, bounds.second, CompareTrackPtrChiSqOverNdfLess()); + std::sort(bounds.first, bounds.second, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return ((track1->GetChi2() / track1->GetNDF()) < (track2->GetChi2() / track2->GetNDF())); + }); } return kLITSUCCESS; } LitStatus CbmLitQualitySort::DoSortLastStation(TrackPtrIterator itBegin, TrackPtrIterator itEnd) { - std::sort(itBegin, itEnd, CompareTrackPtrLastStationIdMore()); + std::sort(itBegin, itEnd, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return track1->GetLastStationId() > track2->GetLastStationId(); + }); Int_t maxPlaneId = (*itBegin)->GetLastStationId(); Int_t minPlaneId = (*(itEnd - 1))->GetLastStationId(); @@ -63,17 +73,25 @@ LitStatus CbmLitQualitySort::DoSortLastStation(TrackPtrIterator itBegin, TrackPt value.SetLastStationId(iPlaneId); std::pair<TrackPtrIterator, TrackPtrIterator> bounds; - bounds = std::equal_range(itBegin, itEnd, &value, CompareTrackPtrLastStationIdMore()); + bounds = std::equal_range(itBegin, itEnd, &value, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return track1->GetLastStationId() > track2->GetLastStationId(); + }); - if (bounds.first == bounds.second) { continue; } + if (bounds.first == bounds.second) { + continue; + } - std::sort(bounds.first, bounds.second, CompareTrackPtrChiSqOverNdfLess()); + std::sort(bounds.first, bounds.second, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return ((track1->GetChi2() / track1->GetNDF()) < (track2->GetChi2() / track2->GetNDF())); + }); } return kLITSUCCESS; } LitStatus CbmLitQualitySort::DoSortChiSqOverNDF(TrackPtrIterator itBegin, TrackPtrIterator itEnd) { - std::sort(itBegin, itEnd, CompareTrackPtrChiSqOverNdfLess()); + std::sort(itBegin, itEnd, [](const CbmLitTrack* track1, const CbmLitTrack* track2) { + return ((track1->GetChi2() / track1->GetNDF()) < (track2->GetChi2() / track2->GetNDF())); + }); return kLITSUCCESS; }