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. **/