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)),
175 std::ifstream file(filename);
182 TObjString* str=NULL;
184 char winend[2]={13, 0};
188 cerr <<
"ecalInf: Can't open information file " << filename <<
"!" << endl;
189 cerr <<
"ecalInf: Ecal will not be constructed correctly." << endl;
195 while(getline(file,buffer)) {
197 message=buffer.substr(buffer.find_first_not_of(
" "));
198 message=message.substr(0,message.find(
"#"));
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)) {
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);
212 message=message.substr(0,message.find(winend));
214 if (!message.empty()) {
216 ssize=message.size();
218 if (ssize!=(Int_t)message.size()) {
219 cerr <<
"Error in ECAL structure at line " << linenum;
221 cerr <<
"Line length differs from previous one" << endl;
228 str=
new TObjString(message.c_str());
234 if (variable==message) {
235 cerr <<
"Syntax error: File " << filename <<
".Line " << linenum <<
"." << endl;
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(
" "));
369 while((key=(TObjString*)iter->Next())!=NULL)
371 TObjString* str=(TObjString*)
fVariables->GetValue(key);
372 cout << key->String() <<
"=" << str->String() << endl;
376 TIterator* iter=
fEcalStr.MakeIterator();
385 for(i=0;i<10;i++)
m[i]=0;
387 while((key=(TObjString*)iter->Next())!=NULL)
390 cout << key->String() << endl;
391 for(i=0;i<st.Length();i++)
400 cout <<
"Total modules: " << modules << endl;
401 cout <<
"Total channels: " << channels << endl;
404 if (
m[i]==0)
continue;
405 cout <<
" Type " << i <<
" : modules=" <<
m[i] <<
", channels=" <<
m[i]*i*i << endl;