72 string::const_iterator p=s.begin();
73 string::const_iterator p2=s2.begin();
74 while(p!=s.end()&&p2!=s2.end()) {
75 if (toupper(*p)!=toupper(*p2))
return (toupper(*p)<toupper(*p2))?-1:1;
79 return(s2.size()==s.size())?0:(s.size()<s2.size())?-1:1;
141 fVariables(new TMap(200)),
176 std::ifstream file(filename);
183 TObjString* str=NULL;
185 char winend[2]={13, 0};
189 cerr <<
"hcalInf: Can't open information file " << filename <<
"!" << endl;
190 cerr <<
"hcalInf: Hcal will not be constructed correctly." << endl;
196 while(getline(file,buffer)) {
198 message=buffer.substr(buffer.find_first_not_of(
" "));
199 message=message.substr(0,message.find(
"#"));
201 message=message.substr(0,message.find(winend));
202 if (message.empty())
continue;
203 variable=message.substr(0,message.find(
"="));
204 if (variable==
"structure") {
205 while(getline(file,buffer)) {
207 if (buffer.empty())
break;
208 message=buffer.substr(buffer.find_first_not_of(
" "));
209 message=message.substr(0,message.find(
"#"));
210 message=message.substr(0,message.find_last_not_of(
" ")+1);
213 message=message.substr(0,message.find(winend));
215 if (!message.empty()) {
217 ssize=message.size();
219 if (ssize!=(Int_t)message.size()) {
220 cerr <<
"Error in HCAL structure at line " << linenum;
222 cerr <<
"Line length differs from previous one" << endl;
229 str=
new TObjString(message.c_str());
235 if (variable==message) {
236 cerr <<
"Syntax error: File " << filename <<
".Line " << linenum <<
"." << endl;
241 variable=variable.substr(0,variable.find_first_of(
" "));
242 value=message.substr(message.find(
"=")+1);
243 value=value.substr(value.find_first_not_of(
" "));
244 value=value.substr(0,value.find_first_of(
" "));
371 while((key=(TObjString*)iter->Next())!=NULL)
373 TObjString* str=(TObjString*)
fVariables->GetValue(key);
374 cout << key->String() <<
"=" << str->String() << endl;
378 TIterator* iter=
fHcalStr.MakeIterator();
387 for(i=0;i<10;i++)
m[i]=0;
389 while((key=(TObjString*)iter->Next())!=NULL)
392 cout << key->String() << endl;
393 for(i=0;i<st.Length();i++)
402 cout <<
"Total modules: " << modules << endl;
403 cout <<
"Total channels: " << channels << endl;
406 if (
m[i]==0)
continue;
407 cout <<
" Type " << i <<
" : modules=" <<
m[i] <<
", channels=" <<
m[i]*i*i << endl;