GUI for analysing and filtering simulated data.
,,
This is the GUI which can be run using the command KaliVedaSim. 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
In the Mode menu, select Analysis in order to analyse both unfiltered and filtered data, depending on which files are selected.
To select an analysis class to use, in the Analysis menu select Select analysis class then navigate to and select the .h header file of your analysis class.
New example analysis classes can be generated using the Generate analysis class sub-menu in the Analysis menu, then selecting either simulation (i.e. unfiltered) or filtered as data type. 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 classes 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
At the bottom of the GUI 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
In the Mode menu, select Filter in order to activate the Filtering menu.
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 menu in the GUI is used to set up a filtering job using KVEventFiltering, and allows to specify
Detector geometry:
- the choice of a dataset in this list determines which detector array geometry to use;
Entrance channel:
- defines the kinematics used for any necessary changes of frame (e.g. for CM \(\rightarrow\)lab transformations). Either choose one of the systems belonging to the dataset, or define an ad hoc reaction, using the format
[Proj]+[Targ]@[Energy]MeV/A (e.g. 129Xe+natSn@50.0MeV/A);
Run number:
- You can choose a specific run number corresponding to the chosen system, or if no run number is chosen, the first run corresponding to the chosen system will be used. 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;
- acquisition trigger.
Detector performances:
- If you want to use the experimental identification performances from a previously measured (and calibrated) dataset (thresholds and limits for both \(Z\) and \(A\) identification), choose one in the list. This uses the KVDataQualityAudit objects for the given datasets, which store all information from the data on what was identified by which telescope starting from which energy. Note that you don't necessarily have to use the audit from the same dataset as the one used to determine the detector array geometry.
- If you choose
[none], particle identification thresholds will be estimated based on energy loss calculations and, in certain cases, empirical values for known detectors.
Extend ID range...:
- When using a data quality audit from experimental data on a reaction which does not correspond to the simulation you are filtering (or for other reasons...) it is possible that your simulation contains nuclei with a bigger \(Z\) than any that were detected/identified in the experimental data. In this case the data quality audit will simply reject all such nuclei above the upper \(Z\) limit.
- This menu presents a list of different identification possibilities for which you can authorize the filter to "fall back" on a theoretical estimate of identification threshold for any nucleus with a \(Z\) larger than any in the audit. Select/check as many as you require.
Options
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.);
Geo+Thresh: 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 depending on the particle's \(Z\), \(A\), \(E\) according to either the data quality audit being used or a theoretical and/or empirical estimate of the identification threshold;
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.
Rotation:
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];
For more details on the filtering procedure, see the dedicated KVEventFiltering analysis class which uses a KVDetectionSimulator to simulate detection of all particles of each event by a KVMultiDetArray, before a KVFilterEventReconstructor is used to reconstruct the event in a way similar to that done for experimental data by KVEventReconstructor.
Definition at line 168 of file KVSimDirGUI.h.
|
| | KVSimDirGUI () |
| |
| void | AddAuxDir (TGListTreeItem *simdir, Int_t) |
| |
| void | AddSimDir () |
| |
| | ClassDefOverride (KVSimDirGUI, 0) TString GetKinematicsString() |
| |
| void | DisableProof () |
| |
| void | EmptyTreeList () |
| |
| void | EnableEventNumberEntry (Bool_t) |
| |
| void | EnableProof () |
| |
| void | Exit () |
| |
| void | FillTreeList () |
| |
| void | FilterType (Int_t i) |
| |
| void | GeoType (Int_t i) |
| |
| TString | GetFilterTypeString () |
| |
| void | ImportSimulation () |
| | Import simulation data from currently selected directory. More...
|
| |
| bool | IsAnalysisMode () const |
| |
| bool | IsFilterMode () const |
| |
| void | Kinematics (Int_t i) |
| |
| void | NewFilteredAnalysisClass () |
| | Get name of new class. More...
|
| |
| void | NewSimulatedAnalysisClass () |
| | Get name of new class. More...
|
| |
| void | RefreshSimDir () |
| |
| void | RemSimDir () |
| |
| void | Run () |
| | void ChangeOutputDirectory(); More...
|
| |
| void | RunAnalysis (const TString &type) |
| |
| void | SelectAnalysisClass () |
| |
| void | SelectDataQualityAudit () |
| |
| void | SelectDataSet (const char *) |
| |
| void | SelectSimDir (TGListTreeItem *, Int_t) |
| |
| void | SelectSystem (const char *) |
| |
| void | SetAnalysisMode () |
| |
| void | SetAnalysisStatusBar () |
| |
| void | SetCustomKinematics (Bool_t on) |
| |
| void | SetFilterMode () |
| |
| void | SetFilterStatusBar () |
| |
| void | SetGeminiDecay (Bool_t on) |
| |
| void | SetGeminiDecayAddRotEnergy (Bool_t on) |
| |
| void | SetGeminiDecayPerEvent (Int_t N) |
| |
| void | SetRandomPhi (Bool_t on) |
| |
| void | UpdateSystemText (const char *) |
| |
| Bool_t | WarningBox (const char *title, const char *msg, Bool_t confirm) |
| |
| | 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 | Clear (Option_t *opt="") override |
| | Clear object properties : name, type/title, number, label. More...
|
| |
| void | Copy (TObject &) const override |
| | Make a copy of this object. More...
|
| |
| void | Error (const char *method, const char *msgfmt,...) const override |
| |
| const Char_t * | GetLabel () const |
| |
| UInt_t | GetNumber () 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 More...
|
| |
| void | Print (Option_t *option="") const override |
| |
| 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) |
| |
| void | Warning (const char *method, const char *msgfmt,...) const override |
| |
| | 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) |
| |
| | 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 | 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 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. 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="") |
| |
| static KVString | GetDataSetEnv (const KVString &dataset, const KVString &type, const char *defval) |
| |
| 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 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 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) |
| |
| virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
| |
| void | MakeZombie () |
| |
| TString | fName |
| |
| TString | fTitle |
| |
| | kOnlyPrepStep |
| |