KaliVeda  1.12/06
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;
211  const Char_t* GetBatchStatusFileName() const;
212  void UpdateBatchStatusFile(Int_t totev, Int_t evread, TString disk) const;
213  void DeleteBatchStatusFile() const;
215  {
216  return 0;
217  }
218  virtual Bool_t CheckStatusUpdateInterval(Long64_t nevents) const;
219  void SetStatusUpdateInterval(double t)
220  {
222  }
224  {
225  return fStatusUpdateInterval;
226  }
227 
228  void DoStatusUpdate(Long64_t nevents) const;
229 
231  {
232  return fTask;
233  }
234  const KVString& GetDataType() const
235  {
236  return fDataType;
237  }
238  const KVString& GetUserIncludes() const
239  {
240  return fIncludes;
241  }
242  const KVString& GetUserLibraries() const
243  {
244  return fLibraries;
245  }
246  virtual void SetFileList(TList*)
247  {
248  AbstractMethod("SetFileList(TList*)");
249  }
250  virtual void SetAuxFileList(TList*)
251  {
252  AbstractMethod("SetAuxFileList(TList*)");
253  }
254 
256  {
257  nbEventToRead = nb;
258  }
259 
261  {
262  return nbEventToRead;
263  }
264 
265  void ChooseNbEventToRead();
267  void SetDataType(const Char_t* name)
268  {
269  fDataType = name;
270  }
271 
272  void SetUserIncludes(const Char_t* incDirs = 0);
273  void SetUserLibraries(const Char_t* libs = 0);
274 
275  virtual void Reset();
276 
278  {
279  fParent = da;
280  }
282  {
283  return fParent;
284  }
285 
286  const KVString& GetUserClassImp() const
287  {
288  return fUserClassImp;
289  }
290  const KVString& GetUserClassDec() const
291  {
292  return fUserClassDec;
293  }
294 
295  static KVDataAnalyser* GetAnalyser(const Char_t* plugin);
296  virtual Bool_t ReadBatchEnvFile(const Char_t*);
297  virtual void WriteBatchEnvFile(const Char_t*, Bool_t sav = kTRUE);
298 
299  virtual TString ExpandAutoBatchName(const Char_t* format) const;
300 
301  /* methods which can be used to customise analysis class behaviour.
302  they can be called from the analysis class using the global
303  pointer to the current data analyser, gDataAnalyser */
304  virtual void preInitAnalysis() {}
305  virtual void postInitAnalysis() {}
306  virtual void preInitRun() {}
307  virtual void postInitRun() {}
308  virtual void preAnalysis() {}
309  virtual void postAnalysis() {}
310  virtual void preEndRun() {}
311  virtual void postEndRun() {}
312  virtual void preEndAnalysis() {}
313  virtual void postEndAnalysis() {}
314 
315  void WriteBatchInfo(TTree*);
316 
317  virtual void RegisterUserClass(TObject*) {}
318 
319  void SetUserClassOptions(const Char_t* o = "")
320  {
321  fUserClassOptions = o;
322  }
324  {
325  return fUserClassOptions;
326  }
327 
328  static void RunAnalyser(const Char_t* plugin = "");
329 
331 
332  virtual void AddJobDescriptionList(TList*);
333 
334  void SetMenus(Bool_t on = kTRUE)
335  {
336  fMenus = on;
337  }
338  Bool_t IsMenus() const
339  {
340  return fMenus;
341  }
342  void SetQuit(Bool_t yes = kTRUE)
343  {
344  fQuit = yes;
345  }
346  Bool_t IsQuit() const
347  {
348  return fQuit;
349  }
350  void SetSubmit(Bool_t yes = kTRUE)
351  {
352  fSubmit = yes;
353  }
354  Bool_t IsSubmit() const
355  {
356  return fSubmit;
357  }
359  {
360  AbstractMethod("GetRootDirectoryOfDataToAnalyse");
361  return "";
362  }
363  virtual const Char_t* GetRecognisedAutoBatchNameKeywords() const;
365  {
367  }
368  virtual const KV2Body* GetKinematics() const
369  {
370  return nullptr;
371  }
372  virtual KVDBSystem* GetAnalysedSystem() const
373  {
374  return nullptr;
375  }
376  virtual KVDBRun* GetAnalysedRun() const
377  {
378  return nullptr;
379  }
380 #ifdef USING_ROOT6
381  virtual void SetTriggerConditionsForRun(int) {}
382 #endif
383  ClassDef(KVDataAnalyser, 0) //For submitting & performing data analysis tasks
384 };
385 
388 
389 #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)
const Char_t * GetACliCMode()
virtual void postEndRun()
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)
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