GUI for analysing and filtering simulated data.
,,
This is the GUI which can be run using the command kaliveda-sim
. It can be used for running analyses of simulated data, including 'filtering' simulations according to the experimental set-up of a given dataset. It interfaces with PROOFLite for running parallel jobs on multi-core machines, and with the batch system at the IN2P3 Computing Centre in Lyon.
Adding/importing simulated data
The 4 buttons at the top left of the GUI
are used for (from left to right: the names given are the tooltips which appear when hovering over each button):
Add dataset
- a dataset is a collection of simulated datafiles in a given directory; when clicked, the user must select a directory and give a name for the dataset.
Import simulation
- simulated data in the output format produced by a given model (usually ASCII files...) can be imported, i.e. read in and stored as KVSimEvent objects in a TTree; the resulting ROOT file is added to the current dataset. See below.
Remove dataset
- this will remove the selected dataset from the GUI, but will not delete the associated directory or files therein!
Update
- refresh the lists of datasets and files they contain
Importing simulated data
Plugins for the KVSimReader base class have been developed for several models of heavy-ion reactions, which allow to read the idiosyncratic output files produced in each case. In order to import some simulated data, the user must select a file to read and the plugin to use, which must correspond to the model used to generate the data. Note also that many of the plugins have an _asym
variant: meaning 'asymptotic', these are to be used to read in data corresponding to nuclei after secondary decay; in this case, the non-_asym
variant of the plugin is for reading primary events, before secondary decay. See KVSimReader for more details and the list of plugin classes.
Analysing data
The Data Analysis
tab is used to run analyses of both unfiltered and filtered data, depending on which files are selected above. To select an analysis class to use, click on the 'open folder' icon next to the Analysis class
text box, then navigate to and select the .h
header file of your analysis class.
New example analysis classes can be generated using the two buttons at the bottom of the tab. Note that for filtered or unfiltered data, different classes are generated. In both cases the analysis class directly derives from KVEventSelector, but the differences are due to:
- unfiltered simulated data are stored as KVSimNucleus particles in KVSimEvent containers, whereas filtered data, like experimental data, are stored as KVReconstructedNucleus particles in KVReconstructedEvent containers: this changes for example the types of iterators to be used (see Nuclei and Events).
- for filtered data, as for experimental data, the centre of mass
CM
frame is automatically defined for all particles of each event before the user's Analysis()
method is called.
You can find an example of each type of analysis class with the other examples.
Note that filtered data can also be analysed using exactly the same class as for analysis of experimental data (which are derived from KVReconEventSelector).
If the user selects both filtered and unfiltered data (exactly 1 file of each type), the simulation data before filtering with the experimental set-up will also be available for her analysis. See the example given in ExampleFilteredSimDataAnalysis.cpp
Beneath the analysis tab are controls to change the number of events to analyse (by default: all), use PROOFLite/Batch to run the analysis, and launch the analysis (see tooltip for each button). To use PROOFLite/Batch, the button must be depressed ('enabled') before clicking Run analysis
: then the usual dialog window for the PROOFLite/Batch system parameters will open before submitting the job.
Filtering data
Filtering data is basically a specific analysis job using a pre-defined analysis class, KVEventFiltering. As you will see in the class documentation, this analysis requires many input informations in order to perform filtering. The Filtering
tab in the GUI is used to set up an analysis job using KVEventFiltering, and allows to specify Experimental conditions
, Filter type
, Options
and Kinematics
:
Experimental conditions
:
- the choice of dataset determines which detector array geometry to use;
- the choice of system determines the reaction kinematics (e.g. for CM \(\rightarrow\)lab transformations);
- the choice of run number determines the state of the array to be simulated, including:
- physical parameters of the experimental target (for target energy loss calculations);
- physical parameters of the detectors (e.g. gas pressures in case of ionization chambers);
- status of the detectors: present/absent, working/not working, calibrated/not calibrated;
- status of identifications in different telescopes: implemented/not implemented
- if required, an ad hoc reaction not corresponding to any system in the dataset can be defined
- in this case the ad hoc reaction kinematics replaces that of the chosen system, and the choice of system only determines which run number is used to define the state of the array.
Note that if no run number is chosen, the first run corresponding to the chosen system will be used.
Filter type
:
Geometric
: no energy thresholds, any particle with non-zero kinetic energy (in the lab frame) which hits at least one detector in the array is considered detected (and correctly identified etc.);
Geometry+Thresholds
: particles having sufficient energy to escape the target and hit at least one detector in the array are considered detected. They are considered as identified if they encounter an identification telescope which is theoretically able to identify such a particle, which may depend on the particle's \(Z\), \(A\) and/or \(E\);
Full
: as Geometry+Thresholds
but in addition taking into account which detectors/calibrations/identifications were not functioning for the specific run number chosen.
Options
:
Random phi
: apply a random azimuthal rotation (around the beam axis) to each event before simulating its detection. In this case, the filtered events will have a parameter RANDOM_PHI
containing the applied rotation [in radians];
Gemini++ decay
: if KaliVeda was compiled with GEMINI++ support (see Optional software), use it to perform secondary decay of all nuclei in each event before simulating detection. See KVEventFiltering for more details.
Kinematics
:
- to simulate detection of particles requires to know their kinematics in the laboratory (detector) frame. Depending on the frame in which the simulation results are supplied, a kinematical frame transformation may first be required. Therefore these options are used to determine which one, if any, to apply, using the reaction kinematics either of the selected dataset system or of the ad hoc reaction kinematics supplied by the user:
CM
: simulation in reaction centre of mass, perform CM \(\rightarrow\)lab transformation;
Lab
: simulation in laboratory frame, no transformation;
Projectile
: simulation in projectile frame, perform Projectile \(\rightarrow\)lab transformation.
Definition at line 152 of file KVSimDirGUI.h.
|
| KVSimDirGUI () |
|
| KVSimDirGUI (const KVSimDirGUI &) |
|
virtual | ~KVSimDirGUI () |
| Destructor.
|
|
void | AddSimDir () |
|
void | Copy (TObject &) const |
|
void | DisableProof () |
|
void | EmptyTreeList () |
|
void | EnableEventNumberEntry (Bool_t) |
|
void | EnableProof () |
|
void | Exit () |
|
void | FillTreeList () |
|
void | FilterType (Int_t i) |
|
void | GeoType (Int_t i) |
|
void | ImportSimulation () |
| Import simulation data from currently selected directory.
|
|
void | Kinematics (Int_t i) |
|
void | NewFilteredAnalysisClass () |
| Get name of new class.
|
|
void | NewSimulatedAnalysisClass () |
| Get name of new class.
|
|
void | RefreshSimDir () |
|
void | RemSimDir () |
|
void | Run () |
| void ChangeOutputDirectory();
|
|
void | RunAnalysis (const TString &type) |
|
void | SelectAnalysisClass () |
|
void | SelectDataSet (const char *) |
|
void | SelectRun (const char *) |
|
void | SelectSimDir (TGListTreeItem *, Int_t) |
|
void | SelectSystem (const char *) |
|
void | SetCustomKinematics (Bool_t on) |
|
void | SetGeminiDecay (Bool_t on) |
|
void | SetGeminiDecayAddRotEnergy (Bool_t on) |
|
void | SetRandomPhi (Bool_t on) |
|
void | UpdateSystemText (const char *) |
| called every time the text changes
|
|
Bool_t | WarningBox (const char *title, const char *msg, Bool_t confirm) |
|
| KVBase () |
| Default constructor.
|
|
| KVBase (const Char_t *name, const Char_t *title="") |
| Ctor for object with given name and type.
|
|
| KVBase (const KVBase &) |
| copy ctor
|
|
virtual | ~KVBase () |
|
virtual void | Clear (Option_t *opt="") |
| Clear object properties : name, type/title, number, label.
|
|
const Char_t * | GetLabel () const |
|
UInt_t | GetNumber () const |
|
UInt_t | GetNumberOfObjects () const |
|
virtual TObject * | GetObject () const |
|
virtual const Char_t * | GetType () const |
|
Bool_t | HasLabel () const |
|
virtual Bool_t | IsCalled (const Char_t *name) const |
|
Bool_t | IsLabelled (const Char_t *l) const |
|
virtual Bool_t | IsType (const Char_t *typ) const |
|
virtual void | List () |
|
KVBase & | operator= (const KVBase &) |
| copy assignment operator
|
|
virtual void | Print (Option_t *option="") const |
|
Double_t | ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const |
|
void | SetLabel (const Char_t *lab) |
|
virtual void | SetNumber (UInt_t num) |
|
virtual void | SetType (const Char_t *str) |
|
| TNamed () |
|
| TNamed (const char *name, const char *title) |
|
| TNamed (const TNamed &named) |
|
| TNamed (const TString &name, const TString &title) |
|
virtual | ~TNamed () |
|
void | Clear (Option_t *option="") override |
|
TObject * | Clone (const char *newname="") const override |
|
Int_t | Compare (const TObject *obj) const override |
|
void | Copy (TObject &named) 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) |
|
void | Print (Option_t *option="") const override |
|
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) |
|
| 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 |
|
|
enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23)
} |
|
enum | EDeprecatedStatusBits |
|
enum | EStatusBits |
|
static Bool_t | AreEqual (Double_t x, Double_t y, Long64_t maxdif=1) |
| Comparison between two 64-bit floating-point values.
|
|
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 Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *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="") |
|
static Bool_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval) |
|
static const Char_t * | GetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval) |
|
static Double_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t 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.)
|
|
static const Char_t * | GetINCDIRFilePath (const Char_t *namefile="") |
|
static const Char_t * | GetKVBuildDate () |
| Returns KaliVeda build date.
|
|
static const Char_t * | GetKVBuildDir () |
| Returns top-level directory used for build.
|
|
static const Char_t * | GetKVBuildTime () |
| Returns KaliVeda build time.
|
|
static const Char_t * | GetKVBuildType () |
| Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...)
|
|
static const Char_t * | GetKVBuildUser () |
| Returns username of person who performed build.
|
|
static const Char_t * | GetKVSourceDir () |
| Returns top-level directory of source tree used for build.
|
|
static const Char_t * | GetKVVersion () |
| Returns KaliVeda version string.
|
|
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.
|
|
static const Char_t * | gitCommit () |
| Returns last git commit of sources.
|
|
static void | InitEnvironment () |
|
static bool | is_gnuinstall () |
|
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.
|
|
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 TClass * | Class () |
|
static const char * | Class_Name () |
|
static constexpr Version_t | Class_Version () |
|
static const char * | DeclFileName () |
|
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) |
|
| kBitMask |
|
| kCanDelete |
|
| kCannotPick |
|
| kHasUUID |
|
| kInconsistent |
|
| kInvalidObject |
|
| kIsOnHeap |
|
| kIsReferenced |
|
| kMustCleanup |
|
| kNoContextMenu |
|
| kNotDeleted |
|
| kObjInCanvas |
|
| kOverwrite |
|
| kSingleKey |
|
| kWriteDelete |
|
| kZombie |
|
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
|
void | MakeZombie () |
|
TString | fName |
|
TString | fTitle |
|
| kOnlyPrepStep |
|