KaliVeda
Toolkit for HIC analysis
KVSimReader Class Referenceabstract

Detailed Description

Base class to convert output from different simulation codes into TTrees containing KVSimEvent event objects.

Created by KVClassFactory on Wed Jun 30 17:45:01 2010 Author: bonnet

Specific classes derived from this one can be used to read a variety of simulation output files and transform them into ROOT files containing a TTree with KVSimEvent objects in a branch called 'Simulated_events'.

To see the list of available classes/models:

(const Char_t *) "KVSimReader_ELIE KVSimReader_ELIE_asym KVSimReader_HIPSE KVSimReader_HIPSE_asym ... "
char Char_t
static const Char_t * GetListOfPlugins(const Char_t *base)
Definition: KVBase.cpp:1251

Usually for each model there is a class [XXX] and a class [XXX]_asym. The first one is for reading "primary" events (e.g. before secondary decay), the second one is for converting "asymptotic" events (e.g. just before detection).

To generate an instance of the appropriate reader object, use the static method KVSimReader::MakeReader("[model name]_[asym]") (or simply instantiate directly the appropriate class).

Example 1

To convert asymptotic events from an MMM simulation in file "mmm.out", do:

kaliveda[0] KVSimReader::MakeReader("MMM_asym")->ConvertAndSaveEventsInFile("mmm.out")

Example 2

To convert primary events (before secondary decay) from an ELIE simulation in file "elie.out", do:

kaliveda[0] KVSimReader::MakeReader("ELIE")->ConvertAndSaveEventsInFile("elie.out")

For large output files, you can limit the number of events in each of the ROOT files generated by KVSimReader:

iqmd.ConvertAndSaveEventsInFile("iqmd_primary_events.dat");
Class used to import primary events generated with IQMD.
void SetMaxNumEventsPerOutputFile(int nev)
Definition: KVSimReader.h:192
void ConvertAndSaveEventsInFile(KVString filename)
Read events, convert and save in ROOT file(s)

This will produce as many files as necessary with the same 'stub' filename plus an index.

How it works & how to specialize it

|
+--> OpenFileToRead(filename)
InitializeOutputFileAndTree()
while (IsOK())...
do {
auto ok = ReadEvent()
if(NeedNewOutpuFile())
{
InitializeOutputFileAndTree()
}
FillTree();
if(OutputFileIsFull())
{
SaveTree()
}
} while(ok && NeedToIterateReadEvent())
}
Bool_t IsOK()
Definition: KVFileReader.h:231
Bool_t OpenFileToRead(const KVString &filename)
Definition: KVFileReader.h:210
virtual Bool_t ReadEventHeader(KVSimEvent *)
virtual Bool_t ReadFileHeader()
virtual void NotifyChangeOfOutputFile()
virtual Bool_t ReadEvent(KVSimEvent *evt)=0
virtual bool NeedToIterateReadEvent()
Definition: KVSimReader.cpp:59

The methods ReadFileHeader(), ReadEventHeader(), ReadEvent() all return a bool and if any of them returns a false boolean value, reading of the file will stop.

In order to implement a functioning reader as a daughter class, only one method must be overridden: ReadEvent(). This may use a user-defined implementation overriding the ReadNucleus() method (which is not implemented by default).

The other methods which may be overridden to customize behaviour are:

See the documentation for each method for implementation details. Use the methods of base class KVFileReader where needed in these methods to read the data in the input file.

ROOT files and TTrees will be generated with names/titles according to the values which can be set with:

In order to be effective, these must be called before the first output file is initialized by InitializeOutputFileAndTree(), so at the latest in a user-defined implementation of ReadFileHeader() (see schema above).

Definition at line 116 of file KVSimReader.h.

#include <KVSimReader.h>

Inheritance diagram for KVSimReader:

Public Member Functions

 KVSimReader ()
 
void ConvertAndSaveEventsInFile (KVString filename)
 Read events, convert and save in ROOT file(s) More...
 
void ConvertEventsInFile (KVString filename)
 
int GetEventNumber () const
 
KVString GetTreeTitle () const
 
virtual bool NeedToIterateReadEvent ()
 
virtual void NotifyChangeOfOutputFile ()
 
virtual Bool_t ReadEvent (KVSimEvent *evt)=0
 
virtual Bool_t ReadEventHeader (KVSimEvent *)
 
virtual Bool_t ReadFileHeader ()
 
virtual Bool_t ReadNucleus (KVSimNucleus *)
 
void SetBranchName (KVString n)
 
void SetFileIndex (Int_t i)
 
void SetMaxNumEventsPerOutputFile (int nev)
 
void SetMultiFiles (Bool_t on=kTRUE)
 
void SetOutputDirectory (const TString &where)
 
void SetROOTFileName (KVString name)
 
void SetTreeName (KVString n)
 
void SetTreeTitle (KVString n)
 
- Public Member Functions inherited from KVFileReader
 KVFileReader (const KVString &comments="")
 
void Clear (Option_t *="") override
 
void CloseFile ()
 
KVString GetCurrentLine ()
 
Double_t GetDoubleReadPar (Int_t pos) const
 
KVString GetFileName ()
 
Int_t GetIntReadPar (Int_t pos) const
 
Int_t GetNlineRead () const
 
Int_t GetNparRead () const
 
KVString GetReadPar (Int_t pos) const
 
KVString GetReadStatus (ReadStatus s)
 
Bool_t IsOK ()
 
Bool_t OpenFileToRead (const KVString &filename)
 
Bool_t PreparForReadingAgain ()
 
ReadStatus ReadLine (const KVString &pattern="")
 
ReadStatus ReadLineAndAdd (const KVString &pattern="")
 
ReadStatus ReadLineAndCheck (Int_t nexpect, const KVString &pattern)
 
ReadStatus ReuseLineAndCheck (Int_t nexpect, const KVString &pattern)
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor. More...
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type. More...
 
 KVBase (const KVBase &)
 copy ctor More...
 
void Copy (TObject &) const override
 Make a copy of this object. More...
 
const Char_t * GetLabel () const
 
UInt_t GetNumber () const
 
virtual TObject * GetObject () const
 
virtual const Char_t * GetType () const
 
Bool_t HasLabel () const
 
Bool_t IsCalled (const Char_t *name, bool case_insensitive=false) const
 
Bool_t IsLabelled (const Char_t *l, bool case_insensitive=false) const
 
Bool_t IsType (const Char_t *typ, bool case_insensitive=false) const
 
virtual void List ()
 
KVBase & operator= (const KVBase &)
 copy assignment operator More...
 
void Print (Option_t *option="") const override
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 
TObject * Clone (const char *newname="") const override
 
Int_t Compare (const TObject *obj) const override
 
virtual void FillBuffer (char *&buffer)
 
const char * GetName () const override
 
const char * GetTitle () const override
 
ULong_t Hash () const override
 
TClass * IsA () const override
 
Bool_t IsSortable () const override
 
void ls (Option_t *option="") const override
 
TNamed & operator= (const TNamed &rhs)
 
virtual void SetName (const char *name)
 
virtual void SetNameTitle (const char *name, const char *title)
 
virtual void SetTitle (const char *title="")
 
virtual Int_t Sizeof () const
 
void Streamer (TBuffer &) override
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
- Public Member Functions inherited from TObject
 TObject ()
 
 TObject (const TObject &object)
 
virtual ~TObject ()
 
void AbstractMethod (const char *method) const
 
virtual void AppendPad (Option_t *option="")
 
virtual void Browse (TBrowser *b)
 
ULong_t CheckedHash ()
 
virtual const char * ClassName () const
 
virtual void Delete (Option_t *option="")
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 
virtual void Draw (Option_t *option="")
 
virtual void DrawClass () const
 
virtual TObject * DrawClone (Option_t *option="") const
 
virtual void Dump () const
 
virtual void Error (const char *method, const char *msgfmt,...) const
 
virtual void Execute (const char *method, const char *params, Int_t *error=nullptr)
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr)
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 
virtual TObject * FindObject (const char *name) const
 
virtual TObject * FindObject (const TObject *obj) const
 
virtual Option_t * GetDrawOption () const
 
virtual const char * GetIconName () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 
virtual Option_t * GetOption () const
 
virtual UInt_t GetUniqueID () const
 
virtual Bool_t HandleTimer (TTimer *timer)
 
Bool_t HasInconsistentHash () const
 
virtual void Info (const char *method, const char *msgfmt,...) const
 
virtual Bool_t InheritsFrom (const char *classname) const
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 
virtual void Inspect () const
 
void InvertBit (UInt_t f)
 
Bool_t IsDestructed () const
 
virtual Bool_t IsEqual (const TObject *obj) const
 
virtual Bool_t IsFolder () const
 
R__ALWAYS_INLINE Bool_t IsOnHeap () const
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 
virtual Bool_t Notify ()
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *vp)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, void *vp)
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *vp)
 
void * operator new[] (size_t sz)
 
void * operator new[] (size_t sz, void *vp)
 
TObject & operator= (const TObject &rhs)
 
virtual void Paint (Option_t *option="")
 
virtual void Pop ()
 
virtual Int_t Read (const char *name)
 
virtual void RecursiveRemove (TObject *obj)
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 
void SetBit (UInt_t f)
 
void SetBit (UInt_t f, Bool_t set)
 
virtual void SetDrawOption (Option_t *option="")
 
virtual void SetUniqueID (UInt_t uid)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 
R__ALWAYS_INLINE Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
 
virtual Int_t Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const
 

Static Public Member Functions

static KVSimReader * MakeSimReader (const char *model_uri)
 Returns an instance of a child class specific to given model. More...
 
- Static Public Member Functions inherited from KVBase
static std::optional< TString > AbsoluteUnixPath (const TString &)
 
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values. More...
 
static void BackupFileWithDate (const Char_t *path)
 
static void CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
 
static void Deprecated (const char *method, const char *advice)
 
static Bool_t FindClassSourceFiles (const KVString &class_name, KVString &imp_file, KVString &dec_file, const KVString &dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_t * FindFile (const Char_t *search, TString &wfil)
 
static const Char_t * GetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetDATABASEFilePath ()
 
static const Char_t * GetDATADIRFilePath (const Char_t *namefile="")
 
template<typename ValType >
static ValType GetDataSetEnv (const KVString &dataset, const KVString &type, const ValType &defval={})
 
static const Char_t * GetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) More...
 
static const Char_t * GetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetKVBuildDate ()
 Returns KaliVeda build date. More...
 
static const Char_t * GetKVBuildDir ()
 Returns top-level directory used for build. More...
 
static const Char_t * GetKVBuildTime ()
 Returns KaliVeda build time. More...
 
static const Char_t * GetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More...
 
static const Char_t * GetKVBuildUser ()
 Returns username of person who performed build. More...
 
static int GetKVMajorVersion ()
 
static int GetKVMinorVersion ()
 
static int GetKVPatchVersion ()
 
static const Char_t * GetKVSourceDir ()
 Returns top-level directory of source tree used for build. More...
 
static const Char_t * GetKVVersion ()
 Returns KaliVeda version string. More...
 
static const Char_t * GetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetListOfPlugins (const Char_t *base)
 
static const Char_t * GetListOfPluginURIs (const Char_t *base)
 
static const Char_t * GetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_t * GetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_t * GetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_t * gitBranch ()
 Returns git branch of sources. More...
 
static const Char_t * gitCommit ()
 Returns last git commit of sources. More...
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsEnvInit ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandler * LoadPlugin (const Char_t *base, const Char_t *uri="0")
 
static Bool_t OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="")
 
static void OpenTempFile (TString &base, std::ofstream &fp)
 
static void PrintSplashScreen ()
 Prints welcome message and infos on version etc. More...
 
static Double_t ProtectedGetX (const TF1 &func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={})
 
static Double_t ProtectedGetX (const TF1 *func, Double_t val, GetX_status &status, std::optional< Double_t > xmin={}, std::optional< Double_t > xmax={})
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
 
static const Char_t * WorkingDirectory ()
 
- Static Public Member Functions inherited from TNamed
static TClass * Class ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
- Static Public Member Functions inherited from TObject
static TClass * Class ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 
static Longptr_t GetDtorOnly ()
 
static Bool_t GetObjectStat ()
 
static void SetDtorOnly (void *obj)
 
static void SetObjectStat (Bool_t stat)
 

Additional Inherited Members

- Public Types inherited from KVFileReader
enum class  ReadStatus {
  EmptyLine , OK , ParamMismatch , CommentLine ,
  EndOfFile
}
 status returned by each method used to read a line in the file More...
 
- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
enum class  GetX_status {
  ok , above_maximum , below_minimum , at_maximum ,
  at_minimum
}
 
- Public Types inherited from TObject
enum  EDeprecatedStatusBits
 
enum  EStatusBits
 
- Public Attributes inherited from KVFileReader
std::ifstream f_in
 
- Public Attributes inherited from TObject
 kBitMask
 
 kCanDelete
 
 kCannotPick
 
 kHasUUID
 
 kInconsistent
 
 kInvalidObject
 
 kIsOnHeap
 
 kIsReferenced
 
 kMustCleanup
 
 kNoContextMenu
 
 kNotDeleted
 
 kObjInCanvas
 
 kOverwrite
 
 kSingleKey
 
 kWriteDelete
 
 kZombie
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 
void MakeZombie ()
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

Constructor & Destructor Documentation

◆ KVSimReader()

KVSimReader::KVSimReader ( )

Definition at line 13 of file KVSimReader.cpp.

Member Function Documentation

◆ ConvertAndSaveEventsInFile()

void KVSimReader::ConvertAndSaveEventsInFile ( KVString  filename)

Read events, convert and save in ROOT file(s)

Definition at line 265 of file KVSimReader.cpp.

◆ ConvertEventsInFile()

void KVSimReader::ConvertEventsInFile ( KVString  filename)

Definition at line 24 of file KVSimReader.cpp.

◆ GetEventNumber()

int KVSimReader::GetEventNumber ( ) const
inline

Definition at line 190 of file KVSimReader.h.

◆ GetTreeTitle()

KVString KVSimReader::GetTreeTitle ( ) const
inline
Returns
title of TTree in output file

Definition at line 242 of file KVSimReader.h.

◆ MakeSimReader()

KVSimReader * KVSimReader::MakeSimReader ( const char *  model_uri)
static

Returns an instance of a child class specific to given model.

Definition at line 278 of file KVSimReader.cpp.

◆ NeedToIterateReadEvent()

bool KVSimReader::NeedToIterateReadEvent ( )
virtual

The usual loop for reading, converting and saving events is

FillTree();

If several separate events share the same header and need to be read sequentially, this can be achieved if this method is overriden to return true as many times as needed, by adding this effective loop:

do {
FillTree();
} while( NeedToIterateEvents() );

Definition at line 59 of file KVSimReader.cpp.

◆ NotifyChangeOfOutputFile()

void KVSimReader::NotifyChangeOfOutputFile ( )
virtual

This method will be called just before initialising a new output file during conversion of events (note that the previous file will already have been written to disk and closed at this point).

It can be overridden in child classes if necessary, e.g. to reset histograms or other statistics.

Reimplemented in KVSimReader_HIPSE.

Definition at line 236 of file KVSimReader.cpp.

◆ ReadEvent()

virtual Bool_t KVSimReader::ReadEvent ( KVSimEvent *  evt)
pure virtual

Fill the KVSimEvent with informations for a new event read from the input file. This is the only method which daughter classes must override.

There is no need to call KVSimEvent::Clear(): the event object will be ready to be filled with new informations.

Returns
true unless there is a problem reading data in the input file (i.e. inconsistent structure of file, not just because the end of the file is reached)
Note
the method GetEventNumber() can be used to set the number of the event, starting with 0: when ReadEvent() is called for the \(N\)th event in the input file, GetEventNumber() returns \(N-1\).

Implemented in KVSimReader_SMF_asym, KVSimReader_SMF, KVSimReader_IQMD, KVSimReader_HaC, KVSimReader_MMM, KVSimReader_HIPSE, KVSimReader_ELIE, and KVSimReader_DIT.

◆ ReadEventHeader()

Bool_t KVSimReader::ReadEventHeader ( KVSimEvent *  )
virtual

Implement as needed to read informations present at the beginning of each new event, if present.

There is no need to call KVSimEvent::Clear(): the event object will be ready to be filled with new informations.

Returns
true unless there is a problem reading the header (inconsistent file structure, end of file, etc.)

Reimplemented in KVSimReader_SMF_asym, KVSimReader_SMF, KVSimReader_MMM_asym, KVSimReader_HaC, KVSimReader_MMM, KVSimReader_HIPSE_asym, KVSimReader_HIPSE, KVSimReader_ELIE2023, and KVSimReader_ELIE.

Definition at line 202 of file KVSimReader.cpp.

◆ ReadFileHeader()

Bool_t KVSimReader::ReadFileHeader ( )
virtual

Implement as needed to read informations at the beginning of the input file, if present.

Such informations may be used in ReadFileHeader() to set the names of output files/TTrees, using the methods

Returns
true unless there is a problem reading the header (inconsistent file structure, end of file, etc.)

Reimplemented in KVSimReader_IQMD, KVSimReader_HIPSE, KVSimReader_ELIE2023, KVSimReader_ELIE, and KVSimReader_DIT.

Definition at line 177 of file KVSimReader.cpp.

◆ ReadNucleus()

Bool_t KVSimReader::ReadNucleus ( KVSimNucleus *  )
virtual

If required, this method can be implemented in child classes, to be used in ReadEvent(). As the implementation of ReadEvent() is the user's responsibility, the meaning of the returned bool value is also up to the user.

Reimplemented in KVSimReader_SMF_asym, KVSimReader_SMF, KVSimReader_MMM_asym, KVSimReader_IQMD, KVSimReader_HaC, KVSimReader_MMM, KVSimReader_HIPSE_asym, KVSimReader_HIPSE, KVSimReader_ELIE_asym, KVSimReader_ELIE2023, and KVSimReader_ELIE.

Definition at line 219 of file KVSimReader.cpp.

◆ SetBranchName()

void KVSimReader::SetBranchName ( KVString  n)
inline

Set name used for branch of TTree used to store KVSimEvent objects

Definition at line 256 of file KVSimReader.h.

◆ SetFileIndex()

void KVSimReader::SetFileIndex ( Int_t  i)
inline

Definition at line 204 of file KVSimReader.h.

◆ SetMaxNumEventsPerOutputFile()

void KVSimReader::SetMaxNumEventsPerOutputFile ( int  nev)
inline

Limit the total number of converted events in output files, leading to a set of output files being created, each with a name given by the same basic 'stub' (defined by SetROOTFileName()) along with a sequential index number.

Definition at line 192 of file KVSimReader.h.

◆ SetMultiFiles()

void KVSimReader::SetMultiFiles ( Bool_t  on = kTRUE)
inline

Definition at line 200 of file KVSimReader.h.

◆ SetOutputDirectory()

void KVSimReader::SetOutputDirectory ( const TString &  where)
inline

Definition at line 208 of file KVSimReader.h.

◆ SetROOTFileName()

void KVSimReader::SetROOTFileName ( KVString  name)
inline

Use to set a basic 'stub' for the output filename(s), without the '.root' extension.

The value given will be used to name files [name].root, [name].0.root, [name].1.root, etc.

Definition at line 247 of file KVSimReader.h.

◆ SetTreeName()

void KVSimReader::SetTreeName ( KVString  n)
inline

Set name used for TTree in output file

Definition at line 232 of file KVSimReader.h.

◆ SetTreeTitle()

void KVSimReader::SetTreeTitle ( KVString  n)
inline

Set the title used for TTree in output file

Definition at line 237 of file KVSimReader.h.