Index: src/molecule_fragmentation.cpp
===================================================================
--- src/molecule_fragmentation.cpp	(revision 03c77c8433e48594a1c472d7a86b4e799d81c363)
+++ src/molecule_fragmentation.cpp	(revision a479fa6f7cb1bddf84d6c12af3c09dc810b66580)
@@ -351,5 +351,5 @@
 
   if (CountLinesinFile(InputFile) > 0) {
-    // each line represents a fragment root (Atom::nr) id and its energy contribution
+    // each line represents a fragment root (Atom::ParticleInfo_nr) id and its energy contribution
     InputFile.getline(buffer, MAXSTRINGSIZE); // skip comment lines
     InputFile.getline(buffer, MAXSTRINGSIZE);
@@ -411,5 +411,5 @@
  * Picks a given number of highest values and set *AtomMask to true.
  * \param *out output stream for debugging
- * \param *AtomMask defines true/false per global Atom::nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
+ * \param *AtomMask defines true/false per global Atom::ParticleInfo_nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
  * \param FinalRootCandidates list candidates to check
  * \param Order desired order
@@ -425,10 +425,10 @@
     No = (*runner).second.first;
     Walker = mol->FindAtom(No);
-    //if (Walker->AdaptiveOrder < MinimumRingSize[Walker->nr]) {
+    //if (Walker->AdaptiveOrder < MinimumRingSize[Walker->ParticleInfo_nr]) {
       DoLog(2) && (Log() << Verbose(2) << "Root " << No << " is still above threshold (10^{" << Order <<"}: " << runner->first << ", setting entry " << No << " of Atom mask to true." << endl);
       AtomMask[No] = true;
       status = true;
     //} else
-      //Log() << Verbose(2) << "Root " << No << " is still above threshold (10^{" << Order <<"}: " << runner->first << ", however MinimumRingSize of " << MinimumRingSize[Walker->nr] << " does not allow further adaptive increase." << endl;
+      //Log() << Verbose(2) << "Root " << No << " is still above threshold (10^{" << Order <<"}: " << runner->first << ", however MinimumRingSize of " << MinimumRingSize[Walker->ParticleInfo_nr] << " does not allow further adaptive increase." << endl;
   }
   return status;
@@ -437,5 +437,5 @@
 /** print atom mask for debugging.
  * \param *out output stream for debugging
- * \param *AtomMask defines true/false per global Atom::nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
+ * \param *AtomMask defines true/false per global Atom::ParticleInfo_nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
  * \param AtomCount number of entries in \a *AtomMask
  */
@@ -453,5 +453,5 @@
 
 /** Checks whether the OrderAtSite is still below \a Order at some site.
- * \param *AtomMask defines true/false per global Atom::nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
+ * \param *AtomMask defines true/false per global Atom::ParticleInfo_nr to mask in/out each nuclear site, used to activate given number of site to increment order adaptively
  * \param *GlobalKeySetList list of keysets with global ids (valid in "this" molecule) needed for adaptive increase
  * \param Order desired Order if positive, desired exponent in threshold criteria if negative (0 is single-step)
@@ -488,5 +488,5 @@
     #endif
         {
-          AtomMask[(*iter)->nr] = true;  // include all (non-hydrogen) atoms
+          AtomMask[(*iter)->ParticleInfo_nr] = true;  // include all (non-hydrogen) atoms
           status = true;
         }
@@ -508,6 +508,6 @@
   #endif
       {
-        AtomMask[(*iter)->nr] = true;  // include all (non-hydrogen) atoms
-        if ((Order != 0) && ((*iter)->AdaptiveOrder < Order)) // && ((*iter)->AdaptiveOrder < MinimumRingSize[(*iter)->nr]))
+        AtomMask[(*iter)->ParticleInfo_nr] = true;  // include all (non-hydrogen) atoms
+        if ((Order != 0) && ((*iter)->AdaptiveOrder < Order)) // && ((*iter)->AdaptiveOrder < MinimumRingSize[(*iter)->ParticleInfo_nr]))
           status = true;
       }
@@ -546,6 +546,6 @@
   int AtomNo = 0;
   for(internal_iterator iter=atoms.begin();iter!=atoms.end();++iter){
-    ASSERT(SortIndex[(*iter)->nr]==-1,"Same SortIndex set twice");
-    SortIndex[(*iter)->nr] = AtomNo++;
+    ASSERT(SortIndex[(*iter)->ParticleInfo_nr]==-1,"Same SortIndex set twice");
+    SortIndex[(*iter)->ParticleInfo_nr] = AtomNo++;
   }
 
@@ -574,6 +574,6 @@
   // count them
   if (count == 0) {
-    for (molecule::iterator iter = begin(); iter != end(); ++iter) { // create a lookup table (Atom::nr -> atom) used as a marker table lateron
-      count = (count < (*iter)->GetTrueFather()->nr) ? (*iter)->GetTrueFather()->nr : count;
+    for (molecule::iterator iter = begin(); iter != end(); ++iter) { // create a lookup table (Atom::ParticleInfo_nr -> atom) used as a marker table lateron
+      count = (count < (*iter)->GetTrueFather()->ParticleInfo_nr) ? (*iter)->GetTrueFather()->ParticleInfo_nr : count;
     }
   }
@@ -593,5 +593,5 @@
       LookupTable[i] = NULL;
     for (molecule::iterator iter = begin(); iter != end(); ++iter) {
-      AtomNo = (*iter)->GetTrueFather()->nr;
+      AtomNo = (*iter)->GetTrueFather()->ParticleInfo_nr;
       if ((AtomNo >= 0) && (AtomNo < count)) {
         //*out << "Setting LookupTable[" << AtomNo << "] to " << *(*iter) << endl;
@@ -655,5 +655,5 @@
   // ===== 1. Check whether bond structure is same as stored in files ====
 
-  // create lookup table for Atom::nr
+  // create lookup table for Atom::ParticleInfo_nr
   FragmentationToDo = FragmentationToDo && CreateFatherLookupTable(ListOfAtoms, getAtomCount());
 
@@ -854,5 +854,5 @@
 
 
-/** Stores pairs (Atom::nr, Atom::AdaptiveOrder) into file.
+/** Stores pairs (Atom::ParticleInfo_nr, Atom::AdaptiveOrder) into file.
  * Atoms not present in the file get "-1".
  * \param &path path to file ORDERATSITEFILE
@@ -878,5 +878,5 @@
 };
 
-/** Parses pairs(Atom::nr, Atom::AdaptiveOrder) from file and stores in molecule's Atom's.
+/** Parses pairs(Atom::ParticleInfo_nr, Atom::AdaptiveOrder) from file and stores in molecule's Atom's.
  * Atoms not present in the file get "0".
  * \param &path path to file ORDERATSITEFILEe
@@ -917,9 +917,9 @@
     // set atom values
     for(internal_iterator iter=atoms.begin();iter!=atoms.end();++iter){
-      (*iter)->AdaptiveOrder = OrderArray[(*iter)->nr];
-      (*iter)->MaxOrder = MaxArray[(*iter)->nr];
-    }
-    //SetAtomValueToIndexedArray( OrderArray, &atom::nr, &atom::AdaptiveOrder );
-    //SetAtomValueToIndexedArray( MaxArray, &atom::nr, &atom::MaxOrder );
+      (*iter)->AdaptiveOrder = OrderArray[(*iter)->ParticleInfo_nr];
+      (*iter)->MaxOrder = MaxArray[(*iter)->ParticleInfo_nr];
+    }
+    //SetAtomValueToIndexedArray( OrderArray, &atom::ParticleInfo_nr, &atom::AdaptiveOrder );
+    //SetAtomValueToIndexedArray( MaxArray, &atom::ParticleInfo_nr, &atom::MaxOrder );
 
     DoLog(1) && (Log() << Verbose(1) << "\t ... done." << endl);
@@ -981,5 +981,5 @@
   for(KeySet::iterator runner = Leaflet.begin(); runner != Leaflet.end(); runner++) {
     FatherOfRunner = mol->FindAtom((*runner));  // find the id
-    SonList[FatherOfRunner->nr] = Leaf->AddCopyAtom(FatherOfRunner);
+    SonList[FatherOfRunner->ParticleInfo_nr] = Leaf->AddCopyAtom(FatherOfRunner);
     size++;
   }
@@ -1008,5 +1008,5 @@
     FatherOfRunner = (*iter)->father;
     ASSERT(FatherOfRunner,"Atom without father found");
-    if (SonList[FatherOfRunner->nr] != NULL)  {  // check if this, our father, is present in list
+    if (SonList[FatherOfRunner->ParticleInfo_nr] != NULL)  {  // check if this, our father, is present in list
       // create all bonds
       const BondList& ListOfBonds = FatherOfRunner->getListOfBonds();
@@ -1015,13 +1015,13 @@
           ++BondRunner) {
         OtherFather = (*BondRunner)->GetOtherAtom(FatherOfRunner);
-//        Log() << Verbose(2) << "Father " << *FatherOfRunner << " of son " << *SonList[FatherOfRunner->nr] << " is bound to " << *OtherFather;
-        if (SonList[OtherFather->nr] != NULL) {
-//          Log() << Verbose(0) << ", whose son is " << *SonList[OtherFather->nr] << "." << endl;
-          if (OtherFather->nr > FatherOfRunner->nr) { // add bond (nr check is for adding only one of both variants: ab, ba)
+//        Log() << Verbose(2) << "Father " << *FatherOfRunner << " of son " << *SonList[FatherOfRunner->ParticleInfo_nr] << " is bound to " << *OtherFather;
+        if (SonList[OtherFather->ParticleInfo_nr] != NULL) {
+//          Log() << Verbose(0) << ", whose son is " << *SonList[OtherFather->ParticleInfo_nr] << "." << endl;
+          if (OtherFather->ParticleInfo_nr > FatherOfRunner->ParticleInfo_nr) { // add bond (ParticleInfo_nr check is for adding only one of both variants: ab, ba)
 //            Log() << Verbose(3) << "Adding Bond: ";
 //            Log() << Verbose(0) <<
-            Leaf->AddBond((*iter), SonList[OtherFather->nr], (*BondRunner)->BondDegree);
+            Leaf->AddBond((*iter), SonList[OtherFather->ParticleInfo_nr], (*BondRunner)->BondDegree);
 //            Log() << Verbose(0) << "." << endl;
-            //NumBonds[(*iter)->nr]++;
+            //NumBonds[(*iter)->ParticleInfo_nr]++;
           } else {
 //            Log() << Verbose(3) << "Not adding bond, labels in wrong order." << endl;
@@ -1035,9 +1035,9 @@
             exit(1);
 #endif
-          //NumBonds[(*iter)->nr] += Binder->BondDegree;
+          //NumBonds[(*iter)->ParticleInfo_nr] += Binder->BondDegree;
         }
       }
     } else {
-    DoeLog(1) && (eLog()<< Verbose(1) << "Son " << (*iter)->getName() << " has father " << FatherOfRunner->getName() << " but its entry in SonList is " << SonList[FatherOfRunner->nr] << "!" << endl);
+    DoeLog(1) && (eLog()<< Verbose(1) << "Son " << (*iter)->getName() << " has father " << FatherOfRunner->getName() << " but its entry in SonList is " << SonList[FatherOfRunner->ParticleInfo_nr] << "!" << endl);
     }
     if ((LonelyFlag) && (Leaf->getAtomCount() > 1)) {
@@ -1121,8 +1121,8 @@
       OtherWalker = BondsSet[j]->rightatom;  // rightatom is always the one more distant, i.e. the one to add
       //Log() << Verbose(1+verbosity) << "Current Bond is " << BondsSet[j] << ", checking on " << *OtherWalker << "." << endl;
-      Log() << Verbose(2+verbosity) << "Adding " << *OtherWalker << " with nr " << OtherWalker->nr << "." << endl;
-      TestKeySetInsert = FragmentSet->insert(OtherWalker->nr);
+      Log() << Verbose(2+verbosity) << "Adding " << *OtherWalker << " with nr " << OtherWalker->ParticleInfo_nr << "." << endl;
+      TestKeySetInsert = FragmentSet->insert(OtherWalker->ParticleInfo_nr);
       if (TestKeySetInsert.second) {
-        TouchedList[TouchedIndex++] = OtherWalker->nr;  // note as added
+        TouchedList[TouchedIndex++] = OtherWalker->ParticleInfo_nr;  // note as added
         Added++;
       } else {
@@ -1172,5 +1172,5 @@
       ++Binder) {
     for (int k=0;k<TouchedIndex;k++) {
-      if ((*Binder)->leftatom->nr == TouchedList[k])   // leftatom is always the closer one
+      if ((*Binder)->leftatom->ParticleInfo_nr == TouchedList[k])   // leftatom is always the closer one
         BondsList[SetDimension++] = (*Binder);
     }
@@ -1330,5 +1330,5 @@
 {
   // prepare Label and SP arrays of the BFS search
-  FragmentSearch.ShortestPathList[FragmentSearch.Root->nr] = 0;
+  FragmentSearch.ShortestPathList[FragmentSearch.Root->ParticleInfo_nr] = 0;
 
   // prepare root level (SP = 0) and a loop bond denoting Root
@@ -1354,7 +1354,7 @@
         iter != FragmentSearch.BondsPerSPList[i].end();
         ++iter) {
-      // Log() << Verbose(0) << "Removing atom " << Binder->leftatom->nr << " and " << Binder->rightatom->nr << "." << endl; // make sure numbers are local
-      FragmentSearch.ShortestPathList[(*iter)->leftatom->nr] = -1;
-      FragmentSearch.ShortestPathList[(*iter)->rightatom->nr] = -1;
+      // Log() << Verbose(0) << "Removing atom " << Binder->leftatom->ParticleInfo_nr << " and " << Binder->rightatom->ParticleInfo_nr << "." << endl; // make sure numbers are local
+      FragmentSearch.ShortestPathList[(*iter)->leftatom->ParticleInfo_nr] = -1;
+      FragmentSearch.ShortestPathList[(*iter)->rightatom->ParticleInfo_nr] = -1;
     }
     // delete added bonds
@@ -1391,5 +1391,5 @@
   atom *Predecessor = NULL;
   bond *Binder = NULL;
-  int RootKeyNr = FragmentSearch.Root->GetTrueFather()->nr;
+  int RootKeyNr = FragmentSearch.Root->GetTrueFather()->ParticleInfo_nr;
   int RemainingWalkers = -1;
   int SP = -1;
@@ -1411,6 +1411,6 @@
       Walker = (*CurrentEdge)->rightatom;    // rightatom is always the one more distant
       Predecessor = (*CurrentEdge)->leftatom;    // ... and leftatom is predecessor
-      AtomKeyNr = Walker->nr;
-      DoLog(0) && (Log() << Verbose(0) << "Current Walker is: " << *Walker << " with nr " << Walker->nr << " and SP of " << SP << ", with " << RemainingWalkers << " remaining walkers on this level." << endl);
+      AtomKeyNr = Walker->ParticleInfo_nr;
+      DoLog(0) && (Log() << Verbose(0) << "Current Walker is: " << *Walker << " with nr " << Walker->ParticleInfo_nr << " and SP of " << SP << ", with " << RemainingWalkers << " remaining walkers on this level." << endl);
       // check for new sp level
       // go through all its bonds
@@ -1421,14 +1421,14 @@
           ++Runner) {
         OtherWalker = (*Runner)->GetOtherAtom(Walker);
-        if ((RestrictedKeySet.find(OtherWalker->nr) != RestrictedKeySet.end())
+        if ((RestrictedKeySet.find(OtherWalker->ParticleInfo_nr) != RestrictedKeySet.end())
   #ifdef ADDHYDROGEN
          && (OtherWalker->getType()->getAtomicNumber() != 1)
   #endif
                                                               ) {  // skip hydrogens and restrict to fragment
-          DoLog(2) && (Log() << Verbose(2) << "Current partner is " << *OtherWalker << " with nr " << OtherWalker->nr << " in bond " << *(*Runner) << "." << endl);
+          DoLog(2) && (Log() << Verbose(2) << "Current partner is " << *OtherWalker << " with nr " << OtherWalker->ParticleInfo_nr << " in bond " << *(*Runner) << "." << endl);
           // set the label if not set (and push on root stack as well)
-          if ((OtherWalker != Predecessor) && (OtherWalker->GetTrueFather()->nr > RootKeyNr)) { // only pass through those with label bigger than Root's
-            FragmentSearch.ShortestPathList[OtherWalker->nr] = SP+1;
-            DoLog(3) && (Log() << Verbose(3) << "Set Shortest Path to " << FragmentSearch.ShortestPathList[OtherWalker->nr] << "." << endl);
+          if ((OtherWalker != Predecessor) && (OtherWalker->GetTrueFather()->ParticleInfo_nr > RootKeyNr)) { // only pass through those with label bigger than Root's
+            FragmentSearch.ShortestPathList[OtherWalker->ParticleInfo_nr] = SP+1;
+            DoLog(3) && (Log() << Verbose(3) << "Set Shortest Path to " << FragmentSearch.ShortestPathList[OtherWalker->ParticleInfo_nr] << "." << endl);
             // add the bond in between to the SP list
             Binder = new bond(Walker, OtherWalker); // create a new bond in such a manner, that bond::rightatom is always the one more distant
@@ -1438,5 +1438,5 @@
           } else {
             if (OtherWalker != Predecessor)
-              DoLog(3) && (Log() << Verbose(3) << "Not passing on, as index of " << *OtherWalker << " " << OtherWalker->GetTrueFather()->nr << " is smaller than that of Root " << RootKeyNr << "." << endl);
+              DoLog(3) && (Log() << Verbose(3) << "Not passing on, as index of " << *OtherWalker << " " << OtherWalker->GetTrueFather()->ParticleInfo_nr << " is smaller than that of Root " << RootKeyNr << "." << endl);
             else
               DoLog(3) && (Log() << Verbose(3) << "This is my predecessor " << *Predecessor << "." << endl);
@@ -1519,5 +1519,5 @@
   if (SP >= (Order-1)) {
     // start with root (push on fragment stack)
-    DoLog(0) && (Log() << Verbose(0) << "Starting fragment generation with " << *FragmentSearch.Root << ", local nr is " << FragmentSearch.Root->nr << "." << endl);
+    DoLog(0) && (Log() << Verbose(0) << "Starting fragment generation with " << *FragmentSearch.Root << ", local nr is " << FragmentSearch.Root->ParticleInfo_nr << "." << endl);
     FragmentSearch.FragmentSet->clear();
     DoLog(0) && (Log() << Verbose(0) << "Preparing subset for this root and calling generator." << endl);
@@ -1538,5 +1538,5 @@
   // remove root from stack
   DoLog(0) && (Log() << Verbose(0) << "Removing root again from stack." << endl);
-  FragmentSearch.FragmentSet->erase(FragmentSearch.Root->nr);
+  FragmentSearch.FragmentSet->erase(FragmentSearch.Root->ParticleInfo_nr);
 
   // free'ing the bonds lists
@@ -1609,5 +1609,5 @@
       }
     }
-    RootStack.push_back(Walker->nr);
+    RootStack.push_back(Walker->ParticleInfo_nr);
     RootNr++;
   } while (RootKeyNr != StartNr);
@@ -1700,5 +1700,5 @@
   KeySet CompleteMolecule;
   for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
-    CompleteMolecule.insert((*iter)->GetTrueFather()->nr);
+    CompleteMolecule.insert((*iter)->GetTrueFather()->ParticleInfo_nr);
   }
 
@@ -1713,5 +1713,5 @@
     atom *Walker = FindAtom(RootKeyNr);
     // check cyclic lengths
-    //if ((MinimumRingSize[Walker->GetTrueFather()->nr] != -1) && (Walker->GetTrueFather()->AdaptiveOrder+1 > MinimumRingSize[Walker->GetTrueFather()->nr])) {
+    //if ((MinimumRingSize[Walker->GetTrueFather()->ParticleInfo_nr] != -1) && (Walker->GetTrueFather()->AdaptiveOrder+1 > MinimumRingSize[Walker->GetTrueFather()->ParticleInfo_nr])) {
     //  Log() << Verbose(0) << "Bond order " << Walker->GetTrueFather()->AdaptiveOrder << " of Root " << *Walker << " greater than or equal to Minimum Ring size of " << MinimumRingSize << " found is not allowed." << endl;
     //} else
@@ -1849,5 +1849,5 @@
         AtomStack->pop_front();
         //Log() << Verbose (3) << "Current Walker is: " << *Walker << "." << endl;
-        ColorList[Walker->nr] = black;    // mark as explored
+        ColorList[Walker->ParticleInfo_nr] = black;    // mark as explored
         *Walker += Translationvector; // translate
         const BondList& ListOfBonds = Walker->getListOfBonds();
@@ -1857,5 +1857,5 @@
           if ((*Runner) != Binder) {
             OtherWalker = (*Runner)->GetOtherAtom(Walker);
-            if (ColorList[OtherWalker->nr] == white) {
+            if (ColorList[OtherWalker->ParticleInfo_nr] == white) {
               AtomStack->push_front(OtherWalker); // push if yet unexplored
             }
