]>
Commit | Line | Data |
---|---|---|
0364ec3a | 1 | // |
2 | // *** Class AliRsnTrainManager *** | |
3 | // | |
4 | // Base class for Action | |
5 | // | |
6 | // authors: Martin Vala (martin.vala@cern.ch) | |
7 | // Jan Musinsky (jan.musinsky@cern.ch) | |
8 | // | |
9 | ||
10 | #include <TError.h> | |
11 | #include <TObjString.h> | |
12 | #include <TMap.h> | |
13 | #include <TClass.h> | |
14 | ||
15 | #include "AliRsnTrainManager.h" | |
16 | ||
17 | ClassImp(AliRsnTrainManager) | |
18 | ||
19 | AliRsnTrainManager *AliRsnTrainManager::fgRsnTrainManager = 0; | |
20 | ||
21 | //__________________________________________________________________________________________________ | |
22 | AliRsnTrainManager::AliRsnTrainManager(const char *name,const char *title) : TNamed(name,title), | |
23 | fGlobals(0) | |
24 | { | |
25 | // | |
26 | // Default constructor | |
27 | // | |
28 | ||
29 | fgRsnTrainManager = this; | |
30 | ||
31 | if (TClass::IsCallingNew() != TClass::kDummyNew) { | |
32 | fGlobals = new TMap(); | |
33 | } | |
34 | ||
35 | } | |
36 | ||
37 | //__________________________________________________________________________________________________ | |
38 | AliRsnTrainManager::AliRsnTrainManager(const AliRsnTrainManager ©) : TNamed(copy), | |
39 | fGlobals(copy.fGlobals) | |
40 | { | |
41 | // | |
42 | // Copy constructor | |
43 | // | |
44 | } | |
45 | ||
46 | //__________________________________________________________________________________________________ | |
47 | AliRsnTrainManager &AliRsnTrainManager::operator=(const AliRsnTrainManager ©) | |
48 | { | |
49 | // | |
50 | // Assignment constructor | |
51 | // | |
52 | TNamed::operator=(copy); | |
53 | if (this == ©) | |
54 | return *this; | |
55 | ||
56 | fGlobals = copy.fGlobals; | |
57 | return (*this); | |
58 | } | |
59 | ||
60 | //__________________________________________________________________________________________________ | |
61 | AliRsnTrainManager::~AliRsnTrainManager() | |
62 | { | |
63 | // | |
64 | // Destructor | |
65 | // | |
66 | delete fGlobals; | |
67 | fgRsnTrainManager = 0; | |
68 | } | |
69 | ||
70 | //______________________________________________________________________________ | |
71 | void AliRsnTrainManager::SetGlobalStr(const char *key, const char *value) | |
72 | { | |
73 | // Define a custom string variable mapped to a global unique name. The variable | |
74 | // can be then retrieved by a given analysis macro via GetGlobalStr(key). | |
75 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
76 | if (!mgr) { | |
77 | ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined"); | |
78 | return; | |
79 | } | |
80 | Bool_t valid = kFALSE; | |
81 | TString existing = AliRsnTrainManager::GetGlobalStr(key, valid); | |
82 | if (valid) { | |
83 | ::Error("AliRsnTrainManager::SetGlobalStr", "Global %s = %s already defined.", key, existing.Data()); | |
84 | return; | |
85 | } | |
86 | mgr->GetGlobals()->Add(new TObjString(key), new TObjString(value)); | |
87 | } | |
88 | ||
89 | //______________________________________________________________________________ | |
90 | const char *AliRsnTrainManager::GetGlobalStr(const char *key, Bool_t &valid) | |
91 | { | |
92 | // Static method to retrieve a global variable defined via SetGlobalStr. | |
93 | valid = kFALSE; | |
94 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
95 | if (!mgr) return 0; | |
96 | TObject *value = mgr->GetGlobals()->GetValue(key); | |
97 | if (!value) return 0; | |
98 | valid = kTRUE; | |
99 | return value->GetName(); | |
100 | } | |
101 | ||
102 | //______________________________________________________________________________ | |
103 | void AliRsnTrainManager::SetGlobalInt(const char *key, Int_t value) | |
104 | { | |
105 | // Define a custom integer variable mapped to a global unique name. The variable | |
106 | // can be then retrieved by a given analysis macro via GetGlobalInt(key). | |
107 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
108 | if (!mgr) { | |
109 | ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined"); | |
110 | return; | |
111 | } | |
112 | Bool_t valid = kFALSE; | |
113 | Int_t existing = AliRsnTrainManager::GetGlobalInt(key, valid); | |
114 | if (valid) { | |
115 | ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %i already defined.", key, existing); | |
116 | return; | |
117 | } | |
118 | mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%i",value))); | |
119 | } | |
120 | ||
121 | //______________________________________________________________________________ | |
122 | Int_t AliRsnTrainManager::GetGlobalInt(const char *key, Bool_t &valid) | |
123 | { | |
124 | // Static method to retrieve a global variable defined via SetGlobalInt. | |
125 | valid = kFALSE; | |
126 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
127 | if (!mgr) return 0; | |
128 | TObject *value = mgr->GetGlobals()->GetValue(key); | |
129 | if (!value) return 0; | |
130 | valid = kTRUE; | |
131 | TString s = value->GetName(); | |
132 | return s.Atoi(); | |
133 | } | |
134 | ||
135 | //______________________________________________________________________________ | |
136 | void AliRsnTrainManager::SetGlobalDbl(const char *key, Double_t value) | |
137 | { | |
138 | // Define a custom double precision variable mapped to a global unique name. The variable | |
139 | // can be then retrieved by a given analysis macro via GetGlobalInt(key). | |
140 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
141 | if (!mgr) { | |
142 | ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined"); | |
143 | return; | |
144 | } | |
145 | Bool_t valid = kFALSE; | |
146 | Double_t existing = AliRsnTrainManager::GetGlobalDbl(key, valid); | |
147 | if (valid) { | |
148 | ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %g already defined.", key, existing); | |
149 | return; | |
150 | } | |
151 | mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%f.16",value))); | |
152 | } | |
153 | ||
154 | //______________________________________________________________________________ | |
155 | Double_t AliRsnTrainManager::GetGlobalDbl(const char *key, Bool_t &valid) | |
156 | { | |
157 | // Static method to retrieve a global variable defined via SetGlobalDbl. | |
158 | valid = kFALSE; | |
159 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
160 | if (!mgr) return 0; | |
161 | TObject *value = mgr->GetGlobals()->GetValue(key); | |
162 | if (!value) return 0; | |
163 | valid = kTRUE; | |
164 | TString s = value->GetName(); | |
165 | return s.Atof(); | |
166 | } | |
167 | ||
168 | //______________________________________________________________________________ | |
169 | void AliRsnTrainManager::SetGlobalObj(const char *key, TObject *value) | |
170 | { | |
171 | // Define a custom double precision variable mapped to a global unique name. The variable | |
172 | // can be then retrieved by a given analysis macro via GetGlobalInt(key). | |
173 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
174 | if (!mgr) { | |
175 | ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined"); | |
176 | return; | |
177 | } | |
178 | Bool_t valid = kFALSE; | |
179 | TObject *existing = AliRsnTrainManager::GetGlobalObj(key, valid); | |
180 | if (valid) { | |
181 | ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %p already defined.", key, existing); | |
182 | return; | |
183 | } | |
184 | mgr->GetGlobals()->Add(new TObjString(key), value->Clone()); | |
185 | } | |
186 | ||
187 | //______________________________________________________________________________ | |
188 | TObject *AliRsnTrainManager::GetGlobalObj(const char *key, Bool_t &valid) | |
189 | { | |
190 | // Static method to retrieve a global variable defined via SetGlobalDbl. | |
191 | valid = kFALSE; | |
192 | AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager(); | |
193 | if (!mgr) return 0; | |
194 | TObject *value = mgr->GetGlobals()->GetValue(key); | |
195 | return value; | |
196 | } | |
197 | ||
198 | //______________________________________________________________________________ | |
199 | void AliRsnTrainManager::Print(Option_t */*option*/) const { | |
200 | ||
201 | ||
202 | ||
203 | if (!fGlobals) return; | |
204 | Printf("========================================================="); | |
205 | ||
206 | Printf(" Rsn Global variables: \n"); | |
207 | TIter next(fGlobals->GetTable()); | |
208 | TPair *a; | |
209 | TObjString *str; | |
210 | while ((a = (TPair *)next())) { | |
211 | str = 0; | |
212 | // if (a->Key()&& a->Key()->IsOnHeap()){ | |
213 | // } | |
214 | if (a->Value() && a->Value()->IsOnHeap()){ | |
215 | str = dynamic_cast<TObjString *>(a->Value()); | |
216 | } | |
217 | if (str) { | |
218 | if (str) Printf(" %20s = %-20s",a->Key()->GetName(),str->GetString().Data()); | |
219 | } | |
220 | } | |
221 | Printf("\n========================================================="); | |
222 | Printf(" Rsn Particles and Cuts \n"); | |
223 | ||
224 | next.Reset(); | |
225 | // AliRsnCut | |
226 | while ((a = (TPair *)next())) { | |
227 | str = 0; | |
228 | // if (a->Key()&& a->Key()->IsOnHeap()){ | |
229 | // } | |
230 | if (a->Value() && a->Value()->IsOnHeap()){ | |
231 | str = dynamic_cast<TObjString *>(a->Value()); | |
232 | } | |
233 | if (str) { | |
234 | if (str) Printf(" %20s = %-20s",a->Key()->GetName(),str->GetString().Data()); | |
235 | } | |
236 | } | |
237 | ||
238 | Printf("\n========================================================="); | |
239 | ||
240 | } |