KaliVeda
Toolkit for HIC analysis
KVDataSetManager Class Reference

Detailed Description

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.

ACTIVE DATA REPOSITORY/DATASET MANAGER

Each data repository has a data set manager. At any time, one repository is designated as being 'active' or 'current', and its address is held in the global pointer gDataRepository. One can then access the corresponding dataset manager through gDataSetManager.

Definition at line 41 of file KVDataSetManager.h.

#include <KVDataSetManager.h>

Public Member Functions

 KVDataSetManager ()
 
void CheckAvailability ()
 
KVDataAnalysisTaskGetAnalysisTaskAny (const Char_t *keywords) const
 
KVDataSetGetAvailableDataSet (Int_t) const
 
KVDataSetGetDataSet (const Char_t *)
 Return pointer to DataSet using name. More...
 
KVDataSetGetDataSet (Int_t) const
 Return pointer to DataSet using index in list of all datasets, index>=0. More...
 
Int_t GetNavailable () const
 
Int_t GetNtotal () const
 
KVDataAnalysisTaskGetTask (const Char_t *name)
 Return pointer to named data analysis task. More...
 
Bool_t Init (KVDataSetRepository *=0)
 
void Print (Option_t *opt="") const
 
void Update ()
 

Private Member Functions

Bool_t CheckCacheStatus ()
 
const KVSeqCollectionGetAnalysisTaskList () const
 
KVDataSetNewDataSet ()
 Creates and returns pointer to new data set object. More...
 
Bool_t OpenAvailableDatasetsFile ()
 
Bool_t ReadAvailableDatasetsFile ()
 
Bool_t ReadDataSetList ()
 
Bool_t ReadTaskList ()
 

Private Attributes

Bool_t fCacheAvailable
 kTRUE if caching is activated for parent repository More...
 
TString fCacheFileName
 name of cache file ( = [repository name].available.datasets) More...
 
std::ifstream fDatasets
 for reading cached repository available datasets file More...
 
KVUniqueNameList fDataSets
 list of datasets handled by manager More...
 
KVEnv fEnv
 
std::vector< Int_tfIndex
 array of indices of available datasets More...
 
UInt_t fMaxCacheTime
 maximum allowed age of cache file in seconds More...
 
Int_t fNavailable
 number of available datasets More...
 
KVDataSetRepositoryfRepository
 the repository for which data sets are handled More...
 
KVUniqueNameList fTasks
 list of all known analysis tasks More...
 

Friends

class KVDataSet
 

Constructor & Destructor Documentation

◆ KVDataSetManager()

KVDataSetManager::KVDataSetManager ( )

Definition at line 29 of file KVDataSetManager.cpp.

Member Function Documentation

◆ CheckAvailability()

void KVDataSetManager::CheckAvailability ( )

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
char name[80]

then instead of directly checking the existence of the directories for each dataset, we use the cached information written in the file $HOME/.kaliveda/[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.

Definition at line 232 of file KVDataSetManager.cpp.

◆ CheckCacheStatus()

Bool_t KVDataSetManager::CheckCacheStatus ( )
private

We check the status of the available datasets cache file.

Returns
kTRUE if the file exists & was last modified less than fMaxCacheTime seconds ago.

Definition at line 515 of file KVDataSetManager.cpp.

◆ GetAnalysisTaskAny()

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 551 of file KVDataSetManager.cpp.

◆ GetAnalysisTaskList()

const KVSeqCollection* KVDataSetManager::GetAnalysisTaskList ( ) const
inlineprivate

Definition at line 59 of file KVDataSetManager.h.

◆ GetAvailableDataSet()

KVDataSet * KVDataSetManager::GetAvailableDataSet ( Int_t  index) const

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 360 of file KVDataSetManager.cpp.

◆ GetDataSet() [1/2]

KVDataSet * KVDataSetManager::GetDataSet ( const Char_t name)

Return pointer to DataSet using name.

Definition at line 346 of file KVDataSetManager.cpp.

◆ GetDataSet() [2/2]

KVDataSet * KVDataSetManager::GetDataSet ( Int_t  index) const

Return pointer to DataSet using index in list of all datasets, index>=0.

Definition at line 333 of file KVDataSetManager.cpp.

◆ GetNavailable()

Int_t KVDataSetManager::GetNavailable ( ) const
inline

Definition at line 79 of file KVDataSetManager.h.

◆ GetNtotal()

Int_t KVDataSetManager::GetNtotal ( ) const
inline

Definition at line 83 of file KVDataSetManager.h.

◆ GetTask()

KVDataAnalysisTask * KVDataSetManager::GetTask ( const Char_t name)

Return pointer to named data analysis task.

Definition at line 376 of file KVDataSetManager.cpp.

◆ Init()

Bool_t KVDataSetManager::Init ( KVDataSetRepository dr = 0)

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.

Definition at line 54 of file KVDataSetManager.cpp.

◆ NewDataSet()

KVDataSet * KVDataSetManager::NewDataSet ( )
private

Creates and returns pointer to new data set object.

Definition at line 387 of file KVDataSetManager.cpp.

◆ OpenAvailableDatasetsFile()

Bool_t KVDataSetManager::OpenAvailableDatasetsFile ( )
private

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.

Definition at line 426 of file KVDataSetManager.cpp.

◆ Print()

void KVDataSetManager::Print ( Option_t opt = "") const

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() in order to retrieve the corresponding dataset.

Definition at line 174 of file KVDataSetManager.cpp.

◆ ReadAvailableDatasetsFile()

Bool_t KVDataSetManager::ReadAvailableDatasetsFile ( )
private

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 445 of file KVDataSetManager.cpp.

◆ ReadDataSetList()

Bool_t KVDataSetManager::ReadDataSetList ( )
private

Initialise list of all known datasets from informations in .kvrootrc config files (and user's .kvrootrc)

Definition at line 103 of file KVDataSetManager.cpp.

◆ ReadTaskList()

Bool_t KVDataSetManager::ReadTaskList ( )
private

Initialise list of all known analysis tasks from informations in .kvrootrc config files (and user's .kvrootrc)

Definition at line 136 of file KVDataSetManager.cpp.

◆ Update()

void KVDataSetManager::Update ( )

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 401 of file KVDataSetManager.cpp.

Friends And Related Function Documentation

◆ KVDataSet

friend class KVDataSet
friend

Definition at line 43 of file KVDataSetManager.h.

Member Data Documentation

◆ fCacheAvailable

Bool_t KVDataSetManager::fCacheAvailable
private

kTRUE if caching is activated for parent repository

Definition at line 65 of file KVDataSetManager.h.

◆ fCacheFileName

TString KVDataSetManager::fCacheFileName
private

name of cache file ( = [repository name].available.datasets)

Definition at line 67 of file KVDataSetManager.h.

◆ fDatasets

std::ifstream KVDataSetManager::fDatasets
private

for reading cached repository available datasets file

Definition at line 47 of file KVDataSetManager.h.

◆ fDataSets

KVUniqueNameList KVDataSetManager::fDataSets
private

list of datasets handled by manager

Definition at line 48 of file KVDataSetManager.h.

◆ fEnv

KVEnv KVDataSetManager::fEnv
private

Definition at line 45 of file KVDataSetManager.h.

◆ fIndex

std::vector<Int_t> KVDataSetManager::fIndex
private

array of indices of available datasets

Definition at line 51 of file KVDataSetManager.h.

◆ fMaxCacheTime

UInt_t KVDataSetManager::fMaxCacheTime
private

maximum allowed age of cache file in seconds

Definition at line 66 of file KVDataSetManager.h.

◆ fNavailable

Int_t KVDataSetManager::fNavailable
private

number of available datasets

Definition at line 50 of file KVDataSetManager.h.

◆ fRepository

KVDataSetRepository* KVDataSetManager::fRepository
private

the repository for which data sets are handled

Definition at line 57 of file KVDataSetManager.h.

◆ fTasks

KVUniqueNameList KVDataSetManager::fTasks
private

list of all known analysis tasks

Definition at line 49 of file KVDataSetManager.h.