If data from Parameter file differs from ours TODO: should understand a way of storring parameters in SHIP Text file constructor
FairRunAna* ana = FairRunAna::Instance(); if (ana!=NULL) { FairRuntimeDb* rtdb=ana->GetRuntimeDb(); rtdb->getContainer("CbmGeoEcalPar"); }
140 : TObject(),
163{
175 std::ifstream file(filename);
176 Int_t linenum;
178 string buffer;
179 string message;
180 string variable;
181 string value;
182 TObjString*
str=NULL;
183 char** err=NULL;
184 char winend[2]={13, 0};
185 int ssize=-1;
186
187 if (!file) {
188 cerr <<
"ecalInf: Can't open information file " <<
filename <<
"!" << endl;
189 cerr << "ecalInf: Ecal will not be constructed correctly." << endl;
191 return;
192 }
193
194 linenum=0;
195 while(getline(file,buffer)) {
196 linenum++;
197 message=buffer.substr(buffer.find_first_not_of(" "));
198 message=message.substr(0,message.find("#"));
199
200 message=message.substr(0,message.find(winend));
201 if (message.empty()) continue;
202 variable=message.substr(0,message.find("="));
203 if (variable=="structure") {
204 while(getline(file,buffer)) {
205 linenum++;
206 if (buffer.empty()) break;
207 message=buffer.substr(buffer.find_first_not_of(" "));
208 message=message.substr(0,message.find("#"));
209 message=message.substr(0,message.find_last_not_of(" ")+1);
210
211
212 message=message.substr(0,message.find(winend));
213
214 if (!message.empty()) {
215 if (-1==ssize)
216 ssize=message.size();
217 else
218 if (ssize!=(Int_t)message.size()) {
219 cerr << "Error in ECAL structure at line " << linenum;
220 cerr << "." << endl;
221 cerr << "Line length differs from previous one" << endl;
223 file.close();
224 return;
225
226 }
227
228 str=
new TObjString(message.c_str());
230 }
231 }
232 break;
233 }
234 if (variable==message) {
235 cerr <<
"Syntax error: File " <<
filename <<
".Line " << linenum <<
"." << endl;
237 file.close();
238 return;
239 }
240 variable=variable.substr(0,variable.find_first_of(" "));
241 value=message.substr(message.find("=")+1);
242 value=value.substr(value.find_first_not_of(" "));
243 value=value.substr(0,value.find_first_of(" "));
244
245
246
247
248
249
250
251
252
253
255 }
256 file.close();
258}
void AddVariable(const char *key, const char *value)