KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVDataAnalyser.h
Go to the documentation of this file.
1 /*
2 $Id: KVDataAnalyser.h,v 1.18 2009/04/01 09:28:34 franklan Exp $
3 $Revision: 1.18 $
4 $Date: 2009/04/01 09:28:34 $
5 $Author: franklan $
6 */
7 
8 #ifndef __KVDATAANALYSER_H
9 #define __KVDATAANALYSER_H
10 
11 #include "TObject.h"
12 #include "TTree.h"
13 #include "KVList.h"
14 #include "KVBatchSystem.h"
15 #include "KVString.h"
16 #include "KVNumberList.h"
17 #include "TEnv.h"
18 #include "KV2Body.h"
19 #include "KVDBSystem.h"
20 #include "KVDBRun.h"
21 class KVDataAnalysisTask;
22 
60 class KVDataAnalyser : public TObject {
61 
62 private:
68 
72 
81 
83 
87 
91 
93 
94 protected:
98 
99  virtual Bool_t CheckIfUserClassIsValid(const KVString& alternative_base_class = "");
100  TObject* GetInstanceOfUserClass(const KVString& alternative_base_class = "");
101 
102  const Char_t* GetACliCMode();
103 
105  {
106  return fBatchEnv;
107  }
109  {
110  return kTRUE;
111  }
112  virtual void PostRunReset();
113  virtual Bool_t NeedToChooseWhatToDo() const
114  {
115  return !GetAnalysisTask();
116  }
118  {
119  AbstractMethod("NeedToChooseWhatToAnalyse");
120  return kTRUE;
121  }
122  virtual void ChooseWhatToAnalyse();
123  virtual void ChooseWhatToDo();
125 
126  virtual void set_up_analyser_for_task(KVDataAnalyser* the_analyser);
127 
128 public:
129  enum EProofMode {
132  Proof
133  };
134 private:
136 public:
138  {
139  fProofMode = e;
140  }
142  {
143  return fProofMode;
144  }
145 
146  static void SetAbortProcessingLoop(Bool_t now = kTRUE)
147  {
149  fCleanAbort = now;
150  }
152  {
153  return fCleanAbort;
154  }
155 
156  KVDataAnalyser();
157  virtual ~ KVDataAnalyser();
158 
159  void SetUserClass(const Char_t* kvs, Bool_t check = kTRUE);
161  {
162  return fUserClass.Data();
163  }
165  {
166  return fUserClassIsOK;
167  }
168 
170  {
171  return 0;
172  }
173 
174  virtual void Run();
175  virtual void RunMenus();
176  void ChooseUserClass();
177  void ChooseRunningMode();
178  virtual void SubmitTask();
179  virtual Bool_t CheckTaskVariables();
181 
182  void SetBatchMode(Bool_t on = kTRUE)
183  {
184  fBatch = on;
185  }
187  {
188  return fBatch;
189  }
190  void SetBatchName(const Char_t* batchname)
191  {
192  fBatchName = batchname;
193  }
195  {
196  return fBatchName.Data();
197  }
199  {
200  fBatchSystem = bs;
202  if (bs) fBatchSystem->cd();
203  }
204  virtual const KVBatchSystem* GetBatchSystem()
205  {
206  return fBatchSystem;
207  }
209 
210  const Char_t* GetLaunchDirectory() const;
212  const Char_t* GetBatchStatusFileName() const;
213  void UpdateBatchStatusFile(Int_t totev, Int_t evread, TString disk) const;
214  void DeleteBatchStatusFile() const;
216  {
217  return 0;
218  }
219  virtual Bool_t CheckStatusUpdateInterval(Long64_t nevents) const;
220  void SetStatusUpdateInterval(double t)
221  {
223  }
225  {
226  return fStatusUpdateInterval;
227  }
228 
229  void DoStatusUpdate(Long64_t nevents) const;
230 
232  {
233  return fTask;
234  }
235  const KVString& GetDataType() const
236  {
237  return fDataType;
238  }
239  const KVString& GetUserIncludes() const
240  {
241  return fIncludes;
242  }
243  const KVString& GetUserLibraries() const
244  {
245  return fLibraries;
246  }
247  virtual void SetFileList(TList*)
248  {
249  AbstractMethod("SetFileList(TList*)");
250  }
251  virtual void SetAuxFileList(TList*)
252  {
253  AbstractMethod("SetAuxFileList(TList*)");
254  }
255 
257  {
258  nbEventToRead = nb;
259  }
260 
262  {
263  return nbEventToRead;
264  }
265 
266  void ChooseNbEventToRead();
268  void SetDataType(const Char_t* name)
269  {
270  fDataType = name;
271  }
272 
273  void SetUserIncludes(const Char_t* incDirs = 0);
274  void SetUserLibraries(const Char_t* libs = 0);
275 
276  virtual void Reset();
277 
279  {
280  fParent = da;
281  }
283  {
284  return fParent;
285  }
286 
287  const KVString& GetUserClassImp() const
288  {
289  return fUserClassImp;
290  }
291  const KVString& GetUserClassDec() const
292  {
293  return fUserClassDec;
294  }
295 
296  static KVDataAnalyser* GetAnalyser(const Char_t* plugin);
297  virtual Bool_t ReadBatchEnvFile(const Char_t*);
298  virtual void WriteBatchEnvFile(const Char_t*, Bool_t sav = kTRUE);
299 
300  virtual TString ExpandAutoBatchName(const Char_t* format) const;
301 
302  /* methods which can be used to customise analysis class behaviour.
303  they can be called from the analysis class using the global
304  pointer to the current data analyser, gDataAnalyser */
305  virtual void preInitAnalysis() {}
306  virtual void postInitAnalysis() {}
307  virtual void preInitRun() {}
308  virtual void postInitRun() {}
309  virtual void preAnalysis() {}
310  virtual void postAnalysis() {}
311  virtual void preEndRun() {}
312  virtual void postEndRun() {}
313  virtual void preEndAnalysis() {}
314  virtual void postEndAnalysis() {}
315 
316  void WriteBatchInfo(TTree*);
317 
318  virtual void RegisterUserClass(TObject*) {}
319 
320  void SetUserClassOptions(const Char_t* o = "")
321  {
322  fUserClassOptions = o;
323  }
325  {
326  return fUserClassOptions;
327  }
328 
329  static void RunAnalyser(const Char_t* plugin = "");
330 
332 
333  virtual void AddJobDescriptionList(TList*);
334 
335  void SetMenus(Bool_t on = kTRUE)
336  {
337  fMenus = on;
338  }
339  Bool_t IsMenus() const
340  {
341  return fMenus;
342  }
343  void SetQuit(Bool_t yes = kTRUE)
344  {
345  fQuit = yes;
346  }
347  Bool_t IsQuit() const
348  {
349  return fQuit;
350  }
351  void SetSubmit(Bool_t yes = kTRUE)
352  {
353  fSubmit = yes;
354  }
355  Bool_t IsSubmit() const
356  {
357  return fSubmit;
358  }
360  {
361  AbstractMethod("GetRootDirectoryOfDataToAnalyse");
362  return "";
363  }
364  virtual const Char_t* GetRecognisedAutoBatchNameKeywords() const;
366  {
368  }
369  virtual const KV2Body* GetKinematics() const
370  {
371  return nullptr;
372  }
373  virtual KVDBSystem* GetAnalysedSystem() const
374  {
375  return nullptr;
376  }
377  virtual KVDBRun* GetAnalysedRun() const
378  {
379  return nullptr;
380  }
381  virtual void SetTriggerConditionsForRun(int) {}
382 
383  virtual void SetAnalysedTree(TTree*) {}
384  virtual TTree* GetAnalysedTree() const
385  {
390 
391  return nullptr;
392  }
393 
394  ClassDef(KVDataAnalyser, 0) //For submitting & performing data analysis tasks
395 };
396 
399 
400 #endif
int Int_t
#define R__EXTERN
R__EXTERN KVDataAnalyser * gDataAnalyser
................ global variable
#define e(i)
char Char_t
bool Bool_t
double Double_t
const Bool_t kTRUE
#define ClassDef(name, id)
Relativistic binary kinematics calculator.
Definition: KV2Body.h:165
Base class for interface to a batch job management system.
Definition: KVBatchSystem.h:77
void cd()
Make this the default batch system.
Description of an experimental run in database ,.
Definition: KVDBRun.h:35
Database class used to store information on different colliding systems studied during an experiment.
Definition: KVDBSystem.h:51
Manager class which sets up and runs data analysis tasks.
virtual void SetTriggerConditionsForRun(int)
virtual void SetAnalysedTree(TTree *)
const Char_t * GetACliCMode()
virtual void postEndRun()
virtual TTree * GetAnalysedTree() const
Bool_t IsMenus() const
Double_t GetStatusUpdateInterval() const
virtual KVDBRun * GetAnalysedRun() const
KVString fUserClass
user's analysis class
void UseBaseClassSubmitTask()
void DoStatusUpdate(Long64_t nevents) const
Print infos on events treated, disk usage, memory usage.
virtual TString ExpandAutoBatchName(const Char_t *format) const
void SetParent(KVDataAnalyser *da)
const KVString & GetUserLibraries() const
Bool_t fUseBaseClassSubmitTask
Long64_t nbEventToRead
virtual void PostRunReset()
virtual void Run()
Check all task variables, then run analyser.
Bool_t fSubmit
set to kTRUE when user wants to submit task
virtual void Reset()
virtual void SetAuxFileList(TList *)
virtual void AddJobDescriptionList(TList *)
KVDataAnalyser * fParent
holds address of parent analyser which created this one
const KVString & GetUserClassImp() const
void SetBatchSystem(KVBatchSystem *bs)
void ChooseNbEventToRead()
Ask user to set number of events to read.
virtual void preInitAnalysis()
void SetUserClassOptions(const Char_t *o="")
Bool_t RunningInLaunchDirectory()
virtual const KVBatchSystem * GetBatchSystem()
KVString fLibraries
user's libraries
virtual void postAnalysis()
void SetBatchMode(Bool_t on=kTRUE)
virtual ~ KVDataAnalyser()
const KVString & GetDataType() const
void SetUserLibraries(const Char_t *libs=0)
static void SetAbortProcessingLoop(Bool_t now=kTRUE)
KVString fUserClassOptions
options to be passed to user analysis class
void SetUserClass(const Char_t *kvs, Bool_t check=kTRUE)
virtual Bool_t CheckIfUserClassIsValid(const KVString &alternative_base_class="")
KVDataAnalyser * GetParent() const
virtual Bool_t NeedToChooseWhatToAnalyse() const
Bool_t fBatch
set to kTRUE when used in a non-interactive environment
void SetBatchName(const Char_t *batchname)
TString GetPathToFileInLaunchDirectory(const TString &) const
void WriteBatchInfo(TTree *)
virtual const KV2Body * GetKinematics() const
virtual void RunMenus()
Run data analyser in menu-driven mode.
virtual Bool_t CheckTaskVariables()
void SetSubmit(Bool_t yes=kTRUE)
Bool_t DoUserClassFilesExist()
const Char_t * GetBatchName()
const Char_t * GetLaunchDirectory() const
EProofMode fProofMode
void SetAnalysisTask(KVDataAnalysisTask *at)
KVString fBatchName
name of batch job when used in a non-interactive environment
void SetProofMode(EProofMode e)
const KVString & GetUserIncludes() const
Bool_t fUserClassIsOK
set once user class has been validated
virtual const Char_t * GetRecognisedAutoBatchNameKeywords() const
virtual void set_up_analyser_for_task(KVDataAnalyser *the_analyser)
virtual Bool_t NeedToChooseWhatToDo() const
virtual void WriteBatchEnvFile(const Char_t *, Bool_t sav=kTRUE)
virtual Bool_t CheckStatusUpdateInterval(Long64_t nevents) const
virtual Bool_t CheckWhatToAnalyseAndHow()
void SetQuit(Bool_t yes=kTRUE)
virtual void SubmitTask()
const Char_t * GetBatchStatusFileName() const
Returns full path to file used to store status of running batch jobs.
virtual void preAnalysis()
TEnv * fBatchEnv
batch environment file
virtual void SetFileList(TList *)
virtual void ChooseWhatToAnalyse()
TO IMPLEMENT ?
KVString fUserClassImp
user's analysis class implementation file
TList * fWorkDirInit
list of files in working directory before task runs
virtual Long64_t GetTotalEntriesToRead() const
KVDataAnalyser()
Default constructor.
virtual Int_t GetNumberOfFilesToAnalyse() const
static Bool_t fCleanAbort
flag to force abort of processing
KVString fUserClassDec
user's analysis class header file
const KVString & GetUserClassOptions() const
const Char_t * GetUserClass()
virtual Bool_t PreSubmitCheck()
static KVDataAnalyser * GetAnalyser(const Char_t *plugin)
KVString fIncludes
user's include directories
Bool_t fQuit
set to kTRUE when user wants to quit
EProofMode GetProofMode() const
static Bool_t IsRunningBatchAnalysis()
void SetDataType(const Char_t *name)
virtual KVString GetRootDirectoryOfDataToAnalyse() const
Bool_t fMenus
set to kTRUE in menu-driven mode
virtual void preEndRun()
virtual void postInitRun()
KVString fUserClassAlternativeBaseClass
alternative base class for user's analysis class
static void RunAnalyser(const Char_t *plugin="")
void ScanWorkingDirectory(TList **)
void ChooseUserClass()
Choose the user's analysis class.
TList * fWorkDirEnd
list of files in working directory after task runs
static Bool_t AbortProcessingLoop()
Long64_t GetNbEventToRead(void) const
virtual void postEndAnalysis()
virtual void preEndAnalysis()
void SetMenus(Bool_t on=kTRUE)
const KVString & GetUserClassDec() const
void CopyAnalysisResultsToLaunchDirectory()
void DeleteBatchStatusFile() const
Delete batch status file (and backup - '.bak') for batch job.
void SetStatusUpdateInterval(double t)
virtual void preInitRun()
virtual Bool_t ReadBatchEnvFile(const Char_t *)
virtual void RegisterUserClass(TObject *)
void SetUserIncludes(const Char_t *incDirs=0)
virtual void ChooseWhatToDo()
TO IMPLEMENT ?
Bool_t IsUserClassValid() const
KVDataAnalysisTask * GetAnalysisTask() const
Bool_t BatchMode() const
virtual void postInitAnalysis()
virtual KVDBSystem * GetAnalysedSystem() const
Bool_t IsSubmit() const
void UpdateBatchStatusFile(Int_t totev, Int_t evread, TString disk) const
Update infos in batch status file.
KVBatchSystem * fBatchSystem
batch system to use for submission of job
TEnv * GetBatchInfoFile() const
Bool_t IsQuit() const
Bool_t fChoseRunMode
set to kTRUE once running mode has been set/chosen
TObject * GetInstanceOfUserClass(const KVString &alternative_base_class="")
KVString fDataType
datatype chosen by user
KVDataAnalysisTask * fTask
task chosen by user
Double_t fStatusUpdateInterval
void SetNbEventToRead(Long64_t nb=0)
Define and manage data analysis tasks.
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:72
void AbstractMethod(const char *method) const
const char * Data() const
long long Long64_t