KaliVeda
Toolkit for HIC analysis
|
Manage all datasets contained in a given data repository.
KVDataSetManager handles a collection of datasets contained in a data repository, which may be analysed with KaliVeda. The list of all known datasets is defined in $KVROOT/KVFiles/.kvrootrc. Some of these datasets may not be physically present in the repository. This is checked by method CheckAvailability(). This will search in the data repository for the subdirectories corresponding to each dataset, and afterwards KVDataSet::IsAvailable() will return kTRUE or kFALSE for each dataset depending on the result of the search.
Each data repository has a data set manager. At any time, one repository is designated as being 'active' or 'current', and it's address is held in the global pointer gDataRepository. One can then access the corresponding dataset manager through gDataSetManager.
Definition at line 39 of file KVDataSetManager.h.
#include <KVDataSetManager.h>
Public Member Functions | |
KVDataSetManager () | |
virtual | ~KVDataSetManager () |
virtual void | CheckAvailability () |
virtual Bool_t | CheckUser (const Char_t *groupname, const Char_t *username="") |
KVDataAnalysisTask * | GetAnalysisTaskAny (const Char_t *keywords) const |
virtual KVDataSet * | GetAvailableDataSet (Int_t) const |
KVDataSet * | GetDataSet (const Char_t *) |
Return pointer to DataSet using name. | |
KVDataSet * | GetDataSet (Int_t) const |
Return pointer to DataSet using index in list of all datasets, index>=0. | |
virtual Int_t | GetNavailable () const |
virtual Int_t | GetNtotal () const |
virtual KVDataAnalysisTask * | GetTask (const Char_t *name) |
Return pointer to named data analysis task. | |
const KVNameValueList & | GetUserGroups () |
virtual Bool_t | Init (KVDataRepository *=0) |
virtual void | Print (Option_t *opt="") const |
virtual void | Update () |
Private Member Functions | |
virtual Bool_t | CheckCacheStatus () |
const KVSeqCollection * | GetAnalysisTaskList () const |
virtual KVDataSet * | NewDataSet () |
Creates and returns pointer to new data set object. | |
virtual Bool_t | OpenAvailableDatasetsFile () |
virtual Bool_t | ReadAvailableDatasetsFile () |
virtual Bool_t | ReadDataSetList () |
virtual Bool_t | ReadTaskList () |
virtual void | ReadUserGroups () |
Private Attributes | |
Bool_t | fCacheAvailable |
kTRUE if caching is activated for parent repository | |
TString | fCacheFileName |
name of cache file ( = [repository name].available.datasets) | |
std::ifstream | fDatasets |
for reading cached repository available datasets file | |
KVUniqueNameList | fDataSets |
list of datasets handled by manager | |
std::vector< Int_t > | fIndex |
array of indices of available datasets | |
UInt_t | fMaxCacheTime |
maximum allowed age of cache file in seconds | |
Int_t | fNavailable |
number of available datasets | |
KVDataRepository * | fRepository |
the repository for which data sets are handled | |
KVUniqueNameList | fTasks |
list of all known analysis tasks | |
KVNameValueList | fUserGroups |
list of user groups | |
Friends | |
class | KVDataSet |
KVDataSetManager::KVDataSetManager | ( | ) |
Definition at line 33 of file KVDataSetManager.cpp.
|
virtual |
Definition at line 48 of file KVDataSetManager.cpp.
|
virtual |
Check availability of datasets in repository associated to this data set manager
If caching is activated for the parent repository, i.e. if
[repository name].DataRepository.CacheAvailable: yes
then instead of directly checking the existence of the directories for each dataset, we use the cached information written in the file KVBase::WorkingRepository()/[repository name].available.datasets unless (1) it doesn't exist, or (2) the file is older than the maximum cache time (in seconds) defined by
[repository name].DataRepository.MaxCacheSeconds:
In either of these 2 cases, we check the existence of the directories and update/ create the cache file.
If the repository appears to be empty (perhaps because we are using a remote access protocol to check it, and the protocol has some problems...), then as a last resort we we will use the cache if it exists, whatever its age.
Reimplemented in KVRemoteDataSetManager.
Definition at line 279 of file KVDataSetManager.cpp.
|
privatevirtual |
We check the status of the available datasets cache file. We return kTRUE if the file exists & was last modified less than fMaxCacheTime seconds ago.
Definition at line 585 of file KVDataSetManager.cpp.
|
virtual |
Check in list of groups fUserGroups if the user name 'username' is part of the group 'groupname'. If 'username' is not given (default) we use current user info (gSystem->GetUserInof()->fUser).
Definition at line 431 of file KVDataSetManager.cpp.
KVDataAnalysisTask * KVDataSetManager::GetAnalysisTaskAny | ( | const Char_t * | keywords | ) | const |
This method returns a pointer to the analysis task whose description (title) contains all of the whitespace-separated keywords (which may be regular expressions) given in the string "keywords". The comparison is case-insensitive. case-insensitive search for matches in list of all analysis tasks, based on 'title' attribute
Definition at line 622 of file KVDataSetManager.cpp.
|
inlineprivate |
Definition at line 58 of file KVDataSetManager.h.
Return pointer to available DataSet using index of available datasets Note this index begins at 1, and corresponds to the number printed next to the dataset when Print("available") is called
Definition at line 404 of file KVDataSetManager.cpp.
Return pointer to DataSet using name.
Definition at line 391 of file KVDataSetManager.cpp.
Return pointer to DataSet using index in list of all datasets, index>=0.
Definition at line 378 of file KVDataSetManager.cpp.
|
inlinevirtual |
Definition at line 79 of file KVDataSetManager.h.
|
inlinevirtual |
Definition at line 83 of file KVDataSetManager.h.
|
virtual |
Return pointer to named data analysis task.
Definition at line 419 of file KVDataSetManager.cpp.
|
inline |
Definition at line 87 of file KVDataSetManager.h.
|
virtual |
Initialisation of dataset manager for the repository 'dr'. If dr=0x0 (default) then all known datasets are 'available', otherwise we check availability of datasets based on data present in repository. Initialise all possible data analysis tasks, then set list of possible tasks for each available dataset.
Returns kTRUE if all goes well. For remote data repositories we return kFALSE if no datasets are available (as the access to these is read-only)
Definition at line 65 of file KVDataSetManager.cpp.
|
privatevirtual |
Creates and returns pointer to new data set object.
Definition at line 453 of file KVDataSetManager.cpp.
|
privatevirtual |
Opens file KVBase::WorkingDirectory()/[repository name].available.datasets containing cached info on available datasets and associated subdirectories in data repository. Opens file for reading, & if all goes well returns kTRUE. Returns kFALSE in case of problems.
Reimplemented in KVRemoteDataSetManager.
Definition at line 492 of file KVDataSetManager.cpp.
Print list of datasets If opt="" (default) all datasets are shown with full information if opt="available" only available datasets are shown, each with a number which can be used with GetAvailableDataSet(Int_t) in order to retrieve the corresponding dataset.
Definition at line 224 of file KVDataSetManager.cpp.
|
privatevirtual |
Opens and reads file containing cached info on available datasets, and sets the availability of the concerned datasets. Returns kTRUE if all goes well. Returns kFALSE if no cache exists or if file cannot be opened.
Definition at line 511 of file KVDataSetManager.cpp.
|
privatevirtual |
Initialise list of all known datasets from informations in $KVROOT/KVFIles/.kvrootrc (and user's .kvrootrc)
Definition at line 153 of file KVDataSetManager.cpp.
|
privatevirtual |
Initialise list of all known analysis tasks from informations in $KVROOT/KVFIles/.kvrootrc (and user's .kvrootrc)
Definition at line 188 of file KVDataSetManager.cpp.
|
privatevirtual |
Sets up list of user groups defining restricted access to certain datasets. Definition of different user groups is given in $KVROOT/KVFiles/.kvrootrc UserGroups env var contains whitespace-separated list of group names
Definition at line 120 of file KVDataSetManager.cpp.
|
virtual |
Called when the physical state of the repository has changed i.e. a subdirectory for a new dataset or datatype has been added or removed. We update the available datatsets, datatypes and analysis tasks. check which datasets are available
Definition at line 467 of file KVDataSetManager.cpp.
|
friend |
Definition at line 41 of file KVDataSetManager.h.
|
private |
kTRUE if caching is activated for parent repository
Definition at line 64 of file KVDataSetManager.h.
|
private |
name of cache file ( = [repository name].available.datasets)
Definition at line 66 of file KVDataSetManager.h.
|
private |
for reading cached repository available datasets file
Definition at line 44 of file KVDataSetManager.h.
|
private |
list of datasets handled by manager
Definition at line 45 of file KVDataSetManager.h.
|
private |
array of indices of available datasets
Definition at line 48 of file KVDataSetManager.h.
|
private |
maximum allowed age of cache file in seconds
Definition at line 65 of file KVDataSetManager.h.
|
private |
number of available datasets
Definition at line 47 of file KVDataSetManager.h.
|
private |
the repository for which data sets are handled
Definition at line 56 of file KVDataSetManager.h.
|
private |
list of all known analysis tasks
Definition at line 46 of file KVDataSetManager.h.
|
private |
list of user groups
Definition at line 49 of file KVDataSetManager.h.