HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hsuexemacro.h
Go to the documentation of this file.
1 #ifndef HSUEXEMACRO_H
2 #define HSUEXEMACRO_H
3 
4 // -----------------------------------------------------------------------------
5 // $Id: hsuexemacro.h,v 1.8 2008-09-18 13:04:57 halo Exp $
6 // Author: Marcin Jaskula
7 // -----------------------------------------------------------------------------
8 
9 #include "TROOT.h"
10 #include "TSystem.h"
11 #include "TFile.h"
12 #include "TChain.h"
13 #include "TTree.h"
14 #include "TObjArray.h"
15 #include "TString.h"
16 #include "TObjString.h"
17 #include "TMap.h"
18 
19 #include <hsuprogress.h>
20 
21 // -----------------------------------------------------------------------------
22 
23 class HSUExeMacro;
24 class HCategory;
25 
26 // -----------------------------------------------------------------------------
27 
28 class HSUBranchElement : public TObject
29 {
30 public:
32  {
33  kArray = 0,
36  };
37 
38  // -------------------------------------------------------------------------
39 private:
40 
41  TString *m_pName; // name of branch
42  TObject *m_pArray; // pointer to array or category
43  TBranch *m_pBranch; // pointer to branch
44 
45  EBranchType m_eType; // type of array
46 
47  // -------------------------------------------------------------------------
48 
49  HSUBranchElement(const Char_t* pBranchName,
50  EBranchType eType);
51  ~HSUBranchElement(void);
52 
53  // -------------------------------------------------------------------------
54 
55  const Char_t* getBranchNameSufix(void);
56 
57  // -------------------------------------------------------------------------
58 
59  friend class HSUExeMacro;
60 };
61 
62 // -----------------------------------------------------------------------------
63 
64 class HSUExeMacro : public TObject
65 {
66 protected:
67  TChain *m_pChain; // chain of input files
68  Int_t m_iCurrentFile; // current file in the chain
69 
70  HSUProgress *m_pProgress; // progress bar
71 
72  TFile *m_pOutputFile; // output file
73  TObjArray *m_pActiveBranches; // array with active branches
74 
75  Bool_t m_bExitOnError; // if exit on any error
76 
77  TString m_sOutputName; // name of the output file
78  TObjArray *m_pInputArray; // list of input files
79 
80  Int_t m_iEvents; // max number of events
81  Int_t m_iEvent; // current event
82 
83  TString m_sParamFileName; // name of a file with parameters
84  TFile *m_pParamFile; // file with parameters
85 
86  TString m_sOptString; // string from parameters
87  Int_t m_iOptInt; // Int_t from parameters
88  Float_t m_fOptFloat; // Float_t from parameters
89  Bool_t m_bOptBool; // boolean from parameters
90 
91  Bool_t m_bNotFileChange; // notify when the file changes
92 
93 public:
94  HSUExeMacro();
95  virtual ~HSUExeMacro();
96 
97  // -------------------------------------------------------------------------
98 
99  virtual Int_t loadArgs(Int_t iArg, Char_t* vArg[]);
100 
101  // -------------------------------------------------------------------------
102 
103  Bool_t openInput(void);
104  Bool_t addInputFile(const Char_t *pStr);
105  Bool_t addFilesFromList(const Char_t *pStr);
106 
107  // -------------------------------------------------------------------------
108 
109  Bool_t openOutput(void);
110  Bool_t writeOutput(void);
111 
112  // -------------------------------------------------------------------------
113 
114  Int_t loadTree(Int_t iEvent);
115  Bool_t checkBranches(void);
116  void clear(void);
117  void getBranchesEntry(Int_t iEntry);
118  Int_t getEvent(Int_t iEvent);
119  Int_t nextEvent(void);
120 
121  // -------------------------------------------------------------------------
122 
123  TClonesArray* getTClonesArray(const Char_t *pBranchName);
124  HCategory* getHCategory(const Char_t *pCategoryName);
125  TBranch* getBranch(const Char_t *pBranchName);
126 
127  // -------------------------------------------------------------------------
128 
129  virtual void printInfo(const Char_t *pProgramName) const;
130 
131  // -------------------------------------------------------------------------
132 
133  Bool_t getExitOnError(void) const { return m_bExitOnError; }
134  void setExitOnError(Bool_t b = kTRUE) { m_bExitOnError = b; }
135 
136  // -------------------------------------------------------------------------
137 
138  void setProgress(HSUProgress *pProgress);
139  void setProgress(Bool_t bSet = kTRUE);
140  HSUProgress* getProgress(void) const;
141  void deleteProgress(void);
142 
143  // -------------------------------------------------------------------------
144 
145  Bool_t openParamFile(const Char_t *pParamFileName = NULL);
146  TObject* getParamObject(const Char_t *pName);
147 
148  const TString& getParamFileName(void) const;
149 
150  Bool_t isParamFileOpened(void) const
151  { return m_pParamFile != NULL; }
152 
153  // -------------------------------------------------------------------------
154 
155  const TString& getOptString(void) const { return m_sOptString; }
156  Int_t getOptInt(void) const { return m_iOptInt; }
157  Float_t getOptFloat(void) const { return m_fOptFloat; }
158  Bool_t getOptBool(void) const { return m_bOptBool; }
159 
160  // -------------------------------------------------------------------------
161 
162  Int_t getEvents(void) const { return m_iEvents; }
163  Int_t getEvent(void) const { return m_iEvent; }
164 
165  // -------------------------------------------------------------------------
166 
167  Float_t getMdcPhi(Int_t iSector, Float_t fPhiMdc) const;
168  Float_t getMdcTheta(Float_t fThetaMdc) const;
169 
170  // -------------------------------------------------------------------------
171 
172  Bool_t getNotFileChange(void) { return m_bNotFileChange; }
173  void setNotFileChange(Bool_t b) { m_bNotFileChange = b; }
174 
175  // -------------------------------------------------------------------------
176 
177 private:
178  HSUBranchElement* findAciveBranch(const Char_t *pBranchName);
179  TClonesArray* getNewArrayFromBranch(const Char_t *pBranchName);
180  HCategory* getNewHCategoryFromBranch(const Char_t *pBranchName);
181  Bool_t notifyBranches(void);
182 
183  // -------------------------------------------------------------------------
184 
185  ClassDef(HSUExeMacro, 0) //! Easy acces to branches in exe macro
186 };
187 
188 // -----------------------------------------------------------------------------
189 
190 #ifndef SAFE_DELETE
191 #define SAFE_DELETE(A) { if(A != NULL) { delete A; A = NULL; } }
192 #endif
193 
194 #ifndef SAFE_DELETE_ROOT
195 #define SAFE_DELETE_ROOT(A) { if(A != NULL) { A->Delete(); A = NULL; } }
196 #endif
197 
198 // -----------------------------------------------------------------------------
199 
200 #endif //!HSUEXEMACRO_H
TFile * m_pOutputFile
Definition: hsuexemacro.h:72
TString m_sOutputName
Definition: hsuexemacro.h:77
Bool_t m_bExitOnError
Definition: hsuexemacro.h:75
HCategory * getHCategory(const Char_t *pCategoryName)
Definition: hsuexemacro.cc:471
HSUProgress * getProgress(void) const
Definition: hsuexemacro.cc:191
TObject * getParamObject(const Char_t *pName)
Definition: hsuexemacro.cc:842
TString m_sOptString
Definition: hsuexemacro.h:86
TClonesArray * getTClonesArray(const Char_t *pBranchName)
Definition: hsuexemacro.cc:449
HSUBranchElement * findAciveBranch(const Char_t *pBranchName)
Definition: hsuexemacro.cc:602
Int_t getEvents(void) const
Definition: hsuexemacro.h:162
Bool_t addFilesFromList(const Char_t *pStr)
Definition: hsuexemacro.cc:361
TFile * m_pParamFile
Definition: hsuexemacro.h:84
Bool_t getNotFileChange(void)
Definition: hsuexemacro.h:172
Float_t m_fOptFloat
Definition: hsuexemacro.h:88
Int_t loadTree(Int_t iEvent)
Definition: hsuexemacro.cc:623
Bool_t isParamFileOpened(void) const
Definition: hsuexemacro.h:150
HSUProgress * m_pProgress
Definition: hsuexemacro.h:70
const Char_t * getBranchNameSufix(void)
Definition: hsuexemacro.cc:44
TObjArray * m_pInputArray
Definition: hsuexemacro.h:78
Int_t nextEvent(void)
Definition: hsuexemacro.cc:762
Bool_t m_bOptBool
Definition: hsuexemacro.h:89
Bool_t openInput(void)
Definition: hsuexemacro.cc:301
Int_t m_iCurrentFile
Definition: hsuexemacro.h:68
Bool_t getExitOnError(void) const
Definition: hsuexemacro.h:133
TObjArray * m_pActiveBranches
Definition: hsuexemacro.h:73
TClonesArray * getNewArrayFromBranch(const Char_t *pBranchName)
Definition: hsuexemacro.cc:505
Int_t m_iEvents
Definition: hsuexemacro.h:80
Bool_t m_bNotFileChange
Definition: hsuexemacro.h:91
TChain * m_pChain
Definition: hsuexemacro.h:67
Bool_t openOutput(void)
Definition: hsuexemacro.cc:404
void clear(void)
Definition: hsuexemacro.cc:692
void setProgress(HSUProgress *pProgress)
Definition: hsuexemacro.cc:165
Float_t getOptFloat(void) const
Definition: hsuexemacro.h:157
virtual Int_t loadArgs(Int_t iArg, Char_t *vArg[])
Definition: hsuexemacro.cc:209
void getBranchesEntry(Int_t iEntry)
Definition: hsuexemacro.cc:710
const TString & getOptString(void) const
Definition: hsuexemacro.h:155
TObject * m_pArray
Definition: hsuexemacro.h:42
Int_t getOptInt(void) const
Definition: hsuexemacro.h:156
EBranchType m_eType
Definition: hsuexemacro.h:45
TString * m_pName
Definition: hsuexemacro.h:41
Int_t m_iEvent
Definition: hsuexemacro.h:81
void deleteProgress(void)
Definition: hsuexemacro.cc:200
TBranch * m_pBranch
Definition: hsuexemacro.h:43
~HSUBranchElement(void)
Definition: hsuexemacro.cc:36
Float_t getMdcPhi(Int_t iSector, Float_t fPhiMdc) const
Definition: hsuexemacro.cc:868
TBranch * getBranch(const Char_t *pBranchName)
Definition: hsuexemacro.cc:493
Float_t getMdcTheta(Float_t fThetaMdc) const
Definition: hsuexemacro.cc:898
Bool_t addInputFile(const Char_t *pStr)
Definition: hsuexemacro.cc:338
void setExitOnError(Bool_t b=kTRUE)
Definition: hsuexemacro.h:134
Bool_t openParamFile(const Char_t *pParamFileName=NULL)
Definition: hsuexemacro.cc:794
Bool_t checkBranches(void)
Definition: hsuexemacro.cc:741
void setNotFileChange(Bool_t b)
Definition: hsuexemacro.h:173
virtual void printInfo(const Char_t *pProgramName) const
Definition: hsuexemacro.cc:287
Bool_t notifyBranches(void)
Definition: hsuexemacro.cc:655
TString m_sParamFileName
Definition: hsuexemacro.h:83
const TString & getParamFileName(void) const
Definition: hsuexemacro.cc:860
Int_t getEvent(void) const
Definition: hsuexemacro.h:163
HSUBranchElement(const Char_t *pBranchName, EBranchType eType)
Definition: hsuexemacro.cc:19
Int_t m_iOptInt
Definition: hsuexemacro.h:87
Bool_t getOptBool(void) const
Definition: hsuexemacro.h:158
HCategory * getNewHCategoryFromBranch(const Char_t *pBranchName)
Definition: hsuexemacro.cc:543
virtual ~HSUExeMacro()
Definition: hsuexemacro.cc:150
Bool_t writeOutput(void)
Definition: hsuexemacro.cc:435