| 302 | } |
| 303 | |
| 304 | std::string SymmetricComplex::toStringJustCones(int dimLow, int dimHigh, bool onlyMaximal, bool group, std::ostream *multiplicities, bool compressed, bool tPlaneSort)const |
| 305 | { |
| 306 | std::stringstream ret; |
| 307 | |
| 308 | ZVector additionalSortKeys(cones.size()); |
| 309 | // if(tPlaneSort)additionalSortKeys=dimensionsAtInfinity(); |
| 310 | // Integer lowKey=additionalSortKeys.min(); |
| 311 | // Integer highKey=additionalSortKeys.max(); |
| 312 | |
| 313 | for(int d=dimLow;d<=dimHigh;d++) |
| 314 | { |
| 315 | int numberOfOrbitsOutput=0; |
| 316 | int numberOfOrbitsOfThisDimension=0; |
| 317 | bool newDimension=true; |
| 318 | // for(int key=lowKey;key<=highKey;key++) |
| 319 | { |
| 320 | int I=0; |
| 321 | for(ConeContainer::const_iterator i=cones.begin();i!=cones.end();i++,I++) |
| 322 | // if(additionalSortKeys[I]==key) |
| 323 | if(i->dimension==d) |
| 324 | { |
| 325 | numberOfOrbitsOfThisDimension++; |
| 326 | if(!onlyMaximal || isMaximal(*i)) |
| 327 | { |
| 328 | numberOfOrbitsOutput++; |
| 329 | bool isMax=isMaximal(*i); |
| 330 | bool newOrbit=true; |
| 331 | std::set<std::set<int> > temp; |
| 332 | for(SymmetryGroup::ElementContainer::const_iterator k=sym.elements.begin();k!=sym.elements.end();k++) |
| 333 | { |
| 334 | Cone temp1=i->permuted(*k,*this,false); |
| 335 | temp.insert(temp1.indexSet()); |
| 336 | if(compressed)break; |
| 337 | } |
| 338 | for(std::set<std::set<int> >::const_iterator j=temp.begin();j!=temp.end();j++) |
| 339 | { |
| 340 | ret << "{"; |
| 341 | for(std::set<int>::const_iterator a=j->begin();a!=j->end();a++) |
| 342 | { |
| 343 | if(a!=j->begin())ret<<" "; |
| 344 | ret << *a; |
| 345 | } |
| 346 | ret << "}"; |
| 347 | if(group)if(newOrbit)ret << "\t# New orbit"; |
| 348 | if(newDimension)ret << "\t# Dimension "<<d; |
| 349 | ret <<std::endl; |
| 350 | if(isMax)if(multiplicities) |
| 351 | { |
| 352 | *multiplicities << i->multiplicity; |
| 353 | if(group)if(newOrbit)*multiplicities << "\t# New orbit"; |
| 354 | if(newDimension)*multiplicities << "\t# Dimension "<<d; |
| 355 | *multiplicities << std::endl; |
| 356 | } |
| 357 | newOrbit=false; |
| 358 | newDimension=false; |
| 359 | } |
| 360 | } |
| 361 | } |