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;
 }