diff --git a/core/eventdisplay/CMakeLists.txt b/core/eventdisplay/CMakeLists.txt
index eda6b9c199f09e81aacf28458b613cc2c6309e2c..c57246caee8455b57330d2905b75c9a54262f88b 100644
--- a/core/eventdisplay/CMakeLists.txt
+++ b/core/eventdisplay/CMakeLists.txt
@@ -16,8 +16,8 @@ set(SRCS
   CbmTimesliceRecoTracks.cxx
   CbmTsEveAnimationControl.cxx
   CbmTsEveTransparencyControl.cxx
-  CbmTsDisTracks.cxx
-  CbmTsPointSetArrayDraw.cxx  
+  CbmTsDisTofTracklets.cxx
+  CbmTsPointSetArrayDraw.cxx
   )
 
 
diff --git a/core/eventdisplay/CbmDisplayLinkDef.h b/core/eventdisplay/CbmDisplayLinkDef.h
index 9c9351724530828787feb47339518ab0f2b53f86..a2b99fd343c5a1bc8fa6a5b890dc5876ed157f65 100644
--- a/core/eventdisplay/CbmDisplayLinkDef.h
+++ b/core/eventdisplay/CbmDisplayLinkDef.h
@@ -11,10 +11,7 @@
 #pragma link C++ class CbmTrdDigiDraw;
 #pragma link C++ class CbmPixelHitSetDraw;
 #pragma link C++ class CbmEvDisTracks + ;
-#pragma link C++ class CbmEvManager + ;
-#pragma link C++ class CbmEvManagerEditor + ;
-#pragma link C++ class CbmEveAnimationControl + ;
-#pragma link C++ class CbmTsDisTracks + ;
+#pragma link C++ class CbmTsDisTofTracklets + ;
 #pragma link C++ class CbmRecoTracks;
 #pragma link C++ class CbmPointSetArray;
 #pragma link C++ class CbmPointSetArrayDraw;
diff --git a/core/eventdisplay/CbmTimesliceManager.cxx b/core/eventdisplay/CbmTimesliceManager.cxx
index cef6e1aa8674c458afa8d678ce652ff6228bdacb..a2b4f8e2d7a8bacea225ac1195287831168498c3 100644
--- a/core/eventdisplay/CbmTimesliceManager.cxx
+++ b/core/eventdisplay/CbmTimesliceManager.cxx
@@ -1,18 +1,17 @@
 /* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Pierre-Alain Loizeau[committer] */
+   Authors: Pierre-Alain Loizeau[committer], Norbert Herrmann */
 
 #include "CbmTimesliceManager.h"
 
 #include "CbmEvent.h"                     // For CbmEvent
 #include "CbmTimeslicePixelHitSetDraw.h"  // For CbmTimeslicePixelHitSetDraw
 #include "CbmTimesliceRecoTracks.h"       // For CbmTimesliceRecoTracks
-#include "CbmTsDisTracks.h"               // for CbmTofTracklets
+#include "CbmTsDisTofTracklets.h"         // for CbmTofTracklets
 #include "CbmTsPointSetArrayDraw.h"       // For CbmTsPointSetArrayDraw
-
-#include "FairRootManager.h"  // for FairRootManager
-#include "FairTask.h"         // for FairTask
-#include "FairXMLNode.h"      // for FairXMLNode and FairXMLFile
+#include "FairRootManager.h"              // for FairRootManager
+#include "FairTask.h"                     // for FairTask
+#include "FairXMLNode.h"                  // for FairXMLNode and FairXMLFile
 
 #include <TClonesArray.h>  // for TClonesArray
 #include <TDatabasePDG.h>  // for TDatabasePDG
@@ -116,8 +115,8 @@ void CbmTimesliceManager::SetDisplayMcbm(bool bLowRate, bool bMuch)
   CbmTimesliceRecoTracks* drawTrack = new CbmTimesliceRecoTracks();
   AddTask(drawTrack);
 
-  CbmTsDisTracks* TofTracks =
-    new CbmTsDisTracks("TofTracks", 1, kFALSE, kTRUE);  //name, verbosity, RnrChildren points, RnrChildren track
+  CbmTsDisTofTracklets* TofTracks =
+    new CbmTsDisTofTracklets("TofTracks", 1, kFALSE, kTRUE);  //name, verbosity, RnrChildren points, RnrChildren track
   AddTask(TofTracks);
 
   CbmTsPointSetArrayDraw* drawTofUHit = new CbmTsPointSetArrayDraw(
@@ -133,8 +132,8 @@ void CbmTimesliceManager::SetDisplayTofCosmicsHd()
   CbmTimeslicePixelHitSetDraw* drawTofHit = new CbmTimeslicePixelHitSetDraw("TofHit", kRed, kFullSquare);
   AddTask(drawTofHit);
 
-  CbmTsDisTracks* TofTracks =
-    new CbmTsDisTracks("TofTracks", 1, kFALSE, kTRUE);  //name, verbosity, RnrChildren points, RnrChildren track
+  CbmTsDisTofTracklets* TofTracks =
+    new CbmTsDisTofTracklets("TofTracks", 1, kFALSE, kTRUE);  //name, verbosity, RnrChildren points, RnrChildren track
   AddTask(TofTracks);
 
   //CbmTsPointSetArrayDraw* drawTofUHit = new CbmTsPointSetArrayDraw("TofUHit", kBlue, kCross, 1, kTRUE);  //name, colorMode, markerMode, verbosity, RnrChildren
@@ -179,6 +178,19 @@ void CbmTimesliceManager::SwitchBackground(Bool_t /*light*/)
   gEve->GetViewers()->SwitchColorSet();
 }
 
+void CbmTimesliceManager::SwitchPdgColorTrack(Bool_t pdg_color)
+{
+  /// Get List of tasks from FairRunAna
+  TList* taskList = FairRunAna::Instance()->GetMainTask()->GetListOfTasks();
+
+  /// Tell the one(s) displaying reco tracks to use pdg_color or not
+  for (TObject* task : *taskList) {
+    if (nullptr != dynamic_cast<CbmTimesliceRecoTracks*>(task)) {
+      dynamic_cast<CbmTimesliceRecoTracks*>(task)->SwitchPdgColorTrack(pdg_color);
+    }
+  }
+}
+
 void CbmTimesliceManager::Init(Int_t visopt, Int_t vislvl, Int_t maxvisnds)
 {
   TEveManager::Create();
@@ -230,8 +242,7 @@ void CbmTimesliceManager::NextTimeslice()
   int NbEventsInTs = 0;
   while (NbEventsInTs == 0) {
     GotoTimeslice(GetCurrentTimeslice() + 1);
-    TClonesArray* pCbmEvents = dynamic_cast<TClonesArray*>(fRootManager->GetObject("CbmEvent"));
-    NbEventsInTs             = fCbmEvents->GetEntriesFast();
+    NbEventsInTs = fCbmEvents->GetEntriesFast();
   }
   LOG(debug) << "Display TS " << GetCurrentTimeslice() << " with " << NbEventsInTs << " events";
   SetTsTimeText(GetTimesliceTime());
@@ -272,9 +283,9 @@ void CbmTimesliceManager::GotoEvent(Int_t event)
       LOG(debug) << GetName() << ": call " << task->GetName();
       //dynamic_cast<CbmTsPointSetArrayDraw*>(task)->GotoEvent(event);      // FIXME: does not work yet
     }
-    else if (nullptr != dynamic_cast<CbmTsDisTracks*>(task)) {
+    else if (nullptr != dynamic_cast<CbmTsDisTofTracklets*>(task)) {
       LOG(debug) << GetName() << ": call " << task->GetName();
-      dynamic_cast<CbmTsDisTracks*>(task)->GotoEvent(event);
+      dynamic_cast<CbmTsDisTofTracklets*>(task)->GotoEvent(event);
     }
   }
 }
diff --git a/core/eventdisplay/CbmTimesliceManager.h b/core/eventdisplay/CbmTimesliceManager.h
index 367bc02a60eef972ee2dc0c31c1216fd1ecf529a..241eded24c71012871d5f14757d55a8acb319da4 100644
--- a/core/eventdisplay/CbmTimesliceManager.h
+++ b/core/eventdisplay/CbmTimesliceManager.h
@@ -1,6 +1,6 @@
 /* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Pierre-Alain Loizeau[committer] */
+   Authors: Pierre-Alain Loizeau[committer], Norbert Herrmann */
 
 #ifndef CbmTimesliceManager_H
 #define CbmTimesliceManager_H
@@ -78,6 +78,12 @@ public:
    **/
   virtual void SwitchBackground(Bool_t /*light*/);
 
+  /**
+   ** switch track color: to be called by GUI element
+   ** @param PDG color if true, red if false (see TimesliceRecoTracks)
+   **/
+  void SwitchPdgColorTrack(Bool_t pdg_color);
+
   virtual void Init(Int_t visopt = 1, Int_t vislvl = 3, Int_t maxvisnds = 10000);
   void AddTask(FairTask* t) { fRunAna->AddTask(t); }
 
diff --git a/core/eventdisplay/CbmTimesliceManagerEditor.cxx b/core/eventdisplay/CbmTimesliceManagerEditor.cxx
index 95d9aed56c4c8795cd81195bf0b04d76aea8b816..3305b44e8244701b39c1a1fb4545437072f73b2c 100644
--- a/core/eventdisplay/CbmTimesliceManagerEditor.cxx
+++ b/core/eventdisplay/CbmTimesliceManagerEditor.cxx
@@ -62,6 +62,12 @@ void CbmTimesliceManagerEditor::SwitchBackground(Bool_t light_background)
   fManager->SwitchBackground(light_background);
 }
 
+void CbmTimesliceManagerEditor::SwitchPdgColorTrack(Bool_t pdg_color)
+{
+  // Forward to manager class which forwards to track display class
+  fManager->SwitchPdgColorTrack(pdg_color);
+}
+
 void CbmTimesliceManagerEditor::Init()
 {
   FairRootManager* rootManager = FairRootManager::Instance();
@@ -183,6 +189,10 @@ void CbmTimesliceManagerEditor::Init()
   scene_conf->AddFrame(backgroundButton, new TGLayoutHints(kLHintsRight | kLHintsExpandX, 5, 5, 1, 1));
   backgroundButton->Connect("Toggled(Bool_t)", this->ClassName(), this, "SwitchBackground(Bool_t)");
 
+  TGCheckButton* pdgColorTrackButton = new TGCheckButton(scene_conf, "Track w/ PDG color");
+  scene_conf->AddFrame(pdgColorTrackButton, new TGLayoutHints(kLHintsRight | kLHintsExpandX, 5, 5, 1, 1));
+  pdgColorTrackButton->Connect("Toggled(Bool_t)", this->ClassName(), this, "SwitchPdgColorTrack(Bool_t)");
+
   TGGroupFrame* frame_screenshot = new TGGroupFrame(scene_conf, "Screenshot");
   frame_screenshot->SetTitlePos(TGGroupFrame::kCenter);
 
diff --git a/core/eventdisplay/CbmTimesliceManagerEditor.h b/core/eventdisplay/CbmTimesliceManagerEditor.h
index 4fc248ab432f609ab30b86c5fc55b3a158d411e4..46256281d4bcaa443448c2a6a65542e5dcd64a61 100644
--- a/core/eventdisplay/CbmTimesliceManagerEditor.h
+++ b/core/eventdisplay/CbmTimesliceManagerEditor.h
@@ -44,6 +44,12 @@ public:
    **/
   void SwitchBackground(Bool_t light_background);
 
+  /**
+   ** switch track color: to be called by GUI element
+   ** @param PDG color if true, red if false (see TimesliceRecoTracks)
+   **/
+  void SwitchPdgColorTrack(Bool_t pdg_color);
+
   virtual void Init();
 
   /**
diff --git a/core/eventdisplay/CbmTimesliceRecoTracks.cxx b/core/eventdisplay/CbmTimesliceRecoTracks.cxx
index 5dd3be018a714c741df7289fd3e43730597083a4..56f478f33e4ca9a62d816de0fc04c18d43db5aa8 100644
--- a/core/eventdisplay/CbmTimesliceRecoTracks.cxx
+++ b/core/eventdisplay/CbmTimesliceRecoTracks.cxx
@@ -1,6 +1,6 @@
 /* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Pierre-Alain Loizeau[committer] */
+   Authors: Pierre-Alain Loizeau[committer], Norbert Herrmann */
 #include "CbmTimesliceRecoTracks.h"
 
 #include "CbmEvent.h"             // For CbmEvent
@@ -52,7 +52,9 @@ InitStatus CbmTimesliceRecoTracks::Init()
   fTofHits       = dynamic_cast<TClonesArray*>(fManager->GetObject("TofHit"));
   fTofTracks     = dynamic_cast<TClonesArray*>(fManager->GetObject("TofTrack"));
 
-  if (nullptr == fTofTracks) { LOG(warn) << "TofTracks not found"; }
+  if (nullptr == fTofTracks) {
+    LOG(warn) << "TofTracks not found";
+  }
 
   if (nullptr == fCbmEvents) {
     LOG(fatal) << "CbmTimesliceRecoTracks::Init() => CbmEvents branch not found! Task will be deactivated";
@@ -187,16 +189,25 @@ void CbmTimesliceRecoTracks::GotoEvent(uint32_t uEventIdx)
     */
 
     CbmStsTrack* stsTrack = nullptr;
-    if (stsId > -1) { stsTrack = dynamic_cast<CbmStsTrack*>(fStsTracks->At(stsId)); }
+    if (stsId > -1) {
+      stsTrack = dynamic_cast<CbmStsTrack*>(fStsTracks->At(stsId));
+    }
 
     Int_t n   = 0;
     Int_t pdg = 0;
-    if (nullptr != stsTrack) { pdg = stsTrack->GetPidHypo(); }
+    if (nullptr != stsTrack) {
+      pdg = stsTrack->GetPidHypo();
+    }
     TParticle P;
     P.SetPdgCode(pdg);
     fTrList             = GetTrGroup(&P);
     TEveTrack* eveTrack = new TEveTrack(&P, pdg, fTrPr);
-    eveTrack->SetLineColor(kRed);  //fEventManager->Color(pdg));
+    if (fbPdgColorTrack && 0 != pdg) {  //
+      fEventManager->Color(pdg);
+    }
+    else {
+      eveTrack->SetLineColor(kRed);
+    }
     if (nullptr != stsTrack) {
       LOG(debug3) << "HandleStsTrack " << stsId;
       HandleStsTrack(eveTrack, n, stsTrack);
@@ -219,7 +230,9 @@ void CbmTimesliceRecoTracks::GotoEvent(uint32_t uEventIdx)
 
     LOG(debug3) << "HandleTrdTrack " << trdId;
     if (-1 < trdId) {
-      if (nullptr == fTrdTracks) { LOG(error) << GetName() << ": No TrdTrack array, return"; }
+      if (nullptr == fTrdTracks) {
+        LOG(error) << GetName() << ": No TrdTrack array, return";
+      }
       else {
         const CbmTrack* recoTrack = dynamic_cast<const CbmTrack*>(fTrdTracks->At(trdId));
         LOG(debug3) << "HandleTrdTrack " << trdId << ", " << recoTrack;
@@ -228,7 +241,9 @@ void CbmTimesliceRecoTracks::GotoEvent(uint32_t uEventIdx)
     }
 
     if (-1 < tofId) {
-      if (nullptr == fTofTracks) { LOG(error) << GetName() << ": No TofTrack array, return"; }
+      if (nullptr == fTofTracks) {
+        LOG(error) << GetName() << ": No TofTrack array, return";
+      }
       else {
         const CbmTrack* recoTrack = dynamic_cast<const CbmTrack*>(fTofTracks->At(tofId));
         LOG(debug3) << "HandleTofTrack " << tofId << ", " << recoTrack;
diff --git a/core/eventdisplay/CbmTimesliceRecoTracks.h b/core/eventdisplay/CbmTimesliceRecoTracks.h
index 9231f35ca0fc810fc638f45c18ef2de86d0f8566..d587c20f210ef3a7dd09b5192de6f077b2f74822 100644
--- a/core/eventdisplay/CbmTimesliceRecoTracks.h
+++ b/core/eventdisplay/CbmTimesliceRecoTracks.h
@@ -1,6 +1,6 @@
 /* Copyright (C) 2023 Facility for Antiproton and Ion Research in Europe, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Pierre-Alain Loizeau[committer] */
+   Authors: Pierre-Alain Loizeau[committer], Norbert Herrmann */
 
 
 #ifndef CbmTimesliceRecoTracks_H
@@ -53,6 +53,12 @@ public:
   /** Set verbosity level. For this task and all of the subtasks. **/
   void SetVerbose(Int_t iVerbose) { fVerbose = iVerbose; }
 
+  /**
+   ** switch track color: to be called by GUI element
+   ** @param PDG color if true, red if false (see TimesliceRecoTracks)
+   **/
+  void SwitchPdgColorTrack(bool pdg_color) { fbPdgColorTrack = pdg_color; }
+
   virtual InitStatus Init();
   virtual void Exec(Option_t* option);
   virtual void SetParContainers() { ; }
@@ -88,8 +94,9 @@ protected:
   TObjArray* fEveTrList              = new TObjArray(16);  //!
   uint32_t fEventIdx                 = 0;                  //!
   TEveTrackList* fTrList             = nullptr;            //!
+  bool fbPdgColorTrack               = false;              //!
 
-private:
+ private:
   ClassDef(CbmTimesliceRecoTracks, 1);
 };
 
diff --git a/core/eventdisplay/CbmTsDisTracks.cxx b/core/eventdisplay/CbmTsDisTofTracklets.cxx
similarity index 81%
rename from core/eventdisplay/CbmTsDisTracks.cxx
rename to core/eventdisplay/CbmTsDisTofTracklets.cxx
index 37c2a754f020898a696e440d4d2cb04e7e5d9cf4..d7136744776398a19f554b5d8a4cacecf72e3db0 100644
--- a/core/eventdisplay/CbmTsDisTracks.cxx
+++ b/core/eventdisplay/CbmTsDisTofTracklets.cxx
@@ -1,15 +1,11 @@
-/* Copyright (C) 2007-2021 PI-UHd, GSI
+/* Copyright (C) 2023 PI-UHd, Heidelberg
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Mohammad Al-Turany, Norbert Herrmann [committer], Florian Uhlig */
+   Authors: Norbert Herrmann [committer], Pierre-Alain Loizeau */
 
-#// -------------------------------------------------------------------------
-// -----                  following FairMCTracks source file           -----
-// -----                  Created 10/12/07  by M. Al-Turany            -----
-// -------------------------------------------------------------------------
 #define TOFDisplay 1  // =1 means active, other: without Label and not relying on TEvePointSet
 #define TOFTtErr 1    // =1 means active, other: not relying on VelocityError of CbmTofTracklet
 
-#include "CbmTsDisTracks.h"
+#include "CbmTsDisTofTracklets.h"
 
 #include "CbmEvent.h"             // For CbmEvent
 #include "CbmTimesliceManager.h"  // for CbmTimesliceManager
@@ -40,30 +36,16 @@
 
 #include <string.h>  // for strcmp
 
-ClassImp(CbmTsDisTracks);
-CbmTsDisTracks* CbmTsDisTracks::fInstance = 0;
+ClassImp(CbmTsDisTofTracklets);
+CbmTsDisTofTracklets* CbmTsDisTofTracklets::fInstance = nullptr;
 
 //static TGLAnnotation* anne;
 static TGLAnnotation* annt;
-static CbmTimesliceManager* fTsManager = NULL;
-static FairEventManager* fEventManager = NULL;
+static CbmTimesliceManager* fTsManager = nullptr;
+static FairEventManager* fEventManager = nullptr;
 
 // -----   Default constructor   -------------------------------------------
-CbmTsDisTracks::CbmTsDisTracks()
-  : FairTask("CbmTsDisTracks", 0)
-  , fTrackList(nullptr)
-  , fTrPr(nullptr)
-  , fTimesliceManager(nullptr)
-  , fEveTrList(nullptr)
-  , fEvent("")
-  , fTrList(nullptr)
-  , fEvePSList(nullptr)
-  , fPSList(nullptr)
-  , fRenderP(kFALSE)
-  , fRenderT(kTRUE)
-  , MinEnergyLimit(-1.)
-  , MaxEnergyLimit(-1.)
-  , PEnergy(-1.)
+CbmTsDisTofTracklets::CbmTsDisTofTracklets() : FairTask("CbmTsDisTofTracklets", 0)
 {
   if (!fInstance) fInstance = this;
 }
@@ -71,41 +53,32 @@ CbmTsDisTracks::CbmTsDisTracks()
 
 
 // -----   Standard constructor   ------------------------------------------
-CbmTsDisTracks::CbmTsDisTracks(const char* name, Int_t iVerbose, Bool_t renderP, Bool_t renderT)
+CbmTsDisTofTracklets::CbmTsDisTofTracklets(const char* name, Int_t iVerbose, Bool_t renderP, Bool_t renderT)
   : FairTask(name, iVerbose)
-  , fTrackList(nullptr)
-  , fTrPr(nullptr)
-  , fTimesliceManager(nullptr)
   , fEveTrList(new TObjArray(16))
-  , fEvent("")
-  , fTrList(nullptr)
   , fEvePSList(new TObjArray(8))
-  , fPSList(nullptr)
   , fRenderP(renderP)
   , fRenderT(renderT)
-  , MinEnergyLimit(-1.)
-  , MaxEnergyLimit(-1.)
-  , PEnergy(-1.)
 {
   if (!fInstance) fInstance = this;
 }
 // -------------------------------------------------------------------------
-InitStatus CbmTsDisTracks::Init()
+InitStatus CbmTsDisTofTracklets::Init()
 {
-  LOG(info) << "CbmTsDisTracks::Init()";
+  LOG(info) << "CbmTsDisTofTracklets::Init()";
   FairRootManager* fManager = FairRootManager::Instance();
   fCbmEvents                = dynamic_cast<TClonesArray*>(fManager->GetObject("CbmEvent"));
   fTrackList                = dynamic_cast<TClonesArray*>(fManager->GetObject("TofTracklets"));
   if (fTrackList == 0) {
-    LOG(warn) << "CbmTsDisTracks::Init() branch " << GetName() << " Not found! Task will be deactivated ";
+    LOG(warn) << "CbmTsDisTofTracklets::Init() branch " << GetName() << " Not found! Task will be deactivated ";
     SetActive(kFALSE);
   }
-  LOG(debug1) << "CbmTsDisTracks::Init() get track list" << fTrackList;
+  LOG(debug1) << "CbmTsDisTofTracklets::Init() get track list" << fTrackList;
   /*
-  LOG(debug1) << "CbmTsDisTracks::Init() create propagator";
+  LOG(debug1) << "CbmTsDisTofTracklets::Init() create propagator";
   fEventManager = FairEventManager::Instance();
   fEventManager = CbmTimesliceManager::Instance();
-  LOG(debug1) << "CbmTsDisTracks::Init() get instance of FairEventManager ";
+  LOG(debug1) << "CbmTsDisTofTracklets::Init() get instance of FairEventManager ";
   fEvent         = "Current Event";
   MinEnergyLimit = fEventManager->GetEvtMinEnergy();
   MaxEnergyLimit = fEventManager->GetEvtMaxEnergy();
@@ -114,25 +87,29 @@ InitStatus CbmTsDisTracks::Init()
   fTsManager    = CbmTimesliceManager::Instance();
   fEventManager = FairEventManager::Instance();
 
-  if (NULL == fEventManager) { LOG(warn) << GetName() << ": no FairEventManager found, use TsManager "; }
+  if (nullptr == fEventManager) {
+    LOG(warn) << GetName() << ": no FairEventManager found, use TsManager ";
+  }
   else
-    LOG(info) << "CbmTsDisTracks::Init() got instance of FairEventManager ";
+    LOG(info) << "CbmTsDisTofTracklets::Init() got instance of FairEventManager ";
 
-  if (IsActive()) { return kSUCCESS; }
+  if (IsActive()) {
+    return kSUCCESS;
+  }
   else {
     return kERROR;
   }
 }
 // -------------------------------------------------------------------------
-void CbmTsDisTracks::Exec(Option_t* option)
+void CbmTsDisTofTracklets::Exec(Option_t* option)
 {
-  LOG(debug2) << " CbmTsDisTracks::Exec starting with verbosity " << fVerbose << " and option " << option;
+  LOG(debug2) << " CbmTsDisTofTracklets::Exec starting with verbosity " << fVerbose << " and option " << option;
   if (0 < fCbmEvents->GetEntriesFast()) {
     /// When loading a new TS, load the first event if possible
     GotoEvent(0);
   }
 }
-void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
+void CbmTsDisTofTracklets::GotoEvent(uint32_t uEventIdx)
 {
   if (IsActive()) {
 
@@ -160,7 +137,7 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
         tr          = dynamic_cast<CbmTofTracklet*>(fTrackList->At(trkId));
         int i       = iTrk;
         //      for (Int_t i = 0; i < fTrackList->GetEntriesFast(); i++) {
-        //        LOG(debug4) << "CbmTsDisTracks::Exec " << i;
+        //        LOG(debug4) << "CbmTsDisTofTracklets::Exec " << i;
         //        tr = (CbmTofTracklet*) fTrackList->At(i);
         if (nullptr == tr) continue;
         Int_t Np = tr->GetNofHits();
@@ -226,7 +203,8 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
         TEvePointSetArray* psa = new TEvePointSetArray(Form("TEveTrack Points %d", i), "");
         psa->SetMarkerColor(iCol);
         psa->SetMarkerSize(1.6);
-        if (iOpt == 0) psa->SetMarkerStyle(4);
+        if (iOpt == 0)
+          psa->SetMarkerStyle(4);
         else
           psa->SetMarkerStyle(5);
         psa->InitBins("Hits", Np, 0.5, Np + 0.5);
@@ -254,7 +232,7 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
           }
           track->SetPoint(n + 1, point[0], point[1], point[2]);
           /*
-          LOG(info) << Form("   CbmTsDisTracks::SetPoint Opt %d, n %d, %6.2f, %6.2f, %6.2f, %6.2f ", iOpt, n, point[0], point[1],
+          LOG(info) << Form("   CbmTsDisTofTracklets::SetPoint Opt %d, n %d, %6.2f, %6.2f, %6.2f, %6.2f ", iOpt, n, point[0], point[1],
                               point[2], point[3]);
           */
           TEveVector pos     = TEveVector(point[0], point[1], point[2]);
@@ -283,7 +261,9 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
           LOG(debug4) << "Path marker added " << path;
         }
 #if TOFDisplay == 1
-        if (iOpt >= 0) { fPSList->AddElement(psa); }
+        if (iOpt >= 0) {
+          fPSList->AddElement(psa);
+        }
 #endif
         track->SortPathMarksByTime();
         fTrList->AddElement(track);
@@ -297,7 +277,8 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
     //fEventManager->SetEvtMaxEnergy(MaxEnergyLimit);
     //fEventManager->SetEvtMinEnergy(MinEnergyLimit);
     TString cEventInfo;
-    if (NULL == fTsManager) cEventInfo = Form("ev# %d ", fEventManager->GetCurrentEvent());
+    if (nullptr == fTsManager)
+      cEventInfo = Form("ev# %d ", fEventManager->GetCurrentEvent());
     else
       cEventInfo = Form("ev# %d ", fTsManager->GetCurrentEvent());
 
@@ -307,11 +288,12 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
 
     TGLViewer* v = gEve->GetDefaultGLViewer();
     /*
-    if (NULL != anne) anne->SetText(cEventInfo);
+    if (nullptr != anne) anne->SetText(cEventInfo);
     else
       anne = new TGLAnnotation(v, cEventInfo, 0.01, 0.95);
     */
-    if (NULL != annt) annt->SetText(cTrackInfo);
+    if (nullptr != annt)
+      annt->SetText(cTrackInfo);
     else
       annt = new TGLAnnotation(v, cTrackInfo, 0.01, 0.78);
     //anne->SetTextSize(0.03);  // % of window diagonal
@@ -325,14 +307,14 @@ void CbmTsDisTracks::GotoEvent(uint32_t uEventIdx)
   }
 }
 // -----   Destructor   ----------------------------------------------------
-CbmTsDisTracks::~CbmTsDisTracks() {}
+CbmTsDisTofTracklets::~CbmTsDisTofTracklets() {}
 // -------------------------------------------------------------------------
-void CbmTsDisTracks::SetParContainers() {}
+void CbmTsDisTofTracklets::SetParContainers() {}
 
 // -------------------------------------------------------------------------
-void CbmTsDisTracks::Finish() {}
+void CbmTsDisTofTracklets::Finish() {}
 // -------------------------------------------------------------------------
-void CbmTsDisTracks::Reset()
+void CbmTsDisTofTracklets::Reset()
 {
   for (Int_t i = 0; i < fEveTrList->GetEntriesFast(); i++) {
     TEveTrackList* ele = (TEveTrackList*) fEveTrList->At(i);
@@ -355,7 +337,7 @@ void CbmTsDisTracks::Reset()
 }
 
 Char_t* gs;
-TEveTrackList* CbmTsDisTracks::GetTrGroup(Int_t ihmul, Int_t iOpt)
+TEveTrackList* CbmTsDisTofTracklets::GetTrGroup(Int_t ihmul, Int_t iOpt)
 {
   switch (iOpt) {
     case 0: gs = Form("Trkl_hmul%d", ihmul); break;
@@ -404,9 +386,10 @@ TEveTrackList* CbmTsDisTracks::GetTrGroup(Int_t ihmul, Int_t iOpt)
   return fTrList;
 }
 #if TOFDisplay == 1
-TEveElementList* CbmTsDisTracks::GetPSGroup(Int_t ihmul, Int_t iOpt)
+TEveElementList* CbmTsDisTofTracklets::GetPSGroup(Int_t ihmul, Int_t iOpt)
 {
-  if (iOpt == 0) gs = Form("PTrkl_hmul%d", ihmul);
+  if (iOpt == 0)
+    gs = Form("PTrkl_hmul%d", ihmul);
   else
     gs = Form("FTrkl_hmul%d", ihmul);
   fPSList = 0;
@@ -431,4 +414,4 @@ TEveElementList* CbmTsDisTracks::GetPSGroup(Int_t ihmul, Int_t iOpt)
 }
 #endif
 
-ClassImp(CbmTsDisTracks)
+ClassImp(CbmTsDisTofTracklets)
diff --git a/core/eventdisplay/CbmTsDisTracks.h b/core/eventdisplay/CbmTsDisTofTracklets.h
similarity index 57%
rename from core/eventdisplay/CbmTsDisTracks.h
rename to core/eventdisplay/CbmTsDisTofTracklets.h
index ac1f6f74d97df87aeea077c209416637e0302c47..6cf9c0e153e87266b0da2d5dbb72f3cb6a409633 100644
--- a/core/eventdisplay/CbmTsDisTracks.h
+++ b/core/eventdisplay/CbmTsDisTofTracklets.h
@@ -1,19 +1,15 @@
-/* Copyright (C) 2015-2020 PI-UHd, GSI
+/* Copyright (C) 2023 PI-UHd, Heidelberg
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Mohammad Al-Turany, Norbert Herrmann [committer], Florian Uhlig */
+   Authors: Norbert Herrmann [committer], Pierre-Alain Loizeau */
 
-// -------------------------------------------------------------------------
-// -----                      FairMCTracks header file                 -----
-// -----                Created 10/12/07  by M. Al-Turany              -----
-// -------------------------------------------------------------------------
-
-
-/** from FairMCTracks
- * @author M. Al-Turany
- * @since 10.12.07
- *   MVD event display object
+/** CbmTsDisTofTracklets
+ *  @author N. Herrmann
+ *  @since 05.11.23
+ *  Task to display TOF Tracklets
+ *  Timeslice compatible version of CbmEvDisTracks
  **
  **/
+
 #define TOFDisplay 1  // =1 means active, other: without Label and not relying on TEvePointSet
 
 #ifndef CBMTSDISTRACKS_H
@@ -33,23 +29,23 @@ class TEveElementList;
 class TEveTrackList;
 class TObjArray;
 
-class CbmTsDisTracks : public FairTask {
+class CbmTsDisTofTracklets : public FairTask {
 
-public:
+ public:
   /** Default constructor **/
-  CbmTsDisTracks();
+  CbmTsDisTofTracklets();
 
 
   /** Standard constructor
     *@param name        Name of task
     *@param iVerbose    Verbosity level
     **/
-  CbmTsDisTracks(const char* name, Int_t iVerbose = 1, Bool_t renderP = kFALSE, Bool_t renderT = kTRUE);
+  CbmTsDisTofTracklets(const char* name, Int_t iVerbose = 1, Bool_t renderP = kFALSE, Bool_t renderT = kTRUE);
 
   /** Destructor **/
-  virtual ~CbmTsDisTracks();
+  virtual ~CbmTsDisTofTracklets();
 
-  inline static CbmTsDisTracks* Instance() { return fInstance; }
+  inline static CbmTsDisTofTracklets* Instance() { return fInstance; }
 
   /** Set verbosity level. For this task and all of the subtasks. **/
   void SetVerbose(Int_t iVerbose) { fVerbose = iVerbose; }
@@ -69,31 +65,31 @@ public:
   TEveElementList* GetPSGroup(Int_t ihuml, Int_t iOpt);
 #endif
 
-protected:
+ protected:
   TClonesArray* fCbmEvents               = nullptr;  //!
   TClonesArray* fTrackList               = nullptr;  //!
   TEveTrackPropagator* fTrPr             = nullptr;  //!
   CbmTimesliceManager* fTimesliceManager = nullptr;  //!
   TObjArray* fEveTrList                  = nullptr;  //!
-  TString fEvent;                                    //!
-  TEveTrackList* fTrList   = nullptr;                //!
-  TObjArray* fEvePSList    = nullptr;                //!
-  TEveElementList* fPSList = nullptr;                //!
+  TString fEvent                         = "";       //!
+  TEveTrackList* fTrList                 = nullptr;  //!
+  TObjArray* fEvePSList                  = nullptr;  //!
+  TEveElementList* fPSList               = nullptr;  //!
   //TEveElementList *fTrackCont;
 
-  Bool_t fRenderP;
-  Bool_t fRenderT;
-  Double_t MinEnergyLimit;
-  Double_t MaxEnergyLimit;
-  Double_t PEnergy;
-  uint32_t fEventIdx = 0;  //!
+  Bool_t fRenderP         = kFALSE;
+  Bool_t fRenderT         = kFALSE;
+  Double_t MinEnergyLimit = -1.;
+  Double_t MaxEnergyLimit = -1.;
+  Double_t PEnergy        = -1.;
+  uint32_t fEventIdx      = 0;
 
-private:
-  static CbmTsDisTracks* fInstance;
-  CbmTsDisTracks(const CbmTsDisTracks&);
-  CbmTsDisTracks& operator=(const CbmTsDisTracks&);
+ private:
+  static CbmTsDisTofTracklets* fInstance;
+  CbmTsDisTofTracklets(const CbmTsDisTofTracklets&);
+  CbmTsDisTofTracklets& operator=(const CbmTsDisTofTracklets&);
 
-  ClassDef(CbmTsDisTracks, 1);
+  ClassDef(CbmTsDisTofTracklets, 1);
 };
 
 
diff --git a/core/eventdisplay/CbmTsPointSetArrayDraw.cxx b/core/eventdisplay/CbmTsPointSetArrayDraw.cxx
index 0040c34838adce53d5196e985d7a641a7c63650a..6eb88be814d185143a0c9dcf979003b3f8837238 100644
--- a/core/eventdisplay/CbmTsPointSetArrayDraw.cxx
+++ b/core/eventdisplay/CbmTsPointSetArrayDraw.cxx
@@ -1,6 +1,6 @@
-/* Copyright (C) 2019-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2023 PI-UHd, Heidelberg
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: J. Brandt, Florian Uhlig [committer] */
+   Authors: Norbert Herrmann [committer], Pierre-Alain Loizeau */
 
 // -------------------------------------------------------------------------
 // -----               CbmTsPointSetArrayDraw source file                -----
@@ -28,53 +28,27 @@
 
 #include <iomanip>  // for operator<<, setprecision
 
-// -----   Default constructor   -------------------------------------------
-CbmTsPointSetArrayDraw::CbmTsPointSetArrayDraw()
-  : FairTask("CbmTsPointSetArrayDraw", 0)
-  , fVerbose(0)
-  , fPointList(nullptr)
-  , fTsManager(nullptr)
-  , fl(nullptr)
-  , fColor(0)
-  , fStyle(0)
-  , fTimeOffset(0)
-  , fTimeMax(0)
-  , fColorMode(1)
-  , fMarkerMode(1)
-  , fRender(kTRUE)
-{
-}
-// -------------------------------------------------------------------------
-
-
 // -----   Standard constructor   ------------------------------------------
 CbmTsPointSetArrayDraw::CbmTsPointSetArrayDraw(const char* name, Int_t colorMode, Int_t markerMode, Int_t iVerbose,
                                                Bool_t render)
   : FairTask(name, iVerbose)
   , fVerbose(iVerbose)
-  , fPointList(nullptr)
-  , fTsManager(nullptr)
-  , fl(nullptr)
-  , fColor(kRed)
-  , fStyle(4)
-  , fTimeOffset(0)
-  , fTimeMax(0)
   , fColorMode(colorMode)
   , fMarkerMode(markerMode)
   , fRender(render)
 {
 }
 
-static TString cTofHit = "TofUHit";
 // -------------------------------------------------------------------------
 InitStatus CbmTsPointSetArrayDraw::Init()
 {
-  LOG(debug) << "CbmTsPointSetArrayDraw::Init() for " << cTofHit;
+  LOG(debug) << "CbmTsPointSetArrayDraw::Init() for " << fTofHitArrayName;
   FairRootManager* fManager = FairRootManager::Instance();
   fCbmEvents                = dynamic_cast<TClonesArray*>(fManager->GetObject("CbmEvent"));
-  fTsPointList              = static_cast<TClonesArray*>(fManager->GetObject(cTofHit.Data()));
-  if (fTsPointList == NULL) {
-    LOG(warn) << "CbmTsPointSetArrayDraw::Init()  branch " << cTofHit.Data() << " not found! Task will be deactivated ";
+  fTsPointList              = static_cast<TClonesArray*>(fManager->GetObject(fTofHitArrayName.Data()));
+  if (fTsPointList == nullptr) {
+    LOG(warn) << "CbmTsPointSetArrayDraw::Init()  branch " << fTofHitArrayName
+              << " not found! Task will be deactivated ";
     SetActive(kFALSE);
   }
   //LOG(info) << "CbmTsPointSetArrayDraw::Init() get track list" << fTsPointList->GetName();
@@ -103,14 +77,14 @@ void CbmTsPointSetArrayDraw::GotoEvent(uint32_t uEventIdx)
     }
 
     CbmEvent* event = dynamic_cast<CbmEvent*>(fCbmEvents->At(uEventIdx));
-    if (NULL == fTsPointList) {
-      fTsPointList = static_cast<TClonesArray*>(FairRootManager::Instance()->GetObject(cTofHit.Data()));
-      if (NULL == fTsPointList) {
-        LOG(warn) << " No " << cTofHit.Data();
+    if (nullptr == fTsPointList) {
+      fTsPointList = static_cast<TClonesArray*>(FairRootManager::Instance()->GetObject(fTofHitArrayName.Data()));
+      if (nullptr == fTsPointList) {
+        LOG(warn) << " No " << fTofHitArrayName;
         return;
       }
     }
-    if (NULL != fPointList) fPointList->Clear();
+    if (nullptr != fPointList) fPointList->Clear();
     int nofPoints = fTsPointList->GetEntriesFast();
     int nPoints   = 0;
     LOG(debug3) << " Fill TofUhit from " << nofPoints << " hits in Ts.";
@@ -118,14 +92,14 @@ void CbmTsPointSetArrayDraw::GotoEvent(uint32_t uEventIdx)
       Int_t iPId      = event->GetIndex(ECbmDataType::kTofUHit, iP);  // make this generic!!
       CbmTofHit* tHit = dynamic_cast<CbmTofHit*>(fTsPointList->At(iPId));
       LOG(debug3) << "Add Hit " << iP << ", " << iPId << ", " << tHit << " at " << nPoints;
-      if (NULL != tHit && iPId > -1) new ((*fPointList)[nPoints++]) CbmTofHit(*tHit);
+      if (nullptr != tHit && iPId > -1) new ((*fPointList)[nPoints++]) CbmTofHit(*tHit);
     }
     nPoints = fPointList->GetEntriesFast();
 
     //Reset();
 
     // initialize CbmPointSetArray to display set of hits
-    CbmPointSetArray* l = new CbmPointSetArray("TofUHit", "");
+    CbmPointSetArray* l = new CbmPointSetArray(fTofHitArrayName, "");
     l->SetColorMode(fColorMode);
     l->SetMarkerMode(fMarkerMode);
     l->SetSourceCS(TEvePointSelectorConsumer::kTVT_XYZ);
@@ -215,7 +189,9 @@ void CbmTsPointSetArrayDraw::DetermineTimeOffset()
   for (Int_t i = 0; i < nPoints; i++) {  //loop over all hits in event
     hit      = static_cast<CbmPixelHit*>(fPointList->At(i));
     currtime = hit->GetTime();
-    if (currtime < fTimeOffset) { fTimeOffset = currtime; }
+    if (currtime < fTimeOffset) {
+      fTimeOffset = currtime;
+    }
     else if (currtime > fTimeMax) {
       fTimeMax = currtime;
     }
diff --git a/core/eventdisplay/CbmTsPointSetArrayDraw.h b/core/eventdisplay/CbmTsPointSetArrayDraw.h
index 7421e730e34e03dcd9f92c68ec88457f37ebacf1..4f290a3be73b2154f440535ba890651b281b3146 100644
--- a/core/eventdisplay/CbmTsPointSetArrayDraw.h
+++ b/core/eventdisplay/CbmTsPointSetArrayDraw.h
@@ -1,18 +1,12 @@
-/* Copyright (C) 2019-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2023 PI-UHd, Heidelberg
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: J. Brandt, Florian Uhlig [committer] */
+   Authors: Norbert Herrmann [committer], Pierre-Alain Loizeau */
 
-// -------------------------------------------------------------------------
-// -----               CbmPointSetArrayDraw header file                -----
-// -----                Created 18/06/22  by J. Brandt                 -----
-// -----               Following class FairPointSetDraw                -----
-// -------------------------------------------------------------------------
-
-
-/** CbmPointSetArrayDraw
- * @author J. Brandt
- * @since 22.06.18
- *   Task to display pointsets in array
+/** CbmTsPointSetArrayDraw
+ *  @author N. Herrmann
+ *  @since 05.11.23
+ *  Task to display unused TOF hits (pointsets in array)
+ *  Timeslice compatible version of CbmPointSetArrayDraw
  **
  **/
 
@@ -32,10 +26,9 @@ class TVector3;
 
 class CbmTsPointSetArrayDraw : public FairTask {
 
-public:
+ public:
   /** Default constructor **/
-  CbmTsPointSetArrayDraw();
-
+  CbmTsPointSetArrayDraw() : FairTask("CbmTsPointSetArrayDraw", 0) {}
 
   /** Standard constructor
     *@param name        Name of task
@@ -65,7 +58,7 @@ public:
   void Reset();
   void GotoEvent(uint32_t uEventIdx);
 
-protected:
+ protected:
   TVector3 GetVector(TObject* obj);    //Get 3D Vector of Hit
   Double_t GetTime(TObject* obj);      //Get Time of Hit
   Int_t GetClusterSize(TObject* obj);  //Get ClusterSize of TofHit
@@ -80,22 +73,23 @@ protected:
   /** Action after each event **/
   virtual void Finish();
 
-  Int_t fVerbose;                      //Verbosity level
-  TClonesArray* fCbmEvents = nullptr;  //!
-  TClonesArray* fTsPointList;          //Array containing list of hits
-  TClonesArray* fPointList;            //Array containing list of hits
-  CbmTimesliceManager* fTsManager;     //Pointer to Event Manager
-  CbmPointSetArray*
-    fl;            //Pointer to CbmPointSetArray -> Cbm class for displaying array of Hit-sets -> TEvePointSetArray
-  Color_t fColor;  //Color of Hit-Markers
-  Style_t fStyle;  //Style of Hit-Markers
-  Double_t fTimeOffset;  //Time Offset on Hits to scale first hit to 0
-  Double_t fTimeMax;     //Max Time of Hits in TofHit
-  Int_t fColorMode;      //Int determining how points get color-coded
-  Int_t fMarkerMode;     //Int determining how marker-size of points gets coded
-  Bool_t fRender;        //Boolean whether points shown on default
-
-private:
+  Int_t fVerbose                  = 0;        // Verbosity level
+  TClonesArray* fCbmEvents        = nullptr;  //!
+  TString fTofHitArrayName        = "TofUHit";
+  TClonesArray* fTsPointList      = nullptr;  // Array containing list of hits
+  TClonesArray* fPointList        = nullptr;  // Array containing list of hits
+  CbmTimesliceManager* fTsManager = nullptr;  // Pointer to Event Manager
+  CbmPointSetArray* fl            = nullptr;  // Pointer to CbmPointSetArray
+                                              // -> Cbm class for displaying array of Hit-sets -> TEvePointSetArray
+  Color_t fColor       = kRed;                // Color of Hit-Markers
+  Style_t fStyle       = 4;                   // Style of Hit-Markers
+  Double_t fTimeOffset = 0;                   // Time Offset on Hits to scale first hit to 0
+  Double_t fTimeMax    = 0;                   // Max Time of Hits in TofHit
+  Int_t fColorMode     = 1;                   // Int determining how points get color-coded
+  Int_t fMarkerMode    = 1;                   // Int determining how marker-size of points gets coded
+  Bool_t fRender       = kTRUE;               // Boolean whether points shown on default
+
+ private:
   CbmTsPointSetArrayDraw(const CbmTsPointSetArrayDraw&);
   CbmTsPointSetArrayDraw& operator=(const CbmTsPointSetArrayDraw&);