diff --git a/sim/transport/generators/CbmPlutoGenerator.cxx b/sim/transport/generators/CbmPlutoGenerator.cxx
index 4e92dbbff94e493927cd2dc6da3bb377c3336bb4..9f9135d85d065f91df27c3b768ae8a552cb59668 100644
--- a/sim/transport/generators/CbmPlutoGenerator.cxx
+++ b/sim/transport/generators/CbmPlutoGenerator.cxx
@@ -9,27 +9,17 @@
 #include "CbmPlutoGenerator.h"
 
 #include "CbmFileUtils.h"
-
 #include "FairPrimaryGenerator.h"  // for FairPrimaryGenerator
-#include <Logger.h>
-
-#include "TArchiveFile.h"    // for TArchiveFile
+#include "PDataBase.h"             // for PDataBase
+#include "PParticle.h"             // for PParticle
+#include "RtypesCore.h"
 #include "TChain.h"          // for TChain
 #include "TClonesArray.h"    // for TClonesArray
 #include "TDatabasePDG.h"    // for TDatabasePDG
-#include "TFile.h"           // for TFile
 #include "TLorentzVector.h"  // for TLorentzVector
-#include "TTree.h"           // for TTree
 #include "TVector3.h"        // for TVector3
 
-#include <iosfwd>  // for ostream
-
-#include "PDataBase.h"    // for PDataBase
-#include "PParticle.h"    // for PParticle
-#include "PStaticData.h"  // for PStaticData
-
-//#include <stddef.h>                     // for NULL
-#include <iostream>  // for operator<<, basic_ostream, etc
+#include <Logger.h>
 
 #include <sys/stat.h>
 
@@ -108,6 +98,9 @@ Bool_t CbmPlutoGenerator::ReadEvent(FairPrimaryGenerator* primGen)
   // Get number of particle in TClonesrray
   Int_t nParts = fParticles->GetEntriesFast();
 
+  // define a dummy value
+  Int_t dummyPdg = 0;
+
   // Loop over particles in TClonesArray
   for (Int_t iPart = 0; iPart < nParts; iPart++) {
     PParticle* part = (PParticle*) fParticles->At(iPart);
@@ -118,8 +111,8 @@ Bool_t CbmPlutoGenerator::ReadEvent(FairPrimaryGenerator* primGen)
 
     // Check if particle type is known to database
     if (!found) {
-      LOG(warn) << "CbmPlutoGenerator: Unknown type " << part->ID() << ", skipping particle.";
-      continue;
+      LOG(warn) << "CbmPlutoGenerator: Unknown type " << part->ID() << ", setting PDG code to " << dummyPdg << ".";
+      pdgType = &dummyPdg;
     }
     LOG(info) << iPart << " Particle (geant " << part->ID() << " PDG " << *pdgType << " -> "
               << dataBase->GetParticle(*pdgType)->GetName();
@@ -153,7 +146,7 @@ Bool_t CbmPlutoGenerator::ReadEvent(FairPrimaryGenerator* primGen)
     Double_t vz     = vertex.z();
 
     Bool_t wanttracking = kTRUE;
-    if (idx > -1) wanttracking = kFALSE;  // only tracking for decay products
+    if (!found || idx > -1) wanttracking = kFALSE;  // only tracking for decay products that are known
     Int_t parent = parIdx;
     LOG(info) << "Add particle with parent at index " << parIdx << " and do tracking " << wanttracking;
 
diff --git a/sim/transport/generators/CbmPlutoGenerator.h b/sim/transport/generators/CbmPlutoGenerator.h
index 5650523e4ba860860d4c09fecdbe309726bc4355..64ef4a898d90677e0c5b27d27d85849b9f0fcef8 100644
--- a/sim/transport/generators/CbmPlutoGenerator.h
+++ b/sim/transport/generators/CbmPlutoGenerator.h
@@ -21,23 +21,20 @@
 #define FAIR_PLUTOGENERATOR_H
 
 #include "FairGenerator.h"  // for FairGenerator
-
-#include "Rtypes.h"        // for Char_t, etc
-#include "TClonesArray.h"  // for TClonesArray
+#include "PStaticData.h"    // for PStaticData
+#include "Rtypes.h"         // for Char_t, etc
+#include "TClonesArray.h"   // for TClonesArray
 
 #include <string>
 #include <vector>
 
-#include "PParticle.h"    // for PParticle
-#include "PStaticData.h"  // for PStaticData
-
 class FairPrimaryGenerator;
 
 class TChain;
 
 class CbmPlutoGenerator : public FairGenerator {
 
-public:
+ public:
   /** Default constructor (should not be used) **/
   CbmPlutoGenerator();
 
@@ -71,16 +68,16 @@ public:
     */
   Int_t GetNumAvailableEvents() { return fAvailableEvents; }
 
-private:
-  PStaticData* fdata {makeStaticData()};  //! pluto static data
-  PDataBase* fbase {makeDataBase()};      //! pluto data base
+ private:
+  PStaticData* fdata{makeStaticData()};  //! pluto static data
+  PDataBase* fbase{makeDataBase()};      //! pluto data base
 
-  Int_t iEvent {0};                                               //! Event number
-  const Char_t* fFileName {""};                                   //! Input file name
-  TChain* fInputChain {nullptr};                                  //! Pointer to input file
-  TClonesArray* fParticles {new TClonesArray("PParticle", 100)};  //! Particle array from PLUTO
-  Int_t fPDGmanual {0};                                           //! forced pdg value for undefined pluto codes
-  Int_t fAvailableEvents {0};                                     //! Maximum number of events in the input file
+  Int_t iEvent{0};                                               //! Event number
+  const Char_t* fFileName{""};                                   //! Input file name
+  TChain* fInputChain{nullptr};                                  //! Pointer to input file
+  TClonesArray* fParticles{new TClonesArray("PParticle", 100)};  //! Particle array from PLUTO
+  Int_t fPDGmanual{0};                                           //! forced pdg value for undefined pluto codes
+  Int_t fAvailableEvents{0};                                     //! Maximum number of events in the input file
 
   /** Private method CloseInput. Just for convenience. Closes the
      ** input file properly. Called from destructor and from ReadEvent. **/